@anglr/datetime 1.0.0-beta.20210804101324 → 2.0.0-beta.20220221120606

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 (463) hide show
  1. package/changelog.md +13 -1
  2. package/date-fns/datetime-date-fns.d.ts +64 -0
  3. package/date-fns/datetime-date-fns.internal.d.ts +64 -0
  4. package/date-fns/package.json +7 -7
  5. package/date-fns/src/{date-fns.d.ts → index.d.ts} +4 -4
  6. package/date-fns/src/index.d.ts.map +1 -0
  7. package/date-fns/src/misc/tokens.d.ts +10 -10
  8. package/date-fns/src/services/dateFnsDateApi.service.d.ts +36 -33
  9. package/date-fns/src/services/dateFnsDateApi.service.d.ts.map +1 -1
  10. package/date-fns/src/services/dateFnsLocale.service.d.ts +10 -10
  11. package/date-fns/temp/datetime-date-fns.api.md +47 -0
  12. package/datetime.d.ts +1913 -5
  13. package/datetime.internal.d.ts +2090 -0
  14. package/es2015/date-fns/src/index.js +4 -0
  15. package/es2015/date-fns/src/index.js.map +1 -0
  16. package/es2015/date-fns/src/misc/tokens.js +20 -0
  17. package/es2015/date-fns/src/misc/tokens.js.map +1 -0
  18. package/es2015/date-fns/src/services/dateFnsDateApi.service.js +438 -0
  19. package/es2015/date-fns/src/services/dateFnsDateApi.service.js.map +1 -0
  20. package/es2015/date-fns/src/services/dateFnsLocale.service.js +2 -0
  21. package/es2015/date-fns/src/services/dateFnsLocale.service.js.map +1 -0
  22. package/es2015/karma.conf.js +57 -0
  23. package/es2015/karma.conf.js.map +1 -0
  24. package/{moment/src/moment.d.ts → es2015/moment/src/index.js} +3 -3
  25. package/es2015/moment/src/index.js.map +1 -0
  26. package/es2015/moment/src/misc/tokens.js +15 -0
  27. package/es2015/moment/src/misc/tokens.js.map +1 -0
  28. package/es2015/moment/src/services/momentDateApi.service.js +398 -0
  29. package/es2015/moment/src/services/momentDateApi.service.js.map +1 -0
  30. package/{src/datetime.d.ts → es2015/src/index.js} +19 -19
  31. package/es2015/src/index.js.map +1 -0
  32. package/es2015/src/misc/constants.js +33 -0
  33. package/es2015/src/misc/constants.js.map +1 -0
  34. package/es2015/src/misc/datetime.interface.js +2 -0
  35. package/es2015/src/misc/datetime.interface.js.map +1 -0
  36. package/es2015/src/misc/tokens.js +19 -0
  37. package/es2015/src/misc/tokens.js.map +1 -0
  38. package/es2015/src/misc/validators.js +58 -0
  39. package/es2015/src/misc/validators.js.map +1 -0
  40. package/es2015/src/modules/datePipes.module.js +33 -0
  41. package/es2015/src/modules/datePipes.module.js.map +1 -0
  42. package/es2015/src/picker/components/dayPicker/dayPicker.component.js +172 -0
  43. package/es2015/src/picker/components/dayPicker/dayPicker.component.js.map +1 -0
  44. package/es2015/src/picker/components/dayPicker/dayPicker.interfaces.js +2 -0
  45. package/es2015/src/picker/components/dayPicker/dayPicker.interfaces.js.map +1 -0
  46. package/es2015/src/picker/components/monthPicker/monthPicker.component.js +114 -0
  47. package/es2015/src/picker/components/monthPicker/monthPicker.component.js.map +1 -0
  48. package/es2015/src/picker/components/monthPicker/monthPicker.interfaces.js +2 -0
  49. package/es2015/src/picker/components/monthPicker/monthPicker.interfaces.js.map +1 -0
  50. package/es2015/src/picker/components/picker/picker.component.animations.js +71 -0
  51. package/es2015/src/picker/components/picker/picker.component.animations.js.map +1 -0
  52. package/es2015/src/picker/components/picker/picker.component.js +241 -0
  53. package/es2015/src/picker/components/picker/picker.component.js.map +1 -0
  54. package/es2015/src/picker/components/pickerBase.component.js +243 -0
  55. package/es2015/src/picker/components/pickerBase.component.js.map +1 -0
  56. package/es2015/src/picker/components/yearPicker/yearPicker.component.js +126 -0
  57. package/es2015/src/picker/components/yearPicker/yearPicker.component.js.map +1 -0
  58. package/es2015/src/picker/components/yearPicker/yearPicker.interfaces.js +2 -0
  59. package/es2015/src/picker/components/yearPicker/yearPicker.interfaces.js.map +1 -0
  60. package/es2015/src/picker/interfaces.js +5 -0
  61. package/es2015/src/picker/interfaces.js.map +1 -0
  62. package/es2015/src/picker/misc/datetimePicker.interface.js +2 -0
  63. package/es2015/src/picker/misc/datetimePicker.interface.js.map +1 -0
  64. package/es2015/src/picker/misc/tokens.js +6 -0
  65. package/es2015/src/picker/misc/tokens.js.map +1 -0
  66. package/es2015/src/picker/modules/picker.module.js +46 -0
  67. package/es2015/src/picker/modules/picker.module.js.map +1 -0
  68. package/es2015/src/picker/types.js +8 -0
  69. package/es2015/src/picker/types.js.map +1 -0
  70. package/es2015/src/pipes/asRequiredType.js +22 -0
  71. package/es2015/src/pipes/asRequiredType.js.map +1 -0
  72. package/es2015/src/pipes/dateConvert.pipe.js +35 -0
  73. package/es2015/src/pipes/dateConvert.pipe.js.map +1 -0
  74. package/es2015/src/pipes/dateFormat.pipe.js +45 -0
  75. package/es2015/src/pipes/dateFormat.pipe.js.map +1 -0
  76. package/es2015/src/selector/components/inputDateTime/inputDateTime.component.js +421 -0
  77. package/es2015/src/selector/components/inputDateTime/inputDateTime.component.js.map +1 -0
  78. package/es2015/src/selector/components/selector/selector.component.animations.js +15 -0
  79. package/es2015/src/selector/components/selector/selector.component.animations.js.map +1 -0
  80. package/es2015/src/selector/components/selector/selector.component.js +344 -0
  81. package/es2015/src/selector/components/selector/selector.component.js.map +1 -0
  82. package/es2015/src/selector/components/simpleInputDateTime/simpleInputDateTime.component.js +317 -0
  83. package/es2015/src/selector/components/simpleInputDateTime/simpleInputDateTime.component.js.map +1 -0
  84. package/es2015/src/selector/directives/datetimeMaxValidator/datetimeMaxValidator.directive.js +51 -0
  85. package/es2015/src/selector/directives/datetimeMaxValidator/datetimeMaxValidator.directive.js.map +1 -0
  86. package/es2015/src/selector/directives/datetimeMinValidator/datetimeMinValidator.directive.js +51 -0
  87. package/es2015/src/selector/directives/datetimeMinValidator/datetimeMinValidator.directive.js.map +1 -0
  88. package/es2015/src/selector/directives/datetimeValidator/datetimeValidator.directive.js +47 -0
  89. package/es2015/src/selector/directives/datetimeValidator/datetimeValidator.directive.js.map +1 -0
  90. package/es2015/src/selector/directives/selectorControlValueAccessor/selectorControlValueAccessor.directive.js +119 -0
  91. package/es2015/src/selector/directives/selectorControlValueAccessor/selectorControlValueAccessor.directive.js.map +1 -0
  92. package/es2015/src/selector/interfaces.js +2 -0
  93. package/es2015/src/selector/interfaces.js.map +1 -0
  94. package/es2015/src/selector/misc/datetimeSelector.interface.js +2 -0
  95. package/es2015/src/selector/misc/datetimeSelector.interface.js.map +1 -0
  96. package/es2015/src/selector/misc/tokens.js +6 -0
  97. package/es2015/src/selector/misc/tokens.js.map +1 -0
  98. package/es2015/src/selector/modules/basicSelector.module.js +20 -0
  99. package/es2015/src/selector/modules/basicSelector.module.js.map +1 -0
  100. package/es2015/src/selector/modules/selector.module.js +60 -0
  101. package/es2015/src/selector/modules/selector.module.js.map +1 -0
  102. package/es2015/src/selector/types.js +10 -0
  103. package/es2015/src/selector/types.js.map +1 -0
  104. package/es2015/src/services/dateApi.interface.js +2 -0
  105. package/es2015/src/services/dateApi.interface.js.map +1 -0
  106. package/es2015/src/services/datePositionParser.interface.js +2 -0
  107. package/es2015/src/services/datePositionParser.interface.js.map +1 -0
  108. package/es2015/src/services/datePositionParser.service.js +227 -0
  109. package/es2015/src/services/datePositionParser.service.js.map +1 -0
  110. package/es2015/src/services/dateTimeRelativeParser.service.js +66 -0
  111. package/es2015/src/services/dateTimeRelativeParser.service.js.map +1 -0
  112. package/es2015/src/services/dateValueProvider.service.js +58 -0
  113. package/es2015/src/services/dateValueProvider.service.js.map +1 -0
  114. package/es2015/src/services/formatProvider.interface.js +2 -0
  115. package/es2015/src/services/formatProvider.interface.js.map +1 -0
  116. package/es2015/src/services/index.js +4 -0
  117. package/es2015/src/services/index.js.map +1 -0
  118. package/es2020/date-fns/src/index.js +4 -0
  119. package/es2020/date-fns/src/index.js.map +1 -0
  120. package/es2020/date-fns/src/misc/tokens.js +20 -0
  121. package/es2020/date-fns/src/misc/tokens.js.map +1 -0
  122. package/es2020/date-fns/src/services/dateFnsDateApi.service.js +437 -0
  123. package/es2020/date-fns/src/services/dateFnsDateApi.service.js.map +1 -0
  124. package/es2020/date-fns/src/services/dateFnsLocale.service.js +2 -0
  125. package/es2020/date-fns/src/services/dateFnsLocale.service.js.map +1 -0
  126. package/es2020/karma.conf.js +57 -0
  127. package/es2020/karma.conf.js.map +1 -0
  128. package/es2020/moment/src/index.js +3 -0
  129. package/es2020/moment/src/index.js.map +1 -0
  130. package/es2020/moment/src/misc/tokens.js +15 -0
  131. package/es2020/moment/src/misc/tokens.js.map +1 -0
  132. package/es2020/moment/src/services/momentDateApi.service.js +398 -0
  133. package/es2020/moment/src/services/momentDateApi.service.js.map +1 -0
  134. package/es2020/src/index.js +19 -0
  135. package/es2020/src/index.js.map +1 -0
  136. package/es2020/src/misc/constants.js +33 -0
  137. package/es2020/src/misc/constants.js.map +1 -0
  138. package/es2020/src/misc/datetime.interface.js +2 -0
  139. package/es2020/src/misc/datetime.interface.js.map +1 -0
  140. package/es2020/src/misc/tokens.js +19 -0
  141. package/es2020/src/misc/tokens.js.map +1 -0
  142. package/es2020/src/misc/validators.js +58 -0
  143. package/es2020/src/misc/validators.js.map +1 -0
  144. package/es2020/src/modules/datePipes.module.js +33 -0
  145. package/es2020/src/modules/datePipes.module.js.map +1 -0
  146. package/es2020/src/picker/components/dayPicker/dayPicker.component.js +172 -0
  147. package/es2020/src/picker/components/dayPicker/dayPicker.component.js.map +1 -0
  148. package/es2020/src/picker/components/dayPicker/dayPicker.interfaces.js +2 -0
  149. package/es2020/src/picker/components/dayPicker/dayPicker.interfaces.js.map +1 -0
  150. package/es2020/src/picker/components/monthPicker/monthPicker.component.js +114 -0
  151. package/es2020/src/picker/components/monthPicker/monthPicker.component.js.map +1 -0
  152. package/es2020/src/picker/components/monthPicker/monthPicker.interfaces.js +2 -0
  153. package/es2020/src/picker/components/monthPicker/monthPicker.interfaces.js.map +1 -0
  154. package/es2020/src/picker/components/picker/picker.component.animations.js +71 -0
  155. package/es2020/src/picker/components/picker/picker.component.animations.js.map +1 -0
  156. package/es2020/src/picker/components/picker/picker.component.js +236 -0
  157. package/es2020/src/picker/components/picker/picker.component.js.map +1 -0
  158. package/es2020/src/picker/components/pickerBase.component.js +243 -0
  159. package/es2020/src/picker/components/pickerBase.component.js.map +1 -0
  160. package/es2020/src/picker/components/yearPicker/yearPicker.component.js +126 -0
  161. package/es2020/src/picker/components/yearPicker/yearPicker.component.js.map +1 -0
  162. package/es2020/src/picker/components/yearPicker/yearPicker.interfaces.js +2 -0
  163. package/es2020/src/picker/components/yearPicker/yearPicker.interfaces.js.map +1 -0
  164. package/es2020/src/picker/interfaces.js +5 -0
  165. package/es2020/src/picker/interfaces.js.map +1 -0
  166. package/es2020/src/picker/misc/datetimePicker.interface.js +2 -0
  167. package/es2020/src/picker/misc/datetimePicker.interface.js.map +1 -0
  168. package/es2020/src/picker/misc/tokens.js +6 -0
  169. package/es2020/src/picker/misc/tokens.js.map +1 -0
  170. package/es2020/src/picker/modules/picker.module.js +46 -0
  171. package/es2020/src/picker/modules/picker.module.js.map +1 -0
  172. package/es2020/src/picker/types.js +8 -0
  173. package/es2020/src/picker/types.js.map +1 -0
  174. package/es2020/src/pipes/asRequiredType.js +22 -0
  175. package/es2020/src/pipes/asRequiredType.js.map +1 -0
  176. package/es2020/src/pipes/dateConvert.pipe.js +35 -0
  177. package/es2020/src/pipes/dateConvert.pipe.js.map +1 -0
  178. package/es2020/src/pipes/dateFormat.pipe.js +45 -0
  179. package/es2020/src/pipes/dateFormat.pipe.js.map +1 -0
  180. package/es2020/src/selector/components/inputDateTime/inputDateTime.component.js +417 -0
  181. package/es2020/src/selector/components/inputDateTime/inputDateTime.component.js.map +1 -0
  182. package/es2020/src/selector/components/selector/selector.component.animations.js +15 -0
  183. package/es2020/src/selector/components/selector/selector.component.animations.js.map +1 -0
  184. package/es2020/src/selector/components/selector/selector.component.js +334 -0
  185. package/es2020/src/selector/components/selector/selector.component.js.map +1 -0
  186. package/es2020/src/selector/components/simpleInputDateTime/simpleInputDateTime.component.js +314 -0
  187. package/es2020/src/selector/components/simpleInputDateTime/simpleInputDateTime.component.js.map +1 -0
  188. package/es2020/src/selector/directives/datetimeMaxValidator/datetimeMaxValidator.directive.js +51 -0
  189. package/es2020/src/selector/directives/datetimeMaxValidator/datetimeMaxValidator.directive.js.map +1 -0
  190. package/es2020/src/selector/directives/datetimeMinValidator/datetimeMinValidator.directive.js +51 -0
  191. package/es2020/src/selector/directives/datetimeMinValidator/datetimeMinValidator.directive.js.map +1 -0
  192. package/es2020/src/selector/directives/datetimeValidator/datetimeValidator.directive.js +47 -0
  193. package/es2020/src/selector/directives/datetimeValidator/datetimeValidator.directive.js.map +1 -0
  194. package/es2020/src/selector/directives/selectorControlValueAccessor/selectorControlValueAccessor.directive.js +118 -0
  195. package/es2020/src/selector/directives/selectorControlValueAccessor/selectorControlValueAccessor.directive.js.map +1 -0
  196. package/es2020/src/selector/interfaces.js +2 -0
  197. package/es2020/src/selector/interfaces.js.map +1 -0
  198. package/es2020/src/selector/misc/datetimeSelector.interface.js +2 -0
  199. package/es2020/src/selector/misc/datetimeSelector.interface.js.map +1 -0
  200. package/es2020/src/selector/misc/tokens.js +6 -0
  201. package/es2020/src/selector/misc/tokens.js.map +1 -0
  202. package/es2020/src/selector/modules/basicSelector.module.js +20 -0
  203. package/es2020/src/selector/modules/basicSelector.module.js.map +1 -0
  204. package/es2020/src/selector/modules/selector.module.js +60 -0
  205. package/es2020/src/selector/modules/selector.module.js.map +1 -0
  206. package/es2020/src/selector/types.js +10 -0
  207. package/es2020/src/selector/types.js.map +1 -0
  208. package/es2020/src/services/dateApi.interface.js +2 -0
  209. package/es2020/src/services/dateApi.interface.js.map +1 -0
  210. package/es2020/src/services/datePositionParser.interface.js +2 -0
  211. package/es2020/src/services/datePositionParser.interface.js.map +1 -0
  212. package/es2020/src/services/datePositionParser.service.js +227 -0
  213. package/es2020/src/services/datePositionParser.service.js.map +1 -0
  214. package/es2020/src/services/dateTimeRelativeParser.service.js +65 -0
  215. package/es2020/src/services/dateTimeRelativeParser.service.js.map +1 -0
  216. package/es2020/src/services/dateValueProvider.service.js +58 -0
  217. package/es2020/src/services/dateValueProvider.service.js.map +1 -0
  218. package/es2020/src/services/formatProvider.interface.js +2 -0
  219. package/es2020/src/services/formatProvider.interface.js.map +1 -0
  220. package/es2020/src/services/index.js +4 -0
  221. package/es2020/src/services/index.js.map +1 -0
  222. package/karma.conf.d.ts +2 -0
  223. package/karma.conf.d.ts.map +1 -0
  224. package/moment/datetime-moment.d.ts +47 -0
  225. package/moment/datetime-moment.internal.d.ts +47 -0
  226. package/moment/package.json +7 -7
  227. package/moment/src/index.d.ts +3 -0
  228. package/moment/src/index.d.ts.map +1 -0
  229. package/moment/src/misc/tokens.d.ts +5 -5
  230. package/moment/src/services/momentDateApi.service.d.ts +35 -32
  231. package/moment/src/services/momentDateApi.service.d.ts.map +1 -1
  232. package/moment/temp/datetime-moment.api.md +36 -0
  233. package/package.json +91 -48
  234. package/src/index.d.ts +19 -0
  235. package/src/index.d.ts.map +1 -0
  236. package/src/misc/constants.d.ts +32 -32
  237. package/src/misc/datetime.interface.d.ts +34 -34
  238. package/src/misc/tokens.d.ts +10 -10
  239. package/src/misc/validators.d.ts +25 -25
  240. package/src/modules/datePipes.module.d.ts +12 -5
  241. package/src/modules/datePipes.module.d.ts.map +1 -1
  242. package/src/picker/components/dayPicker/dayPicker.component.d.ts +68 -65
  243. package/src/picker/components/dayPicker/dayPicker.component.d.ts.map +1 -1
  244. package/src/picker/components/dayPicker/dayPicker.component.html +7 -7
  245. package/src/picker/components/dayPicker/dayPicker.interfaces.d.ts +10 -10
  246. package/src/picker/components/monthPicker/monthPicker.component.d.ts +52 -49
  247. package/src/picker/components/monthPicker/monthPicker.component.d.ts.map +1 -1
  248. package/src/picker/components/monthPicker/monthPicker.component.html +6 -6
  249. package/src/picker/components/monthPicker/monthPicker.interfaces.d.ts +6 -6
  250. package/src/picker/components/picker/picker.component.animations.d.ts +4 -4
  251. package/src/picker/components/picker/picker.component.d.ts +104 -101
  252. package/src/picker/components/picker/picker.component.d.ts.map +1 -1
  253. package/src/picker/components/pickerBase.component.d.ts +169 -166
  254. package/src/picker/components/pickerBase.component.d.ts.map +1 -1
  255. package/src/picker/components/yearPicker/yearPicker.component.d.ts +57 -54
  256. package/src/picker/components/yearPicker/yearPicker.component.d.ts.map +1 -1
  257. package/src/picker/components/yearPicker/yearPicker.component.html +6 -6
  258. package/src/picker/components/yearPicker/yearPicker.interfaces.d.ts +6 -6
  259. package/src/picker/interfaces.d.ts +4 -4
  260. package/src/picker/misc/datetimePicker.interface.d.ts +188 -188
  261. package/src/picker/misc/tokens.d.ts +6 -6
  262. package/src/picker/modules/picker.module.d.ts +16 -5
  263. package/src/picker/modules/picker.module.d.ts.map +1 -1
  264. package/src/picker/types.d.ts +7 -7
  265. package/src/pipes/asRequiredType.d.ts +21 -0
  266. package/src/pipes/asRequiredType.d.ts.map +1 -0
  267. package/src/pipes/dateConvert.pipe.d.ts +18 -15
  268. package/src/pipes/dateConvert.pipe.d.ts.map +1 -1
  269. package/src/pipes/dateFormat.pipe.d.ts +20 -17
  270. package/src/pipes/dateFormat.pipe.d.ts.map +1 -1
  271. package/src/selector/components/inputDateTime/inputDateTime.component.d.ts +187 -184
  272. package/src/selector/components/inputDateTime/inputDateTime.component.d.ts.map +1 -1
  273. package/src/selector/components/selector/selector.component.animations.d.ts +4 -4
  274. package/src/selector/components/selector/selector.component.d.ts +155 -152
  275. package/src/selector/components/selector/selector.component.d.ts.map +1 -1
  276. package/src/selector/components/simpleInputDateTime/simpleInputDateTime.component.d.ts +170 -167
  277. package/src/selector/components/simpleInputDateTime/simpleInputDateTime.component.d.ts.map +1 -1
  278. package/src/selector/directives/datetimeMaxValidator/datetimeMaxValidator.directive.d.ts +22 -19
  279. package/src/selector/directives/datetimeMaxValidator/datetimeMaxValidator.directive.d.ts.map +1 -1
  280. package/src/selector/directives/datetimeMinValidator/datetimeMinValidator.directive.d.ts +22 -19
  281. package/src/selector/directives/datetimeMinValidator/datetimeMinValidator.directive.d.ts.map +1 -1
  282. package/src/selector/directives/datetimeValidator/datetimeValidator.directive.d.ts +21 -18
  283. package/src/selector/directives/datetimeValidator/datetimeValidator.directive.d.ts.map +1 -1
  284. package/src/selector/directives/selectorControlValueAccessor/selectorControlValueAccessor.directive.d.ts +53 -50
  285. package/src/selector/directives/selectorControlValueAccessor/selectorControlValueAccessor.directive.d.ts.map +1 -1
  286. package/src/selector/interfaces.d.ts +1 -1
  287. package/src/selector/misc/datetimeSelector.interface.d.ts +82 -82
  288. package/src/selector/misc/tokens.d.ts +6 -6
  289. package/src/selector/modules/basicSelector.module.d.ts +10 -5
  290. package/src/selector/modules/basicSelector.module.d.ts.map +1 -1
  291. package/src/selector/modules/selector.module.d.ts +18 -5
  292. package/src/selector/modules/selector.module.d.ts.map +1 -1
  293. package/src/selector/types.d.ts +9 -9
  294. package/src/services/dateApi.interface.d.ts +275 -275
  295. package/src/services/datePositionParser.interface.d.ts +40 -40
  296. package/src/services/datePositionParser.service.d.ts +60 -57
  297. package/src/services/datePositionParser.service.d.ts.map +1 -1
  298. package/src/services/dateTimeRelativeParser.service.d.ts +21 -18
  299. package/src/services/dateTimeRelativeParser.service.d.ts.map +1 -1
  300. package/src/services/dateValueProvider.service.d.ts +18 -15
  301. package/src/services/dateValueProvider.service.d.ts.map +1 -1
  302. package/src/services/formatProvider.interface.d.ts +17 -17
  303. package/src/services/index.d.ts +3 -3
  304. package/tsconfig.karma.json +5 -6
  305. package/version.bak +1 -1
  306. package/appveyor.yml +0 -70
  307. package/date-fns/dist/es2015/date-fns/index.js +0 -10
  308. package/date-fns/dist/es2015/date-fns/public_api.js +0 -7
  309. package/date-fns/dist/es2015/date-fns/src/date-fns.js +0 -9
  310. package/date-fns/dist/es2015/date-fns/src/misc/tokens.js +0 -32
  311. package/date-fns/dist/es2015/date-fns/src/services/dateFnsDateApi.service.js +0 -512
  312. package/date-fns/dist/es2015/date-fns/src/services/dateFnsLocale.service.js +0 -18
  313. package/date-fns/dist/es5/date-fns/index.js +0 -10
  314. package/date-fns/dist/es5/date-fns/public_api.js +0 -7
  315. package/date-fns/dist/es5/date-fns/src/date-fns.js +0 -9
  316. package/date-fns/dist/es5/date-fns/src/misc/tokens.js +0 -32
  317. package/date-fns/dist/es5/date-fns/src/services/dateFnsDateApi.service.js +0 -902
  318. package/date-fns/dist/es5/date-fns/src/services/dateFnsLocale.service.js +0 -18
  319. package/date-fns/index.d.ts +0 -5
  320. package/date-fns/index.d.ts.map +0 -1
  321. package/date-fns/index.metadata.json +0 -1
  322. package/date-fns/public_api.d.ts +0 -2
  323. package/date-fns/public_api.d.ts.map +0 -1
  324. package/date-fns/src/date-fns.d.ts.map +0 -1
  325. package/date-fns/src/services/dateFnsDateApi.service.ngfactory.d.ts.map +0 -1
  326. package/datetime.d.ts.map +0 -1
  327. package/datetime.metadata.json +0 -1
  328. package/dist/es2015/datetime.js +0 -10
  329. package/dist/es2015/public_api.js +0 -7
  330. package/dist/es2015/src/datetime.js +0 -24
  331. package/dist/es2015/src/misc/constants.js +0 -46
  332. package/dist/es2015/src/misc/datetime.interface.js +0 -52
  333. package/dist/es2015/src/misc/tokens.js +0 -29
  334. package/dist/es2015/src/misc/validators.js +0 -80
  335. package/dist/es2015/src/modules/datePipes.module.js +0 -26
  336. package/dist/es2015/src/picker/components/dayPicker/dayPicker.component.js +0 -215
  337. package/dist/es2015/src/picker/components/dayPicker/dayPicker.interfaces.js +0 -18
  338. package/dist/es2015/src/picker/components/monthPicker/monthPicker.component.js +0 -138
  339. package/dist/es2015/src/picker/components/monthPicker/monthPicker.interfaces.js +0 -11
  340. package/dist/es2015/src/picker/components/picker/picker.component.animations.js +0 -77
  341. package/dist/es2015/src/picker/components/picker/picker.component.js +0 -386
  342. package/dist/es2015/src/picker/components/pickerBase.component.js +0 -406
  343. package/dist/es2015/src/picker/components/yearPicker/yearPicker.component.js +0 -158
  344. package/dist/es2015/src/picker/components/yearPicker/yearPicker.interfaces.js +0 -11
  345. package/dist/es2015/src/picker/interfaces.js +0 -10
  346. package/dist/es2015/src/picker/misc/datetimePicker.interface.js +0 -245
  347. package/dist/es2015/src/picker/misc/tokens.js +0 -12
  348. package/dist/es2015/src/picker/modules/picker.module.js +0 -35
  349. package/dist/es2015/src/picker/types.js +0 -13
  350. package/dist/es2015/src/pipes/dateConvert.pipe.js +0 -50
  351. package/dist/es2015/src/pipes/dateFormat.pipe.js +0 -64
  352. package/dist/es2015/src/selector/components/inputDateTime/inputDateTime.component.js +0 -588
  353. package/dist/es2015/src/selector/components/selector/selector.component.animations.js +0 -21
  354. package/dist/es2015/src/selector/components/selector/selector.component.js +0 -514
  355. package/dist/es2015/src/selector/components/simpleInputDateTime/simpleInputDateTime.component.js +0 -456
  356. package/dist/es2015/src/selector/directives/datetimeMaxValidator/datetimeMaxValidator.directive.js +0 -73
  357. package/dist/es2015/src/selector/directives/datetimeMinValidator/datetimeMinValidator.directive.js +0 -73
  358. package/dist/es2015/src/selector/directives/datetimeValidator/datetimeValidator.directive.js +0 -70
  359. package/dist/es2015/src/selector/directives/selectorControlValueAccessor/selectorControlValueAccessor.directive.js +0 -171
  360. package/dist/es2015/src/selector/interfaces.js +0 -7
  361. package/dist/es2015/src/selector/misc/datetimeSelector.interface.js +0 -106
  362. package/dist/es2015/src/selector/misc/tokens.js +0 -12
  363. package/dist/es2015/src/selector/modules/basicSelector.module.js +0 -20
  364. package/dist/es2015/src/selector/modules/selector.module.js +0 -45
  365. package/dist/es2015/src/selector/types.js +0 -15
  366. package/dist/es2015/src/services/dateApi.interface.js +0 -316
  367. package/dist/es2015/src/services/datePositionParser.interface.js +0 -56
  368. package/dist/es2015/src/services/datePositionParser.service.js +0 -297
  369. package/dist/es2015/src/services/dateTimeRelativeParser.service.js +0 -97
  370. package/dist/es2015/src/services/dateValueProvider.service.js +0 -79
  371. package/dist/es2015/src/services/formatProvider.interface.js +0 -28
  372. package/dist/es2015/src/services/index.js +0 -9
  373. package/dist/es5/datetime.js +0 -10
  374. package/dist/es5/public_api.js +0 -7
  375. package/dist/es5/src/datetime.js +0 -24
  376. package/dist/es5/src/misc/constants.js +0 -46
  377. package/dist/es5/src/misc/datetime.interface.js +0 -52
  378. package/dist/es5/src/misc/tokens.js +0 -29
  379. package/dist/es5/src/misc/validators.js +0 -124
  380. package/dist/es5/src/modules/datePipes.module.js +0 -30
  381. package/dist/es5/src/picker/components/dayPicker/dayPicker.component.js +0 -323
  382. package/dist/es5/src/picker/components/dayPicker/dayPicker.interfaces.js +0 -18
  383. package/dist/es5/src/picker/components/monthPicker/monthPicker.component.js +0 -233
  384. package/dist/es5/src/picker/components/monthPicker/monthPicker.interfaces.js +0 -11
  385. package/dist/es5/src/picker/components/picker/picker.component.animations.js +0 -77
  386. package/dist/es5/src/picker/components/picker/picker.component.js +0 -460
  387. package/dist/es5/src/picker/components/pickerBase.component.js +0 -561
  388. package/dist/es5/src/picker/components/yearPicker/yearPicker.component.js +0 -253
  389. package/dist/es5/src/picker/components/yearPicker/yearPicker.interfaces.js +0 -11
  390. package/dist/es5/src/picker/interfaces.js +0 -10
  391. package/dist/es5/src/picker/misc/datetimePicker.interface.js +0 -245
  392. package/dist/es5/src/picker/misc/tokens.js +0 -12
  393. package/dist/es5/src/picker/modules/picker.module.js +0 -39
  394. package/dist/es5/src/picker/types.js +0 -13
  395. package/dist/es5/src/pipes/dateConvert.pipe.js +0 -63
  396. package/dist/es5/src/pipes/dateFormat.pipe.js +0 -79
  397. package/dist/es5/src/selector/components/inputDateTime/inputDateTime.component.js +0 -808
  398. package/dist/es5/src/selector/components/selector/selector.component.animations.js +0 -21
  399. package/dist/es5/src/selector/components/selector/selector.component.js +0 -653
  400. package/dist/es5/src/selector/components/simpleInputDateTime/simpleInputDateTime.component.js +0 -656
  401. package/dist/es5/src/selector/directives/datetimeMaxValidator/datetimeMaxValidator.directive.js +0 -84
  402. package/dist/es5/src/selector/directives/datetimeMinValidator/datetimeMinValidator.directive.js +0 -84
  403. package/dist/es5/src/selector/directives/datetimeValidator/datetimeValidator.directive.js +0 -82
  404. package/dist/es5/src/selector/directives/selectorControlValueAccessor/selectorControlValueAccessor.directive.js +0 -230
  405. package/dist/es5/src/selector/interfaces.js +0 -7
  406. package/dist/es5/src/selector/misc/datetimeSelector.interface.js +0 -106
  407. package/dist/es5/src/selector/misc/tokens.js +0 -12
  408. package/dist/es5/src/selector/modules/basicSelector.module.js +0 -24
  409. package/dist/es5/src/selector/modules/selector.module.js +0 -49
  410. package/dist/es5/src/selector/types.js +0 -15
  411. package/dist/es5/src/services/dateApi.interface.js +0 -316
  412. package/dist/es5/src/services/datePositionParser.interface.js +0 -56
  413. package/dist/es5/src/services/datePositionParser.service.js +0 -366
  414. package/dist/es5/src/services/dateTimeRelativeParser.service.js +0 -108
  415. package/dist/es5/src/services/dateValueProvider.service.js +0 -92
  416. package/dist/es5/src/services/formatProvider.interface.js +0 -28
  417. package/dist/es5/src/services/index.js +0 -9
  418. package/moment/dist/es2015/moment/index.js +0 -10
  419. package/moment/dist/es2015/moment/public_api.js +0 -7
  420. package/moment/dist/es2015/moment/src/misc/tokens.js +0 -26
  421. package/moment/dist/es2015/moment/src/moment.js +0 -8
  422. package/moment/dist/es2015/moment/src/services/momentDateApi.service.js +0 -466
  423. package/moment/dist/es5/moment/index.js +0 -10
  424. package/moment/dist/es5/moment/public_api.js +0 -7
  425. package/moment/dist/es5/moment/src/misc/tokens.js +0 -26
  426. package/moment/dist/es5/moment/src/moment.js +0 -8
  427. package/moment/dist/es5/moment/src/services/momentDateApi.service.js +0 -858
  428. package/moment/index.d.ts +0 -5
  429. package/moment/index.d.ts.map +0 -1
  430. package/moment/index.metadata.json +0 -1
  431. package/moment/public_api.d.ts +0 -2
  432. package/moment/public_api.d.ts.map +0 -1
  433. package/moment/src/moment.d.ts.map +0 -1
  434. package/moment/src/services/momentDateApi.service.ngfactory.d.ts.map +0 -1
  435. package/public_api.d.ts +0 -2
  436. package/public_api.d.ts.map +0 -1
  437. package/src/datetime.d.ts.map +0 -1
  438. package/src/modules/datePipes.module.ngfactory.d.ts.map +0 -1
  439. package/src/picker/components/dayPicker/dayPicker.component.css.shim.ngstyle.d.ts.map +0 -1
  440. package/src/picker/components/dayPicker/dayPicker.component.ngfactory.d.ts.map +0 -1
  441. package/src/picker/components/monthPicker/monthPicker.component.css.shim.ngstyle.d.ts.map +0 -1
  442. package/src/picker/components/monthPicker/monthPicker.component.ngfactory.d.ts.map +0 -1
  443. package/src/picker/components/picker/picker.component.ngfactory.d.ts.map +0 -1
  444. package/src/picker/components/yearPicker/yearPicker.component.css.shim.ngstyle.d.ts.map +0 -1
  445. package/src/picker/components/yearPicker/yearPicker.component.ngfactory.d.ts.map +0 -1
  446. package/src/picker/modules/picker.module.ngfactory.d.ts.map +0 -1
  447. package/src/pipes/dateConvert.pipe.ngfactory.d.ts.map +0 -1
  448. package/src/pipes/dateFormat.pipe.ngfactory.d.ts.map +0 -1
  449. package/src/selector/components/inputDateTime/inputDateTime.component.css.shim.ngstyle.d.ts.map +0 -1
  450. package/src/selector/components/inputDateTime/inputDateTime.component.ngfactory.d.ts.map +0 -1
  451. package/src/selector/components/selector/selector.component.css.shim.ngstyle.d.ts.map +0 -1
  452. package/src/selector/components/selector/selector.component.ngfactory.d.ts.map +0 -1
  453. package/src/selector/components/simpleInputDateTime/simpleInputDateTime.component.css.shim.ngstyle.d.ts.map +0 -1
  454. package/src/selector/components/simpleInputDateTime/simpleInputDateTime.component.ngfactory.d.ts.map +0 -1
  455. package/src/selector/directives/datetimeMaxValidator/datetimeMaxValidator.directive.ngfactory.d.ts.map +0 -1
  456. package/src/selector/directives/datetimeMinValidator/datetimeMinValidator.directive.ngfactory.d.ts.map +0 -1
  457. package/src/selector/directives/datetimeValidator/datetimeValidator.directive.ngfactory.d.ts.map +0 -1
  458. package/src/selector/directives/selectorControlValueAccessor/selectorControlValueAccessor.directive.ngfactory.d.ts.map +0 -1
  459. package/src/selector/modules/basicSelector.module.ngfactory.d.ts.map +0 -1
  460. package/src/selector/modules/selector.module.ngfactory.d.ts.map +0 -1
  461. package/src/services/datePositionParser.service.ngfactory.d.ts.map +0 -1
  462. package/src/services/dateTimeRelativeParser.service.ngfactory.d.ts.map +0 -1
  463. package/src/services/dateValueProvider.service.ngfactory.d.ts.map +0 -1
@@ -1,808 +0,0 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * Generated from: src/selector/components/inputDateTime/inputDateTime.component.ts
4
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
- */
6
- import { Component, ChangeDetectionStrategy, Inject, ChangeDetectorRef, ElementRef, ViewChild } from '@angular/core';
7
- import { Subject } from 'rxjs';
8
- import { DATE_API } from '../../../misc/tokens';
9
- import { DatePositionParserService } from '../../../services/datePositionParser.service';
10
- import { DateValueProvider } from '../../../services/dateValueProvider.service';
11
- /**
12
- * Component used as datetime selector with input
13
- * @template TDate
14
- */
15
- var InputDateTimeSelectorComponent = /** @class */ (function () {
16
- //######################### constructor #########################
17
- function InputDateTimeSelectorComponent(_dateApi, _parserSvc, _valueProvider, _changeDetector) {
18
- this._dateApi = _dateApi;
19
- this._parserSvc = _parserSvc;
20
- this._valueProvider = _valueProvider;
21
- this._changeDetector = _changeDetector;
22
- //######################### protected fields #########################
23
- /**
24
- * Occurs when value changes
25
- */
26
- this._valueChange = new Subject();
27
- /**
28
- * Occurs when selector is touched by user
29
- */
30
- this._touched = new Subject();
31
- /**
32
- * Occurs when selector requires picker to be displayed or hidden
33
- */
34
- this._pickerRequest = new Subject();
35
- /**
36
- * Instance of parser created for specific format
37
- */
38
- this._parser = null;
39
- /**
40
- * Currently used format for displaying data
41
- */
42
- this._format = '';
43
- /**
44
- * Current value representation as date api wrapper
45
- */
46
- this._dateApiValue = null;
47
- /**
48
- * Indication whether is current value valid value
49
- */
50
- this._isValid = true;
51
- /**
52
- * Minimal possible value that can be picked
53
- */
54
- this._minValue = null;
55
- /**
56
- * Maximal possible value that can be picked
57
- */
58
- this._maxValue = null;
59
- //######################### public properties - template bindings #########################
60
- /**
61
- * Indication whether is input disabled
62
- * \@internal
63
- */
64
- this.disabled = false;
65
- }
66
- Object.defineProperty(InputDateTimeSelectorComponent.prototype, "format", {
67
- //######################### public properties - implementation of DateTimeSelector #########################
68
- /**
69
- * Gets or sets currently used format for displaying data
70
- */
71
- get:
72
- //######################### public properties - implementation of DateTimeSelector #########################
73
- /**
74
- * Gets or sets currently used format for displaying data
75
- * @return {?}
76
- */
77
- function () {
78
- return this._format;
79
- },
80
- set: /**
81
- * @param {?} value
82
- * @return {?}
83
- */
84
- function (value) {
85
- //only if format changes
86
- if (this._format != value) {
87
- this._parser = this._parserSvc.createParser(this._dateApi.getFormat(value));
88
- }
89
- this._format = value;
90
- },
91
- enumerable: false,
92
- configurable: true
93
- });
94
- Object.defineProperty(InputDateTimeSelectorComponent.prototype, "value", {
95
- /**
96
- * Gets current value of datetime
97
- */
98
- get: /**
99
- * Gets current value of datetime
100
- * @return {?}
101
- */
102
- function () {
103
- if (!this._dateApiValue || !this._isValid) {
104
- return null;
105
- }
106
- return this._valueProvider.getValue(this._dateApiValue.value, this._format);
107
- },
108
- enumerable: false,
109
- configurable: true
110
- });
111
- Object.defineProperty(InputDateTimeSelectorComponent.prototype, "formattedValue", {
112
- /**
113
- * Gets formatted value
114
- */
115
- get: /**
116
- * Gets formatted value
117
- * @return {?}
118
- */
119
- function () {
120
- if (!this._isValid) {
121
- return null;
122
- }
123
- return this.currentValue;
124
- },
125
- enumerable: false,
126
- configurable: true
127
- });
128
- Object.defineProperty(InputDateTimeSelectorComponent.prototype, "valid", {
129
- /**
130
- * Gets indication whether is current value valid
131
- */
132
- get: /**
133
- * Gets indication whether is current value valid
134
- * @return {?}
135
- */
136
- function () {
137
- return this._isValid;
138
- },
139
- enumerable: false,
140
- configurable: true
141
- });
142
- Object.defineProperty(InputDateTimeSelectorComponent.prototype, "valueChange", {
143
- /**
144
- * Occurs when value changes
145
- */
146
- get: /**
147
- * Occurs when value changes
148
- * @return {?}
149
- */
150
- function () {
151
- return this._valueChange.asObservable();
152
- },
153
- enumerable: false,
154
- configurable: true
155
- });
156
- Object.defineProperty(InputDateTimeSelectorComponent.prototype, "touched", {
157
- /**
158
- * Occurs when selector is touched by user
159
- */
160
- get: /**
161
- * Occurs when selector is touched by user
162
- * @return {?}
163
- */
164
- function () {
165
- return this._touched.asObservable();
166
- },
167
- enumerable: false,
168
- configurable: true
169
- });
170
- Object.defineProperty(InputDateTimeSelectorComponent.prototype, "pickerRequest", {
171
- /**
172
- * Occurs when selector requires picker to be displayed
173
- */
174
- get: /**
175
- * Occurs when selector requires picker to be displayed
176
- * @return {?}
177
- */
178
- function () {
179
- return this._pickerRequest.asObservable();
180
- },
181
- enumerable: false,
182
- configurable: true
183
- });
184
- Object.defineProperty(InputDateTimeSelectorComponent.prototype, "currentValue", {
185
- //######################### protected properties #########################
186
- /**
187
- * Gets or sets string representation current of value
188
- */
189
- get:
190
- //######################### protected properties #########################
191
- /**
192
- * Gets or sets string representation current of value
193
- * @protected
194
- * @return {?}
195
- */
196
- function () {
197
- return this.input.value || null;
198
- },
199
- set: /**
200
- * @protected
201
- * @param {?} value
202
- * @return {?}
203
- */
204
- function (value) {
205
- if (this.input) {
206
- this.input.value = value !== null && value !== void 0 ? value : '';
207
- }
208
- },
209
- enumerable: false,
210
- configurable: true
211
- });
212
- Object.defineProperty(InputDateTimeSelectorComponent.prototype, "input", {
213
- /**
214
- * Gets input element used for handling date time value
215
- */
216
- get: /**
217
- * Gets input element used for handling date time value
218
- * @protected
219
- * @return {?}
220
- */
221
- function () {
222
- return (/** @type {?} */ (this.inputElement)).nativeElement;
223
- },
224
- enumerable: false,
225
- configurable: true
226
- });
227
- //######################### public methods - implementation of DateTimeSelector #########################
228
- /**
229
- * Sets minimal possible value for picker, that can be picked
230
- * @param value - Minimal possible value that can be picked
231
- */
232
- //######################### public methods - implementation of DateTimeSelector #########################
233
- /**
234
- * Sets minimal possible value for picker, that can be picked
235
- * @param {?} value - Minimal possible value that can be picked
236
- * @return {?}
237
- */
238
- InputDateTimeSelectorComponent.prototype.setMinValue =
239
- //######################### public methods - implementation of DateTimeSelector #########################
240
- /**
241
- * Sets minimal possible value for picker, that can be picked
242
- * @param {?} value - Minimal possible value that can be picked
243
- * @return {?}
244
- */
245
- function (value) {
246
- this._minValue = value;
247
- };
248
- /**
249
- * Sets maximal possible value for picker, that can be picked
250
- * @param value - Maximal possible value that can be picked
251
- */
252
- /**
253
- * Sets maximal possible value for picker, that can be picked
254
- * @param {?} value - Maximal possible value that can be picked
255
- * @return {?}
256
- */
257
- InputDateTimeSelectorComponent.prototype.setMaxValue = /**
258
- * Sets maximal possible value for picker, that can be picked
259
- * @param {?} value - Maximal possible value that can be picked
260
- * @return {?}
261
- */
262
- function (value) {
263
- this._maxValue = value;
264
- };
265
- /**
266
- * Sets value of datetime selector
267
- * @param value - Value to be set to this selector
268
- */
269
- /**
270
- * Sets value of datetime selector
271
- * @param {?} value - Value to be set to this selector
272
- * @return {?}
273
- */
274
- InputDateTimeSelectorComponent.prototype.setValue = /**
275
- * Sets value of datetime selector
276
- * @param {?} value - Value to be set to this selector
277
- * @return {?}
278
- */
279
- function (value) {
280
- if (value === null || value === void 0 ? void 0 : value.from) {
281
- this._dateApiValue = this._dateApi.getValue(value === null || value === void 0 ? void 0 : value.from, this._format);
282
- this._isValid = this._dateApiValue.isValid();
283
- this._show();
284
- }
285
- else {
286
- this._clearValue();
287
- }
288
- };
289
- /**
290
- * Sets as 'control' disabled
291
- * @param disabled - Indication whether sets value as disabled, if omitted it is same as disabled set to true
292
- */
293
- /**
294
- * Sets as 'control' disabled
295
- * @param {?=} disabled - Indication whether sets value as disabled, if omitted it is same as disabled set to true
296
- * @return {?}
297
- */
298
- InputDateTimeSelectorComponent.prototype.setDisabled = /**
299
- * Sets as 'control' disabled
300
- * @param {?=} disabled - Indication whether sets value as disabled, if omitted it is same as disabled set to true
301
- * @return {?}
302
- */
303
- function (disabled) {
304
- if (disabled === void 0) { disabled = true; }
305
- this.disabled = disabled;
306
- };
307
- /**
308
- * Explicitly runs invalidation of content (change detection)
309
- */
310
- /**
311
- * Explicitly runs invalidation of content (change detection)
312
- * @return {?}
313
- */
314
- InputDateTimeSelectorComponent.prototype.invalidateVisuals = /**
315
- * Explicitly runs invalidation of content (change detection)
316
- * @return {?}
317
- */
318
- function () {
319
- this._changeDetector.detectChanges();
320
- };
321
- //######################### public methods - template bindings #########################
322
- /**
323
- * Handles gaining of focus
324
- * @internal
325
- */
326
- //######################### public methods - template bindings #########################
327
- /**
328
- * Handles gaining of focus
329
- * \@internal
330
- * @return {?}
331
- */
332
- InputDateTimeSelectorComponent.prototype.handleFocus =
333
- //######################### public methods - template bindings #########################
334
- /**
335
- * Handles gaining of focus
336
- * \@internal
337
- * @return {?}
338
- */
339
- function () {
340
- this._pickerRequest.next(true);
341
- //no value
342
- if (!this._dateApiValue) {
343
- this._dateApiValue = this._dateApi.now();
344
- this._isValid = this._dateApiValue.isValid();
345
- if (this._minMaxConstraintTest()) {
346
- this._clearValue();
347
- }
348
- else {
349
- this._valueChange.next();
350
- }
351
- }
352
- if (!this._isValid) {
353
- return;
354
- }
355
- this._show();
356
- /** @type {?} */
357
- var result = (/** @type {?} */ (this._parser)).parse((/** @type {?} */ (this.currentValue)), (/** @type {?} */ (this.input.selectionStart)));
358
- this.input.selectionStart = result.positionFrom;
359
- this.input.selectionEnd = result.positionTo;
360
- };
361
- /**
362
- * Handles blur on input
363
- * @internal
364
- */
365
- /**
366
- * Handles blur on input
367
- * \@internal
368
- * @return {?}
369
- */
370
- InputDateTimeSelectorComponent.prototype.handleBlur = /**
371
- * Handles blur on input
372
- * \@internal
373
- * @return {?}
374
- */
375
- function () {
376
- this._pickerRequest.next(false);
377
- };
378
- /**
379
- * Handles user input
380
- * @internal
381
- */
382
- /**
383
- * Handles user input
384
- * \@internal
385
- * @return {?}
386
- */
387
- InputDateTimeSelectorComponent.prototype.handleInput = /**
388
- * Handles user input
389
- * \@internal
390
- * @return {?}
391
- */
392
- function () {
393
- //empty value
394
- if (!this.currentValue) {
395
- this._clearValue();
396
- this._valueChange.next();
397
- return;
398
- }
399
- this._dateApiValue = this._dateApi.getValue(this.currentValue, this._format);
400
- this._isValid = this._dateApiValue.isValid();
401
- this._valueChange.next();
402
- };
403
- /**
404
- * Handles selection of text inside of input
405
- * @internal
406
- */
407
- /**
408
- * Handles selection of text inside of input
409
- * \@internal
410
- * @return {?}
411
- */
412
- InputDateTimeSelectorComponent.prototype.handleSelect = /**
413
- * Handles selection of text inside of input
414
- * \@internal
415
- * @return {?}
416
- */
417
- function () {
418
- //handles when all text is selected
419
- if (this.currentValue && this.input.selectionStart == 0 && this.input.selectionEnd == this.input.value.length) {
420
- /** @type {?} */
421
- var result = (/** @type {?} */ (this._parser)).parse(this.input.value, (/** @type {?} */ (this.input.selectionStart)));
422
- this.input.selectionStart = result.positionFrom;
423
- this.input.selectionEnd = result.positionTo;
424
- }
425
- };
426
- /**
427
- * Handles click event inside of input
428
- * @internal
429
- */
430
- /**
431
- * Handles click event inside of input
432
- * \@internal
433
- * @return {?}
434
- */
435
- InputDateTimeSelectorComponent.prototype.handleClick = /**
436
- * Handles click event inside of input
437
- * \@internal
438
- * @return {?}
439
- */
440
- function () {
441
- this._pickerRequest.next(true);
442
- if (!this._dateApiValue) {
443
- return;
444
- }
445
- /** @type {?} */
446
- var result = (/** @type {?} */ (this._parser)).parse(this.input.value, (/** @type {?} */ (this.input.selectionStart)));
447
- this.input.selectionStart = result.positionFrom;
448
- this.input.selectionEnd = result.positionTo;
449
- };
450
- /**
451
- * Handles keyboard events
452
- * @param event - Keyboard event that occured
453
- * @param input - Html input element that holds current value and selection
454
- * @internal
455
- */
456
- /**
457
- * Handles keyboard events
458
- * \@internal
459
- * @param {?} event - Keyboard event that occured
460
- * @return {?}
461
- */
462
- InputDateTimeSelectorComponent.prototype.handleKeyboard = /**
463
- * Handles keyboard events
464
- * \@internal
465
- * @param {?} event - Keyboard event that occured
466
- * @return {?}
467
- */
468
- function (event) {
469
- var _a;
470
- if (!((_a = this._dateApiValue) === null || _a === void 0 ? void 0 : _a.isValid())) {
471
- return;
472
- }
473
- switch (event.key) {
474
- case 'ArrowRight':
475
- case 'ArrowLeft':
476
- {
477
- event.preventDefault();
478
- event.stopPropagation();
479
- /** @type {?} */
480
- var result = event.key == 'ArrowLeft' ? (/** @type {?} */ (this._parser)).previous(this.input.value, (/** @type {?} */ (this.input.selectionStart))) : (/** @type {?} */ (this._parser)).next(this.input.value, (/** @type {?} */ (this.input.selectionStart)));
481
- if (result) {
482
- this.input.selectionStart = result.positionFrom;
483
- this.input.selectionEnd = result.positionTo;
484
- }
485
- break;
486
- }
487
- case 'ArrowUp':
488
- case 'ArrowDown':
489
- {
490
- event.preventDefault();
491
- event.stopPropagation();
492
- /** @type {?} */
493
- var result = (/** @type {?} */ (this._parser)).parse(this.input.value, (/** @type {?} */ (this.input.selectionStart)));
494
- /** @type {?} */
495
- var selectionStart = result.positionFrom;
496
- this._stepChangeValue(result.part, event.key == 'ArrowUp');
497
- this._show();
498
- result = (/** @type {?} */ (this._parser)).parse(this.input.value, selectionStart);
499
- this.input.selectionStart = result.positionFrom;
500
- this.input.selectionEnd = result.positionTo;
501
- break;
502
- }
503
- case 'Tab':
504
- {
505
- /** @type {?} */
506
- var result = event.shiftKey ? (/** @type {?} */ (this._parser)).previous(this.input.value, (/** @type {?} */ (this.input.selectionStart))) : (/** @type {?} */ (this._parser)).next(this.input.value, (/** @type {?} */ (this.input.selectionStart)));
507
- if (result) {
508
- event.preventDefault();
509
- event.stopPropagation();
510
- this.input.selectionStart = result.positionFrom;
511
- this.input.selectionEnd = result.positionTo;
512
- }
513
- break;
514
- }
515
- case 'a':
516
- {
517
- if (event.ctrlKey) {
518
- event.preventDefault();
519
- event.stopPropagation();
520
- }
521
- break;
522
- }
523
- case 'Backspace':
524
- {
525
- this._clearValue();
526
- this._valueChange.next();
527
- break;
528
- }
529
- case 'Escape':
530
- {
531
- this._pickerRequest.next(false);
532
- break;
533
- }
534
- case ' ':
535
- {
536
- if (event.ctrlKey) {
537
- this._pickerRequest.next(true);
538
- }
539
- break;
540
- }
541
- }
542
- };
543
- //######################### protected methods #########################
544
- /**
545
- * Shows current value in input
546
- */
547
- //######################### protected methods #########################
548
- /**
549
- * Shows current value in input
550
- * @protected
551
- * @return {?}
552
- */
553
- InputDateTimeSelectorComponent.prototype._show =
554
- //######################### protected methods #########################
555
- /**
556
- * Shows current value in input
557
- * @protected
558
- * @return {?}
559
- */
560
- function () {
561
- var _a, _b;
562
- if (this._isValid) {
563
- this.currentValue = (_b = (_a = this._dateApiValue) === null || _a === void 0 ? void 0 : _a.format(this._format)) !== null && _b !== void 0 ? _b : null;
564
- }
565
- };
566
- /**
567
- * Tests whether are min or max constraint broken, returns true if constraint is broken
568
- */
569
- /**
570
- * Tests whether are min or max constraint broken, returns true if constraint is broken
571
- * @protected
572
- * @return {?}
573
- */
574
- InputDateTimeSelectorComponent.prototype._minMaxConstraintTest = /**
575
- * Tests whether are min or max constraint broken, returns true if constraint is broken
576
- * @protected
577
- * @return {?}
578
- */
579
- function () {
580
- return (!!this._minValue && (/** @type {?} */ (this._dateApiValue)).isBefore(this._minValue)) ||
581
- (!!this._maxValue && (/** @type {?} */ (this._dateApiValue)).isAfter(this._maxValue));
582
- };
583
- /**
584
- * Runs code with check whether min max constrains was broken
585
- * @param code - Code that should be executed which can change current value
586
- */
587
- /**
588
- * Runs code with check whether min max constrains was broken
589
- * @protected
590
- * @param {?} code - Code that should be executed which can change current value
591
- * @return {?}
592
- */
593
- InputDateTimeSelectorComponent.prototype._withMinMaxConstraint = /**
594
- * Runs code with check whether min max constrains was broken
595
- * @protected
596
- * @param {?} code - Code that should be executed which can change current value
597
- * @return {?}
598
- */
599
- function (code) {
600
- var _a;
601
- (/** @type {?} */ (this._dateApiValue)).updateOriginal();
602
- code();
603
- //min value constraint failure
604
- if (this._minMaxConstraintTest()) {
605
- (_a = this._dateApiValue) === null || _a === void 0 ? void 0 : _a.resetOriginal();
606
- return;
607
- }
608
- this._valueChange.next();
609
- };
610
- /**
611
- * Clears current value
612
- */
613
- /**
614
- * Clears current value
615
- * @protected
616
- * @return {?}
617
- */
618
- InputDateTimeSelectorComponent.prototype._clearValue = /**
619
- * Clears current value
620
- * @protected
621
- * @return {?}
622
- */
623
- function () {
624
- this._dateApiValue = null;
625
- this._isValid = true;
626
- this.currentValue = null;
627
- };
628
- /**
629
- * Changes current value of date for for specified part by single step
630
- * @param part - Part of date that should be changed
631
- * @param increment - Indication whether value should be incremented or decremented
632
- */
633
- /**
634
- * Changes current value of date for for specified part by single step
635
- * @protected
636
- * @param {?} part - Part of date that should be changed
637
- * @param {?} increment - Indication whether value should be incremented or decremented
638
- * @return {?}
639
- */
640
- InputDateTimeSelectorComponent.prototype._stepChangeValue = /**
641
- * Changes current value of date for for specified part by single step
642
- * @protected
643
- * @param {?} part - Part of date that should be changed
644
- * @param {?} increment - Indication whether value should be incremented or decremented
645
- * @return {?}
646
- */
647
- function (part, increment) {
648
- var _this = this;
649
- var _a;
650
- if (!((_a = this._dateApiValue) === null || _a === void 0 ? void 0 : _a.isValid())) {
651
- return;
652
- }
653
- switch (part) {
654
- case 'y':
655
- case 'Y':
656
- {
657
- this._withMinMaxConstraint((/**
658
- * @return {?}
659
- */
660
- function () { return increment ? (/** @type {?} */ (_this._dateApiValue)).addYears(1) : (/** @type {?} */ (_this._dateApiValue)).subtractYears(1); }));
661
- break;
662
- }
663
- case 'Q':
664
- {
665
- break;
666
- }
667
- case 'M':
668
- {
669
- this._withMinMaxConstraint((/**
670
- * @return {?}
671
- */
672
- function () { return increment ? (/** @type {?} */ (_this._dateApiValue)).addMonths(1) : (/** @type {?} */ (_this._dateApiValue)).subtractMonths(1); }));
673
- break;
674
- }
675
- case 'w':
676
- {
677
- this._withMinMaxConstraint((/**
678
- * @return {?}
679
- */
680
- function () { return increment ? (/** @type {?} */ (_this._dateApiValue)).addWeeks(1) : (/** @type {?} */ (_this._dateApiValue)).subtractWeeks(1); }));
681
- break;
682
- }
683
- case 'd':
684
- case 'D':
685
- {
686
- this._withMinMaxConstraint((/**
687
- * @return {?}
688
- */
689
- function () { return increment ? (/** @type {?} */ (_this._dateApiValue)).addDays(1) : (/** @type {?} */ (_this._dateApiValue)).subtractDays(1); }));
690
- break;
691
- }
692
- }
693
- };
694
- InputDateTimeSelectorComponent.decorators = [
695
- { type: Component, args: [{
696
- selector: 'input-date-time-selector',
697
- template: "<input type=\"text\"\r\n #input\r\n (focus)=\"handleFocus()\"\r\n (blur)=\"handleBlur()\"\r\n (input)=\"handleInput()\"\r\n (click)=\"handleClick()\"\r\n (select)=\"handleSelect()\"\r\n (keydown)=\"handleKeyboard($any($event))\"\r\n [disabled]=\"disabled\"\r\n [placeholder]=\"placeholder\">",
698
- changeDetection: ChangeDetectionStrategy.OnPush,
699
- styles: [":host\r\n{\r\n display: block;\r\n}\r\n\r\ninput\r\n{\r\n width: 100%;\r\n}"]
700
- },] }
701
- ];
702
- /** @nocollapse */
703
- InputDateTimeSelectorComponent.ctorParameters = function () { return [
704
- { type: undefined, decorators: [{ type: Inject, args: [DATE_API,] }] },
705
- { type: DatePositionParserService },
706
- { type: DateValueProvider },
707
- { type: ChangeDetectorRef }
708
- ]; };
709
- InputDateTimeSelectorComponent.propDecorators = {
710
- inputElement: [{ type: ViewChild, args: ['input', { static: true },] }]
711
- };
712
- return InputDateTimeSelectorComponent;
713
- }());
714
- export { InputDateTimeSelectorComponent };
715
- if (false) {
716
- /**
717
- * Occurs when value changes
718
- * @type {?}
719
- * @protected
720
- */
721
- InputDateTimeSelectorComponent.prototype._valueChange;
722
- /**
723
- * Occurs when selector is touched by user
724
- * @type {?}
725
- * @protected
726
- */
727
- InputDateTimeSelectorComponent.prototype._touched;
728
- /**
729
- * Occurs when selector requires picker to be displayed or hidden
730
- * @type {?}
731
- * @protected
732
- */
733
- InputDateTimeSelectorComponent.prototype._pickerRequest;
734
- /**
735
- * Instance of parser created for specific format
736
- * @type {?}
737
- * @protected
738
- */
739
- InputDateTimeSelectorComponent.prototype._parser;
740
- /**
741
- * Currently used format for displaying data
742
- * @type {?}
743
- * @protected
744
- */
745
- InputDateTimeSelectorComponent.prototype._format;
746
- /**
747
- * Current value representation as date api wrapper
748
- * @type {?}
749
- * @protected
750
- */
751
- InputDateTimeSelectorComponent.prototype._dateApiValue;
752
- /**
753
- * Indication whether is current value valid value
754
- * @type {?}
755
- * @protected
756
- */
757
- InputDateTimeSelectorComponent.prototype._isValid;
758
- /**
759
- * Minimal possible value that can be picked
760
- * @type {?}
761
- * @protected
762
- */
763
- InputDateTimeSelectorComponent.prototype._minValue;
764
- /**
765
- * Maximal possible value that can be picked
766
- * @type {?}
767
- * @protected
768
- */
769
- InputDateTimeSelectorComponent.prototype._maxValue;
770
- /**
771
- * Gets or sets placeholder that is displayed when there is no value selected
772
- * @type {?}
773
- */
774
- InputDateTimeSelectorComponent.prototype.placeholder;
775
- /**
776
- * Indication whether is input disabled
777
- * \@internal
778
- * @type {?}
779
- */
780
- InputDateTimeSelectorComponent.prototype.disabled;
781
- /**
782
- * Instance of html input element
783
- * \@internal
784
- * @type {?}
785
- */
786
- InputDateTimeSelectorComponent.prototype.inputElement;
787
- /**
788
- * @type {?}
789
- * @protected
790
- */
791
- InputDateTimeSelectorComponent.prototype._dateApi;
792
- /**
793
- * @type {?}
794
- * @protected
795
- */
796
- InputDateTimeSelectorComponent.prototype._parserSvc;
797
- /**
798
- * @type {?}
799
- * @protected
800
- */
801
- InputDateTimeSelectorComponent.prototype._valueProvider;
802
- /**
803
- * @type {?}
804
- * @protected
805
- */
806
- InputDateTimeSelectorComponent.prototype._changeDetector;
807
- }
808
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXREYXRlVGltZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvc2VsZWN0b3IvY29tcG9uZW50cy9pbnB1dERhdGVUaW1lL2lucHV0RGF0ZVRpbWUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNuSCxPQUFPLEVBQWEsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBR3pDLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUU5QyxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSw4Q0FBOEMsQ0FBQztBQUN2RixPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSw2Q0FBNkMsQ0FBQzs7Ozs7QUFNOUU7SUFxTEksaUVBQWlFO0lBQ2pFLHdDQUF3QyxRQUF3QixFQUMxQyxVQUFxQyxFQUNyQyxjQUF3QyxFQUN4QyxlQUFrQztRQUhoQixhQUFRLEdBQVIsUUFBUSxDQUFnQjtRQUMxQyxlQUFVLEdBQVYsVUFBVSxDQUEyQjtRQUNyQyxtQkFBYyxHQUFkLGNBQWMsQ0FBMEI7UUFDeEMsb0JBQWUsR0FBZixlQUFlLENBQW1COzs7OztRQTNLOUMsaUJBQVksR0FBa0IsSUFBSSxPQUFPLEVBQVEsQ0FBQzs7OztRQUtsRCxhQUFRLEdBQWtCLElBQUksT0FBTyxFQUFRLENBQUM7Ozs7UUFLOUMsbUJBQWMsR0FBcUIsSUFBSSxPQUFPLEVBQVcsQ0FBQzs7OztRQUsxRCxZQUFPLEdBQTRCLElBQUksQ0FBQzs7OztRQUt4QyxZQUFPLEdBQVcsRUFBRSxDQUFDOzs7O1FBS3JCLGtCQUFhLEdBQThCLElBQUksQ0FBQzs7OztRQUtoRCxhQUFRLEdBQVksSUFBSSxDQUFDOzs7O1FBS3pCLGNB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TGdCLE1BQU0sU0FBQyxRQUFRO2dCQTdMeEIseUJBQXlCO2dCQUN6QixpQkFBaUI7Z0JBUDJCLGlCQUFpQjs7OytCQXNLaEUsU0FBUyxTQUFDLE9BQU8sRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUM7O0lBMFl0QyxxQ0FBQztDQUFBLEFBbmlCRCxJQW1pQkM7U0E1aEJZLDhCQUE4Qjs7Ozs7OztJQU92QyxzREFBNEQ7Ozs7OztJQUs1RCxrREFBd0Q7Ozs7OztJQUt4RCx3REFBb0U7Ozs7OztJQUtwRSxpREFBa0Q7Ozs7OztJQUtsRCxpREFBK0I7Ozs7OztJQUsvQix1REFBMEQ7Ozs7OztJQUsxRCxrREFBbUM7Ozs7OztJQUtuQyxtREFBdUM7Ozs7OztJQUt2QyxtREFBdUM7Ozs7O0lBeUJ2QyxxREFBcUM7Ozs7OztJQWtFckMsa0RBQWlDOzs7Ozs7SUFRakMsc0RBQ21EOzs7OztJQTRCdkMsa0RBQW9EOzs7OztJQUNwRCxvREFBK0M7Ozs7O0lBQy9DLHdEQUFrRDs7Ozs7SUFDbEQseURBQTRDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBJbmplY3QsIENoYW5nZURldGVjdG9yUmVmLCBFbGVtZW50UmVmLCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge09ic2VydmFibGUsIFN1YmplY3R9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHtEYXRlVGltZVZhbHVlfSBmcm9tICcuLi8uLi8uLi9taXNjL2RhdGV0aW1lLmludGVyZmFjZSc7XHJcbmltcG9ydCB7REFURV9BUEl9IGZyb20gJy4uLy4uLy4uL21pc2MvdG9rZW5zJztcclxuaW1wb3J0IHtEYXRlQXBpLCBEYXRlQXBpT2JqZWN0LCBEYXRlUG9zaXRpb25QYXJzZXJ9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzJztcclxuaW1wb3J0IHtEYXRlUG9zaXRpb25QYXJzZXJTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9kYXRlUG9zaXRpb25QYXJzZXIuc2VydmljZSc7XHJcbmltcG9ydCB7RGF0ZVZhbHVlUHJvdmlkZXJ9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2RhdGVWYWx1ZVByb3ZpZGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQge0RhdGVUaW1lU2VsZWN0b3J9IGZyb20gJy4uLy4uL21pc2MvZGF0ZXRpbWVTZWxlY3Rvci5pbnRlcmZhY2UnO1xyXG5cclxuLyoqXHJcbiAqIENvbXBvbmVudCB1c2VkIGFzIGRhdGV0aW1lIHNlbGVjdG9yIHdpdGggaW5wdXRcclxuICovXHJcbkBDb21wb25lbnQoXHJcbntcclxuICAgIHNlbGVjdG9yOiAnaW5wdXQtZGF0ZS10aW1lLXNlbGVjdG9yJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnaW5wdXREYXRlVGltZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnaW5wdXREYXRlVGltZS5jb21wb25lbnQuY3NzJ10sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW5wdXREYXRlVGltZVNlbGVjdG9yQ29tcG9uZW50PFREYXRlID0gYW55PiBpbXBsZW1lbnRzIERhdGVUaW1lU2VsZWN0b3I8VERhdGU+XHJcbntcclxuICAgIC8vIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBwcm90ZWN0ZWQgZmllbGRzICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyNcclxuXHJcbiAgICAvKipcclxuICAgICAqIE9jY3VycyB3aGVuIHZhbHVlIGNoYW5nZXNcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIF92YWx1ZUNoYW5nZTogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBPY2N1cnMgd2hlbiBzZWxlY3RvciBpcyB0b3VjaGVkIGJ5IHVzZXJcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIF90b3VjaGVkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIE9jY3VycyB3aGVuIHNlbGVjdG9yIHJlcXVpcmVzIHBpY2tlciB0byBiZSBkaXNwbGF5ZWQgb3IgaGlkZGVuXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBfcGlja2VyUmVxdWVzdDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbnN0YW5jZSBvZiBwYXJzZXIgY3JlYXRlZCBmb3Igc3BlY2lmaWMgZm9ybWF0XHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBfcGFyc2VyOiBEYXRlUG9zaXRpb25QYXJzZXJ8bnVsbCA9IG51bGw7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDdXJyZW50bHkgdXNlZCBmb3JtYXQgZm9yIGRpc3BsYXlpbmcgZGF0YVxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgX2Zvcm1hdDogc3RyaW5nID0gJyc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDdXJyZW50IHZhbHVlIHJlcHJlc2VudGF0aW9uIGFzIGRhdGUgYXBpIHdyYXBwZXJcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIF9kYXRlQXBpVmFsdWU6IG51bGx8RGF0ZUFwaU9iamVjdDxURGF0ZT4gPSBudWxsO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5kaWNhdGlvbiB3aGV0aGVyIGlzIGN1cnJlbnQgdmFsdWUgdmFsaWQgdmFsdWVcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIF9pc1ZhbGlkOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIE1pbmltYWwgcG9zc2libGUgdmFsdWUgdGhhdCBjYW4gYmUgcGlja2VkXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBfbWluVmFsdWU6IFREYXRlfG51bGwgPSBudWxsO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWF4aW1hbCBwb3NzaWJsZSB2YWx1ZSB0aGF0IGNhbiBiZSBwaWNrZWRcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIF9tYXhWYWx1ZTogVERhdGV8bnVsbCA9IG51bGw7XHJcblxyXG4gICAgLy8jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIHB1YmxpYyBwcm9wZXJ0aWVzIC0gaW1wbGVtZW50YXRpb24gb2YgRGF0ZVRpbWVTZWxlY3RvciAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIG9yIHNldHMgY3VycmVudGx5IHVzZWQgZm9ybWF0IGZvciBkaXNwbGF5aW5nIGRhdGFcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldCBmb3JtYXQoKTogc3RyaW5nXHJcbiAgICB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Zvcm1hdDtcclxuICAgIH1cclxuICAgIHB1YmxpYyBzZXQgZm9ybWF0KHZhbHVlOiBzdHJpbmcpXHJcbiAgICB7XHJcbiAgICAgICAgLy9vbmx5IGlmIGZvcm1hdCBjaGFuZ2VzXHJcbiAgICAgICAgaWYodGhpcy5fZm9ybWF0ICE9IHZhbHVlKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgdGhpcy5fcGFyc2VyID0gdGhpcy5fcGFyc2VyU3ZjLmNyZWF0ZVBhcnNlcih0aGlzLl9kYXRlQXBpLmdldEZvcm1hdCh2YWx1ZSkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5fZm9ybWF0ID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIG9yIHNldHMgcGxhY2Vob2xkZXIgdGhhdCBpcyBkaXNwbGF5ZWQgd2hlbiB0aGVyZSBpcyBubyB2YWx1ZSBzZWxlY3RlZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcGxhY2Vob2xkZXI6IHN0cmluZ3x1bmRlZmluZWQ7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIGN1cnJlbnQgdmFsdWUgb2YgZGF0ZXRpbWVcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldCB2YWx1ZSgpOiBEYXRlVGltZVZhbHVlPFREYXRlPnxudWxsXHJcbiAgICB7XHJcbiAgICAgICAgaWYoIXRoaXMuX2RhdGVBcGlWYWx1ZSB8fCAhdGhpcy5faXNWYWxpZClcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlUHJvdmlkZXIuZ2V0VmFsdWUodGhpcy5fZGF0ZUFwaVZhbHVlLnZhbHVlLCB0aGlzLl9mb3JtYXQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyBmb3JtYXR0ZWQgdmFsdWVcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldCBmb3JtYXR0ZWRWYWx1ZSgpOiBzdHJpbmd8bnVsbFxyXG4gICAge1xyXG4gICAgICAgIGlmKCF0aGlzLl9pc1ZhbGlkKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50VmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIGluZGljYXRpb24gd2hldGhlciBpcyBjdXJyZW50IHZhbHVlIHZhbGlkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgdmFsaWQoKTogYm9vbGVhblxyXG4gICAge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9pc1ZhbGlkO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogT2NjdXJzIHdoZW4gdmFsdWUgY2hhbmdlc1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0IHZhbHVlQ2hhbmdlKCk6IE9ic2VydmFibGU8dm9pZD5cclxuICAgIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWVDaGFuZ2UuYXNPYnNlcnZhYmxlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBPY2N1cnMgd2hlbiBzZWxlY3RvciBpcyB0b3VjaGVkIGJ5IHVzZXJcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldCB0b3VjaGVkKCk6IE9ic2VydmFibGU8dm9pZD5cclxuICAgIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fdG91Y2hlZC5hc09ic2VydmFibGUoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE9jY3VycyB3aGVuIHNlbGVjdG9yIHJlcXVpcmVzIHBpY2tlciB0byBiZSBkaXNwbGF5ZWRcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldCBwaWNrZXJSZXF1ZXN0KCk6IE9ic2VydmFibGU8Ym9vbGVhbj5cclxuICAgIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fcGlja2VyUmVxdWVzdC5hc09ic2VydmFibGUoKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgcHVibGljIHByb3BlcnRpZXMgLSB0ZW1wbGF0ZSBiaW5kaW5ncyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmRpY2F0aW9uIHdoZXRoZXIgaXMgaW5wdXQgZGlzYWJsZWRcclxuICAgICAqIEBpbnRlcm5hbFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICAvLyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgcHVibGljIHByb3BlcnRpZXMgLSBjaGlsZHJlbiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbnN0YW5jZSBvZiBodG1sIGlucHV0IGVsZW1lbnRcclxuICAgICAqIEBpbnRlcm5hbFxyXG4gICAgICovXHJcbiAgICBAVmlld0NoaWxkKCdpbnB1dCcsIHtzdGF0aWM6IHRydWV9KVxyXG4gICAgcHVibGljIGlucHV0RWxlbWVudD86IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XHJcblxyXG4gICAgLy8jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIHByb3RlY3RlZCBwcm9wZXJ0aWVzICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyNcclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgb3Igc2V0cyBzdHJpbmcgcmVwcmVzZW50YXRpb24gY3VycmVudCBvZiB2YWx1ZVxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgZ2V0IGN1cnJlbnRWYWx1ZSgpOiBzdHJpbmd8bnVsbFxyXG4gICAge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmlucHV0LnZhbHVlIHx8IG51bGw7XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgc2V0IGN1cnJlbnRWYWx1ZSh2YWx1ZTogc3RyaW5nfG51bGwpXHJcbiAgICB7XHJcbiAgICAgICAgaWYodGhpcy5pbnB1dClcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHRoaXMuaW5wdXQudmFsdWUgPSB2YWx1ZSA/PyAnJztcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIGlucHV0IGVsZW1lbnQgdXNlZCBmb3IgaGFuZGxpbmcgZGF0ZSB0aW1lIHZhbHVlXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBnZXQgaW5wdXQoKTogSFRNTElucHV0RWxlbWVudFxyXG4gICAge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmlucHV0RWxlbWVudCEubmF0aXZlRWxlbWVudDtcclxuICAgIH1cclxuXHJcbiAgICAvLyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgY29uc3RydWN0b3IgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI1xyXG4gICAgY29uc3RydWN0b3IoQEluamVjdChEQVRFX0FQSSkgcHJvdGVjdGVkIF9kYXRlQXBpOiBEYXRlQXBpPFREYXRlPixcclxuICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfcGFyc2VyU3ZjOiBEYXRlUG9zaXRpb25QYXJzZXJTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIF92YWx1ZVByb3ZpZGVyOiBEYXRlVmFsdWVQcm92aWRlcjxURGF0ZT4sXHJcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2NoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZilcclxuICAgIHtcclxuICAgIH1cclxuXHJcbiAgICAvLyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgcHVibGljIG1ldGhvZHMgLSBpbXBsZW1lbnRhdGlvbiBvZiBEYXRlVGltZVNlbGVjdG9yICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyNcclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHMgbWluaW1hbCBwb3NzaWJsZSB2YWx1ZSBmb3IgcGlja2VyLCB0aGF0IGNhbiBiZSBwaWNrZWRcclxuICAgICAqIEBwYXJhbSB2YWx1ZSAtIE1pbmltYWwgcG9zc2libGUgdmFsdWUgdGhhdCBjYW4gYmUgcGlja2VkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzZXRNaW5WYWx1ZSh2YWx1ZTogVERhdGV8bnVsbCk6IHZvaWRcclxuICAgIHtcclxuICAgICAgICB0aGlzLl9taW5WYWx1ZSA9IHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0cyBtYXhpbWFsIHBvc3NpYmxlIHZhbHVlIGZvciBwaWNrZXIsIHRoYXQgY2FuIGJlIHBpY2tlZFxyXG4gICAgICogQHBhcmFtIHZhbHVlIC0gTWF4aW1hbCBwb3NzaWJsZSB2YWx1ZSB0aGF0IGNhbiBiZSBwaWNrZWRcclxuICAgICAqL1xyXG4gICAgcHVibGljIHNldE1heFZhbHVlKHZhbHVlOiBURGF0ZXxudWxsKTogdm9pZFxyXG4gICAge1xyXG4gICAgICAgIHRoaXMuX21heFZhbHVlID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZXRzIHZhbHVlIG9mIGRhdGV0aW1lIHNlbGVjdG9yXHJcbiAgICAgKiBAcGFyYW0gdmFsdWUgLSBWYWx1ZSB0byBiZSBzZXQgdG8gdGhpcyBzZWxlY3RvclxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2V0VmFsdWUodmFsdWU6IERhdGVUaW1lVmFsdWU8VERhdGU+fG51bGwpOiB2b2lkXHJcbiAgICB7XHJcbiAgICAgICAgaWYodmFsdWU/LmZyb20pXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0aGlzLl9kYXRlQXBpVmFsdWUgPSB0aGlzLl9kYXRlQXBpLmdldFZhbHVlKHZhbHVlPy5mcm9tLCB0aGlzLl9mb3JtYXQpO1xyXG4gICAgICAgICAgICB0aGlzLl9pc1ZhbGlkID0gdGhpcy5fZGF0ZUFwaVZhbHVlLmlzVmFsaWQoKTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHRoaXMuX3Nob3coKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgdGhpcy5fY2xlYXJWYWx1ZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHMgYXMgJ2NvbnRyb2wnIGRpc2FibGVkXHJcbiAgICAgKiBAcGFyYW0gZGlzYWJsZWQgLSBJbmRpY2F0aW9uIHdoZXRoZXIgc2V0cyB2YWx1ZSBhcyBkaXNhYmxlZCwgaWYgb21pdHRlZCBpdCBpcyBzYW1lIGFzIGRpc2FibGVkIHNldCB0byB0cnVlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzZXREaXNhYmxlZChkaXNhYmxlZDogYm9vbGVhbiA9IHRydWUpOiB2b2lkXHJcbiAgICB7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IGRpc2FibGVkO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRXhwbGljaXRseSBydW5zIGludmFsaWRhdGlvbiBvZiBjb250ZW50IChjaGFuZ2UgZGV0ZWN0aW9uKVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaW52YWxpZGF0ZVZpc3VhbHMoKTogdm9pZFxyXG4gICAge1xyXG4gICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgcHVibGljIG1ldGhvZHMgLSB0ZW1wbGF0ZSBiaW5kaW5ncyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBIYW5kbGVzIGdhaW5pbmcgb2YgZm9jdXNcclxuICAgICAqIEBpbnRlcm5hbFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaGFuZGxlRm9jdXMoKVxyXG4gICAge1xyXG4gICAgICAgIHRoaXMuX3BpY2tlclJlcXVlc3QubmV4dCh0cnVlKTtcclxuXHJcbiAgICAgICAgLy9ubyB2YWx1ZVxyXG4gICAgICAgIGlmKCF0aGlzLl9kYXRlQXBpVmFsdWUpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0aGlzLl9kYXRlQXBpVmFsdWUgPSB0aGlzLl9kYXRlQXBpLm5vdygpO1xyXG4gICAgICAgICAgICB0aGlzLl9pc1ZhbGlkID0gdGhpcy5fZGF0ZUFwaVZhbHVlLmlzVmFsaWQoKTtcclxuXHJcbiAgICAgICAgICAgIGlmKHRoaXMuX21pbk1heENvbnN0cmFpbnRUZXN0KCkpXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2NsZWFyVmFsdWUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3ZhbHVlQ2hhbmdlLm5leHQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYoIXRoaXMuX2lzVmFsaWQpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLl9zaG93KCk7XHJcblxyXG4gICAgICAgIGxldCByZXN1bHQgPSB0aGlzLl9wYXJzZXIhLnBhcnNlKHRoaXMuY3VycmVudFZhbHVlISwgdGhpcy5pbnB1dC5zZWxlY3Rpb25TdGFydCEpO1xyXG5cclxuICAgICAgICB0aGlzLmlucHV0LnNlbGVjdGlvblN0YXJ0ID0gcmVzdWx0LnBvc2l0aW9uRnJvbTtcclxuICAgICAgICB0aGlzLmlucHV0LnNlbGVjdGlvbkVuZCA9IHJlc3VsdC5wb3NpdGlvblRvO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSGFuZGxlcyBibHVyIG9uIGlucHV0XHJcbiAgICAgKiBAaW50ZXJuYWxcclxuICAgICAqL1xyXG4gICAgcHVibGljIGhhbmRsZUJsdXIoKVxyXG4gICAge1xyXG4gICAgICAgIHRoaXMuX3BpY2tlclJlcXVlc3QubmV4dChmYWxzZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBIYW5kbGVzIHVzZXIgaW5wdXRcclxuICAgICAqIEBpbnRlcm5hbFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaGFuZGxlSW5wdXQoKVxyXG4gICAge1xyXG4gICAgICAgIC8vZW1wdHkgdmFsdWVcclxuICAgICAgICBpZighdGhpcy5jdXJyZW50VmFsdWUpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0aGlzLl9jbGVhclZhbHVlKCk7XHJcbiAgICAgICAgICAgIHRoaXMuX3ZhbHVlQ2hhbmdlLm5leHQoKTtcclxuXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuX2RhdGVBcGlWYWx1ZSA9IHRoaXMuX2RhdGVBcGkuZ2V0VmFsdWUodGhpcy5jdXJyZW50VmFsdWUsIHRoaXMuX2Zvcm1hdCk7XHJcbiAgICAgICAgdGhpcy5faXNWYWxpZCA9IHRoaXMuX2RhdGVBcGlWYWx1ZS5pc1ZhbGlkKCk7XHJcbiAgICAgICAgdGhpcy5fdmFsdWVDaGFuZ2UubmV4dCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSGFuZGxlcyBzZWxlY3Rpb24gb2YgdGV4dCBpbnNpZGUgb2YgaW5wdXRcclxuICAgICAqIEBpbnRlcm5hbFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaGFuZGxlU2VsZWN0KClcclxuICAgIHtcclxuICAgICAgICAvL2hhbmRsZXMgd2hlbiBhbGwgdGV4dCBpcyBzZWxlY3RlZFxyXG4gICAgICAgIGlmKHRoaXMuY3VycmVudFZhbHVlICYmIHRoaXMuaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMCAmJiB0aGlzLmlucHV0LnNlbGVjdGlvbkVuZCA9PSB0aGlzLmlucHV0LnZhbHVlLmxlbmd0aClcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGxldCByZXN1bHQgPSB0aGlzLl9wYXJzZXIhLnBhcnNlKHRoaXMuaW5wdXQudmFsdWUsIHRoaXMuaW5wdXQuc2VsZWN0aW9uU3RhcnQhKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuaW5wdXQuc2VsZWN0aW9uU3RhcnQgPSByZXN1bHQucG9zaXRpb25Gcm9tO1xyXG4gICAgICAgICAgICB0aGlzLmlucHV0LnNlbGVjdGlvbkVuZCA9IHJlc3VsdC5wb3NpdGlvblRvO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEhhbmRsZXMgY2xpY2sgZXZlbnQgaW5zaWRlIG9mIGlucHV0XHJcbiAgICAgKiBAaW50ZXJuYWxcclxuICAgICAqL1xyXG4gICAgcHVibGljIGhhbmRsZUNsaWNrKClcclxuICAgIHtcclxuICAgICAgICB0aGlzLl9waWNrZXJSZXF1ZXN0Lm5leHQodHJ1ZSk7XHJcblxyXG4gICAgICAgIGlmKCF0aGlzLl9kYXRlQXBpVmFsdWUpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgcmVzdWx0ID0gdGhpcy5fcGFyc2VyIS5wYXJzZSh0aGlzLmlucHV0LnZhbHVlLCB0aGlzLmlucHV0LnNlbGVjdGlvblN0YXJ0ISk7XHJcblxyXG4gICAgICAgIHRoaXMuaW5wdXQuc2VsZWN0aW9uU3RhcnQgPSByZXN1bHQucG9zaXRpb25Gcm9tO1xyXG4gICAgICAgIHRoaXMuaW5wdXQuc2VsZWN0aW9uRW5kID0gcmVzdWx0LnBvc2l0aW9uVG87XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBIYW5kbGVzIGtleWJvYXJkIGV2ZW50c1xyXG4gICAgICogQHBhcmFtIGV2ZW50IC0gS2V5Ym9hcmQgZXZlbnQgdGhhdCBvY2N1cmVkXHJcbiAgICAgKiBAcGFyYW0gaW5wdXQgLSBIdG1sIGlucHV0IGVsZW1lbnQgdGhhdCBob2xkcyBjdXJyZW50IHZhbHVlIGFuZCBzZWxlY3Rpb25cclxuICAgICAqIEBpbnRlcm5hbFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaGFuZGxlS2V5Ym9hcmQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpXHJcbiAgICB7XHJcbiAgICAgICAgaWYoIXRoaXMuX2RhdGVBcGlWYWx1ZT8uaXNWYWxpZCgpKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc3dpdGNoKGV2ZW50LmtleSlcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93UmlnaHQnOlxyXG4gICAgICAgICAgICBjYXNlICdBcnJvd0xlZnQnOlxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IGV2ZW50LmtleSA9PSAnQXJyb3dMZWZ0JyA/IHRoaXMuX3BhcnNlciEucHJldmlvdXModGhpcy5pbnB1dC52YWx1ZSwgdGhpcy5pbnB1dC5zZWxlY3Rpb25TdGFydCEpIDogdGhpcy5fcGFyc2VyIS5uZXh0KHRoaXMuaW5wdXQudmFsdWUsIHRoaXMuaW5wdXQuc2VsZWN0aW9uU3RhcnQhKTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZihyZXN1bHQpXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dC5zZWxlY3Rpb25TdGFydCA9IHJlc3VsdC5wb3NpdGlvbkZyb207XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dC5zZWxlY3Rpb25FbmQgPSByZXN1bHQucG9zaXRpb25UbztcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXNlICdBcnJvd1VwJzpcclxuICAgICAgICAgICAgY2FzZSAnQXJyb3dEb3duJzpcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cclxuICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSB0aGlzLl9wYXJzZXIhLnBhcnNlKHRoaXMuaW5wdXQudmFsdWUsIHRoaXMuaW5wdXQuc2VsZWN0aW9uU3RhcnQhKTtcclxuICAgICAgICAgICAgICAgIGxldCBzZWxlY3Rpb25TdGFydCA9IHJlc3VsdC5wb3NpdGlvbkZyb207XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5fc3RlcENoYW5nZVZhbHVlKHJlc3VsdC5wYXJ0LCBldmVudC5rZXkgPT0gJ0Fycm93VXAnKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3Nob3coKTtcclxuXHJcbiAgICAgICAgICAgICAgICByZXN1bHQgPSB0aGlzLl9wYXJzZXIhLnBhcnNlKHRoaXMuaW5wdXQudmFsdWUsIHNlbGVjdGlvblN0YXJ0KTtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0LnNlbGVjdGlvblN0YXJ0ID0gcmVzdWx0LnBvc2l0aW9uRnJvbTtcclxuICAgICAgICAgICAgICAgIHRoaXMuaW5wdXQuc2VsZWN0aW9uRW5kID0gcmVzdWx0LnBvc2l0aW9uVG87XHJcblxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2FzZSAnVGFiJzpcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IGV2ZW50LnNoaWZ0S2V5ID8gdGhpcy5fcGFyc2VyIS5wcmV2aW91cyh0aGlzLmlucHV0LnZhbHVlLCB0aGlzLmlucHV0LnNlbGVjdGlvblN0YXJ0ISkgOiB0aGlzLl9wYXJzZXIhLm5leHQodGhpcy5pbnB1dC52YWx1ZSwgdGhpcy5pbnB1dC5zZWxlY3Rpb25TdGFydCEpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmKHJlc3VsdClcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlucHV0LnNlbGVjdGlvblN0YXJ0ID0gcmVzdWx0LnBvc2l0aW9uRnJvbTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlucHV0LnNlbGVjdGlvbkVuZCA9IHJlc3VsdC5wb3NpdGlvblRvO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhc2UgJ2EnOlxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBpZihldmVudC5jdHJsS2V5KVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2FzZSAnQmFja3NwYWNlJzpcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fY2xlYXJWYWx1ZSgpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fdmFsdWVDaGFuZ2UubmV4dCgpO1xyXG5cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhc2UgJ0VzY2FwZSc6XHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3BpY2tlclJlcXVlc3QubmV4dChmYWxzZSk7XHJcblxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2FzZSAnICc6XHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGlmKGV2ZW50LmN0cmxLZXkpXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcGlja2VyUmVxdWVzdC5uZXh0KHRydWUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBwcm90ZWN0ZWQgbWV0aG9kcyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTaG93cyBjdXJyZW50IHZhbHVlIGluIGlucHV0XHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBfc2hvdygpXHJcbiAgICB7XHJcbiAgICAgICAgaWYodGhpcy5faXNWYWxpZClcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFZhbHVlID0gdGhpcy5fZGF0ZUFwaVZhbHVlPy5mb3JtYXQodGhpcy5fZm9ybWF0KSA/PyBudWxsO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRlc3RzIHdoZXRoZXIgYXJlIG1pbiBvciBtYXggY29uc3RyYWludCBicm9rZW4sIHJldHVybnMgdHJ1ZSBpZiBjb25zdHJhaW50IGlzIGJyb2tlblxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgX21pbk1heENvbnN0cmFpbnRUZXN0KCk6IGJvb2xlYW5cclxuICAgIHtcclxuICAgICAgICByZXR1cm4gKCEhdGhpcy5fbWluVmFsdWUgJiYgdGhpcy5fZGF0ZUFwaVZhbHVlIS5pc0JlZm9yZSh0aGlzLl9taW5WYWx1ZSkpIHx8XHJcbiAgICAgICAgICAgICAgICghIXRoaXMuX21heFZhbHVlICYmIHRoaXMuX2RhdGVBcGlWYWx1ZSEuaXNBZnRlcih0aGlzLl9tYXhWYWx1ZSkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUnVucyBjb2RlIHdpdGggY2hlY2sgd2hldGhlciBtaW4gbWF4IGNvbnN0cmFpbnMgd2FzIGJyb2tlblxyXG4gICAgICogQHBhcmFtIGNvZGUgLSBDb2RlIHRoYXQgc2hvdWxkIGJlIGV4ZWN1dGVkIHdoaWNoIGNhbiBjaGFuZ2UgY3VycmVudCB2YWx1ZVxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgX3dpdGhNaW5NYXhDb25zdHJhaW50KGNvZGU6ICgpID0+IHZvaWQpOiB2b2lkXHJcbiAgICB7XHJcbiAgICAgICAgdGhpcy5fZGF0ZUFwaVZhbHVlIS51cGRhdGVPcmlnaW5hbCgpO1xyXG5cclxuICAgICAgICBjb2RlKCk7XHJcblxyXG4gICAgICAgIC8vbWluIHZhbHVlIGNvbnN0cmFpbnQgZmFpbHVyZVxyXG4gICAgICAgIGlmKHRoaXMuX21pbk1heENvbnN0cmFpbnRUZXN0KCkpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0aGlzLl9kYXRlQXBpVmFsdWU/LnJlc2V0T3JpZ2luYWwoKTtcclxuXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuX3ZhbHVlQ2hhbmdlLm5leHQoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENsZWFycyBjdXJyZW50IHZhbHVlXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBfY2xlYXJWYWx1ZSgpXHJcbiAgICB7XHJcbiAgICAgICAgdGhpcy5fZGF0ZUFwaVZhbHVlID0gbnVsbDtcclxuICAgICAgICB0aGlzLl9pc1ZhbGlkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmN1cnJlbnRWYWx1ZSA9IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDaGFuZ2VzIGN1cnJlbnQgdmFsdWUgb2YgZGF0ZSBmb3IgZm9yIHNwZWNpZmllZCBwYXJ0IGJ5IHNpbmdsZSBzdGVwXHJcbiAgICAgKiBAcGFyYW0gcGFydCAtIFBhcnQgb2YgZGF0ZSB0aGF0IHNob3VsZCBiZSBjaGFuZ2VkXHJcbiAgICAgKiBAcGFyYW0gaW5jcmVtZW50IC0gSW5kaWNhdGlvbiB3aGV0aGVyIHZhbHVlIHNob3VsZCBiZSBpbmNyZW1lbnRlZCBvciBkZWNyZW1lbnRlZFxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgX3N0ZXBDaGFuZ2VWYWx1ZShwYXJ0OiBzdHJpbmcsIGluY3JlbWVudDogYm9vbGVhbilcclxuICAgIHtcclxuICAgICAgICBpZighdGhpcy5fZGF0ZUFwaVZhbHVlPy5pc1ZhbGlkKCkpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzd2l0Y2gocGFydClcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGNhc2UgJ3knOlxyXG4gICAgICAgICAgICBjYXNlICdZJzpcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fd2l0aE1pbk1heENvbnN0cmFpbnQoKCkgPT4gaW5jcmVtZW50ID8gdGhpcy5fZGF0ZUFwaVZhbHVlIS5hZGRZZWFycygxKSA6IHRoaXMuX2RhdGVBcGlWYWx1ZSEuc3VidHJhY3RZZWFycygxKSk7XHJcblxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2FzZSAnUSc6XHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhc2UgJ00nOlxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl93aXRoTWluTWF4Q29uc3RyYWludCgoKSA9PiBpbmNyZW1lbnQgPyB0aGlzLl9kYXRlQXBpVmFsdWUhLmFkZE1vbnRocygxKSA6IHRoaXMuX2RhdGVBcGlWYWx1ZSEuc3VidHJhY3RNb250aHMoMSkpO1xyXG5cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhc2UgJ3cnOlxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl93aXRoTWluTWF4Q29uc3RyYWludCgoKSA9PiBpbmNyZW1lbnQgPyB0aGlzLl9kYXRlQXBpVmFsdWUhLmFkZFdlZWtzKDEpIDogdGhpcy5fZGF0ZUFwaVZhbHVlIS5zdWJ0cmFjdFdlZWtzKDEpKTtcclxuXHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXNlICdkJzpcclxuICAgICAgICAgICAgY2FzZSAnRCc6XHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3dpdGhNaW5NYXhDb25zdHJhaW50KCgpID0+IGluY3JlbWVudCA/IHRoaXMuX2RhdGVBcGlWYWx1ZSEuYWRkRGF5cygxKSA6IHRoaXMuX2RhdGVBcGlWYWx1ZSEuc3VidHJhY3REYXlzKDEpKTtcclxuXHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufSJdfQ==