@covalent/core 4.0.0 → 4.1.0-develop.5

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 (602) hide show
  1. package/README.md +5 -4
  2. package/breadcrumbs/README.md +21 -17
  3. package/breadcrumbs/breadcrumb/breadcrumb.component.d.ts +6 -1
  4. package/breadcrumbs/breadcrumbs.component.d.ts +4 -0
  5. package/breadcrumbs/breadcrumbs.module.d.ts +8 -0
  6. package/breadcrumbs/covalent-core-breadcrumbs.d.ts +2 -1
  7. package/breadcrumbs/package.json +6 -7
  8. package/breadcrumbs/{public-api.d.ts → public_api.d.ts} +0 -0
  9. package/common/README.md +3 -0
  10. package/common/_common-theme.scss +3 -1
  11. package/common/behaviors/disable-ripple.mixin.d.ts +1 -1
  12. package/common/behaviors/disabled.mixin.d.ts +1 -1
  13. package/common/common.module.d.ts +15 -0
  14. package/common/covalent-core-common.d.ts +2 -3
  15. package/common/directives/fullscreen/fullscreen.directive.d.ts +3 -0
  16. package/common/forms/auto-trim/auto-trim.directive.d.ts +3 -0
  17. package/common/package.json +6 -7
  18. package/common/pipes/bytes/bytes.pipe.d.ts +3 -0
  19. package/common/pipes/decimal-bytes/decimal-bytes.pipe.d.ts +3 -0
  20. package/common/pipes/digits/digits.pipe.d.ts +3 -0
  21. package/common/pipes/time-ago/time-ago.pipe.d.ts +3 -0
  22. package/common/pipes/time-difference/time-difference.pipe.d.ts +3 -0
  23. package/common/pipes/time-until/time-until.pipe.d.ts +3 -0
  24. package/common/pipes/truncate/truncate.pipe.d.ts +4 -1
  25. package/common/{public-api.d.ts → public_api.d.ts} +0 -0
  26. package/common/services/icon.service.d.ts +3 -0
  27. package/common/services/router-path.service.d.ts +3 -0
  28. package/common/styles/_elevation.scss +7 -2
  29. package/common/styles/_layout.scss +12 -10
  30. package/common/styles/_palette-dark.scss +2 -2
  31. package/common/styles/_palette-light.scss +6 -6
  32. package/common/styles/_rtl.scss +3 -0
  33. package/common/styles/_typography-functions.scss +10 -2
  34. package/common/styles/_variables.scss +7 -6
  35. package/common/styles/colors/_colors-dark.scss +327 -0
  36. package/common/styles/colors/_colors-light.scss +748 -0
  37. package/common/styles/core/_button.scss +37 -6
  38. package/common/styles/core/_card.scss +34 -9
  39. package/common/styles/core/_content.scss +2 -1
  40. package/common/styles/core/_divider.scss +1 -0
  41. package/common/styles/core/_icons.scss +2 -0
  42. package/common/styles/core/_sidenav.scss +2 -0
  43. package/common/styles/core/_structure.scss +6 -7
  44. package/common/styles/core/_toolbar.scss +7 -0
  45. package/common/styles/core/_whiteframe.scss +18 -10
  46. package/common/styles/font/README.md +4 -2
  47. package/common/styles/font/_font.scss +10 -4
  48. package/common/styles/utilities/_general.scss +14 -0
  49. package/common/styles/utilities/_text.scss +21 -0
  50. package/covalent-core.d.ts +2 -1
  51. package/dialogs/README.md +38 -30
  52. package/dialogs/_dialog-theme.scss +1 -0
  53. package/dialogs/alert-dialog/alert-dialog.component.d.ts +6 -3
  54. package/dialogs/confirm-dialog/confirm-dialog.component.d.ts +5 -2
  55. package/dialogs/covalent-core-dialogs.d.ts +2 -2
  56. package/dialogs/dialog.component.d.ts +9 -0
  57. package/dialogs/dialogs.module.d.ts +17 -0
  58. package/dialogs/package.json +6 -7
  59. package/dialogs/prompt-dialog/prompt-dialog.component.d.ts +6 -3
  60. package/dialogs/{public-api.d.ts → public_api.d.ts} +1 -0
  61. package/dialogs/services/dialog.service.d.ts +3 -0
  62. package/dialogs/src/README.md +223 -0
  63. package/dialogs/window-dialog/window-dialog.component.d.ts +8 -5
  64. package/dynamic-menu/README.md +6 -6
  65. package/dynamic-menu/covalent-core-dynamic-menu.d.ts +2 -2
  66. package/dynamic-menu/dynamic-menu-item/dynamic-menu-item.component.d.ts +4 -1
  67. package/dynamic-menu/dynamic-menu-item/dynamic-menu-link/dynamic-menu-link.component.d.ts +4 -1
  68. package/dynamic-menu/dynamic-menu.component.d.ts +4 -22
  69. package/dynamic-menu/dynamic-menu.menu.d.ts +22 -0
  70. package/dynamic-menu/dynamic-menu.module.d.ts +13 -0
  71. package/dynamic-menu/package.json +6 -7
  72. package/dynamic-menu/public_api.d.ts +2 -0
  73. package/esm2020/breadcrumbs/breadcrumb/breadcrumb.component.mjs +92 -0
  74. package/esm2020/breadcrumbs/breadcrumbs.component.mjs +134 -0
  75. package/esm2020/breadcrumbs/breadcrumbs.module.mjs +20 -0
  76. package/esm2020/breadcrumbs/covalent-core-breadcrumbs.mjs +5 -0
  77. package/esm2020/breadcrumbs/public_api.mjs +4 -0
  78. package/esm2020/common/animations/bounce/bounce.animation.mjs +70 -0
  79. package/esm2020/common/animations/collapse/collapse.animation.mjs +51 -0
  80. package/esm2020/common/animations/common/interfaces.mjs +2 -0
  81. package/esm2020/common/animations/fade/fadeInOut.animation.mjs +37 -0
  82. package/esm2020/common/animations/flash/flash.animation.mjs +34 -0
  83. package/esm2020/common/animations/headshake/headshake.animation.mjs +47 -0
  84. package/esm2020/common/animations/jello/jello.animation.mjs +59 -0
  85. package/esm2020/common/animations/pulse/pulse.animation.mjs +32 -0
  86. package/esm2020/common/animations/rotate/rotate.animation.mjs +30 -0
  87. package/esm2020/common/behaviors/control-value-accesor.mixin.mjs +41 -0
  88. package/esm2020/common/behaviors/disable-ripple.mixin.mjs +24 -0
  89. package/esm2020/common/behaviors/disabled.mixin.mjs +24 -0
  90. package/esm2020/common/common.module.mjs +63 -0
  91. package/esm2020/common/covalent-core-common.mjs +5 -0
  92. package/esm2020/common/directives/fullscreen/fullscreen.directive.mjs +85 -0
  93. package/esm2020/common/forms/auto-trim/auto-trim.directive.mjs +36 -0
  94. package/esm2020/common/forms/validators/validators.mjs +29 -0
  95. package/esm2020/common/functions/clipboard.mjs +23 -0
  96. package/esm2020/common/functions/convert.mjs +84 -0
  97. package/esm2020/common/functions/download.mjs +75 -0
  98. package/esm2020/common/functions/file.mjs +16 -0
  99. package/esm2020/common/pipes/bytes/bytes.pipe.mjs +42 -0
  100. package/esm2020/common/pipes/decimal-bytes/decimal-bytes.pipe.mjs +42 -0
  101. package/esm2020/common/pipes/digits/digits.pipe.mjs +39 -0
  102. package/esm2020/common/pipes/time-ago/time-ago.pipe.mjs +72 -0
  103. package/esm2020/common/pipes/time-difference/time-difference.pipe.mjs +51 -0
  104. package/esm2020/common/pipes/time-until/time-until.pipe.mjs +72 -0
  105. package/esm2020/common/pipes/truncate/truncate.pipe.mjs +27 -0
  106. package/esm2020/common/public_api.mjs +39 -0
  107. package/esm2020/common/services/icon.service.mjs +1089 -0
  108. package/esm2020/common/services/router-path.service.mjs +29 -0
  109. package/esm2020/covalent-core.mjs +5 -0
  110. package/esm2020/dialogs/alert-dialog/alert-dialog.component.mjs +23 -0
  111. package/esm2020/dialogs/confirm-dialog/confirm-dialog.component.mjs +28 -0
  112. package/esm2020/dialogs/covalent-core-dialogs.mjs +5 -0
  113. package/esm2020/dialogs/dialog.component.mjs +56 -0
  114. package/esm2020/dialogs/dialogs.module.mjs +89 -0
  115. package/esm2020/dialogs/prompt-dialog/prompt-dialog.component.mjs +46 -0
  116. package/esm2020/dialogs/public_api.mjs +9 -0
  117. package/esm2020/dialogs/resizable-draggable-dialog/resizable-draggable-dialog.mjs +216 -0
  118. package/esm2020/dialogs/services/dialog.service.mjs +171 -0
  119. package/esm2020/dialogs/window-dialog/window-dialog.component.mjs +38 -0
  120. package/esm2020/dynamic-menu/covalent-core-dynamic-menu.mjs +5 -0
  121. package/esm2020/dynamic-menu/dynamic-menu-item/dynamic-menu-item.component.mjs +30 -0
  122. package/esm2020/dynamic-menu/dynamic-menu-item/dynamic-menu-link/dynamic-menu-link.component.mjs +24 -0
  123. package/esm2020/dynamic-menu/dynamic-menu.component.mjs +28 -0
  124. package/esm2020/dynamic-menu/dynamic-menu.menu.mjs +2 -0
  125. package/esm2020/dynamic-menu/dynamic-menu.module.mjs +57 -0
  126. package/esm2020/dynamic-menu/public_api.mjs +6 -0
  127. package/esm2020/file/covalent-core-file.mjs +5 -0
  128. package/esm2020/file/directives/file-drop.directive.mjs +147 -0
  129. package/esm2020/file/directives/file-select.directive.mjs +77 -0
  130. package/esm2020/file/file-input/file-input.component.mjs +110 -0
  131. package/esm2020/file/file-upload/file-upload.component.mjs +174 -0
  132. package/esm2020/file/file.module.mjs +58 -0
  133. package/esm2020/file/public_api.mjs +7 -0
  134. package/esm2020/file/services/file.service.mjs +64 -0
  135. package/esm2020/json-formatter/collapse.animation.mjs +51 -0
  136. package/esm2020/json-formatter/covalent-core-json-formatter.mjs +5 -0
  137. package/esm2020/json-formatter/json-formatter.component.mjs +217 -0
  138. package/esm2020/json-formatter/json-formatter.module.mjs +20 -0
  139. package/esm2020/json-formatter/public_api.mjs +3 -0
  140. package/esm2020/layout/covalent-core-layout.mjs +5 -0
  141. package/esm2020/layout/layout-card-over/layout-card-over.component.mjs +40 -0
  142. package/esm2020/layout/layout-footer/layout-footer.component.mjs +33 -0
  143. package/esm2020/layout/layout-manage-list/layout-manage-list.component.mjs +93 -0
  144. package/esm2020/layout/layout-manage-list/layout-manage-list.directives.mjs +84 -0
  145. package/esm2020/layout/layout-nav/layout-nav.component.mjs +50 -0
  146. package/esm2020/layout/layout-nav-list/layout-nav-list.component.mjs +128 -0
  147. package/esm2020/layout/layout-nav-list/layout-nav-list.directives.mjs +84 -0
  148. package/esm2020/layout/layout-toggle.class.mjs +92 -0
  149. package/esm2020/layout/layout.component.mjs +92 -0
  150. package/esm2020/layout/layout.directives.mjs +85 -0
  151. package/esm2020/layout/layout.module.mjs +117 -0
  152. package/esm2020/layout/navigation-drawer/navigation-drawer.component.mjs +161 -0
  153. package/esm2020/layout/public_api.mjs +13 -0
  154. package/esm2020/menu/covalent-core-menu.mjs +5 -0
  155. package/esm2020/menu/menu.component.mjs +12 -0
  156. package/esm2020/menu/menu.module.mjs +21 -0
  157. package/esm2020/menu/public_api.mjs +3 -0
  158. package/esm2020/message/collapse.animation.mjs +51 -0
  159. package/esm2020/message/covalent-core-message.mjs +5 -0
  160. package/esm2020/message/message.component.mjs +203 -0
  161. package/esm2020/message/message.module.mjs +25 -0
  162. package/esm2020/message/public_api.mjs +3 -0
  163. package/esm2020/public_api.mjs +2 -0
  164. package/esm2020/search/covalent-core-search.mjs +5 -0
  165. package/esm2020/search/public_api.mjs +4 -0
  166. package/esm2020/search/search-box/search-box.component.mjs +194 -0
  167. package/esm2020/search/search-input/search-input.component.mjs +203 -0
  168. package/esm2020/search/search.module.mjs +39 -0
  169. package/esm2020/side-sheet/covalent-core-side-sheet.mjs +5 -0
  170. package/esm2020/side-sheet/public_api.mjs +6 -0
  171. package/esm2020/side-sheet/side-sheet-container.mjs +274 -0
  172. package/esm2020/side-sheet/side-sheet-ref.mjs +21 -0
  173. package/esm2020/side-sheet/side-sheet.animation.mjs +12 -0
  174. package/esm2020/side-sheet/side-sheet.config.mjs +4 -0
  175. package/esm2020/side-sheet/side-sheet.content-directives.mjs +201 -0
  176. package/esm2020/side-sheet/side-sheet.mjs +221 -0
  177. package/esm2020/side-sheet/side-sheet.module.mjs +45 -0
  178. package/esm2020/user-profile/covalent-core-user-profile.mjs +5 -0
  179. package/esm2020/user-profile/public_api.mjs +4 -0
  180. package/esm2020/user-profile/user-profile-menu/user-profile-menu.component.mjs +24 -0
  181. package/esm2020/user-profile/user-profile.component.mjs +19 -0
  182. package/esm2020/user-profile/user-profile.module.mjs +44 -0
  183. package/fesm2015/covalent-core-breadcrumbs.mjs +246 -0
  184. package/fesm2015/covalent-core-breadcrumbs.mjs.map +1 -0
  185. package/fesm2015/covalent-core-common.mjs +2281 -0
  186. package/fesm2015/covalent-core-common.mjs.map +1 -0
  187. package/fesm2015/covalent-core-dialogs.mjs +639 -0
  188. package/fesm2015/covalent-core-dialogs.mjs.map +1 -0
  189. package/fesm2015/covalent-core-dynamic-menu.mjs +128 -0
  190. package/fesm2015/covalent-core-dynamic-menu.mjs.map +1 -0
  191. package/fesm2015/covalent-core-file.mjs +613 -0
  192. package/fesm2015/covalent-core-file.mjs.map +1 -0
  193. package/fesm2015/covalent-core-json-formatter.mjs +298 -0
  194. package/fesm2015/covalent-core-json-formatter.mjs.map +1 -0
  195. package/fesm2015/covalent-core-layout.mjs +1024 -0
  196. package/fesm2015/covalent-core-layout.mjs.map +1 -0
  197. package/fesm2015/covalent-core-menu.mjs +37 -0
  198. package/fesm2015/covalent-core-menu.mjs.map +1 -0
  199. package/fesm2015/covalent-core-message.mjs +284 -0
  200. package/fesm2015/covalent-core-message.mjs.map +1 -0
  201. package/fesm2015/covalent-core-search.mjs +428 -0
  202. package/fesm2015/covalent-core-search.mjs.map +1 -0
  203. package/fesm2015/covalent-core-side-sheet.mjs +762 -0
  204. package/fesm2015/covalent-core-side-sheet.mjs.map +1 -0
  205. package/fesm2015/covalent-core-user-profile.mjs +86 -0
  206. package/fesm2015/covalent-core-user-profile.mjs.map +1 -0
  207. package/fesm2015/covalent-core.mjs +4 -0
  208. package/fesm2015/covalent-core.mjs.map +1 -0
  209. package/fesm2020/covalent-core-breadcrumbs.mjs +246 -0
  210. package/fesm2020/covalent-core-breadcrumbs.mjs.map +1 -0
  211. package/{fesm2015/covalent-core-common.js → fesm2020/covalent-core-common.mjs} +317 -813
  212. package/fesm2020/covalent-core-common.mjs.map +1 -0
  213. package/fesm2020/covalent-core-dialogs.mjs +634 -0
  214. package/fesm2020/covalent-core-dialogs.mjs.map +1 -0
  215. package/fesm2020/covalent-core-dynamic-menu.mjs +128 -0
  216. package/fesm2020/covalent-core-dynamic-menu.mjs.map +1 -0
  217. package/fesm2020/covalent-core-file.mjs +607 -0
  218. package/fesm2020/covalent-core-file.mjs.map +1 -0
  219. package/fesm2020/covalent-core-json-formatter.mjs +290 -0
  220. package/fesm2020/covalent-core-json-formatter.mjs.map +1 -0
  221. package/fesm2020/covalent-core-layout.mjs +1000 -0
  222. package/fesm2020/covalent-core-layout.mjs.map +1 -0
  223. package/fesm2020/covalent-core-menu.mjs +37 -0
  224. package/fesm2020/covalent-core-menu.mjs.map +1 -0
  225. package/fesm2020/covalent-core-message.mjs +282 -0
  226. package/fesm2020/covalent-core-message.mjs.map +1 -0
  227. package/fesm2020/covalent-core-search.mjs +425 -0
  228. package/fesm2020/covalent-core-search.mjs.map +1 -0
  229. package/fesm2020/covalent-core-side-sheet.mjs +757 -0
  230. package/fesm2020/covalent-core-side-sheet.mjs.map +1 -0
  231. package/fesm2020/covalent-core-user-profile.mjs +86 -0
  232. package/fesm2020/covalent-core-user-profile.mjs.map +1 -0
  233. package/fesm2020/covalent-core.mjs +4 -0
  234. package/fesm2020/covalent-core.mjs.map +1 -0
  235. package/file/_file-theme.scss +3 -1
  236. package/file/covalent-core-file.d.ts +2 -1
  237. package/file/directives/file-drop.directive.d.ts +8 -6
  238. package/file/directives/file-select.directive.d.ts +5 -2
  239. package/file/file-input/file-input.component.d.ts +10 -5
  240. package/file/file-upload/file-upload.component.d.ts +18 -8
  241. package/file/file.module.d.ts +13 -0
  242. package/file/package.json +6 -7
  243. package/file/{public-api.d.ts → public_api.d.ts} +0 -0
  244. package/file/services/file.service.d.ts +3 -0
  245. package/file/{file-input → src/file-input}/README.md +46 -37
  246. package/file/{file-upload → src/file-upload}/README.md +36 -27
  247. package/json-formatter/README.md +8 -8
  248. package/json-formatter/_json-formatter-theme.scss +10 -0
  249. package/json-formatter/collapse.animation.d.ts +24 -0
  250. package/json-formatter/covalent-core-json-formatter.d.ts +2 -1
  251. package/json-formatter/json-formatter.component.d.ts +7 -4
  252. package/json-formatter/json-formatter.module.d.ts +8 -0
  253. package/json-formatter/package.json +6 -7
  254. package/json-formatter/{public-api.d.ts → public_api.d.ts} +0 -0
  255. package/layout/README.md +48 -50
  256. package/layout/_layout-theme.scss +12 -0
  257. package/layout/covalent-core-layout.d.ts +2 -1
  258. package/layout/layout-card-over/layout-card-over.component.d.ts +6 -3
  259. package/layout/layout-footer/layout-footer.component.d.ts +6 -3
  260. package/layout/layout-manage-list/layout-manage-list.component.d.ts +7 -4
  261. package/layout/layout-manage-list/layout-manage-list.directives.d.ts +9 -2
  262. package/layout/layout-nav/layout-nav.component.d.ts +8 -5
  263. package/layout/layout-nav-list/layout-nav-list.component.d.ts +12 -9
  264. package/layout/layout-nav-list/layout-nav-list.directives.d.ts +9 -2
  265. package/layout/layout-toggle.class.d.ts +4 -1
  266. package/layout/layout.component.d.ts +7 -4
  267. package/layout/layout.directives.d.ts +9 -2
  268. package/layout/layout.module.d.ts +23 -0
  269. package/layout/navigation-drawer/navigation-drawer.component.d.ts +17 -10
  270. package/layout/package.json +6 -7
  271. package/layout/{public-api.d.ts → public_api.d.ts} +0 -0
  272. package/layout/{layout-card-over → src/layout-card-over}/README.md +19 -17
  273. package/layout/{layout-manage-list → src/layout-manage-list}/README.md +24 -28
  274. package/layout/src/layout-nav/README.md +50 -0
  275. package/layout/{layout-nav-list → src/layout-nav-list}/README.md +44 -40
  276. package/menu/covalent-core-menu.d.ts +2 -1
  277. package/menu/menu.component.d.ts +3 -0
  278. package/menu/menu.module.d.ts +8 -0
  279. package/menu/package.json +6 -7
  280. package/menu/{public-api.d.ts → public_api.d.ts} +0 -0
  281. package/message/README.md +26 -18
  282. package/message/_message-theme.scss +3 -0
  283. package/message/collapse.animation.d.ts +24 -0
  284. package/message/covalent-core-message.d.ts +2 -1
  285. package/message/message.component.d.ts +9 -4
  286. package/message/message.module.d.ts +7 -0
  287. package/message/package.json +6 -7
  288. package/message/{public-api.d.ts → public_api.d.ts} +0 -0
  289. package/package.json +129 -37
  290. package/{index.d.ts → public_api.d.ts} +0 -0
  291. package/search/README.md +74 -73
  292. package/search/covalent-core-search.d.ts +2 -1
  293. package/search/package.json +6 -7
  294. package/search/{public-api.d.ts → public_api.d.ts} +0 -0
  295. package/search/search-box/search-box.component.d.ts +12 -5
  296. package/search/search-input/search-input.component.d.ts +12 -5
  297. package/search/search.module.d.ts +11 -0
  298. package/search/src/search-box/README.md +73 -0
  299. package/search/src/search-input/README.md +74 -0
  300. package/side-sheet/README.md +3 -5
  301. package/side-sheet/{side-sheet.theme.scss → _side-sheet.theme.scss} +0 -0
  302. package/side-sheet/covalent-core-side-sheet.d.ts +2 -3
  303. package/side-sheet/package.json +6 -7
  304. package/side-sheet/{public-api.d.ts → public_api.d.ts} +0 -0
  305. package/side-sheet/side-sheet-container.d.ts +21 -5
  306. package/side-sheet/side-sheet.content-directives.d.ts +23 -6
  307. package/side-sheet/side-sheet.d.ts +7 -2
  308. package/side-sheet/side-sheet.module.d.ts +9 -0
  309. package/user-profile/README.md +5 -5
  310. package/user-profile/covalent-core-user-profile.d.ts +2 -1
  311. package/user-profile/package.json +6 -7
  312. package/user-profile/user-profile-menu/user-profile-menu.component.d.ts +5 -2
  313. package/user-profile/user-profile.component.d.ts +5 -2
  314. package/user-profile/user-profile.module.d.ts +12 -0
  315. package/breadcrumbs/breadcrumb/breadcrumb.component.scss +0 -22
  316. package/breadcrumbs/breadcrumbs.component.scss +0 -7
  317. package/breadcrumbs/covalent-core-breadcrumbs.metadata.json +0 -1
  318. package/breadcrumbs/index.d.ts +0 -1
  319. package/bundles/covalent-core-breadcrumbs.umd.js +0 -490
  320. package/bundles/covalent-core-breadcrumbs.umd.js.map +0 -1
  321. package/bundles/covalent-core-breadcrumbs.umd.min.js +0 -2
  322. package/bundles/covalent-core-breadcrumbs.umd.min.js.map +0 -1
  323. package/bundles/covalent-core-common.umd.js +0 -3188
  324. package/bundles/covalent-core-common.umd.js.map +0 -1
  325. package/bundles/covalent-core-common.umd.min.js +0 -17
  326. package/bundles/covalent-core-common.umd.min.js.map +0 -1
  327. package/bundles/covalent-core-dialogs.umd.js +0 -1318
  328. package/bundles/covalent-core-dialogs.umd.js.map +0 -1
  329. package/bundles/covalent-core-dialogs.umd.min.js +0 -2
  330. package/bundles/covalent-core-dialogs.umd.min.js.map +0 -1
  331. package/bundles/covalent-core-dynamic-menu.umd.js +0 -215
  332. package/bundles/covalent-core-dynamic-menu.umd.js.map +0 -1
  333. package/bundles/covalent-core-dynamic-menu.umd.min.js +0 -2
  334. package/bundles/covalent-core-dynamic-menu.umd.min.js.map +0 -1
  335. package/bundles/covalent-core-file.umd.js +0 -1211
  336. package/bundles/covalent-core-file.umd.js.map +0 -1
  337. package/bundles/covalent-core-file.umd.min.js +0 -17
  338. package/bundles/covalent-core-file.umd.min.js.map +0 -1
  339. package/bundles/covalent-core-json-formatter.umd.js +0 -408
  340. package/bundles/covalent-core-json-formatter.umd.js.map +0 -1
  341. package/bundles/covalent-core-json-formatter.umd.min.js +0 -2
  342. package/bundles/covalent-core-json-formatter.umd.min.js.map +0 -1
  343. package/bundles/covalent-core-layout.umd.js +0 -2084
  344. package/bundles/covalent-core-layout.umd.js.map +0 -1
  345. package/bundles/covalent-core-layout.umd.min.js +0 -17
  346. package/bundles/covalent-core-layout.umd.min.js.map +0 -1
  347. package/bundles/covalent-core-menu.umd.js +0 -69
  348. package/bundles/covalent-core-menu.umd.js.map +0 -1
  349. package/bundles/covalent-core-menu.umd.min.js +0 -2
  350. package/bundles/covalent-core-menu.umd.min.js.map +0 -1
  351. package/bundles/covalent-core-message.umd.js +0 -375
  352. package/bundles/covalent-core-message.umd.js.map +0 -1
  353. package/bundles/covalent-core-message.umd.min.js +0 -2
  354. package/bundles/covalent-core-message.umd.min.js.map +0 -1
  355. package/bundles/covalent-core-search.umd.js +0 -877
  356. package/bundles/covalent-core-search.umd.js.map +0 -1
  357. package/bundles/covalent-core-search.umd.min.js +0 -16
  358. package/bundles/covalent-core-search.umd.min.js.map +0 -1
  359. package/bundles/covalent-core-side-sheet.umd.js +0 -1458
  360. package/bundles/covalent-core-side-sheet.umd.js.map +0 -1
  361. package/bundles/covalent-core-side-sheet.umd.min.js +0 -16
  362. package/bundles/covalent-core-side-sheet.umd.min.js.map +0 -1
  363. package/bundles/covalent-core-user-profile.umd.js +0 -116
  364. package/bundles/covalent-core-user-profile.umd.js.map +0 -1
  365. package/bundles/covalent-core-user-profile.umd.min.js +0 -2
  366. package/bundles/covalent-core-user-profile.umd.min.js.map +0 -1
  367. package/bundles/covalent-core.umd.js +0 -9
  368. package/bundles/covalent-core.umd.js.map +0 -1
  369. package/bundles/covalent-core.umd.min.js +0 -2
  370. package/bundles/covalent-core.umd.min.js.map +0 -1
  371. package/common/covalent-core-common.metadata.json +0 -1
  372. package/common/index.d.ts +0 -1
  373. package/common/material-icons.css +0 -98
  374. package/common/material-icons.css.map +0 -1
  375. package/common/material-icons.scss +0 -3
  376. package/common/platform.css +0 -15424
  377. package/common/platform.css.map +0 -1
  378. package/common/platform.scss +0 -7
  379. package/covalent-core.metadata.json +0 -1
  380. package/dialogs/alert-dialog/alert-dialog.component.scss +0 -3
  381. package/dialogs/confirm-dialog/confirm-dialog.component.scss +0 -3
  382. package/dialogs/covalent-core-dialogs.metadata.json +0 -1
  383. package/dialogs/dialog.component.scss +0 -44
  384. package/dialogs/index.d.ts +0 -1
  385. package/dialogs/prompt-dialog/prompt-dialog.component.scss +0 -15
  386. package/dialogs/window-dialog/window-dialog.component.scss +0 -31
  387. package/dynamic-menu/covalent-core-dynamic-menu.metadata.json +0 -1
  388. package/dynamic-menu/dynamic-menu-item/dynamic-menu-item.component.scss +0 -6
  389. package/dynamic-menu/dynamic-menu-item/dynamic-menu-link/dynamic-menu-link.component.scss +0 -11
  390. package/dynamic-menu/dynamic-menu.component.scss +0 -0
  391. package/dynamic-menu/index.d.ts +0 -1
  392. package/esm2015/breadcrumbs/breadcrumb/breadcrumb.component.js +0 -171
  393. package/esm2015/breadcrumbs/breadcrumbs.component.js +0 -241
  394. package/esm2015/breadcrumbs/breadcrumbs.module.js +0 -20
  395. package/esm2015/breadcrumbs/covalent-core-breadcrumbs.js +0 -10
  396. package/esm2015/breadcrumbs/index.js +0 -7
  397. package/esm2015/breadcrumbs/public-api.js +0 -9
  398. package/esm2015/common/animations/bounce/bounce.animation.js +0 -76
  399. package/esm2015/common/animations/collapse/collapse.animation.js +0 -67
  400. package/esm2015/common/animations/common/interfaces.js +0 -18
  401. package/esm2015/common/animations/fade/fadeInOut.animation.js +0 -53
  402. package/esm2015/common/animations/flash/flash.animation.js +0 -40
  403. package/esm2015/common/animations/headshake/headshake.animation.js +0 -41
  404. package/esm2015/common/animations/jello/jello.animation.js +0 -44
  405. package/esm2015/common/animations/pulse/pulse.animation.js +0 -38
  406. package/esm2015/common/animations/rotate/rotate.animation.js +0 -41
  407. package/esm2015/common/behaviors/control-value-accesor.mixin.js +0 -107
  408. package/esm2015/common/behaviors/disable-ripple.mixin.js +0 -63
  409. package/esm2015/common/behaviors/disabled.mixin.js +0 -63
  410. package/esm2015/common/common.module.js +0 -54
  411. package/esm2015/common/covalent-core-common.js +0 -12
  412. package/esm2015/common/directives/fullscreen/fullscreen.directive.js +0 -180
  413. package/esm2015/common/forms/auto-trim/auto-trim.directive.js +0 -46
  414. package/esm2015/common/forms/validators/validators.js +0 -58
  415. package/esm2015/common/functions/clipboard.js +0 -30
  416. package/esm2015/common/functions/convert.js +0 -103
  417. package/esm2015/common/functions/download.js +0 -88
  418. package/esm2015/common/functions/file.js +0 -29
  419. package/esm2015/common/index.js +0 -7
  420. package/esm2015/common/pipes/bytes/bytes.pipe.js +0 -41
  421. package/esm2015/common/pipes/decimal-bytes/decimal-bytes.pipe.js +0 -41
  422. package/esm2015/common/pipes/digits/digits.pipe.js +0 -65
  423. package/esm2015/common/pipes/time-ago/time-ago.pipe.js +0 -81
  424. package/esm2015/common/pipes/time-difference/time-difference.pipe.js +0 -66
  425. package/esm2015/common/pipes/time-until/time-until.pipe.js +0 -81
  426. package/esm2015/common/pipes/truncate/truncate.pipe.js +0 -34
  427. package/esm2015/common/public-api.js +0 -44
  428. package/esm2015/common/services/icon.service.js +0 -1109
  429. package/esm2015/common/services/router-path.service.js +0 -60
  430. package/esm2015/covalent-core.js +0 -10
  431. package/esm2015/dialogs/alert-dialog/alert-dialog.component.js +0 -47
  432. package/esm2015/dialogs/confirm-dialog/confirm-dialog.component.js +0 -59
  433. package/esm2015/dialogs/covalent-core-dialogs.js +0 -11
  434. package/esm2015/dialogs/dialog.component.js +0 -58
  435. package/esm2015/dialogs/dialogs.module.js +0 -57
  436. package/esm2015/dialogs/index.js +0 -7
  437. package/esm2015/dialogs/prompt-dialog/prompt-dialog.component.js +0 -83
  438. package/esm2015/dialogs/public-api.js +0 -13
  439. package/esm2015/dialogs/resizable-draggable-dialog/resizable-draggable-dialog.js +0 -325
  440. package/esm2015/dialogs/services/dialog.service.js +0 -316
  441. package/esm2015/dialogs/window-dialog/window-dialog.component.js +0 -56
  442. package/esm2015/dynamic-menu/covalent-core-dynamic-menu.js +0 -11
  443. package/esm2015/dynamic-menu/dynamic-menu-item/dynamic-menu-item.component.js +0 -40
  444. package/esm2015/dynamic-menu/dynamic-menu-item/dynamic-menu-link/dynamic-menu-link.component.js +0 -35
  445. package/esm2015/dynamic-menu/dynamic-menu.component.js +0 -89
  446. package/esm2015/dynamic-menu/dynamic-menu.module.js +0 -26
  447. package/esm2015/dynamic-menu/index.js +0 -7
  448. package/esm2015/dynamic-menu/public_api.js +0 -9
  449. package/esm2015/file/covalent-core-file.js +0 -10
  450. package/esm2015/file/directives/file-drop.directive.js +0 -191
  451. package/esm2015/file/directives/file-select.directive.js +0 -98
  452. package/esm2015/file/file-input/file-input.component.js +0 -186
  453. package/esm2015/file/file-upload/file-upload.component.js +0 -237
  454. package/esm2015/file/file.module.js +0 -35
  455. package/esm2015/file/index.js +0 -7
  456. package/esm2015/file/public-api.js +0 -12
  457. package/esm2015/file/services/file.service.js +0 -109
  458. package/esm2015/index.js +0 -7
  459. package/esm2015/json-formatter/covalent-core-json-formatter.js +0 -10
  460. package/esm2015/json-formatter/index.js +0 -7
  461. package/esm2015/json-formatter/json-formatter.component.js +0 -338
  462. package/esm2015/json-formatter/json-formatter.module.js +0 -20
  463. package/esm2015/json-formatter/public-api.js +0 -8
  464. package/esm2015/layout/covalent-core-layout.js +0 -10
  465. package/esm2015/layout/index.js +0 -7
  466. package/esm2015/layout/layout-card-over/layout-card-over.component.js +0 -71
  467. package/esm2015/layout/layout-footer/layout-footer.component.js +0 -71
  468. package/esm2015/layout/layout-manage-list/layout-manage-list.component.js +0 -145
  469. package/esm2015/layout/layout-manage-list/layout-manage-list.directives.js +0 -132
  470. package/esm2015/layout/layout-nav/layout-nav.component.js +0 -100
  471. package/esm2015/layout/layout-nav-list/layout-nav-list.component.js +0 -220
  472. package/esm2015/layout/layout-nav-list/layout-nav-list.directives.js +0 -132
  473. package/esm2015/layout/layout-toggle.class.js +0 -188
  474. package/esm2015/layout/layout.component.js +0 -145
  475. package/esm2015/layout/layout.directives.js +0 -129
  476. package/esm2015/layout/layout.module.js +0 -64
  477. package/esm2015/layout/navigation-drawer/navigation-drawer.component.js +0 -280
  478. package/esm2015/layout/public-api.js +0 -18
  479. package/esm2015/menu/covalent-core-menu.js +0 -10
  480. package/esm2015/menu/index.js +0 -7
  481. package/esm2015/menu/menu.component.js +0 -16
  482. package/esm2015/menu/menu.module.js +0 -22
  483. package/esm2015/menu/public-api.js +0 -8
  484. package/esm2015/message/covalent-core-message.js +0 -10
  485. package/esm2015/message/index.js +0 -7
  486. package/esm2015/message/message.component.js +0 -307
  487. package/esm2015/message/message.module.js +0 -21
  488. package/esm2015/message/public-api.js +0 -8
  489. package/esm2015/search/covalent-core-search.js +0 -10
  490. package/esm2015/search/index.js +0 -7
  491. package/esm2015/search/public-api.js +0 -9
  492. package/esm2015/search/search-box/search-box.component.js +0 -270
  493. package/esm2015/search/search-input/search-input.component.js +0 -260
  494. package/esm2015/search/search.module.js +0 -23
  495. package/esm2015/side-sheet/covalent-core-side-sheet.js +0 -12
  496. package/esm2015/side-sheet/index.js +0 -7
  497. package/esm2015/side-sheet/public-api.js +0 -11
  498. package/esm2015/side-sheet/side-sheet-container.js +0 -402
  499. package/esm2015/side-sheet/side-sheet-ref.js +0 -50
  500. package/esm2015/side-sheet/side-sheet.animation.js +0 -20
  501. package/esm2015/side-sheet/side-sheet.config.js +0 -12
  502. package/esm2015/side-sheet/side-sheet.content-directives.js +0 -255
  503. package/esm2015/side-sheet/side-sheet.js +0 -360
  504. package/esm2015/side-sheet/side-sheet.module.js +0 -36
  505. package/esm2015/user-profile/covalent-core-user-profile.js +0 -10
  506. package/esm2015/user-profile/index.js +0 -7
  507. package/esm2015/user-profile/public_api.js +0 -9
  508. package/esm2015/user-profile/user-profile-menu/user-profile-menu.component.js +0 -35
  509. package/esm2015/user-profile/user-profile.component.js +0 -26
  510. package/esm2015/user-profile/user-profile.module.js +0 -25
  511. package/fesm2015/covalent-core-breadcrumbs.js +0 -448
  512. package/fesm2015/covalent-core-breadcrumbs.js.map +0 -1
  513. package/fesm2015/covalent-core-common.js.map +0 -1
  514. package/fesm2015/covalent-core-dialogs.js +0 -1001
  515. package/fesm2015/covalent-core-dialogs.js.map +0 -1
  516. package/fesm2015/covalent-core-dynamic-menu.js +0 -204
  517. package/fesm2015/covalent-core-dynamic-menu.js.map +0 -1
  518. package/fesm2015/covalent-core-file.js +0 -855
  519. package/fesm2015/covalent-core-file.js.map +0 -1
  520. package/fesm2015/covalent-core-json-formatter.js +0 -377
  521. package/fesm2015/covalent-core-json-formatter.js.map +0 -1
  522. package/fesm2015/covalent-core-layout.js +0 -1663
  523. package/fesm2015/covalent-core-layout.js.map +0 -1
  524. package/fesm2015/covalent-core-menu.js +0 -57
  525. package/fesm2015/covalent-core-menu.js.map +0 -1
  526. package/fesm2015/covalent-core-message.js +0 -347
  527. package/fesm2015/covalent-core-message.js.map +0 -1
  528. package/fesm2015/covalent-core-search.js +0 -564
  529. package/fesm2015/covalent-core-search.js.map +0 -1
  530. package/fesm2015/covalent-core-side-sheet.js +0 -1134
  531. package/fesm2015/covalent-core-side-sheet.js.map +0 -1
  532. package/fesm2015/covalent-core-user-profile.js +0 -103
  533. package/fesm2015/covalent-core-user-profile.js.map +0 -1
  534. package/fesm2015/covalent-core.js +0 -12
  535. package/fesm2015/covalent-core.js.map +0 -1
  536. package/file/covalent-core-file.metadata.json +0 -1
  537. package/file/file-input/file-input.component.scss +0 -20
  538. package/file/file-upload/file-upload.component.scss +0 -30
  539. package/file/index.d.ts +0 -1
  540. package/json-formatter/covalent-core-json-formatter.metadata.json +0 -1
  541. package/json-formatter/index.d.ts +0 -1
  542. package/json-formatter/json-formatter.component.scss +0 -61
  543. package/layout/covalent-core-layout.metadata.json +0 -1
  544. package/layout/index.d.ts +0 -1
  545. package/layout/layout-card-over/layout-card-over.component.scss +0 -42
  546. package/layout/layout-footer/layout-footer.component.scss +0 -4
  547. package/layout/layout-manage-list/layout-manage-list.component.scss +0 -78
  548. package/layout/layout-nav/README.md +0 -46
  549. package/layout/layout-nav/layout-nav.component.scss +0 -50
  550. package/layout/layout-nav-list/layout-nav-list.component.scss +0 -110
  551. package/layout/layout.component.scss +0 -20
  552. package/layout/navigation-drawer/navigation-drawer.component.scss +0 -73
  553. package/menu/covalent-core-menu.metadata.json +0 -1
  554. package/menu/index.d.ts +0 -1
  555. package/menu/menu.component.scss +0 -43
  556. package/message/covalent-core-message.metadata.json +0 -1
  557. package/message/index.d.ts +0 -1
  558. package/message/message.component.scss +0 -29
  559. package/schematics/README.md +0 -66
  560. package/schematics/collection.json +0 -11
  561. package/schematics/components.js +0 -111
  562. package/schematics/components.js.map +0 -1
  563. package/schematics/migration.json +0 -10
  564. package/schematics/ng-add/files/theme.scss +0 -64
  565. package/schematics/ng-add/index.js +0 -58
  566. package/schematics/ng-add/index.js.map +0 -1
  567. package/schematics/ng-add/schema.js +0 -3
  568. package/schematics/ng-add/schema.js.map +0 -1
  569. package/schematics/ng-add/schema.json +0 -81
  570. package/schematics/ng-update/index.js +0 -52
  571. package/schematics/ng-update/index.js.map +0 -1
  572. package/schematics/ng-update/target-version.js +0 -8
  573. package/schematics/ng-update/target-version.js.map +0 -1
  574. package/schematics/version-names.js +0 -6
  575. package/schematics/version-names.js.map +0 -1
  576. package/search/covalent-core-search.metadata.json +0 -1
  577. package/search/index.d.ts +0 -1
  578. package/search/search-box/README.md +0 -62
  579. package/search/search-box/search-box.component.scss +0 -32
  580. package/search/search-input/README.md +0 -65
  581. package/search/search-input/search-input.component.scss +0 -63
  582. package/side-sheet/covalent-core-side-sheet.metadata.json +0 -1
  583. package/side-sheet/index.d.ts +0 -1
  584. package/side-sheet/side-sheet.scss +0 -69
  585. package/theming/prebuilt/blue-grey-deep-orange.css +0 -2434
  586. package/theming/prebuilt/blue-grey-deep-orange.css.map +0 -1
  587. package/theming/prebuilt/blue-grey-deep-orange.scss +0 -13
  588. package/theming/prebuilt/blue-orange.css +0 -2434
  589. package/theming/prebuilt/blue-orange.css.map +0 -1
  590. package/theming/prebuilt/blue-orange.scss +0 -13
  591. package/theming/prebuilt/indigo-pink.css +0 -2434
  592. package/theming/prebuilt/indigo-pink.css.map +0 -1
  593. package/theming/prebuilt/indigo-pink.scss +0 -13
  594. package/theming/prebuilt/orange-light-blue.css +0 -2434
  595. package/theming/prebuilt/orange-light-blue.css.map +0 -1
  596. package/theming/prebuilt/orange-light-blue.scss +0 -13
  597. package/theming/prebuilt/teal-orange.css +0 -2434
  598. package/theming/prebuilt/teal-orange.css.map +0 -1
  599. package/theming/prebuilt/teal-orange.scss +0 -13
  600. package/user-profile/covalent-core-user-profile.metadata.json +0 -1
  601. package/user-profile/index.d.ts +0 -1
  602. package/user-profile/user-profile-menu/user-profile-menu.component.scss +0 -38
@@ -0,0 +1,84 @@
1
+ /**
2
+ * Conversion function that takes an array of objects and converts
3
+ * them to CSV format. Custom key and line separators can be specified.
4
+ *
5
+ * @param objects list of strings in JSON format or actual objects
6
+ * @param keySeparator optional parameter to specify custom value separator
7
+ * @param lineSeparator optional parameter to specify custom end of line separator
8
+ * @returns CSV formatted string
9
+ */
10
+ export function convertObjectsToCSV(objects, keySeparator = ',', lineSeparator = '\r\n') {
11
+ if (!objects) {
12
+ return '';
13
+ }
14
+ let outputString = '';
15
+ // Iterate through array, creating one output line per object
16
+ objects.forEach((value, key) => {
17
+ let line = '';
18
+ for (const index of Object.keys(objects[key])) {
19
+ if (line !== '') {
20
+ line += keySeparator;
21
+ }
22
+ if (objects[key][index] === null || objects[key][index] === undefined) {
23
+ objects[key][index] = '';
24
+ }
25
+ line += objects[key][index];
26
+ }
27
+ outputString += `${line}${lineSeparator}`;
28
+ });
29
+ // Append header row identifying keys into output
30
+ if (objects[0]) {
31
+ const headers = Object.keys(objects[0]).join(keySeparator);
32
+ outputString = `${headers}${lineSeparator}${outputString}`;
33
+ }
34
+ return outputString;
35
+ }
36
+ /**
37
+ * Conversion function that takes a CSV representation
38
+ * of objects and converts them to JSON.
39
+ * The first row in the input must be the object keys.
40
+ * Custom key separator and line separator can be specified.
41
+ * Indentation size for output JSON can be specified.
42
+ *
43
+ * @param csv list of strings in JSON format or actual objects
44
+ * @param keySeparator optional parameter to specify custom value separator
45
+ * @param lineSeparator optional parameter to specify custom end of line separator
46
+ * @param indent optional parameter indicating space indentation for pretty output. Default is 2.
47
+ * @returns JSON formatted string
48
+ */
49
+ export function convertCSVToJSON(csv, keySeparator = ',', lineSeparator = '\r\n', indent = 2) {
50
+ if (!csv) {
51
+ return '';
52
+ }
53
+ const csvArray = csv.split(lineSeparator);
54
+ // Input CSV must have a minimum of two rows
55
+ if (csvArray.length < 2) {
56
+ return '';
57
+ }
58
+ const newObjects = [];
59
+ // Extract object keys from header row
60
+ const keys = csvArray[0].split(keySeparator);
61
+ // Iterate through array, creating one output line per object
62
+ for (let i = 1; i < csvArray.length; i++) {
63
+ const newObject = {};
64
+ const values = csvArray[i].split(keySeparator);
65
+ if (values.length !== keys.length) {
66
+ continue;
67
+ }
68
+ for (let j = 0; j < keys.length; j++) {
69
+ newObject[keys[j]] = values[j];
70
+ }
71
+ newObjects.push(newObject);
72
+ }
73
+ return formatJSON(newObjects, indent);
74
+ }
75
+ /**
76
+ * Convert object to JSON using stringify. Indentation size for output JSON can be specified.
77
+ *
78
+ * @param json object to be converted
79
+ * @param indent optional parameter indicating space indentation for pretty output. Default is 2.
80
+ */
81
+ export function formatJSON(json, indent = 2) {
82
+ return JSON.stringify(json, undefined, indent);
83
+ }
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9jb21tb24vc3JjL2Z1bmN0aW9ucy9jb252ZXJ0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxVQUFVLG1CQUFtQixDQUNqQyxPQUFjLEVBQ2QsZUFBdUIsR0FBRyxFQUMxQixnQkFBd0IsTUFBTTtJQUU5QixJQUFJLENBQUMsT0FBTyxFQUFFO1FBQ1osT0FBTyxFQUFFLENBQUM7S0FDWDtJQUVELElBQUksWUFBWSxHQUFHLEVBQUUsQ0FBQztJQUV0Qiw2REFBNkQ7SUFDN0QsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQWEsRUFBRSxHQUFXLEVBQUUsRUFBRTtRQUM3QyxJQUFJLElBQUksR0FBRyxFQUFFLENBQUM7UUFDZCxLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7WUFDN0MsSUFBSSxJQUFJLEtBQUssRUFBRSxFQUFFO2dCQUNmLElBQUksSUFBSSxZQUFZLENBQUM7YUFDdEI7WUFDRCxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLFNBQVMsRUFBRTtnQkFDckUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQzthQUMxQjtZQUNELElBQUksSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDN0I7UUFDRCxZQUFZLElBQUksR0FBRyxJQUFJLEdBQUcsYUFBYSxFQUFFLENBQUM7SUFDNUMsQ0FBQyxDQUFDLENBQUM7SUFFSCxpREFBaUQ7SUFDakQsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7UUFDZCxNQUFNLE9BQU8sR0FBVyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNuRSxZQUFZLEdBQUcsR0FBRyxPQUFPLEdBQUcsYUFBYSxHQUFHLFlBQVksRUFBRSxDQUFDO0tBQzVEO0lBRUQsT0FBTyxZQUFZLENBQUM7QUFDdEIsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FDOUIsR0FBVyxFQUNYLGVBQXVCLEdBQUcsRUFDMUIsZ0JBQXdCLE1BQU0sRUFDOUIsU0FBaUIsQ0FBQztJQUVsQixJQUFJLENBQUMsR0FBRyxFQUFFO1FBQ1IsT0FBTyxFQUFFLENBQUM7S0FDWDtJQUVELE1BQU0sUUFBUSxHQUFhLEdBQUcsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDcEQsNENBQTRDO0lBQzVDLElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7UUFDdkIsT0FBTyxFQUFFLENBQUM7S0FDWDtJQUVELE1BQU0sVUFBVSxHQUFVLEVBQUUsQ0FBQztJQUU3QixzQ0FBc0M7SUFDdEMsTUFBTSxJQUFJLEdBQWEsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN2RCw2REFBNkQ7SUFDN0QsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDeEMsTUFBTSxTQUFTLEdBQVEsRUFBRSxDQUFDO1FBRTFCLE1BQU0sTUFBTSxHQUFhLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDekQsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDakMsU0FBUztTQUNWO1FBQ0QsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDcEMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNoQztRQUNELFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7S0FDNUI7SUFFRCxPQUFPLFVBQVUsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDeEMsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLFVBQVUsQ0FBQyxJQUFZLEVBQUUsU0FBaUIsQ0FBQztJQUN6RCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNqRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb252ZXJzaW9uIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYW4gYXJyYXkgb2Ygb2JqZWN0cyBhbmQgY29udmVydHNcbiAqIHRoZW0gdG8gQ1NWIGZvcm1hdC4gQ3VzdG9tIGtleSBhbmQgbGluZSBzZXBhcmF0b3JzIGNhbiBiZSBzcGVjaWZpZWQuXG4gKlxuICogQHBhcmFtIG9iamVjdHMgbGlzdCBvZiBzdHJpbmdzIGluIEpTT04gZm9ybWF0IG9yIGFjdHVhbCBvYmplY3RzXG4gKiBAcGFyYW0ga2V5U2VwYXJhdG9yIG9wdGlvbmFsIHBhcmFtZXRlciB0byBzcGVjaWZ5IGN1c3RvbSB2YWx1ZSBzZXBhcmF0b3JcbiAqIEBwYXJhbSBsaW5lU2VwYXJhdG9yIG9wdGlvbmFsIHBhcmFtZXRlciB0byBzcGVjaWZ5IGN1c3RvbSBlbmQgb2YgbGluZSBzZXBhcmF0b3JcbiAqIEByZXR1cm5zIENTViBmb3JtYXR0ZWQgc3RyaW5nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0T2JqZWN0c1RvQ1NWKFxuICBvYmplY3RzOiBhbnlbXSxcbiAga2V5U2VwYXJhdG9yOiBzdHJpbmcgPSAnLCcsXG4gIGxpbmVTZXBhcmF0b3I6IHN0cmluZyA9ICdcXHJcXG4nXG4pOiBzdHJpbmcge1xuICBpZiAoIW9iamVjdHMpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBsZXQgb3V0cHV0U3RyaW5nID0gJyc7XG5cbiAgLy8gSXRlcmF0ZSB0aHJvdWdoIGFycmF5LCBjcmVhdGluZyBvbmUgb3V0cHV0IGxpbmUgcGVyIG9iamVjdFxuICBvYmplY3RzLmZvckVhY2goKHZhbHVlOiBvYmplY3QsIGtleTogbnVtYmVyKSA9PiB7XG4gICAgbGV0IGxpbmUgPSAnJztcbiAgICBmb3IgKGNvbnN0IGluZGV4IG9mIE9iamVjdC5rZXlzKG9iamVjdHNba2V5XSkpIHtcbiAgICAgIGlmIChsaW5lICE9PSAnJykge1xuICAgICAgICBsaW5lICs9IGtleVNlcGFyYXRvcjtcbiAgICAgIH1cbiAgICAgIGlmIChvYmplY3RzW2tleV1baW5kZXhdID09PSBudWxsIHx8IG9iamVjdHNba2V5XVtpbmRleF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBvYmplY3RzW2tleV1baW5kZXhdID0gJyc7XG4gICAgICB9XG4gICAgICBsaW5lICs9IG9iamVjdHNba2V5XVtpbmRleF07XG4gICAgfVxuICAgIG91dHB1dFN0cmluZyArPSBgJHtsaW5lfSR7bGluZVNlcGFyYXRvcn1gO1xuICB9KTtcblxuICAvLyBBcHBlbmQgaGVhZGVyIHJvdyBpZGVudGlmeWluZyBrZXlzIGludG8gb3V0cHV0XG4gIGlmIChvYmplY3RzWzBdKSB7XG4gICAgY29uc3QgaGVhZGVyczogc3RyaW5nID0gT2JqZWN0LmtleXMob2JqZWN0c1swXSkuam9pbihrZXlTZXBhcmF0b3IpO1xuICAgIG91dHB1dFN0cmluZyA9IGAke2hlYWRlcnN9JHtsaW5lU2VwYXJhdG9yfSR7b3V0cHV0U3RyaW5nfWA7XG4gIH1cblxuICByZXR1cm4gb3V0cHV0U3RyaW5nO1xufVxuXG4vKipcbiAqIENvbnZlcnNpb24gZnVuY3Rpb24gdGhhdCB0YWtlcyBhIENTViByZXByZXNlbnRhdGlvblxuICogb2Ygb2JqZWN0cyBhbmQgY29udmVydHMgdGhlbSB0byBKU09OLlxuICogVGhlIGZpcnN0IHJvdyBpbiB0aGUgaW5wdXQgbXVzdCBiZSB0aGUgb2JqZWN0IGtleXMuXG4gKiBDdXN0b20ga2V5IHNlcGFyYXRvciBhbmQgbGluZSBzZXBhcmF0b3IgY2FuIGJlIHNwZWNpZmllZC5cbiAqIEluZGVudGF0aW9uIHNpemUgZm9yIG91dHB1dCBKU09OIGNhbiBiZSBzcGVjaWZpZWQuXG4gKlxuICogQHBhcmFtIGNzdiBsaXN0IG9mIHN0cmluZ3MgaW4gSlNPTiBmb3JtYXQgb3IgYWN0dWFsIG9iamVjdHNcbiAqIEBwYXJhbSBrZXlTZXBhcmF0b3Igb3B0aW9uYWwgcGFyYW1ldGVyIHRvIHNwZWNpZnkgY3VzdG9tIHZhbHVlIHNlcGFyYXRvclxuICogQHBhcmFtIGxpbmVTZXBhcmF0b3Igb3B0aW9uYWwgcGFyYW1ldGVyIHRvIHNwZWNpZnkgY3VzdG9tIGVuZCBvZiBsaW5lIHNlcGFyYXRvclxuICogQHBhcmFtIGluZGVudCBvcHRpb25hbCBwYXJhbWV0ZXIgaW5kaWNhdGluZyBzcGFjZSBpbmRlbnRhdGlvbiBmb3IgcHJldHR5IG91dHB1dC4gRGVmYXVsdCBpcyAyLlxuICogQHJldHVybnMgSlNPTiBmb3JtYXR0ZWQgc3RyaW5nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0Q1NWVG9KU09OKFxuICBjc3Y6IHN0cmluZyxcbiAga2V5U2VwYXJhdG9yOiBzdHJpbmcgPSAnLCcsXG4gIGxpbmVTZXBhcmF0b3I6IHN0cmluZyA9ICdcXHJcXG4nLFxuICBpbmRlbnQ6IG51bWJlciA9IDJcbik6IHN0cmluZyB7XG4gIGlmICghY3N2KSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgY29uc3QgY3N2QXJyYXk6IHN0cmluZ1tdID0gY3N2LnNwbGl0KGxpbmVTZXBhcmF0b3IpO1xuICAvLyBJbnB1dCBDU1YgbXVzdCBoYXZlIGEgbWluaW11bSBvZiB0d28gcm93c1xuICBpZiAoY3N2QXJyYXkubGVuZ3RoIDwgMikge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIGNvbnN0IG5ld09iamVjdHM6IGFueVtdID0gW107XG5cbiAgLy8gRXh0cmFjdCBvYmplY3Qga2V5cyBmcm9tIGhlYWRlciByb3dcbiAgY29uc3Qga2V5czogc3RyaW5nW10gPSBjc3ZBcnJheVswXS5zcGxpdChrZXlTZXBhcmF0b3IpO1xuICAvLyBJdGVyYXRlIHRocm91Z2ggYXJyYXksIGNyZWF0aW5nIG9uZSBvdXRwdXQgbGluZSBwZXIgb2JqZWN0XG4gIGZvciAobGV0IGkgPSAxOyBpIDwgY3N2QXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBuZXdPYmplY3Q6IGFueSA9IHt9O1xuXG4gICAgY29uc3QgdmFsdWVzOiBzdHJpbmdbXSA9IGNzdkFycmF5W2ldLnNwbGl0KGtleVNlcGFyYXRvcik7XG4gICAgaWYgKHZhbHVlcy5sZW5ndGggIT09IGtleXMubGVuZ3RoKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBrZXlzLmxlbmd0aDsgaisrKSB7XG4gICAgICBuZXdPYmplY3Rba2V5c1tqXV0gPSB2YWx1ZXNbal07XG4gICAgfVxuICAgIG5ld09iamVjdHMucHVzaChuZXdPYmplY3QpO1xuICB9XG5cbiAgcmV0dXJuIGZvcm1hdEpTT04obmV3T2JqZWN0cywgaW5kZW50KTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IG9iamVjdCB0byBKU09OIHVzaW5nIHN0cmluZ2lmeS4gSW5kZW50YXRpb24gc2l6ZSBmb3Igb3V0cHV0IEpTT04gY2FuIGJlIHNwZWNpZmllZC5cbiAqXG4gKiBAcGFyYW0ganNvbiBvYmplY3QgdG8gYmUgY29udmVydGVkXG4gKiBAcGFyYW0gaW5kZW50IG9wdGlvbmFsIHBhcmFtZXRlciBpbmRpY2F0aW5nIHNwYWNlIGluZGVudGF0aW9uIGZvciBwcmV0dHkgb3V0cHV0LiBEZWZhdWx0IGlzIDIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRKU09OKGpzb246IG9iamVjdCwgaW5kZW50OiBudW1iZXIgPSAyKTogc3RyaW5nIHtcbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGpzb24sIHVuZGVmaW5lZCwgaW5kZW50KTtcbn1cbiJdfQ==
@@ -0,0 +1,75 @@
1
+ import { convertObjectsToCSV, formatJSON } from './convert';
2
+ /**
3
+ * Download CSV content to the specified file with .csv extension
4
+ * appended to the provided base file name.
5
+ *
6
+ * @param fileBaseName base name of destination file
7
+ * @param csv CSV contents
8
+ */
9
+ export function downloadCSV(fileBaseName, csv) {
10
+ downloadFile(`${fileBaseName}.csv`, csv, 'text/csv');
11
+ }
12
+ /**
13
+ * Download JSON content to the specified file with .json extension
14
+ * appended to the provided base file name.
15
+ *
16
+ * @param fileBaseName base name of destination file
17
+ * @param json JSON contents
18
+ * @param format indicates if JSON should be prettied
19
+ * @param indent optional parameter indicating space indentation for pretty output. Default is 2
20
+ */
21
+ export function downloadJSON(fileBaseName, json, format = false, indent = 2) {
22
+ downloadFile(`${fileBaseName}.json`, format ? formatJSON(JSON.parse(json), indent) : json, 'application/json');
23
+ }
24
+ /**
25
+ * Convert objects to CSV format and download to file with .csv
26
+ * extension appended to the provided base file name. Custom key
27
+ * separator and line separator can be specified.
28
+ *
29
+ * @param fileBaseName base name of destination file
30
+ * @param objects object array to be converted to CSV format
31
+ * prior to writing to download destination
32
+ * @param keySeparator optional parameter to specify custom value separator
33
+ * @param lineSeparator optional parameter to specify custom end of line separator
34
+ */
35
+ export function downloadObjectsToCSV(fileBaseName, objects, keySeparator = ',', lineSeparator = '\r\n') {
36
+ downloadFile(`${fileBaseName}.csv`, convertObjectsToCSV(objects, keySeparator, lineSeparator), 'text/csv');
37
+ }
38
+ /**
39
+ * Convert objects to JSON format and download to file with .json
40
+ * extension appended to the provided base file name.
41
+ *
42
+ * @param fileBaseName base name of destination file
43
+ * @param objects object array to be converted to JSON format
44
+ * prior to writing to download destination
45
+ * @param indent optional parameter indicating space indentation for pretty output. Default is 2
46
+ */
47
+ export function downloadObjectsToJSON(fileBaseName, objects, indent = 2) {
48
+ downloadFile(`${fileBaseName}.json`, formatJSON(objects, indent), 'application/json');
49
+ }
50
+ /**
51
+ * Download string content to the specified file with desired mime type.
52
+ *
53
+ * @param fileName full filename (including appropriate extension) of destination file
54
+ * @param contents string contents to be written to download destination
55
+ * @param mimeType mime type appropriate to file content to support consumption of destination file
56
+ */
57
+ export function downloadFile(fileName, contents, mimeType = 'text/plain') {
58
+ if (!fileName || !contents) {
59
+ return;
60
+ }
61
+ // Create blob object and assign URL
62
+ const blob = new Blob([contents], { type: mimeType });
63
+ const url = window.URL.createObjectURL(blob);
64
+ // Construct anchor for URL, append to DOM, click and cleanup.
65
+ const a = document.createElement('a');
66
+ a.setAttribute('style', 'display: none');
67
+ a.setAttribute('download', fileName);
68
+ a.href = url;
69
+ document.body.appendChild(a);
70
+ a.click();
71
+ window.URL.revokeObjectURL(url);
72
+ document.body.removeChild(a);
73
+ window.URL.revokeObjectURL(url);
74
+ }
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG93bmxvYWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tbW9uL3NyYy9mdW5jdGlvbnMvZG93bmxvYWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUU1RDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUFDLFlBQW9CLEVBQUUsR0FBVztJQUMzRCxZQUFZLENBQUMsR0FBRyxZQUFZLE1BQU0sRUFBRSxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDdkQsQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FDMUIsWUFBb0IsRUFDcEIsSUFBWSxFQUNaLFNBQWtCLEtBQUssRUFDdkIsU0FBaUIsQ0FBQztJQUVsQixZQUFZLENBQ1YsR0FBRyxZQUFZLE9BQU8sRUFDdEIsTUFBTSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUNwRCxrQkFBa0IsQ0FDbkIsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQixDQUNsQyxZQUFvQixFQUNwQixPQUFjLEVBQ2QsZUFBdUIsR0FBRyxFQUMxQixnQkFBd0IsTUFBTTtJQUU5QixZQUFZLENBQ1YsR0FBRyxZQUFZLE1BQU0sRUFDckIsbUJBQW1CLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxhQUFhLENBQUMsRUFDekQsVUFBVSxDQUNYLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUscUJBQXFCLENBQ25DLFlBQW9CLEVBQ3BCLE9BQWMsRUFDZCxTQUFpQixDQUFDO0lBRWxCLFlBQVksQ0FDVixHQUFHLFlBQVksT0FBTyxFQUN0QixVQUFVLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxFQUMzQixrQkFBa0IsQ0FDbkIsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsWUFBWSxDQUMxQixRQUFnQixFQUNoQixRQUFnQixFQUNoQixXQUFtQixZQUFZO0lBRS9CLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxRQUFRLEVBQUU7UUFDMUIsT0FBTztLQUNSO0lBRUQsb0NBQW9DO0lBQ3BDLE1BQU0sSUFBSSxHQUFTLElBQUksSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUM1RCxNQUFNLEdBQUcsR0FBVyxNQUFNLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVyRCw4REFBOEQ7SUFDOUQsTUFBTSxDQUFDLEdBQXNCLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDekQsQ0FBQyxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDekMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDckMsQ0FBQyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7SUFDYixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QixDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDVixNQUFNLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QixNQUFNLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNsQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29udmVydE9iamVjdHNUb0NTViwgZm9ybWF0SlNPTiB9IGZyb20gJy4vY29udmVydCc7XG5cbi8qKlxuICogRG93bmxvYWQgQ1NWIGNvbnRlbnQgdG8gdGhlIHNwZWNpZmllZCBmaWxlIHdpdGggLmNzdiBleHRlbnNpb25cbiAqIGFwcGVuZGVkIHRvIHRoZSBwcm92aWRlZCBiYXNlIGZpbGUgbmFtZS5cbiAqXG4gKiBAcGFyYW0gZmlsZUJhc2VOYW1lIGJhc2UgbmFtZSBvZiBkZXN0aW5hdGlvbiBmaWxlXG4gKiBAcGFyYW0gY3N2IENTViBjb250ZW50c1xuICovXG5leHBvcnQgZnVuY3Rpb24gZG93bmxvYWRDU1YoZmlsZUJhc2VOYW1lOiBzdHJpbmcsIGNzdjogc3RyaW5nKTogdm9pZCB7XG4gIGRvd25sb2FkRmlsZShgJHtmaWxlQmFzZU5hbWV9LmNzdmAsIGNzdiwgJ3RleHQvY3N2Jyk7XG59XG5cbi8qKlxuICogRG93bmxvYWQgSlNPTiBjb250ZW50IHRvIHRoZSBzcGVjaWZpZWQgZmlsZSB3aXRoIC5qc29uIGV4dGVuc2lvblxuICogYXBwZW5kZWQgdG8gdGhlIHByb3ZpZGVkIGJhc2UgZmlsZSBuYW1lLlxuICpcbiAqIEBwYXJhbSBmaWxlQmFzZU5hbWUgYmFzZSBuYW1lIG9mIGRlc3RpbmF0aW9uIGZpbGVcbiAqIEBwYXJhbSBqc29uIEpTT04gY29udGVudHNcbiAqIEBwYXJhbSBmb3JtYXQgaW5kaWNhdGVzIGlmIEpTT04gc2hvdWxkIGJlIHByZXR0aWVkXG4gKiBAcGFyYW0gaW5kZW50IG9wdGlvbmFsIHBhcmFtZXRlciBpbmRpY2F0aW5nIHNwYWNlIGluZGVudGF0aW9uIGZvciBwcmV0dHkgb3V0cHV0LiBEZWZhdWx0IGlzIDJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRvd25sb2FkSlNPTihcbiAgZmlsZUJhc2VOYW1lOiBzdHJpbmcsXG4gIGpzb246IHN0cmluZyxcbiAgZm9ybWF0OiBib29sZWFuID0gZmFsc2UsXG4gIGluZGVudDogbnVtYmVyID0gMlxuKTogdm9pZCB7XG4gIGRvd25sb2FkRmlsZShcbiAgICBgJHtmaWxlQmFzZU5hbWV9Lmpzb25gLFxuICAgIGZvcm1hdCA/IGZvcm1hdEpTT04oSlNPTi5wYXJzZShqc29uKSwgaW5kZW50KSA6IGpzb24sXG4gICAgJ2FwcGxpY2F0aW9uL2pzb24nXG4gICk7XG59XG5cbi8qKlxuICogQ29udmVydCBvYmplY3RzIHRvIENTViBmb3JtYXQgYW5kIGRvd25sb2FkIHRvIGZpbGUgd2l0aCAuY3N2XG4gKiBleHRlbnNpb24gYXBwZW5kZWQgdG8gdGhlIHByb3ZpZGVkIGJhc2UgZmlsZSBuYW1lLiBDdXN0b20ga2V5XG4gKiBzZXBhcmF0b3IgYW5kIGxpbmUgc2VwYXJhdG9yIGNhbiBiZSBzcGVjaWZpZWQuXG4gKlxuICogQHBhcmFtIGZpbGVCYXNlTmFtZSBiYXNlIG5hbWUgb2YgZGVzdGluYXRpb24gZmlsZVxuICogQHBhcmFtIG9iamVjdHMgb2JqZWN0IGFycmF5IHRvIGJlIGNvbnZlcnRlZCB0byBDU1YgZm9ybWF0XG4gKiAgIHByaW9yIHRvIHdyaXRpbmcgdG8gZG93bmxvYWQgZGVzdGluYXRpb25cbiAqIEBwYXJhbSBrZXlTZXBhcmF0b3Igb3B0aW9uYWwgcGFyYW1ldGVyIHRvIHNwZWNpZnkgY3VzdG9tIHZhbHVlIHNlcGFyYXRvclxuICogQHBhcmFtIGxpbmVTZXBhcmF0b3Igb3B0aW9uYWwgcGFyYW1ldGVyIHRvIHNwZWNpZnkgY3VzdG9tIGVuZCBvZiBsaW5lIHNlcGFyYXRvclxuICovXG5leHBvcnQgZnVuY3Rpb24gZG93bmxvYWRPYmplY3RzVG9DU1YoXG4gIGZpbGVCYXNlTmFtZTogc3RyaW5nLFxuICBvYmplY3RzOiBhbnlbXSxcbiAga2V5U2VwYXJhdG9yOiBzdHJpbmcgPSAnLCcsXG4gIGxpbmVTZXBhcmF0b3I6IHN0cmluZyA9ICdcXHJcXG4nXG4pOiB2b2lkIHtcbiAgZG93bmxvYWRGaWxlKFxuICAgIGAke2ZpbGVCYXNlTmFtZX0uY3N2YCxcbiAgICBjb252ZXJ0T2JqZWN0c1RvQ1NWKG9iamVjdHMsIGtleVNlcGFyYXRvciwgbGluZVNlcGFyYXRvciksXG4gICAgJ3RleHQvY3N2J1xuICApO1xufVxuXG4vKipcbiAqIENvbnZlcnQgb2JqZWN0cyB0byBKU09OIGZvcm1hdCBhbmQgZG93bmxvYWQgdG8gZmlsZSB3aXRoIC5qc29uXG4gKiBleHRlbnNpb24gYXBwZW5kZWQgdG8gdGhlIHByb3ZpZGVkIGJhc2UgZmlsZSBuYW1lLlxuICpcbiAqIEBwYXJhbSBmaWxlQmFzZU5hbWUgYmFzZSBuYW1lIG9mIGRlc3RpbmF0aW9uIGZpbGVcbiAqIEBwYXJhbSBvYmplY3RzIG9iamVjdCBhcnJheSB0byBiZSBjb252ZXJ0ZWQgdG8gSlNPTiBmb3JtYXRcbiAqICAgcHJpb3IgdG8gd3JpdGluZyB0byBkb3dubG9hZCBkZXN0aW5hdGlvblxuICogQHBhcmFtIGluZGVudCBvcHRpb25hbCBwYXJhbWV0ZXIgaW5kaWNhdGluZyBzcGFjZSBpbmRlbnRhdGlvbiBmb3IgcHJldHR5IG91dHB1dC4gRGVmYXVsdCBpcyAyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkb3dubG9hZE9iamVjdHNUb0pTT04oXG4gIGZpbGVCYXNlTmFtZTogc3RyaW5nLFxuICBvYmplY3RzOiBhbnlbXSxcbiAgaW5kZW50OiBudW1iZXIgPSAyXG4pOiB2b2lkIHtcbiAgZG93bmxvYWRGaWxlKFxuICAgIGAke2ZpbGVCYXNlTmFtZX0uanNvbmAsXG4gICAgZm9ybWF0SlNPTihvYmplY3RzLCBpbmRlbnQpLFxuICAgICdhcHBsaWNhdGlvbi9qc29uJ1xuICApO1xufVxuXG4vKipcbiAqIERvd25sb2FkIHN0cmluZyBjb250ZW50IHRvIHRoZSBzcGVjaWZpZWQgZmlsZSB3aXRoIGRlc2lyZWQgbWltZSB0eXBlLlxuICpcbiAqIEBwYXJhbSBmaWxlTmFtZSBmdWxsIGZpbGVuYW1lIChpbmNsdWRpbmcgYXBwcm9wcmlhdGUgZXh0ZW5zaW9uKSBvZiBkZXN0aW5hdGlvbiBmaWxlXG4gKiBAcGFyYW0gY29udGVudHMgc3RyaW5nIGNvbnRlbnRzIHRvIGJlIHdyaXR0ZW4gdG8gZG93bmxvYWQgZGVzdGluYXRpb25cbiAqIEBwYXJhbSBtaW1lVHlwZSBtaW1lIHR5cGUgYXBwcm9wcmlhdGUgdG8gZmlsZSBjb250ZW50IHRvIHN1cHBvcnQgY29uc3VtcHRpb24gb2YgZGVzdGluYXRpb24gZmlsZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZG93bmxvYWRGaWxlKFxuICBmaWxlTmFtZTogc3RyaW5nLFxuICBjb250ZW50czogc3RyaW5nLFxuICBtaW1lVHlwZTogc3RyaW5nID0gJ3RleHQvcGxhaW4nXG4pOiB2b2lkIHtcbiAgaWYgKCFmaWxlTmFtZSB8fCAhY29udGVudHMpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBDcmVhdGUgYmxvYiBvYmplY3QgYW5kIGFzc2lnbiBVUkxcbiAgY29uc3QgYmxvYjogQmxvYiA9IG5ldyBCbG9iKFtjb250ZW50c10sIHsgdHlwZTogbWltZVR5cGUgfSk7XG4gIGNvbnN0IHVybDogc3RyaW5nID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG5cbiAgLy8gQ29uc3RydWN0IGFuY2hvciBmb3IgVVJMLCBhcHBlbmQgdG8gRE9NLCBjbGljayBhbmQgY2xlYW51cC5cbiAgY29uc3QgYTogSFRNTEFuY2hvckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gIGEuc2V0QXR0cmlidXRlKCdzdHlsZScsICdkaXNwbGF5OiBub25lJyk7XG4gIGEuc2V0QXR0cmlidXRlKCdkb3dubG9hZCcsIGZpbGVOYW1lKTtcbiAgYS5ocmVmID0gdXJsO1xuICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpO1xuICBhLmNsaWNrKCk7XG4gIHdpbmRvdy5VUkwucmV2b2tlT2JqZWN0VVJMKHVybCk7XG4gIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoYSk7XG4gIHdpbmRvdy5VUkwucmV2b2tlT2JqZWN0VVJMKHVybCk7XG59XG4iXX0=
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Read file as UTF-8 text. Return string contents on read completion.
3
+ *
4
+ * @param file filename or File object
5
+ * @returns promise that resolves to file content string
6
+ */
7
+ export function readFile(file) {
8
+ return new Promise((resolve) => {
9
+ const reader = new FileReader();
10
+ reader.readAsText(file, 'UTF-8');
11
+ reader.onload = () => {
12
+ resolve(reader.result);
13
+ };
14
+ });
15
+ }
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9jb21tb24vc3JjL2Z1bmN0aW9ucy9maWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLFFBQVEsQ0FBQyxJQUFVO0lBQ2pDLE9BQU8sSUFBSSxPQUFPLENBQVMsQ0FBQyxPQUFnQyxFQUFFLEVBQUU7UUFDOUQsTUFBTSxNQUFNLEdBQWUsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUM1QyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNqQyxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRTtZQUNuQixPQUFPLENBQVMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUmVhZCBmaWxlIGFzIFVURi04IHRleHQuIFJldHVybiBzdHJpbmcgY29udGVudHMgb24gcmVhZCBjb21wbGV0aW9uLlxuICpcbiAqIEBwYXJhbSBmaWxlIGZpbGVuYW1lIG9yIEZpbGUgb2JqZWN0XG4gKiBAcmV0dXJucyBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gZmlsZSBjb250ZW50IHN0cmluZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gcmVhZEZpbGUoZmlsZTogRmlsZSk6IFByb21pc2U8c3RyaW5nPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZTxzdHJpbmc+KChyZXNvbHZlOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZCkgPT4ge1xuICAgIGNvbnN0IHJlYWRlcjogRmlsZVJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgcmVhZGVyLnJlYWRBc1RleHQoZmlsZSwgJ1VURi04Jyk7XG4gICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgIHJlc29sdmUoPHN0cmluZz5yZWFkZXIucmVzdWx0KTtcbiAgICB9O1xuICB9KTtcbn1cbiJdfQ==
@@ -0,0 +1,42 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class TdBytesPipe {
4
+ /* `bytes` needs to be `any` or TypeScript complains
5
+ Tried both `number` and `number | string` */
6
+ transform(bytes, precision = 2) {
7
+ if (bytes === 0) {
8
+ return '0 B';
9
+ }
10
+ else if (isNaN(parseInt(bytes, 10))) {
11
+ /* If not a valid number, return 'Invalid Number' */
12
+ return 'Invalid Number';
13
+ }
14
+ const k = 1024;
15
+ const sizes = [
16
+ 'B',
17
+ 'KiB',
18
+ 'MiB',
19
+ 'GiB',
20
+ 'TiB',
21
+ 'PiB',
22
+ 'EiB',
23
+ 'ZiB',
24
+ 'YiB',
25
+ ];
26
+ const i = Math.floor(Math.log(bytes) / Math.log(k));
27
+ // if less than 1
28
+ if (i < 0) {
29
+ return 'Invalid Number';
30
+ }
31
+ return (parseFloat((bytes / Math.pow(k, i)).toFixed(precision)) + ' ' + sizes[i]);
32
+ }
33
+ }
34
+ TdBytesPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdBytesPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
35
+ TdBytesPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdBytesPipe, name: "bytes" });
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdBytesPipe, decorators: [{
37
+ type: Pipe,
38
+ args: [{
39
+ name: 'bytes',
40
+ }]
41
+ }] });
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnl0ZXMucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9jb21tb24vc3JjL3BpcGVzL2J5dGVzL2J5dGVzLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBS3BELE1BQU0sT0FBTyxXQUFXO0lBQ3RCO2dEQUM0QztJQUM1QyxTQUFTLENBQUMsS0FBVSxFQUFFLFlBQW9CLENBQUM7UUFDekMsSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFO1lBQ2YsT0FBTyxLQUFLLENBQUM7U0FDZDthQUFNLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRTtZQUNyQyxvREFBb0Q7WUFDcEQsT0FBTyxnQkFBZ0IsQ0FBQztTQUN6QjtRQUNELE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQztRQUNmLE1BQU0sS0FBSyxHQUFhO1lBQ3RCLEdBQUc7WUFDSCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztTQUNOLENBQUM7UUFDRixNQUFNLENBQUMsR0FBVyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVELGlCQUFpQjtRQUNqQixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDVCxPQUFPLGdCQUFnQixDQUFDO1NBQ3pCO1FBQ0QsT0FBTyxDQUNMLFVBQVUsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQ3pFLENBQUM7SUFDSixDQUFDOzt3R0E5QlUsV0FBVztzR0FBWCxXQUFXOzJGQUFYLFdBQVc7a0JBSHZCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLE9BQU87aUJBQ2QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ2J5dGVzJyxcbn0pXG5leHBvcnQgY2xhc3MgVGRCeXRlc1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgLyogYGJ5dGVzYCBuZWVkcyB0byBiZSBgYW55YCBvciBUeXBlU2NyaXB0IGNvbXBsYWluc1xuICBUcmllZCBib3RoIGBudW1iZXJgIGFuZCBgbnVtYmVyIHwgc3RyaW5nYCAqL1xuICB0cmFuc2Zvcm0oYnl0ZXM6IGFueSwgcHJlY2lzaW9uOiBudW1iZXIgPSAyKTogc3RyaW5nIHtcbiAgICBpZiAoYnl0ZXMgPT09IDApIHtcbiAgICAgIHJldHVybiAnMCBCJztcbiAgICB9IGVsc2UgaWYgKGlzTmFOKHBhcnNlSW50KGJ5dGVzLCAxMCkpKSB7XG4gICAgICAvKiBJZiBub3QgYSB2YWxpZCBudW1iZXIsIHJldHVybiAnSW52YWxpZCBOdW1iZXInICovXG4gICAgICByZXR1cm4gJ0ludmFsaWQgTnVtYmVyJztcbiAgICB9XG4gICAgY29uc3QgayA9IDEwMjQ7XG4gICAgY29uc3Qgc2l6ZXM6IHN0cmluZ1tdID0gW1xuICAgICAgJ0InLFxuICAgICAgJ0tpQicsXG4gICAgICAnTWlCJyxcbiAgICAgICdHaUInLFxuICAgICAgJ1RpQicsXG4gICAgICAnUGlCJyxcbiAgICAgICdFaUInLFxuICAgICAgJ1ppQicsXG4gICAgICAnWWlCJyxcbiAgICBdO1xuICAgIGNvbnN0IGk6IG51bWJlciA9IE1hdGguZmxvb3IoTWF0aC5sb2coYnl0ZXMpIC8gTWF0aC5sb2coaykpO1xuICAgIC8vIGlmIGxlc3MgdGhhbiAxXG4gICAgaWYgKGkgPCAwKSB7XG4gICAgICByZXR1cm4gJ0ludmFsaWQgTnVtYmVyJztcbiAgICB9XG4gICAgcmV0dXJuIChcbiAgICAgIHBhcnNlRmxvYXQoKGJ5dGVzIC8gTWF0aC5wb3coaywgaSkpLnRvRml4ZWQocHJlY2lzaW9uKSkgKyAnICcgKyBzaXplc1tpXVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,42 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class TdDecimalBytesPipe {
4
+ /* `bytes` needs to be `any` or TypeScript complains
5
+ Tried both `number` and `number | string` */
6
+ transform(bytes, precision = 2) {
7
+ if (bytes === 0) {
8
+ return '0 B';
9
+ }
10
+ else if (isNaN(parseInt(bytes, 10))) {
11
+ /* If not a valid number, return 'Invalid Number' */
12
+ return 'Invalid Number';
13
+ }
14
+ const k = 1000;
15
+ const sizes = [
16
+ 'B',
17
+ 'KB',
18
+ 'MB',
19
+ 'GB',
20
+ 'TB',
21
+ 'PB',
22
+ 'EB',
23
+ 'ZB',
24
+ 'YB',
25
+ ];
26
+ const i = Math.floor(Math.log(bytes) / Math.log(k));
27
+ // if less than 1
28
+ if (i < 0) {
29
+ return 'Invalid Number';
30
+ }
31
+ return (parseFloat((bytes / Math.pow(k, i)).toFixed(precision)) + ' ' + sizes[i]);
32
+ }
33
+ }
34
+ TdDecimalBytesPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdDecimalBytesPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
35
+ TdDecimalBytesPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdDecimalBytesPipe, name: "decimalBytes" });
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdDecimalBytesPipe, decorators: [{
37
+ type: Pipe,
38
+ args: [{
39
+ name: 'decimalBytes',
40
+ }]
41
+ }] });
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjaW1hbC1ieXRlcy5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL2NvbW1vbi9zcmMvcGlwZXMvZGVjaW1hbC1ieXRlcy9kZWNpbWFsLWJ5dGVzLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBS3BELE1BQU0sT0FBTyxrQkFBa0I7SUFDN0I7Z0RBQzRDO0lBQzVDLFNBQVMsQ0FBQyxLQUFVLEVBQUUsWUFBb0IsQ0FBQztRQUN6QyxJQUFJLEtBQUssS0FBSyxDQUFDLEVBQUU7WUFDZixPQUFPLEtBQUssQ0FBQztTQUNkO2FBQU0sSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFO1lBQ3JDLG9EQUFvRDtZQUNwRCxPQUFPLGdCQUFnQixDQUFDO1NBQ3pCO1FBQ0QsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ2YsTUFBTSxLQUFLLEdBQWE7WUFDdEIsR0FBRztZQUNILElBQUk7WUFDSixJQUFJO1lBQ0osSUFBSTtZQUNKLElBQUk7WUFDSixJQUFJO1lBQ0osSUFBSTtZQUNKLElBQUk7WUFDSixJQUFJO1NBQ0wsQ0FBQztRQUNGLE1BQU0sQ0FBQyxHQUFXLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUQsaUJBQWlCO1FBQ2pCLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNULE9BQU8sZ0JBQWdCLENBQUM7U0FDekI7UUFDRCxPQUFPLENBQ0wsVUFBVSxDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FDekUsQ0FBQztJQUNKLENBQUM7OytHQTlCVSxrQkFBa0I7NkdBQWxCLGtCQUFrQjsyRkFBbEIsa0JBQWtCO2tCQUg5QixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxjQUFjO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQFBpcGUoe1xuICBuYW1lOiAnZGVjaW1hbEJ5dGVzJyxcbn0pXG5leHBvcnQgY2xhc3MgVGREZWNpbWFsQnl0ZXNQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIC8qIGBieXRlc2AgbmVlZHMgdG8gYmUgYGFueWAgb3IgVHlwZVNjcmlwdCBjb21wbGFpbnNcbiAgVHJpZWQgYm90aCBgbnVtYmVyYCBhbmQgYG51bWJlciB8IHN0cmluZ2AgKi9cbiAgdHJhbnNmb3JtKGJ5dGVzOiBhbnksIHByZWNpc2lvbjogbnVtYmVyID0gMik6IHN0cmluZyB7XG4gICAgaWYgKGJ5dGVzID09PSAwKSB7XG4gICAgICByZXR1cm4gJzAgQic7XG4gICAgfSBlbHNlIGlmIChpc05hTihwYXJzZUludChieXRlcywgMTApKSkge1xuICAgICAgLyogSWYgbm90IGEgdmFsaWQgbnVtYmVyLCByZXR1cm4gJ0ludmFsaWQgTnVtYmVyJyAqL1xuICAgICAgcmV0dXJuICdJbnZhbGlkIE51bWJlcic7XG4gICAgfVxuICAgIGNvbnN0IGsgPSAxMDAwO1xuICAgIGNvbnN0IHNpemVzOiBzdHJpbmdbXSA9IFtcbiAgICAgICdCJyxcbiAgICAgICdLQicsXG4gICAgICAnTUInLFxuICAgICAgJ0dCJyxcbiAgICAgICdUQicsXG4gICAgICAnUEInLFxuICAgICAgJ0VCJyxcbiAgICAgICdaQicsXG4gICAgICAnWUInLFxuICAgIF07XG4gICAgY29uc3QgaTogbnVtYmVyID0gTWF0aC5mbG9vcihNYXRoLmxvZyhieXRlcykgLyBNYXRoLmxvZyhrKSk7XG4gICAgLy8gaWYgbGVzcyB0aGFuIDFcbiAgICBpZiAoaSA8IDApIHtcbiAgICAgIHJldHVybiAnSW52YWxpZCBOdW1iZXInO1xuICAgIH1cbiAgICByZXR1cm4gKFxuICAgICAgcGFyc2VGbG9hdCgoYnl0ZXMgLyBNYXRoLnBvdyhrLCBpKSkudG9GaXhlZChwcmVjaXNpb24pKSArICcgJyArIHNpemVzW2ldXG4gICAgKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,39 @@
1
+ import { Pipe, Inject, LOCALE_ID } from '@angular/core';
2
+ import { DecimalPipe } from '@angular/common';
3
+ import * as i0 from "@angular/core";
4
+ export class TdDigitsPipe {
5
+ constructor(_locale = 'en') {
6
+ this._locale = _locale;
7
+ this._decimalPipe = new DecimalPipe(this._locale);
8
+ }
9
+ /* `digits` needs to be type `digits: any` or TypeScript complains */
10
+ transform(digits, precision = 1) {
11
+ if (digits === 0) {
12
+ return '0';
13
+ }
14
+ else if (isNaN(parseInt(digits, 10))) {
15
+ /* If not a valid number, return the value */
16
+ return digits;
17
+ }
18
+ else if (digits < 1) {
19
+ return this._decimalPipe.transform(digits.toFixed(precision)) ?? '';
20
+ }
21
+ const k = 1000;
22
+ const sizes = ['', 'K', 'M', 'B', 'T', 'Q'];
23
+ const i = Math.floor(Math.log(digits) / Math.log(k));
24
+ const size = sizes[i];
25
+ return (this._decimalPipe.transform(parseFloat((digits / Math.pow(k, i)).toFixed(precision))) + (size ? ' ' + size : ''));
26
+ }
27
+ }
28
+ TdDigitsPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdDigitsPipe, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Pipe });
29
+ TdDigitsPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdDigitsPipe, name: "digits" });
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdDigitsPipe, decorators: [{
31
+ type: Pipe,
32
+ args: [{
33
+ name: 'digits',
34
+ }]
35
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
36
+ type: Inject,
37
+ args: [LOCALE_ID]
38
+ }] }]; } });
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlnaXRzLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tbW9uL3NyYy9waXBlcy9kaWdpdHMvZGlnaXRzLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBSzlDLE1BQU0sT0FBTyxZQUFZO0lBR3ZCLFlBQXVDLFVBQWtCLElBQUk7UUFBdEIsWUFBTyxHQUFQLE9BQU8sQ0FBZTtRQUMzRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQscUVBQXFFO0lBQ3JFLFNBQVMsQ0FBQyxNQUFXLEVBQUUsWUFBb0IsQ0FBQztRQUMxQyxJQUFJLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDaEIsT0FBTyxHQUFHLENBQUM7U0FDWjthQUFNLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRTtZQUN0Qyw2Q0FBNkM7WUFDN0MsT0FBTyxNQUFNLENBQUM7U0FDZjthQUFNLElBQUksTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNyQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDckU7UUFDRCxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDZixNQUFNLEtBQUssR0FBYSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDdEQsTUFBTSxDQUFDLEdBQVcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3RCxNQUFNLElBQUksR0FBVyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUIsT0FBTyxDQUNMLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUN6QixVQUFVLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FDekQsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQzdCLENBQUM7SUFDSixDQUFDOzt5R0ExQlUsWUFBWSxrQkFHSCxTQUFTO3VHQUhsQixZQUFZOzJGQUFaLFlBQVk7a0JBSHhCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLFFBQVE7aUJBQ2Y7OzBCQUljLE1BQU07MkJBQUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0sIEluamVjdCwgTE9DQUxFX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEZWNpbWFsUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ2RpZ2l0cycsXG59KVxuZXhwb3J0IGNsYXNzIFRkRGlnaXRzUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICBwcml2YXRlIF9kZWNpbWFsUGlwZTogRGVjaW1hbFBpcGU7XG5cbiAgY29uc3RydWN0b3IoQEluamVjdChMT0NBTEVfSUQpIHByaXZhdGUgX2xvY2FsZTogc3RyaW5nID0gJ2VuJykge1xuICAgIHRoaXMuX2RlY2ltYWxQaXBlID0gbmV3IERlY2ltYWxQaXBlKHRoaXMuX2xvY2FsZSk7XG4gIH1cblxuICAvKiBgZGlnaXRzYCBuZWVkcyB0byBiZSB0eXBlIGBkaWdpdHM6IGFueWAgb3IgVHlwZVNjcmlwdCBjb21wbGFpbnMgKi9cbiAgdHJhbnNmb3JtKGRpZ2l0czogYW55LCBwcmVjaXNpb246IG51bWJlciA9IDEpOiBzdHJpbmcge1xuICAgIGlmIChkaWdpdHMgPT09IDApIHtcbiAgICAgIHJldHVybiAnMCc7XG4gICAgfSBlbHNlIGlmIChpc05hTihwYXJzZUludChkaWdpdHMsIDEwKSkpIHtcbiAgICAgIC8qIElmIG5vdCBhIHZhbGlkIG51bWJlciwgcmV0dXJuIHRoZSB2YWx1ZSAqL1xuICAgICAgcmV0dXJuIGRpZ2l0cztcbiAgICB9IGVsc2UgaWYgKGRpZ2l0cyA8IDEpIHtcbiAgICAgIHJldHVybiB0aGlzLl9kZWNpbWFsUGlwZS50cmFuc2Zvcm0oZGlnaXRzLnRvRml4ZWQocHJlY2lzaW9uKSkgPz8gJyc7XG4gICAgfVxuICAgIGNvbnN0IGsgPSAxMDAwO1xuICAgIGNvbnN0IHNpemVzOiBzdHJpbmdbXSA9IFsnJywgJ0snLCAnTScsICdCJywgJ1QnLCAnUSddO1xuICAgIGNvbnN0IGk6IG51bWJlciA9IE1hdGguZmxvb3IoTWF0aC5sb2coZGlnaXRzKSAvIE1hdGgubG9nKGspKTtcbiAgICBjb25zdCBzaXplOiBzdHJpbmcgPSBzaXplc1tpXTtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5fZGVjaW1hbFBpcGUudHJhbnNmb3JtKFxuICAgICAgICBwYXJzZUZsb2F0KChkaWdpdHMgLyBNYXRoLnBvdyhrLCBpKSkudG9GaXhlZChwcmVjaXNpb24pKVxuICAgICAgKSArIChzaXplID8gJyAnICsgc2l6ZSA6ICcnKVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,72 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class TdTimeAgoPipe {
4
+ transform(time, reference) {
5
+ // Convert time to date object if not already
6
+ time = new Date(time);
7
+ const ref = new Date(reference);
8
+ // If not a valid timestamp, return 'Invalid Date'
9
+ if (!time.getTime()) {
10
+ return 'Invalid Date';
11
+ }
12
+ // For unit testing, we need to be able to declare a static start time
13
+ // for calculations, or else speed of tests can bork.
14
+ const startTime = isNaN(ref.getTime()) ? Date.now() : ref.getTime();
15
+ let diff = Math.floor((startTime - time.getTime()) / 1000);
16
+ if (diff < 2) {
17
+ return '1 second ago';
18
+ }
19
+ if (diff < 60) {
20
+ return Math.floor(diff) + ' seconds ago';
21
+ }
22
+ // Minutes
23
+ diff = diff / 60;
24
+ if (diff < 2) {
25
+ return '1 minute ago';
26
+ }
27
+ if (diff < 60) {
28
+ return Math.floor(diff) + ' minutes ago';
29
+ }
30
+ // Hours
31
+ diff = diff / 60;
32
+ if (diff < 2) {
33
+ return '1 hour ago';
34
+ }
35
+ if (diff < 24) {
36
+ return Math.floor(diff) + ' hours ago';
37
+ }
38
+ // Days
39
+ diff = diff / 24;
40
+ if (diff < 2) {
41
+ return '1 day ago';
42
+ }
43
+ if (diff < 30) {
44
+ return Math.floor(diff) + ' days ago';
45
+ }
46
+ // Months
47
+ diff = diff / 30;
48
+ if (diff < 2) {
49
+ return '1 month ago';
50
+ }
51
+ if (diff < 12) {
52
+ return Math.floor(diff) + ' months ago';
53
+ }
54
+ // Years
55
+ diff = diff / 12;
56
+ if (diff < 2) {
57
+ return '1 year ago';
58
+ }
59
+ else {
60
+ return Math.floor(diff) + ' years ago';
61
+ }
62
+ }
63
+ }
64
+ TdTimeAgoPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdTimeAgoPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
65
+ TdTimeAgoPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdTimeAgoPipe, name: "timeAgo" });
66
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdTimeAgoPipe, decorators: [{
67
+ type: Pipe,
68
+ args: [{
69
+ name: 'timeAgo',
70
+ }]
71
+ }] });
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1hZ28ucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9jb21tb24vc3JjL3BpcGVzL3RpbWUtYWdvL3RpbWUtYWdvLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBS3BELE1BQU0sT0FBTyxhQUFhO0lBQ3hCLFNBQVMsQ0FBQyxJQUFTLEVBQUUsU0FBZTtRQUNsQyw2Q0FBNkM7UUFDN0MsSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RCLE1BQU0sR0FBRyxHQUFTLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXRDLGtEQUFrRDtRQUNsRCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ25CLE9BQU8sY0FBYyxDQUFDO1NBQ3ZCO1FBRUQsc0VBQXNFO1FBQ3RFLHFEQUFxRDtRQUNyRCxNQUFNLFNBQVMsR0FBVyxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzVFLElBQUksSUFBSSxHQUFXLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFFbkUsSUFBSSxJQUFJLEdBQUcsQ0FBQyxFQUFFO1lBQ1osT0FBTyxjQUFjLENBQUM7U0FDdkI7UUFDRCxJQUFJLElBQUksR0FBRyxFQUFFLEVBQUU7WUFDYixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsY0FBYyxDQUFDO1NBQzFDO1FBQ0QsVUFBVTtRQUNWLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLElBQUksSUFBSSxHQUFHLENBQUMsRUFBRTtZQUNaLE9BQU8sY0FBYyxDQUFDO1NBQ3ZCO1FBQ0QsSUFBSSxJQUFJLEdBQUcsRUFBRSxFQUFFO1lBQ2IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLGNBQWMsQ0FBQztTQUMxQztRQUNELFFBQVE7UUFDUixJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNqQixJQUFJLElBQUksR0FBRyxDQUFDLEVBQUU7WUFDWixPQUFPLFlBQVksQ0FBQztTQUNyQjtRQUNELElBQUksSUFBSSxHQUFHLEVBQUUsRUFBRTtZQUNiLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxZQUFZLENBQUM7U0FDeEM7UUFDRCxPQUFPO1FBQ1AsSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7UUFDakIsSUFBSSxJQUFJLEdBQUcsQ0FBQyxFQUFFO1lBQ1osT0FBTyxXQUFXLENBQUM7U0FDcEI7UUFDRCxJQUFJLElBQUksR0FBRyxFQUFFLEVBQUU7WUFDYixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsV0FBVyxDQUFDO1NBQ3ZDO1FBQ0QsU0FBUztRQUNULElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLElBQUksSUFBSSxHQUFHLENBQUMsRUFBRTtZQUNaLE9BQU8sYUFBYSxDQUFDO1NBQ3RCO1FBQ0QsSUFBSSxJQUFJLEdBQUcsRUFBRSxFQUFFO1lBQ2IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLGFBQWEsQ0FBQztTQUN6QztRQUNELFFBQVE7UUFDUixJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNqQixJQUFJLElBQUksR0FBRyxDQUFDLEVBQUU7WUFDWixPQUFPLFlBQVksQ0FBQztTQUNyQjthQUFNO1lBQ0wsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLFlBQVksQ0FBQztTQUN4QztJQUNILENBQUM7OzBHQTdEVSxhQUFhO3dHQUFiLGFBQWE7MkZBQWIsYUFBYTtrQkFIekIsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsU0FBUztpQkFDaEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ3RpbWVBZ28nLFxufSlcbmV4cG9ydCBjbGFzcyBUZFRpbWVBZ29QaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHRyYW5zZm9ybSh0aW1lOiBhbnksIHJlZmVyZW5jZT86IGFueSk6IHN0cmluZyB7XG4gICAgLy8gQ29udmVydCB0aW1lIHRvIGRhdGUgb2JqZWN0IGlmIG5vdCBhbHJlYWR5XG4gICAgdGltZSA9IG5ldyBEYXRlKHRpbWUpO1xuICAgIGNvbnN0IHJlZjogRGF0ZSA9IG5ldyBEYXRlKHJlZmVyZW5jZSk7XG5cbiAgICAvLyBJZiBub3QgYSB2YWxpZCB0aW1lc3RhbXAsIHJldHVybiAnSW52YWxpZCBEYXRlJ1xuICAgIGlmICghdGltZS5nZXRUaW1lKCkpIHtcbiAgICAgIHJldHVybiAnSW52YWxpZCBEYXRlJztcbiAgICB9XG5cbiAgICAvLyBGb3IgdW5pdCB0ZXN0aW5nLCB3ZSBuZWVkIHRvIGJlIGFibGUgdG8gZGVjbGFyZSBhIHN0YXRpYyBzdGFydCB0aW1lXG4gICAgLy8gZm9yIGNhbGN1bGF0aW9ucywgb3IgZWxzZSBzcGVlZCBvZiB0ZXN0cyBjYW4gYm9yay5cbiAgICBjb25zdCBzdGFydFRpbWU6IG51bWJlciA9IGlzTmFOKHJlZi5nZXRUaW1lKCkpID8gRGF0ZS5ub3coKSA6IHJlZi5nZXRUaW1lKCk7XG4gICAgbGV0IGRpZmY6IG51bWJlciA9IE1hdGguZmxvb3IoKHN0YXJ0VGltZSAtIHRpbWUuZ2V0VGltZSgpKSAvIDEwMDApO1xuXG4gICAgaWYgKGRpZmYgPCAyKSB7XG4gICAgICByZXR1cm4gJzEgc2Vjb25kIGFnbyc7XG4gICAgfVxuICAgIGlmIChkaWZmIDwgNjApIHtcbiAgICAgIHJldHVybiBNYXRoLmZsb29yKGRpZmYpICsgJyBzZWNvbmRzIGFnbyc7XG4gICAgfVxuICAgIC8vIE1pbnV0ZXNcbiAgICBkaWZmID0gZGlmZiAvIDYwO1xuICAgIGlmIChkaWZmIDwgMikge1xuICAgICAgcmV0dXJuICcxIG1pbnV0ZSBhZ28nO1xuICAgIH1cbiAgICBpZiAoZGlmZiA8IDYwKSB7XG4gICAgICByZXR1cm4gTWF0aC5mbG9vcihkaWZmKSArICcgbWludXRlcyBhZ28nO1xuICAgIH1cbiAgICAvLyBIb3Vyc1xuICAgIGRpZmYgPSBkaWZmIC8gNjA7XG4gICAgaWYgKGRpZmYgPCAyKSB7XG4gICAgICByZXR1cm4gJzEgaG91ciBhZ28nO1xuICAgIH1cbiAgICBpZiAoZGlmZiA8IDI0KSB7XG4gICAgICByZXR1cm4gTWF0aC5mbG9vcihkaWZmKSArICcgaG91cnMgYWdvJztcbiAgICB9XG4gICAgLy8gRGF5c1xuICAgIGRpZmYgPSBkaWZmIC8gMjQ7XG4gICAgaWYgKGRpZmYgPCAyKSB7XG4gICAgICByZXR1cm4gJzEgZGF5IGFnbyc7XG4gICAgfVxuICAgIGlmIChkaWZmIDwgMzApIHtcbiAgICAgIHJldHVybiBNYXRoLmZsb29yKGRpZmYpICsgJyBkYXlzIGFnbyc7XG4gICAgfVxuICAgIC8vIE1vbnRoc1xuICAgIGRpZmYgPSBkaWZmIC8gMzA7XG4gICAgaWYgKGRpZmYgPCAyKSB7XG4gICAgICByZXR1cm4gJzEgbW9udGggYWdvJztcbiAgICB9XG4gICAgaWYgKGRpZmYgPCAxMikge1xuICAgICAgcmV0dXJuIE1hdGguZmxvb3IoZGlmZikgKyAnIG1vbnRocyBhZ28nO1xuICAgIH1cbiAgICAvLyBZZWFyc1xuICAgIGRpZmYgPSBkaWZmIC8gMTI7XG4gICAgaWYgKGRpZmYgPCAyKSB7XG4gICAgICByZXR1cm4gJzEgeWVhciBhZ28nO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gTWF0aC5mbG9vcihkaWZmKSArICcgeWVhcnMgYWdvJztcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,51 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class TdTimeDifferencePipe {
4
+ transform(start, end) {
5
+ const startTime = new Date(start);
6
+ let endTime;
7
+ if (end !== undefined) {
8
+ endTime = new Date(end);
9
+ }
10
+ else {
11
+ endTime = new Date();
12
+ }
13
+ if (!startTime.getTime() || !endTime.getTime()) {
14
+ return 'Invalid Date';
15
+ }
16
+ let diff = Math.floor((endTime.getTime() - startTime.getTime()) / 1000);
17
+ const days = Math.floor(diff / (60 * 60 * 24));
18
+ diff = diff - days * (60 * 60 * 24);
19
+ const hours = Math.floor(diff / (60 * 60));
20
+ diff = diff - hours * (60 * 60);
21
+ const minutes = Math.floor(diff / 60);
22
+ diff -= minutes * 60;
23
+ const seconds = diff;
24
+ const pad = '00';
25
+ let daysFormatted = '';
26
+ if (days > 0 && days < 2) {
27
+ daysFormatted = ' day - ';
28
+ }
29
+ else if (days > 1) {
30
+ daysFormatted = ' days - ';
31
+ }
32
+ return ((days > 0 ? days + daysFormatted : daysFormatted) +
33
+ pad.substring(0, pad.length - (hours + '').length) +
34
+ hours +
35
+ ':' +
36
+ pad.substring(0, pad.length - (minutes + '').length) +
37
+ minutes +
38
+ ':' +
39
+ pad.substring(0, pad.length - (seconds + '').length) +
40
+ seconds);
41
+ }
42
+ }
43
+ TdTimeDifferencePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdTimeDifferencePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
44
+ TdTimeDifferencePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdTimeDifferencePipe, name: "timeDifference" });
45
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdTimeDifferencePipe, decorators: [{
46
+ type: Pipe,
47
+ args: [{
48
+ name: 'timeDifference',
49
+ }]
50
+ }] });
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1kaWZmZXJlbmNlLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tbW9uL3NyYy9waXBlcy90aW1lLWRpZmZlcmVuY2UvdGltZS1kaWZmZXJlbmNlLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBS3BELE1BQU0sT0FBTyxvQkFBb0I7SUFDL0IsU0FBUyxDQUFDLEtBQVUsRUFBRSxHQUFTO1FBQzdCLE1BQU0sU0FBUyxHQUFTLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hDLElBQUksT0FBYSxDQUFDO1FBRWxCLElBQUksR0FBRyxLQUFLLFNBQVMsRUFBRTtZQUNyQixPQUFPLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDekI7YUFBTTtZQUNMLE9BQU8sR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1NBQ3RCO1FBRUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUM5QyxPQUFPLGNBQWMsQ0FBQztTQUN2QjtRQUVELElBQUksSUFBSSxHQUFXLElBQUksQ0FBQyxLQUFLLENBQzNCLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxHQUFHLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FDakQsQ0FBQztRQUVGLE1BQU0sSUFBSSxHQUFXLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3ZELElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUVwQyxNQUFNLEtBQUssR0FBVyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ25ELElBQUksR0FBRyxJQUFJLEdBQUcsS0FBSyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBRWhDLE1BQU0sT0FBTyxHQUFXLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQzlDLElBQUksSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBRXJCLE1BQU0sT0FBTyxHQUFXLElBQUksQ0FBQztRQUU3QixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUM7UUFFakIsSUFBSSxhQUFhLEdBQUcsRUFBRSxDQUFDO1FBRXZCLElBQUksSUFBSSxHQUFHLENBQUMsSUFBSSxJQUFJLEdBQUcsQ0FBQyxFQUFFO1lBQ3hCLGFBQWEsR0FBRyxTQUFTLENBQUM7U0FDM0I7YUFBTSxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUU7WUFDbkIsYUFBYSxHQUFHLFVBQVUsQ0FBQztTQUM1QjtRQUVELE9BQU8sQ0FDTCxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQztZQUNqRCxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQztZQUNsRCxLQUFLO1lBQ0wsR0FBRztZQUNILEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDO1lBQ3BELE9BQU87WUFDUCxHQUFHO1lBQ0gsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUM7WUFDcEQsT0FBTyxDQUNSLENBQUM7SUFDSixDQUFDOztpSEFuRFUsb0JBQW9COytHQUFwQixvQkFBb0I7MkZBQXBCLG9CQUFvQjtrQkFIaEMsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsZ0JBQWdCO2lCQUN2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQFBpcGUoe1xuICBuYW1lOiAndGltZURpZmZlcmVuY2UnLFxufSlcbmV4cG9ydCBjbGFzcyBUZFRpbWVEaWZmZXJlbmNlUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0oc3RhcnQ6IGFueSwgZW5kPzogYW55KTogc3RyaW5nIHtcbiAgICBjb25zdCBzdGFydFRpbWU6IERhdGUgPSBuZXcgRGF0ZShzdGFydCk7XG4gICAgbGV0IGVuZFRpbWU6IERhdGU7XG5cbiAgICBpZiAoZW5kICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGVuZFRpbWUgPSBuZXcgRGF0ZShlbmQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbmRUaW1lID0gbmV3IERhdGUoKTtcbiAgICB9XG5cbiAgICBpZiAoIXN0YXJ0VGltZS5nZXRUaW1lKCkgfHwgIWVuZFRpbWUuZ2V0VGltZSgpKSB7XG4gICAgICByZXR1cm4gJ0ludmFsaWQgRGF0ZSc7XG4gICAgfVxuXG4gICAgbGV0IGRpZmY6IG51bWJlciA9IE1hdGguZmxvb3IoXG4gICAgICAoZW5kVGltZS5nZXRUaW1lKCkgLSBzdGFydFRpbWUuZ2V0VGltZSgpKSAvIDEwMDBcbiAgICApO1xuXG4gICAgY29uc3QgZGF5czogbnVtYmVyID0gTWF0aC5mbG9vcihkaWZmIC8gKDYwICogNjAgKiAyNCkpO1xuICAgIGRpZmYgPSBkaWZmIC0gZGF5cyAqICg2MCAqIDYwICogMjQpO1xuXG4gICAgY29uc3QgaG91cnM6IG51bWJlciA9IE1hdGguZmxvb3IoZGlmZiAvICg2MCAqIDYwKSk7XG4gICAgZGlmZiA9IGRpZmYgLSBob3VycyAqICg2MCAqIDYwKTtcblxuICAgIGNvbnN0IG1pbnV0ZXM6IG51bWJlciA9IE1hdGguZmxvb3IoZGlmZiAvIDYwKTtcbiAgICBkaWZmIC09IG1pbnV0ZXMgKiA2MDtcblxuICAgIGNvbnN0IHNlY29uZHM6IG51bWJlciA9IGRpZmY7XG5cbiAgICBjb25zdCBwYWQgPSAnMDAnO1xuXG4gICAgbGV0IGRheXNGb3JtYXR0ZWQgPSAnJztcblxuICAgIGlmIChkYXlzID4gMCAmJiBkYXlzIDwgMikge1xuICAgICAgZGF5c0Zvcm1hdHRlZCA9ICcgZGF5IC0gJztcbiAgICB9IGVsc2UgaWYgKGRheXMgPiAxKSB7XG4gICAgICBkYXlzRm9ybWF0dGVkID0gJyBkYXlzIC0gJztcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgKGRheXMgPiAwID8gZGF5cyArIGRheXNGb3JtYXR0ZWQgOiBkYXlzRm9ybWF0dGVkKSArXG4gICAgICBwYWQuc3Vic3RyaW5nKDAsIHBhZC5sZW5ndGggLSAoaG91cnMgKyAnJykubGVuZ3RoKSArXG4gICAgICBob3VycyArXG4gICAgICAnOicgK1xuICAgICAgcGFkLnN1YnN0cmluZygwLCBwYWQubGVuZ3RoIC0gKG1pbnV0ZXMgKyAnJykubGVuZ3RoKSArXG4gICAgICBtaW51dGVzICtcbiAgICAgICc6JyArXG4gICAgICBwYWQuc3Vic3RyaW5nKDAsIHBhZC5sZW5ndGggLSAoc2Vjb25kcyArICcnKS5sZW5ndGgpICtcbiAgICAgIHNlY29uZHNcbiAgICApO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,72 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class TdTimeUntilPipe {
4
+ transform(time, reference) {
5
+ // Convert time to date object if not already
6
+ time = new Date(time);
7
+ const ref = new Date(reference);
8
+ // If not a valid timestamp, return 'Invalid Date'
9
+ if (!time.getTime()) {
10
+ return 'Invalid Date';
11
+ }
12
+ // For unit testing, we need to be able to declare a static start time
13
+ // for calculations, or else speed of tests can bork.
14
+ const startTime = isNaN(ref.getTime()) ? Date.now() : ref.getTime();
15
+ let diff = Math.floor((time.getTime() - startTime) / 1000);
16
+ if (diff < 2) {
17
+ return 'in 1 second';
18
+ }
19
+ if (diff < 60) {
20
+ return 'in ' + Math.floor(diff) + ' seconds';
21
+ }
22
+ // Minutes
23
+ diff = diff / 60;
24
+ if (diff < 2) {
25
+ return 'in 1 minute';
26
+ }
27
+ if (diff < 60) {
28
+ return 'in ' + Math.floor(diff) + ' minutes';
29
+ }
30
+ // Hours
31
+ diff = diff / 60;
32
+ if (diff < 2) {
33
+ return 'in 1 hour';
34
+ }
35
+ if (diff < 24) {
36
+ return 'in ' + Math.floor(diff) + ' hours';
37
+ }
38
+ // Days
39
+ diff = diff / 24;
40
+ if (diff < 2) {
41
+ return 'in 1 day';
42
+ }
43
+ if (diff < 30) {
44
+ return 'in ' + Math.floor(diff) + ' days';
45
+ }
46
+ // Months
47
+ diff = diff / 30;
48
+ if (diff < 2) {
49
+ return 'in 1 month';
50
+ }
51
+ if (diff < 12) {
52
+ return 'in ' + Math.floor(diff) + ' months';
53
+ }
54
+ // Years
55
+ diff = diff / 12;
56
+ if (diff < 2) {
57
+ return 'in 1 year';
58
+ }
59
+ else {
60
+ return 'in ' + Math.floor(diff) + ' years';
61
+ }
62
+ }
63
+ }
64
+ TdTimeUntilPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdTimeUntilPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
65
+ TdTimeUntilPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdTimeUntilPipe, name: "timeUntil" });
66
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdTimeUntilPipe, decorators: [{
67
+ type: Pipe,
68
+ args: [{
69
+ name: 'timeUntil',
70
+ }]
71
+ }] });
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS11bnRpbC5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL2NvbW1vbi9zcmMvcGlwZXMvdGltZS11bnRpbC90aW1lLXVudGlsLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBS3BELE1BQU0sT0FBTyxlQUFlO0lBQzFCLFNBQVMsQ0FBQyxJQUFTLEVBQUUsU0FBZTtRQUNsQyw2Q0FBNkM7UUFDN0MsSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RCLE1BQU0sR0FBRyxHQUFTLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXRDLGtEQUFrRDtRQUNsRCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ25CLE9BQU8sY0FBYyxDQUFDO1NBQ3ZCO1FBRUQsc0VBQXNFO1FBQ3RFLHFEQUFxRDtRQUNyRCxNQUFNLFNBQVMsR0FBVyxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzVFLElBQUksSUFBSSxHQUFXLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFFbkUsSUFBSSxJQUFJLEdBQUcsQ0FBQyxFQUFFO1lBQ1osT0FBTyxhQUFhLENBQUM7U0FDdEI7UUFDRCxJQUFJLElBQUksR0FBRyxFQUFFLEVBQUU7WUFDYixPQUFPLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQztTQUM5QztRQUNELFVBQVU7UUFDVixJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNqQixJQUFJLElBQUksR0FBRyxDQUFDLEVBQUU7WUFDWixPQUFPLGFBQWEsQ0FBQztTQUN0QjtRQUNELElBQUksSUFBSSxHQUFHLEVBQUUsRUFBRTtZQUNiLE9BQU8sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDO1NBQzlDO1FBQ0QsUUFBUTtRQUNSLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLElBQUksSUFBSSxHQUFHLENBQUMsRUFBRTtZQUNaLE9BQU8sV0FBVyxDQUFDO1NBQ3BCO1FBQ0QsSUFBSSxJQUFJLEdBQUcsRUFBRSxFQUFFO1lBQ2IsT0FBTyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUM7U0FDNUM7UUFDRCxPQUFPO1FBQ1AsSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7UUFDakIsSUFBSSxJQUFJLEdBQUcsQ0FBQyxFQUFFO1lBQ1osT0FBTyxVQUFVLENBQUM7U0FDbkI7UUFDRCxJQUFJLElBQUksR0FBRyxFQUFFLEVBQUU7WUFDYixPQUFPLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLE9BQU8sQ0FBQztTQUMzQztRQUNELFNBQVM7UUFDVCxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNqQixJQUFJLElBQUksR0FBRyxDQUFDLEVBQUU7WUFDWixPQUFPLFlBQVksQ0FBQztTQUNyQjtRQUNELElBQUksSUFBSSxHQUFHLEVBQUUsRUFBRTtZQUNiLE9BQU8sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsU0FBUyxDQUFDO1NBQzdDO1FBQ0QsUUFBUTtRQUNSLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLElBQUksSUFBSSxHQUFHLENBQUMsRUFBRTtZQUNaLE9BQU8sV0FBVyxDQUFDO1NBQ3BCO2FBQU07WUFDTCxPQUFPLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQztTQUM1QztJQUNILENBQUM7OzRHQTdEVSxlQUFlOzBHQUFmLGVBQWU7MkZBQWYsZUFBZTtrQkFIM0IsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsV0FBVztpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ3RpbWVVbnRpbCcsXG59KVxuZXhwb3J0IGNsYXNzIFRkVGltZVVudGlsUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0odGltZTogYW55LCByZWZlcmVuY2U/OiBhbnkpOiBzdHJpbmcge1xuICAgIC8vIENvbnZlcnQgdGltZSB0byBkYXRlIG9iamVjdCBpZiBub3QgYWxyZWFkeVxuICAgIHRpbWUgPSBuZXcgRGF0ZSh0aW1lKTtcbiAgICBjb25zdCByZWY6IERhdGUgPSBuZXcgRGF0ZShyZWZlcmVuY2UpO1xuXG4gICAgLy8gSWYgbm90IGEgdmFsaWQgdGltZXN0YW1wLCByZXR1cm4gJ0ludmFsaWQgRGF0ZSdcbiAgICBpZiAoIXRpbWUuZ2V0VGltZSgpKSB7XG4gICAgICByZXR1cm4gJ0ludmFsaWQgRGF0ZSc7XG4gICAgfVxuXG4gICAgLy8gRm9yIHVuaXQgdGVzdGluZywgd2UgbmVlZCB0byBiZSBhYmxlIHRvIGRlY2xhcmUgYSBzdGF0aWMgc3RhcnQgdGltZVxuICAgIC8vIGZvciBjYWxjdWxhdGlvbnMsIG9yIGVsc2Ugc3BlZWQgb2YgdGVzdHMgY2FuIGJvcmsuXG4gICAgY29uc3Qgc3RhcnRUaW1lOiBudW1iZXIgPSBpc05hTihyZWYuZ2V0VGltZSgpKSA/IERhdGUubm93KCkgOiByZWYuZ2V0VGltZSgpO1xuICAgIGxldCBkaWZmOiBudW1iZXIgPSBNYXRoLmZsb29yKCh0aW1lLmdldFRpbWUoKSAtIHN0YXJ0VGltZSkgLyAxMDAwKTtcblxuICAgIGlmIChkaWZmIDwgMikge1xuICAgICAgcmV0dXJuICdpbiAxIHNlY29uZCc7XG4gICAgfVxuICAgIGlmIChkaWZmIDwgNjApIHtcbiAgICAgIHJldHVybiAnaW4gJyArIE1hdGguZmxvb3IoZGlmZikgKyAnIHNlY29uZHMnO1xuICAgIH1cbiAgICAvLyBNaW51dGVzXG4gICAgZGlmZiA9IGRpZmYgLyA2MDtcbiAgICBpZiAoZGlmZiA8IDIpIHtcbiAgICAgIHJldHVybiAnaW4gMSBtaW51dGUnO1xuICAgIH1cbiAgICBpZiAoZGlmZiA8IDYwKSB7XG4gICAgICByZXR1cm4gJ2luICcgKyBNYXRoLmZsb29yKGRpZmYpICsgJyBtaW51dGVzJztcbiAgICB9XG4gICAgLy8gSG91cnNcbiAgICBkaWZmID0gZGlmZiAvIDYwO1xuICAgIGlmIChkaWZmIDwgMikge1xuICAgICAgcmV0dXJuICdpbiAxIGhvdXInO1xuICAgIH1cbiAgICBpZiAoZGlmZiA8IDI0KSB7XG4gICAgICByZXR1cm4gJ2luICcgKyBNYXRoLmZsb29yKGRpZmYpICsgJyBob3Vycyc7XG4gICAgfVxuICAgIC8vIERheXNcbiAgICBkaWZmID0gZGlmZiAvIDI0O1xuICAgIGlmIChkaWZmIDwgMikge1xuICAgICAgcmV0dXJuICdpbiAxIGRheSc7XG4gICAgfVxuICAgIGlmIChkaWZmIDwgMzApIHtcbiAgICAgIHJldHVybiAnaW4gJyArIE1hdGguZmxvb3IoZGlmZikgKyAnIGRheXMnO1xuICAgIH1cbiAgICAvLyBNb250aHNcbiAgICBkaWZmID0gZGlmZiAvIDMwO1xuICAgIGlmIChkaWZmIDwgMikge1xuICAgICAgcmV0dXJuICdpbiAxIG1vbnRoJztcbiAgICB9XG4gICAgaWYgKGRpZmYgPCAxMikge1xuICAgICAgcmV0dXJuICdpbiAnICsgTWF0aC5mbG9vcihkaWZmKSArICcgbW9udGhzJztcbiAgICB9XG4gICAgLy8gWWVhcnNcbiAgICBkaWZmID0gZGlmZiAvIDEyO1xuICAgIGlmIChkaWZmIDwgMikge1xuICAgICAgcmV0dXJuICdpbiAxIHllYXInO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJ2luICcgKyBNYXRoLmZsb29yKGRpZmYpICsgJyB5ZWFycyc7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -0,0 +1,27 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class TdTruncatePipe {
4
+ transform(text, length = 54) {
5
+ if (typeof text !== 'string') {
6
+ return '';
7
+ }
8
+ // Truncate
9
+ let truncated = text.substr(0, length);
10
+ if (text.length > length) {
11
+ if (truncated.lastIndexOf(' ') > 0) {
12
+ truncated = truncated.trim();
13
+ }
14
+ truncated += '…';
15
+ }
16
+ return truncated;
17
+ }
18
+ }
19
+ TdTruncatePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdTruncatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
20
+ TdTruncatePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdTruncatePipe, name: "truncate" });
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdTruncatePipe, decorators: [{
22
+ type: Pipe,
23
+ args: [{
24
+ name: 'truncate',
25
+ }]
26
+ }] });
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1bmNhdGUucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9jb21tb24vc3JjL3BpcGVzL3RydW5jYXRlL3RydW5jYXRlLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBS3BELE1BQU0sT0FBTyxjQUFjO0lBQ3pCLFNBQVMsQ0FBQyxJQUFTLEVBQUUsU0FBaUIsRUFBRTtRQUN0QyxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRTtZQUM1QixPQUFPLEVBQUUsQ0FBQztTQUNYO1FBRUQsV0FBVztRQUNYLElBQUksU0FBUyxHQUFXLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRS9DLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLEVBQUU7WUFDeEIsSUFBSSxTQUFTLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDbEMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUM5QjtZQUVELFNBQVMsSUFBSSxHQUFHLENBQUM7U0FDbEI7UUFFRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDOzsyR0FsQlUsY0FBYzt5R0FBZCxjQUFjOzJGQUFkLGNBQWM7a0JBSDFCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLFVBQVU7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AUGlwZSh7XG4gIG5hbWU6ICd0cnVuY2F0ZScsXG59KVxuZXhwb3J0IGNsYXNzIFRkVHJ1bmNhdGVQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHRyYW5zZm9ybSh0ZXh0OiBhbnksIGxlbmd0aDogbnVtYmVyID0gNTQpOiBzdHJpbmcge1xuICAgIGlmICh0eXBlb2YgdGV4dCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICAvLyBUcnVuY2F0ZVxuICAgIGxldCB0cnVuY2F0ZWQ6IHN0cmluZyA9IHRleHQuc3Vic3RyKDAsIGxlbmd0aCk7XG5cbiAgICBpZiAodGV4dC5sZW5ndGggPiBsZW5ndGgpIHtcbiAgICAgIGlmICh0cnVuY2F0ZWQubGFzdEluZGV4T2YoJyAnKSA+IDApIHtcbiAgICAgICAgdHJ1bmNhdGVkID0gdHJ1bmNhdGVkLnRyaW0oKTtcbiAgICAgIH1cblxuICAgICAgdHJ1bmNhdGVkICs9ICfigKYnO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVuY2F0ZWQ7XG4gIH1cbn1cbiJdfQ==