sk-front-lib 0.14.8 → 0.15.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (327) hide show
  1. package/api/package.json +5 -6
  2. package/api/sk-api.module.d.ts +7 -0
  3. package/api/sk-api.service.d.ts +3 -0
  4. package/api/sk-front-lib-api.d.ts +1 -0
  5. package/article/package.json +5 -6
  6. package/article/sk-article-editor-server.component.d.ts +3 -0
  7. package/article/sk-article-editor.component.d.ts +3 -0
  8. package/article/sk-article-server.module.d.ts +6 -0
  9. package/article/sk-article.module.d.ts +7 -0
  10. package/article/sk-article.service.d.ts +3 -0
  11. package/article/sk-froala-editor.directive.d.ts +3 -0
  12. package/article/sk-front-lib-article.d.ts +1 -0
  13. package/crud/package.json +5 -6
  14. package/crud/sk-account.service.d.ts +3 -0
  15. package/crud/sk-auth-admin.guard.d.ts +3 -0
  16. package/crud/sk-auth.guard.d.ts +3 -0
  17. package/crud/sk-auth.service.d.ts +3 -0
  18. package/crud/sk-board.service.d.ts +3 -0
  19. package/crud/sk-brand.service.d.ts +3 -0
  20. package/crud/sk-cart.service.d.ts +7 -0
  21. package/crud/sk-category.service.d.ts +3 -0
  22. package/crud/sk-comment.service.d.ts +3 -0
  23. package/crud/sk-config.service.d.ts +3 -0
  24. package/crud/sk-contact.service.d.ts +3 -0
  25. package/crud/sk-coupon.service.d.ts +3 -0
  26. package/crud/sk-document.service.d.ts +3 -0
  27. package/crud/sk-etc.service.d.ts +3 -0
  28. package/crud/sk-file.service.d.ts +3 -0
  29. package/crud/sk-front-lib-crud.d.ts +1 -1
  30. package/crud/sk-keyword.service.d.ts +3 -0
  31. package/crud/sk-order.service.d.ts +3 -0
  32. package/crud/sk-point.service.d.ts +3 -0
  33. package/crud/sk-product.service.d.ts +4 -0
  34. package/crud/sk-promotion.service.d.ts +3 -0
  35. package/crud/sk-search.service.d.ts +3 -0
  36. package/crud/sk-store.service.d.ts +3 -0
  37. package/crud/sk-user.service.d.ts +3 -0
  38. package/{esm2015/api/model/api-config.js → esm2020/api/model/api-config.mjs} +0 -0
  39. package/{esm2015/api/model/api-pageable-param.js → esm2020/api/model/api-pageable-param.mjs} +0 -0
  40. package/{esm2015/api/model/api-pageable.js → esm2020/api/model/api-pageable.mjs} +0 -0
  41. package/{esm2015/api/model/api-response.js → esm2020/api/model/api-response.mjs} +0 -0
  42. package/{esm2015/api/model/index.js → esm2020/api/model/index.mjs} +0 -0
  43. package/{esm2015/api/public_api.js → esm2020/api/public_api.mjs} +0 -0
  44. package/esm2020/api/sk-api.module.mjs +35 -0
  45. package/esm2020/api/sk-api.service.mjs +145 -0
  46. package/{esm2015/api/sk-front-lib-api.js → esm2020/api/sk-front-lib-api.mjs} +0 -0
  47. package/{esm2015/article/public_api.js → esm2020/article/public_api.mjs} +0 -0
  48. package/esm2020/article/sk-article-editor-server.component.mjs +51 -0
  49. package/esm2020/article/sk-article-editor.component.mjs +93 -0
  50. package/esm2020/article/sk-article-server.module.mjs +33 -0
  51. package/esm2020/article/sk-article.module.mjs +32 -0
  52. package/esm2020/article/sk-article.service.mjs +248 -0
  53. package/esm2020/article/sk-froala-editor.directive.mjs +325 -0
  54. package/{esm2015/article/sk-front-lib-article.js → esm2020/article/sk-front-lib-article.mjs} +0 -0
  55. package/{esm2015/crud/public_api.js → esm2020/crud/public_api.mjs} +0 -0
  56. package/esm2020/crud/sk-account.service.mjs +36 -0
  57. package/esm2020/crud/sk-auth-admin.guard.mjs +31 -0
  58. package/esm2020/crud/sk-auth.guard.mjs +31 -0
  59. package/esm2020/crud/sk-auth.service.mjs +67 -0
  60. package/esm2020/crud/sk-board.service.mjs +54 -0
  61. package/esm2020/crud/sk-brand.service.mjs +46 -0
  62. package/esm2020/crud/sk-cart.service.mjs +255 -0
  63. package/esm2020/crud/sk-category.service.mjs +63 -0
  64. package/esm2020/crud/sk-comment.service.mjs +43 -0
  65. package/esm2020/crud/sk-config.service.mjs +31 -0
  66. package/esm2020/crud/sk-contact.service.mjs +39 -0
  67. package/esm2020/crud/sk-coupon.service.mjs +62 -0
  68. package/esm2020/crud/sk-document.service.mjs +95 -0
  69. package/esm2020/crud/sk-etc.service.mjs +25 -0
  70. package/esm2020/crud/sk-file.service.mjs +37 -0
  71. package/esm2020/crud/sk-front-lib-crud.mjs +5 -0
  72. package/esm2020/crud/sk-keyword.service.mjs +46 -0
  73. package/esm2020/crud/sk-order.service.mjs +133 -0
  74. package/esm2020/crud/sk-point.service.mjs +45 -0
  75. package/esm2020/crud/sk-product.service.mjs +156 -0
  76. package/esm2020/crud/sk-promotion.service.mjs +81 -0
  77. package/esm2020/crud/sk-search.service.mjs +25 -0
  78. package/esm2020/crud/sk-store.service.mjs +47 -0
  79. package/esm2020/crud/sk-user.service.mjs +69 -0
  80. package/esm2020/google-analytics/google-analytics-router.module.mjs +30 -0
  81. package/esm2020/google-analytics/google-analytics.module.mjs +40 -0
  82. package/esm2020/google-analytics/initializers/google-analytics-router.initializer.mjs +24 -0
  83. package/esm2020/google-analytics/initializers/google-analytics.initializer.mjs +46 -0
  84. package/{esm2015/google-analytics/interfaces/google-analytics-command.js → esm2020/google-analytics/interfaces/google-analytics-command.mjs} +0 -0
  85. package/{esm2015/google-analytics/interfaces/google-analytics-settings.js → esm2020/google-analytics/interfaces/google-analytics-settings.mjs} +0 -0
  86. package/{esm2015/google-analytics/public_api.js → esm2020/google-analytics/public_api.mjs} +0 -0
  87. package/esm2020/google-analytics/services/google-analytics.service.mjs +200 -0
  88. package/{esm2015/google-analytics/sk-front-lib-google-analytics.js → esm2020/google-analytics/sk-front-lib-google-analytics.mjs} +0 -0
  89. package/{esm2015/google-analytics/tokens/google-analytics-settings-token.js → esm2020/google-analytics/tokens/google-analytics-settings-token.mjs} +0 -0
  90. package/{esm2015/google-analytics/types/ga-action.type.js → esm2020/google-analytics/types/ga-action.type.mjs} +0 -0
  91. package/{esm2015/google-analytics/types/ga-bind.type.js → esm2020/google-analytics/types/ga-bind.type.mjs} +0 -0
  92. package/esm2020/image/public_api.mjs +3 -0
  93. package/esm2020/image/sk-front-lib-image.mjs +5 -0
  94. package/esm2020/image/sk-image.component.mjs +262 -0
  95. package/esm2020/image/sk-image.module.mjs +43 -0
  96. package/{esm2015/lib/sk-animations.js → esm2020/lib/sk-animations.mjs} +0 -0
  97. package/esm2020/lib/sk-byte.pipe.mjs +18 -0
  98. package/esm2020/lib/sk-date-time.pipe.mjs +16 -0
  99. package/esm2020/lib/sk-date.pipe.mjs +16 -0
  100. package/esm2020/lib/sk-front-lib.module.mjs +42 -0
  101. package/esm2020/lib/sk-keys.pipe.mjs +23 -0
  102. package/esm2020/lib/sk-time.pipe.mjs +16 -0
  103. package/{esm2015/lib/sk-utils.js → esm2020/lib/sk-utils.mjs} +0 -0
  104. package/{esm2015/model/lib/article.js → esm2020/model/lib/article.mjs} +0 -0
  105. package/{esm2015/model/lib/audit.js → esm2020/model/lib/audit.mjs} +0 -0
  106. package/{esm2015/model/lib/auth.js → esm2020/model/lib/auth.mjs} +0 -0
  107. package/{esm2015/model/lib/board.js → esm2020/model/lib/board.mjs} +0 -0
  108. package/{esm2015/model/lib/cart.js → esm2020/model/lib/cart.mjs} +0 -0
  109. package/{esm2015/model/lib/comment.js → esm2020/model/lib/comment.mjs} +0 -0
  110. package/{esm2015/model/lib/contact.js → esm2020/model/lib/contact.mjs} +0 -0
  111. package/{esm2015/model/lib/coupon.js → esm2020/model/lib/coupon.mjs} +0 -0
  112. package/{esm2015/model/lib/document.js → esm2020/model/lib/document.mjs} +0 -0
  113. package/{esm2015/model/lib/etc.js → esm2020/model/lib/etc.mjs} +0 -0
  114. package/{esm2015/model/lib/file.js → esm2020/model/lib/file.mjs} +0 -0
  115. package/{esm2015/model/lib/filetype.js → esm2020/model/lib/filetype.mjs} +0 -0
  116. package/{esm2015/model/lib/grid.js → esm2020/model/lib/grid.mjs} +0 -0
  117. package/{esm2015/model/lib/nicepay.js → esm2020/model/lib/nicepay.mjs} +0 -0
  118. package/{esm2015/model/lib/order.js → esm2020/model/lib/order.mjs} +0 -0
  119. package/{esm2015/model/lib/payment.js → esm2020/model/lib/payment.mjs} +0 -0
  120. package/{esm2015/model/lib/point.js → esm2020/model/lib/point.mjs} +0 -0
  121. package/{esm2015/model/lib/product-series.js → esm2020/model/lib/product-series.mjs} +0 -0
  122. package/{esm2015/model/lib/product.js → esm2020/model/lib/product.mjs} +1 -1
  123. package/esm2020/model/lib/promotion.mjs +79 -0
  124. package/{esm2015/model/lib/shipping.js → esm2020/model/lib/shipping.mjs} +0 -0
  125. package/{esm2015/model/lib/user.js → esm2020/model/lib/user.mjs} +0 -0
  126. package/{esm2015/model/public_api.js → esm2020/model/public_api.mjs} +0 -0
  127. package/{esm2015/model/sk-front-lib-model.js → esm2020/model/sk-front-lib-model.mjs} +0 -0
  128. package/{esm2015/public-api.js → esm2020/public-api.mjs} +2 -1
  129. package/esm2020/search-address/dialog/dialog.component.mjs +27 -0
  130. package/{esm2015/search-address/public_api.js → esm2020/search-address/public_api.mjs} +0 -0
  131. package/esm2020/search-address/sk-front-lib-search-address.mjs +5 -0
  132. package/esm2020/search-address/sk-search-address.directive.mjs +41 -0
  133. package/{esm2015/search-address/sk-search-address.model.js → esm2020/search-address/sk-search-address.model.mjs} +0 -0
  134. package/esm2020/search-address/sk-search-address.module.mjs +52 -0
  135. package/{esm2015/search-address/sk-search-address.service.js → esm2020/search-address/sk-search-address.service.mjs} +10 -8
  136. package/esm2020/sk-front-lib.mjs +5 -0
  137. package/{esm2015/uploader/public_api.js → esm2020/uploader/public_api.mjs} +0 -0
  138. package/esm2020/uploader/sk-front-lib-uploader.mjs +5 -0
  139. package/{esm2015/uploader/sk-uploader-file-item.model.js → esm2020/uploader/sk-uploader-file-item.model.mjs} +0 -0
  140. package/{esm2015/uploader/sk-uploader.animation.js → esm2020/uploader/sk-uploader.animation.mjs} +0 -0
  141. package/{esm2015/uploader/sk-uploader.class.js → esm2020/uploader/sk-uploader.class.mjs} +0 -0
  142. package/esm2020/uploader/sk-uploader.component.mjs +120 -0
  143. package/esm2020/uploader/sk-uploader.directive.mjs +44 -0
  144. package/esm2020/uploader/sk-uploader.module.mjs +62 -0
  145. package/fesm2015/sk-front-lib-api.mjs +218 -0
  146. package/fesm2015/sk-front-lib-api.mjs.map +1 -0
  147. package/fesm2015/{sk-front-lib-article.js → sk-front-lib-article.mjs} +183 -158
  148. package/fesm2015/sk-front-lib-article.mjs.map +1 -0
  149. package/fesm2015/sk-front-lib-crud.mjs +1403 -0
  150. package/fesm2015/sk-front-lib-crud.mjs.map +1 -0
  151. package/fesm2015/{sk-front-lib-google-analytics.js → sk-front-lib-google-analytics.mjs} +54 -33
  152. package/fesm2015/sk-front-lib-google-analytics.mjs.map +1 -0
  153. package/fesm2015/{sk-front-lib-image.js → sk-front-lib-image.mjs} +64 -48
  154. package/fesm2015/sk-front-lib-image.mjs.map +1 -0
  155. package/fesm2015/{sk-front-lib-model.js → sk-front-lib-model.mjs} +9 -2
  156. package/fesm2015/sk-front-lib-model.mjs.map +1 -0
  157. package/fesm2015/sk-front-lib-search-address.mjs +188 -0
  158. package/fesm2015/sk-front-lib-search-address.mjs.map +1 -0
  159. package/fesm2015/sk-front-lib-uploader.mjs +551 -0
  160. package/fesm2015/sk-front-lib-uploader.mjs.map +1 -0
  161. package/fesm2015/{sk-front-lib.js → sk-front-lib.mjs} +69 -41
  162. package/fesm2015/sk-front-lib.mjs.map +1 -0
  163. package/{fesm2015/sk-front-lib-api.js → fesm2020/sk-front-lib-api.mjs} +41 -26
  164. package/fesm2020/sk-front-lib-api.mjs.map +1 -0
  165. package/fesm2020/sk-front-lib-article.mjs +771 -0
  166. package/fesm2020/sk-front-lib-article.mjs.map +1 -0
  167. package/{fesm2015/sk-front-lib-crud.js → fesm2020/sk-front-lib-crud.mjs} +213 -236
  168. package/fesm2020/sk-front-lib-crud.mjs.map +1 -0
  169. package/fesm2020/sk-front-lib-google-analytics.mjs +336 -0
  170. package/fesm2020/sk-front-lib-google-analytics.mjs.map +1 -0
  171. package/fesm2020/sk-front-lib-image.mjs +309 -0
  172. package/fesm2020/sk-front-lib-image.mjs.map +1 -0
  173. package/fesm2020/sk-front-lib-model.mjs +1052 -0
  174. package/fesm2020/sk-front-lib-model.mjs.map +1 -0
  175. package/fesm2020/sk-front-lib-search-address.mjs +186 -0
  176. package/fesm2020/sk-front-lib-search-address.mjs.map +1 -0
  177. package/fesm2020/sk-front-lib-uploader.mjs +549 -0
  178. package/fesm2020/sk-front-lib-uploader.mjs.map +1 -0
  179. package/fesm2020/sk-front-lib.mjs +539 -0
  180. package/fesm2020/sk-front-lib.mjs.map +1 -0
  181. package/google-analytics/google-analytics-router.module.d.ts +6 -0
  182. package/google-analytics/google-analytics.module.d.ts +5 -0
  183. package/google-analytics/package.json +5 -6
  184. package/google-analytics/services/google-analytics.service.d.ts +3 -0
  185. package/google-analytics/sk-front-lib-google-analytics.d.ts +1 -0
  186. package/image/package.json +5 -6
  187. package/image/public_api.d.ts +1 -0
  188. package/image/sk-front-lib-image.d.ts +1 -1
  189. package/image/sk-image.component.d.ts +6 -3
  190. package/image/sk-image.module.d.ts +10 -0
  191. package/lib/sk-byte.pipe.d.ts +3 -0
  192. package/lib/sk-date-time.pipe.d.ts +3 -0
  193. package/lib/sk-date.pipe.d.ts +3 -0
  194. package/lib/sk-front-lib.module.d.ts +9 -0
  195. package/lib/sk-keys.pipe.d.ts +3 -0
  196. package/lib/sk-time.pipe.d.ts +3 -0
  197. package/model/lib/product.d.ts +1 -0
  198. package/model/lib/promotion.d.ts +12 -1
  199. package/model/package.json +5 -6
  200. package/model/sk-front-lib-model.d.ts +1 -0
  201. package/package.json +96 -20
  202. package/public-api.d.ts +1 -0
  203. package/search-address/dialog/dialog.component.d.ts +3 -0
  204. package/search-address/package.json +5 -6
  205. package/search-address/sk-front-lib-search-address.d.ts +1 -2
  206. package/search-address/sk-search-address.directive.d.ts +3 -0
  207. package/search-address/sk-search-address.module.d.ts +12 -0
  208. package/search-address/sk-search-address.service.d.ts +3 -0
  209. package/sk-front-lib.d.ts +1 -1
  210. package/uploader/package.json +5 -6
  211. package/uploader/sk-front-lib-uploader.d.ts +1 -1
  212. package/uploader/sk-uploader.component.d.ts +3 -0
  213. package/uploader/sk-uploader.directive.d.ts +3 -0
  214. package/uploader/sk-uploader.module.d.ts +14 -0
  215. package/api/sk-front-lib-api.metadata.json +0 -1
  216. package/article/sk-front-lib-article.metadata.json +0 -1
  217. package/bundles/sk-front-lib-api.umd.js +0 -230
  218. package/bundles/sk-front-lib-api.umd.js.map +0 -1
  219. package/bundles/sk-front-lib-api.umd.min.js +0 -2
  220. package/bundles/sk-front-lib-api.umd.min.js.map +0 -1
  221. package/bundles/sk-front-lib-article.umd.js +0 -772
  222. package/bundles/sk-front-lib-article.umd.js.map +0 -1
  223. package/bundles/sk-front-lib-article.umd.min.js +0 -2
  224. package/bundles/sk-front-lib-article.umd.min.js.map +0 -1
  225. package/bundles/sk-front-lib-crud.umd.js +0 -1846
  226. package/bundles/sk-front-lib-crud.umd.js.map +0 -1
  227. package/bundles/sk-front-lib-crud.umd.min.js +0 -2
  228. package/bundles/sk-front-lib-crud.umd.min.js.map +0 -1
  229. package/bundles/sk-front-lib-google-analytics.umd.js +0 -673
  230. package/bundles/sk-front-lib-google-analytics.umd.js.map +0 -1
  231. package/bundles/sk-front-lib-google-analytics.umd.min.js +0 -16
  232. package/bundles/sk-front-lib-google-analytics.umd.min.js.map +0 -1
  233. package/bundles/sk-front-lib-image.umd.js +0 -312
  234. package/bundles/sk-front-lib-image.umd.js.map +0 -1
  235. package/bundles/sk-front-lib-image.umd.min.js +0 -2
  236. package/bundles/sk-front-lib-image.umd.min.js.map +0 -1
  237. package/bundles/sk-front-lib-model.umd.js +0 -1464
  238. package/bundles/sk-front-lib-model.umd.js.map +0 -1
  239. package/bundles/sk-front-lib-model.umd.min.js +0 -16
  240. package/bundles/sk-front-lib-model.umd.min.js.map +0 -1
  241. package/bundles/sk-front-lib-search-address.umd.js +0 -182
  242. package/bundles/sk-front-lib-search-address.umd.js.map +0 -1
  243. package/bundles/sk-front-lib-search-address.umd.min.js +0 -2
  244. package/bundles/sk-front-lib-search-address.umd.min.js.map +0 -1
  245. package/bundles/sk-front-lib-uploader.umd.js +0 -534
  246. package/bundles/sk-front-lib-uploader.umd.js.map +0 -1
  247. package/bundles/sk-front-lib-uploader.umd.min.js +0 -2
  248. package/bundles/sk-front-lib-uploader.umd.min.js.map +0 -1
  249. package/bundles/sk-front-lib.umd.js +0 -546
  250. package/bundles/sk-front-lib.umd.js.map +0 -1
  251. package/bundles/sk-front-lib.umd.min.js +0 -2
  252. package/bundles/sk-front-lib.umd.min.js.map +0 -1
  253. package/crud/sk-front-lib-crud.metadata.json +0 -1
  254. package/esm2015/api/sk-api.module.js +0 -24
  255. package/esm2015/api/sk-api.service.js +0 -144
  256. package/esm2015/article/sk-article-editor-server.component.js +0 -54
  257. package/esm2015/article/sk-article-editor.component.js +0 -85
  258. package/esm2015/article/sk-article-server.module.js +0 -26
  259. package/esm2015/article/sk-article.module.js +0 -23
  260. package/esm2015/article/sk-article.service.js +0 -235
  261. package/esm2015/article/sk-froala-editor.directive.js +0 -320
  262. package/esm2015/crud/sk-account.service.js +0 -38
  263. package/esm2015/crud/sk-auth-admin.guard.js +0 -35
  264. package/esm2015/crud/sk-auth.guard.js +0 -35
  265. package/esm2015/crud/sk-auth.service.js +0 -71
  266. package/esm2015/crud/sk-board.service.js +0 -55
  267. package/esm2015/crud/sk-brand.service.js +0 -47
  268. package/esm2015/crud/sk-cart.service.js +0 -260
  269. package/esm2015/crud/sk-category.service.js +0 -64
  270. package/esm2015/crud/sk-comment.service.js +0 -44
  271. package/esm2015/crud/sk-config.service.js +0 -33
  272. package/esm2015/crud/sk-contact.service.js +0 -40
  273. package/esm2015/crud/sk-coupon.service.js +0 -63
  274. package/esm2015/crud/sk-document.service.js +0 -96
  275. package/esm2015/crud/sk-etc.service.js +0 -27
  276. package/esm2015/crud/sk-file.service.js +0 -38
  277. package/esm2015/crud/sk-front-lib-crud.js +0 -6
  278. package/esm2015/crud/sk-keyword.service.js +0 -47
  279. package/esm2015/crud/sk-order.service.js +0 -134
  280. package/esm2015/crud/sk-point.service.js +0 -46
  281. package/esm2015/crud/sk-product.service.js +0 -154
  282. package/esm2015/crud/sk-promotion.service.js +0 -82
  283. package/esm2015/crud/sk-search.service.js +0 -26
  284. package/esm2015/crud/sk-store.service.js +0 -48
  285. package/esm2015/crud/sk-user.service.js +0 -70
  286. package/esm2015/google-analytics/google-analytics-router.module.js +0 -19
  287. package/esm2015/google-analytics/google-analytics.module.js +0 -33
  288. package/esm2015/google-analytics/initializers/google-analytics-router.initializer.js +0 -25
  289. package/esm2015/google-analytics/initializers/google-analytics.initializer.js +0 -47
  290. package/esm2015/google-analytics/services/google-analytics.service.js +0 -199
  291. package/esm2015/image/public_api.js +0 -2
  292. package/esm2015/image/sk-front-lib-image.js +0 -6
  293. package/esm2015/image/sk-image.component.js +0 -258
  294. package/esm2015/image/sk-image.module.js +0 -28
  295. package/esm2015/lib/sk-byte.pipe.js +0 -14
  296. package/esm2015/lib/sk-date-time.pipe.js +0 -12
  297. package/esm2015/lib/sk-date.pipe.js +0 -12
  298. package/esm2015/lib/sk-front-lib.module.js +0 -29
  299. package/esm2015/lib/sk-keys.pipe.js +0 -19
  300. package/esm2015/lib/sk-time.pipe.js +0 -12
  301. package/esm2015/model/lib/promotion.js +0 -72
  302. package/esm2015/search-address/dialog/dialog.component.js +0 -28
  303. package/esm2015/search-address/sk-front-lib-search-address.js +0 -7
  304. package/esm2015/search-address/sk-search-address.directive.js +0 -39
  305. package/esm2015/search-address/sk-search-address.module.js +0 -34
  306. package/esm2015/sk-front-lib.js +0 -6
  307. package/esm2015/uploader/sk-front-lib-uploader.js +0 -6
  308. package/esm2015/uploader/sk-uploader.component.js +0 -106
  309. package/esm2015/uploader/sk-uploader.directive.js +0 -40
  310. package/esm2015/uploader/sk-uploader.module.js +0 -39
  311. package/fesm2015/sk-front-lib-api.js.map +0 -1
  312. package/fesm2015/sk-front-lib-article.js.map +0 -1
  313. package/fesm2015/sk-front-lib-crud.js.map +0 -1
  314. package/fesm2015/sk-front-lib-google-analytics.js.map +0 -1
  315. package/fesm2015/sk-front-lib-image.js.map +0 -1
  316. package/fesm2015/sk-front-lib-model.js.map +0 -1
  317. package/fesm2015/sk-front-lib-search-address.js +0 -166
  318. package/fesm2015/sk-front-lib-search-address.js.map +0 -1
  319. package/fesm2015/sk-front-lib-uploader.js +0 -510
  320. package/fesm2015/sk-front-lib-uploader.js.map +0 -1
  321. package/fesm2015/sk-front-lib.js.map +0 -1
  322. package/google-analytics/sk-front-lib-google-analytics.metadata.json +0 -1
  323. package/image/sk-front-lib-image.metadata.json +0 -1
  324. package/model/sk-front-lib-model.metadata.json +0 -1
  325. package/search-address/sk-front-lib-search-address.metadata.json +0 -1
  326. package/sk-front-lib.metadata.json +0 -1
  327. package/uploader/sk-front-lib-uploader.metadata.json +0 -1
@@ -0,0 +1,262 @@
1
+ import { HttpParams } from '@angular/common/http';
2
+ import { ChangeDetectionStrategy, Component, Input, ViewChild } from '@angular/core';
3
+ import Viewer from 'viewerjs';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/cdk/platform";
6
+ import * as i2 from "@angular/material/dialog";
7
+ import * as i3 from "sk-front-lib/api";
8
+ import * as i4 from "ng-in-viewport";
9
+ import * as i5 from "@angular/common";
10
+ export class SkImageComponent {
11
+ constructor(cdRef, platform, dialog, apiService) {
12
+ this.cdRef = cdRef;
13
+ this.platform = platform;
14
+ this.dialog = dialog;
15
+ this.apiService = apiService;
16
+ this.mode = 'imgId';
17
+ this.defaultOption = {
18
+ mode: 'img',
19
+ width: 0,
20
+ height: 0,
21
+ resizeType: 'ratio_crop',
22
+ resizeBgColor: '',
23
+ filter: '',
24
+ blur: 0,
25
+ clickable: false,
26
+ coverBackground: null,
27
+ previewColor: ''
28
+ };
29
+ this.currentOption = {};
30
+ this.apiCompleted = false;
31
+ this.isVisible = false;
32
+ this.src = null;
33
+ this.imgId = null;
34
+ this.skfile = null;
35
+ this.option = {};
36
+ this.alt = '';
37
+ this.imageClass = [];
38
+ this.waitSrc = null;
39
+ this.activeSrc = null;
40
+ this.originalSrc = null;
41
+ this.ratio = 100;
42
+ this.backgroundColor = '#fff';
43
+ this.imageOpacity = 0;
44
+ this.viewerOptions = {
45
+ navbar: false,
46
+ backdrop: 'static',
47
+ className: 'sk-custom-viewerjs',
48
+ toolbar: {
49
+ zoomIn: 1,
50
+ zoomOut: 1,
51
+ oneToOne: 1,
52
+ reset: 1,
53
+ },
54
+ movable: true,
55
+ rotatable: false,
56
+ toggleOnDblclick: false,
57
+ };
58
+ }
59
+ // -----------------------------------------------------------------------------------------------------
60
+ // @ Accessors
61
+ // ------------------------------------------1-----------------------------------------------------------
62
+ get containerStyle() {
63
+ if (this.mode === 'imgId' || this.mode === 'skfile') {
64
+ return {
65
+ 'padding-bottom': this.ratio + '%',
66
+ height: '0px',
67
+ overflow: 'hidden',
68
+ 'background-color': this.backgroundColor,
69
+ cursor: this.currentOption.clickable ? 'pointer' : 'inherit',
70
+ };
71
+ }
72
+ else {
73
+ return {
74
+ 'padding-bottom': '0px',
75
+ height: 'auto',
76
+ overflow: 'hidden',
77
+ 'background-color': this.backgroundColor
78
+ };
79
+ }
80
+ }
81
+ get imageStyle() {
82
+ if (this.mode === 'imgId') {
83
+ return {
84
+ position: 'absolute',
85
+ width: '100%',
86
+ top: '0',
87
+ left: '0',
88
+ right: '0',
89
+ bottom: '0',
90
+ opacity: this.imageOpacity
91
+ };
92
+ }
93
+ else {
94
+ return {
95
+ position: 'relative',
96
+ width: '100%',
97
+ opacity: this.imageOpacity
98
+ };
99
+ }
100
+ }
101
+ get coverStyle() {
102
+ if (this.option.coverBackground) {
103
+ return {
104
+ background: this.option.coverBackground,
105
+ opacity: this.imageOpacity
106
+ };
107
+ }
108
+ else {
109
+ return {};
110
+ }
111
+ }
112
+ // -----------------------------------------------------------------------------------------------------
113
+ // @ Lifecycle hooks
114
+ // -----------------------------------------------------------------------------------------------------
115
+ ngOnChanges(changes) {
116
+ this._init();
117
+ /**
118
+ * skfile, imgId, src 순서로 우선권을 가진다.
119
+ */
120
+ if (!!changes.skfile && !!changes.skfile.currentValue) {
121
+ this.mode = 'skfile';
122
+ this.imgId = this.skfile.id;
123
+ this.loadImageByFile();
124
+ return;
125
+ }
126
+ if (!!changes.imgId) {
127
+ this.mode = 'imgId';
128
+ this.loadImageById();
129
+ return;
130
+ }
131
+ if (!!changes.src) {
132
+ this.mode = 'src';
133
+ this.loadImageBySrc();
134
+ return;
135
+ }
136
+ }
137
+ ngAfterViewInit() {
138
+ }
139
+ ngOnDestroy() {
140
+ if (this.viewerInstance) {
141
+ this.viewerInstance.destroy();
142
+ }
143
+ }
144
+ // -----------------------------------------------------------------------------------------------------
145
+ // @ Public methods
146
+ // -----------------------------------------------------------------------------------------------------
147
+ loadImageByFile() {
148
+ this.waitSrc = `${this.apiService.apiServer}/api/public/images/${this.imgId}?${this.getHttpParam().toString()}`;
149
+ this.originalSrc = `${this.apiService.apiServer}/api/public/images/${this.imgId}`;
150
+ const metadata = this.skfile;
151
+ if (this.currentOption.width > 0 && this.currentOption.height > 0) {
152
+ this.ratio = this.currentOption.height / this.currentOption.width * 100;
153
+ }
154
+ else {
155
+ this.ratio = metadata.height / metadata.width * 100;
156
+ }
157
+ this.backgroundColor = !!this.currentOption.previewColor ? this.currentOption.previewColor :
158
+ (this.currentOption.filter === 'gray' ? '#fff' : metadata.color);
159
+ this.apiCompleted = true;
160
+ this.cdRef.markForCheck();
161
+ this.startImageLoad();
162
+ }
163
+ loadImageById() {
164
+ this.apiService.get(`/api/public/images/${this.imgId}/metadata`)
165
+ .subscribe(result => {
166
+ this.skfile = result.data;
167
+ this.loadImageByFile();
168
+ }, error => {
169
+ this.showFallbackImage();
170
+ });
171
+ }
172
+ loadImageBySrc() {
173
+ this.waitSrc = this.src;
174
+ this.apiCompleted = true;
175
+ }
176
+ showFallbackImage() {
177
+ this.mode = 'fallback';
178
+ this.waitSrc = '/assets/images/no_image_available.jpeg';
179
+ this.apiCompleted = true;
180
+ }
181
+ onIntersection(event) {
182
+ if (event.visible) {
183
+ this.isVisible = true;
184
+ if (this.apiCompleted) {
185
+ this.startImageLoad();
186
+ }
187
+ }
188
+ }
189
+ startImageLoad() {
190
+ if (!this.activeSrc && this.apiCompleted && this.isVisible) {
191
+ this.activeSrc = this.waitSrc;
192
+ this.cdRef.markForCheck();
193
+ }
194
+ }
195
+ onImageLoad() {
196
+ this.imageOpacity = 1;
197
+ this.cdRef.markForCheck();
198
+ }
199
+ onImageError() {
200
+ this.activeSrc = null;
201
+ this.showFallbackImage();
202
+ this.startImageLoad();
203
+ }
204
+ openDialog() {
205
+ if (this.currentOption.clickable && this.mode !== 'fallback') {
206
+ if (this.viewerInstance) {
207
+ this.viewerInstance.destroy();
208
+ }
209
+ this.viewerInstance = new Viewer(this.imageElement.nativeElement, {
210
+ // Transitions currently break the Viewer when running optimizations during ng build (i.e in prod mode)
211
+ // TODO: Find a fix for this so we don't have to force disable transitions
212
+ transition: false,
213
+ url: 'src-viewer',
214
+ ...this.viewerOptions,
215
+ });
216
+ this.viewerInstance.show();
217
+ }
218
+ }
219
+ // -----------------------------------------------------------------------------------------------------
220
+ // @ Private methods
221
+ // -----------------------------------------------------------------------------------------------------
222
+ _init() {
223
+ this.mode = 'imgId';
224
+ this.imageOpacity = 0;
225
+ this.apiCompleted = false;
226
+ this.activeSrc = null;
227
+ Object.assign(this.currentOption, this.defaultOption, this.option);
228
+ this.cdRef.detectChanges();
229
+ }
230
+ getHttpParam() {
231
+ const option = this.currentOption;
232
+ return new HttpParams()
233
+ .append('w', String(option.width))
234
+ .append('h', String(option.height))
235
+ .append('resize', option.resizeType)
236
+ .append('bgcolor', option.resizeBgColor)
237
+ .append('filter', String(option.filter))
238
+ .append('blur', String(option.blur));
239
+ }
240
+ }
241
+ SkImageComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: SkImageComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.Platform }, { token: i2.MatDialog }, { token: i3.SkApiService }], target: i0.ɵɵFactoryTarget.Component });
242
+ SkImageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.2", type: SkImageComponent, selector: "sk-image", inputs: { src: "src", imgId: "imgId", skfile: "skfile", option: "option", alt: "alt", imageClass: "imageClass" }, viewQueries: [{ propertyName: "imageElement", first: true, predicate: ["imageElement"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"img-container\" inViewport (inViewportAction)=\"onIntersection($event)\"\n [ngStyle]=\"containerStyle\" (click)=\"openDialog()\" #imageElement>\n <div class=\"img-cover\" *ngIf=\"option.coverBackground\" [ngStyle]=\"coverStyle\"></div>\n <img *ngIf=\"activeSrc && isVisible\" [ngClass]=\"imageClass\"\n [src]=\"activeSrc\"\n [attr.src-viewer]=\"originalSrc\"\n [ngStyle]=\"imageStyle\"\n [alt]=\"alt\"\n (load)=\"onImageLoad()\"\n (error)=\"onImageError()\"\n />\n</div>\n", styles: [":host{display:block}.img-container{position:relative}.img-container:after{display:block;content:\"\";width:100%}.img-container .img-cover{position:absolute;top:0;left:0;right:0;bottom:0;width:100%;height:100%;z-index:1;transition:opacity linear .8s}.img-container>img{display:block;opacity:0;transition:opacity linear .8s}\n"], directives: [{ type: i4.InViewportDirective, selector: "[inViewport]", inputs: ["inViewportOptions"], outputs: ["inViewportAction"] }, { type: i5.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
243
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: SkImageComponent, decorators: [{
244
+ type: Component,
245
+ args: [{ selector: 'sk-image', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"img-container\" inViewport (inViewportAction)=\"onIntersection($event)\"\n [ngStyle]=\"containerStyle\" (click)=\"openDialog()\" #imageElement>\n <div class=\"img-cover\" *ngIf=\"option.coverBackground\" [ngStyle]=\"coverStyle\"></div>\n <img *ngIf=\"activeSrc && isVisible\" [ngClass]=\"imageClass\"\n [src]=\"activeSrc\"\n [attr.src-viewer]=\"originalSrc\"\n [ngStyle]=\"imageStyle\"\n [alt]=\"alt\"\n (load)=\"onImageLoad()\"\n (error)=\"onImageError()\"\n />\n</div>\n", styles: [":host{display:block}.img-container{position:relative}.img-container:after{display:block;content:\"\";width:100%}.img-container .img-cover{position:absolute;top:0;left:0;right:0;bottom:0;width:100%;height:100%;z-index:1;transition:opacity linear .8s}.img-container>img{display:block;opacity:0;transition:opacity linear .8s}\n"] }]
246
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.Platform }, { type: i2.MatDialog }, { type: i3.SkApiService }]; }, propDecorators: { src: [{
247
+ type: Input
248
+ }], imgId: [{
249
+ type: Input
250
+ }], skfile: [{
251
+ type: Input
252
+ }], option: [{
253
+ type: Input
254
+ }], alt: [{
255
+ type: Input
256
+ }], imageClass: [{
257
+ type: Input
258
+ }], imageElement: [{
259
+ type: ViewChild,
260
+ args: ['imageElement', { static: false }]
261
+ }] } });
262
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2staW1hZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc2stZnJvbnQtbGliL2ltYWdlL3NyYy9zay1pbWFnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zay1mcm9udC1saWIvaW1hZ2Uvc3JjL3NrLWltYWdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBRUgsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxLQUFLLEVBSUwsU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBTXZCLE9BQU8sTUFBTSxNQUFNLFVBQVUsQ0FBQzs7Ozs7OztBQTJCOUIsTUFBTSxPQUFPLGdCQUFnQjtJQW1EekIsWUFBb0IsS0FBd0IsRUFDeEIsUUFBa0IsRUFDbEIsTUFBaUIsRUFDakIsVUFBd0I7UUFIeEIsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUFDeEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQ2pCLGVBQVUsR0FBVixVQUFVLENBQWM7UUFwRDVDLFNBQUksR0FBNEMsT0FBTyxDQUFDO1FBQ3hELGtCQUFhLEdBQW1CO1lBQzVCLElBQUksRUFBRSxLQUFLO1lBQ1gsS0FBSyxFQUFFLENBQUM7WUFDUixNQUFNLEVBQUUsQ0FBQztZQUNULFVBQVUsRUFBRSxZQUFZO1lBQ3hCLGFBQWEsRUFBRSxFQUFFO1lBQ2pCLE1BQU0sRUFBRSxFQUFFO1lBQ1YsSUFBSSxFQUFFLENBQUM7WUFDUCxTQUFTLEVBQUUsS0FBSztZQUNoQixlQUFlLEVBQUUsSUFBSTtZQUNyQixZQUFZLEVBQUUsRUFBRTtTQUNuQixDQUFDO1FBQ0Ysa0JBQWEsR0FBbUIsRUFBRSxDQUFDO1FBRW5DLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLGNBQVMsR0FB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QU0sQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUN2QyxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM3QyxDQUFDOzs2R0ExUVEsZ0JBQWdCO2lHQUFoQixnQkFBZ0IscVNDOUM3QixvaUJBWUE7MkZEa0NhLGdCQUFnQjtrQkFONUIsU0FBUzsrQkFDSSxVQUFVLG1CQUdILHVCQUF1QixDQUFDLE1BQU07a0xBc0J0QyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBU3NDLFlBQVk7c0JBQXZELFNBQVM7dUJBQUMsY0FBYyxFQUFFLEVBQUMsTUFBTSxFQUFFLEtBQUssRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYXRmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BsYXRmb3JtJztcbmltcG9ydCB7IEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5cbmltcG9ydCB7IFNrQXBpU2VydmljZSB9IGZyb20gJ3NrLWZyb250LWxpYi9hcGknO1xuaW1wb3J0IHsgU2tGaWxlIH0gZnJvbSAnc2stZnJvbnQtbGliL21vZGVsJztcblxuaW1wb3J0IFZpZXdlciBmcm9tICd2aWV3ZXJqcyc7XG5cbmludGVyZmFjZSBJTWV0YWRhdGEge1xuICAgIHdpZHRoPzogbnVtYmVyO1xuICAgIGhlaWdodD86IG51bWJlcjtcbiAgICBjb2xvcj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTa0ltYWdlT3B0aW9ucyB7XG4gICAgbW9kZT86ICdpbWcnIHwgJ2Nzcyc7XG4gICAgd2lkdGg/OiBudW1iZXI7XG4gICAgaGVpZ2h0PzogbnVtYmVyO1xuICAgIHJlc2l6ZVR5cGU/OiAncmF0aW9fY3JvcCcgfCAncmF0aW9fZmlsbCc7XG4gICAgcmVzaXplQmdDb2xvcj86IHN0cmluZztcbiAgICBmaWx0ZXI/OiAnZ3JheScgfCAnJztcbiAgICBibHVyPzogbnVtYmVyO1xuICAgIGNsaWNrYWJsZT86IGJvb2xlYW47XG4gICAgY292ZXJCYWNrZ3JvdW5kPzogc3RyaW5nO1xuICAgIHByZXZpZXdDb2xvcj86IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdzay1pbWFnZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NrLWltYWdlLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zay1pbWFnZS5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFNrSW1hZ2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG5cbiAgICBtb2RlOiAnc2tmaWxlJyB8ICdpbWdJZCcgfCAnc3JjJyB8ICdmYWxsYmFjaycgPSAnaW1nSWQnO1xuICAgIGRlZmF1bHRPcHRpb246IFNrSW1hZ2VPcHRpb25zID0ge1xuICAgICAgICBtb2RlOiAnaW1nJyxcbiAgICAgICAgd2lkdGg6IDAsXG4gICAgICAgIGhlaWdodDogMCxcbiAgICAgICAgcmVzaXplVHlwZTogJ3JhdGlvX2Nyb3AnLFxuICAgICAgICByZXNpemVCZ0NvbG9yOiAnJyxcbiAgICAgICAgZmlsdGVyOiAnJyxcbiAgICAgICAgYmx1cjogMCxcbiAgICAgICAgY2xpY2thYmxlOiBmYWxzZSxcbiAgICAgICAgY292ZXJCYWNrZ3JvdW5kOiBudWxsLFxuICAgICAgICBwcmV2aWV3Q29sb3I6ICcnXG4gICAgfTtcbiAgICBjdXJyZW50T3B0aW9uOiBTa0ltYWdlT3B0aW9ucyA9IHt9O1xuXG4gICAgYXBpQ29tcGxldGVkID0gZmFsc2U7XG4gICAgaXNWaXNpYmxlID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSBzcmM6IHN0cmluZyA9IG51bGw7XG4gICAgQElucHV0KCkgaW1nSWQ6IG51bWJlciA9IG51bGw7XG4gICAgQElucHV0KCkgc2tmaWxlOiBTa0ZpbGUgPSBudWxsO1xuICAgIEBJbnB1dCgpIG9wdGlvbjogU2tJbWFnZU9wdGlvbnMgPSB7fTtcbiAgICBASW5wdXQoKSBhbHQgPSAnJztcbiAgICBASW5wdXQoKSBpbWFnZUNsYXNzOiBzdHJpbmdbXSA9IFtdO1xuICAgIHdhaXRTcmM6IHN0cmluZyA9IG51bGw7XG4gICAgYWN0aXZlU3JjOiBzdHJpbmcgPSBudWxsO1xuICAgIG9yaWdpbmFsU3JjOiBzdHJpbmcgPSBudWxsO1xuXG4gICAgcmF0aW8gPSAxMDA7XG4gICAgYmFja2dyb3VuZENvbG9yID0gJyNmZmYnO1xuICAgIGltYWdlT3BhY2l0eSA9IDA7XG5cbiAgICBAVmlld0NoaWxkKCdpbWFnZUVsZW1lbnQnLCB7c3RhdGljOiBmYWxzZX0pIGltYWdlRWxlbWVudDogRWxlbWVudFJlZjtcbiAgICB2aWV3ZXJJbnN0YW5jZTogVmlld2VyO1xuICAgIHZpZXdlck9wdGlvbnMgPSB7XG4gICAgICAgIG5hdmJhcjogZmFsc2UsXG4gICAgICAgIGJhY2tkcm9wOiAnc3RhdGljJyxcbiAgICAgICAgY2xhc3NOYW1lOiAnc2stY3VzdG9tLXZpZXdlcmpzJyxcbiAgICAgICAgdG9vbGJhcjoge1xuICAgICAgICAgICAgem9vbUluOiAxLFxuICAgICAgICAgICAgem9vbU91dDogMSxcbiAgICAgICAgICAgIG9uZVRvT25lOiAxLFxuICAgICAgICAgICAgcmVzZXQ6IDEsXG4gICAgICAgIH0sXG4gICAgICAgIG1vdmFibGU6IHRydWUsXG4gICAgICAgIHJvdGF0YWJsZTogZmFsc2UsXG4gICAgICAgIHRvZ2dsZU9uRGJsY2xpY2s6IGZhbHNlLFxuICAgIH07XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgICAgICAgICBwcml2YXRlIHBsYXRmb3JtOiBQbGF0Zm9ybSxcbiAgICAgICAgICAgICAgICBwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nLFxuICAgICAgICAgICAgICAgIHByaXZhdGUgYXBpU2VydmljZTogU2tBcGlTZXJ2aWNlKSB7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBAIEFjY2Vzc29yc1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgZ2V0IGNvbnRhaW5lclN0eWxlKCkge1xuICAgICAgICBpZiAodGhpcy5tb2RlID09PSAnaW1nSWQnIHx8IHRoaXMubW9kZSA9PT0gJ3NrZmlsZScpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgJ3BhZGRpbmctYm90dG9tJzogdGhpcy5yYXRpbyArICclJyxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6ICcwcHgnLFxuICAgICAgICAgICAgICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgICAgICAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcic6IHRoaXMuYmFja2dyb3VuZENvbG9yLFxuICAgICAgICAgICAgICAgIGN1cnNvcjogdGhpcy5jdXJyZW50T3B0aW9uLmNsaWNrYWJsZSA/ICdwb2ludGVyJyA6ICdpbmhlcml0JyxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICdwYWRkaW5nLWJvdHRvbSc6ICcwcHgnLFxuICAgICAgICAgICAgICAgIGhlaWdodDogJ2F1dG8nLFxuICAgICAgICAgICAgICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgICAgICAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcic6IHRoaXMuYmFja2dyb3VuZENvbG9yXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IGltYWdlU3R5bGUoKSB7XG4gICAgICAgIGlmICh0aGlzLm1vZGUgPT09ICdpbWdJZCcpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICB0b3A6ICcwJyxcbiAgICAgICAgICAgICAgICBsZWZ0OiAnMCcsXG4gICAgICAgICAgICAgICAgcmlnaHQ6ICcwJyxcbiAgICAgICAgICAgICAgICBib3R0b206ICcwJyxcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiB0aGlzLmltYWdlT3BhY2l0eVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiB0aGlzLmltYWdlT3BhY2l0eVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldCBjb3ZlclN0eWxlKCkge1xuICAgICAgICBpZiAodGhpcy5vcHRpb24uY292ZXJCYWNrZ3JvdW5kKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHRoaXMub3B0aW9uLmNvdmVyQmFja2dyb3VuZCxcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiB0aGlzLmltYWdlT3BhY2l0eVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICB9XG4gICAgfVxuXG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIEAgTGlmZWN5Y2xlIGhvb2tzXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faW5pdCgpO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBza2ZpbGUsIGltZ0lkLCBzcmMg7Iic7ISc66GcIOyasOyEoOq2jOydhCDqsIDsp4Tri6QuXG4gICAgICAgICAqL1xuICAgICAgICBpZiAoISFjaGFuZ2VzLnNrZmlsZSAmJiAhIWNoYW5nZXMuc2tmaWxlLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5tb2RlID0gJ3NrZmlsZSc7XG4gICAgICAgICAgICB0aGlzLmltZ0lkID0gdGhpcy5za2ZpbGUuaWQ7XG4gICAgICAgICAgICB0aGlzLmxvYWRJbWFnZUJ5RmlsZSgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCEhY2hhbmdlcy5pbWdJZCkge1xuICAgICAgICAgICAgdGhpcy5tb2RlID0gJ2ltZ0lkJztcbiAgICAgICAgICAgIHRoaXMubG9hZEltYWdlQnlJZCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCEhY2hhbmdlcy5zcmMpIHtcbiAgICAgICAgICAgIHRoaXMubW9kZSA9ICdzcmMnO1xuICAgICAgICAgICAgdGhpcy5sb2FkSW1hZ2VCeVNyYygpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy52aWV3ZXJJbnN0YW5jZSkge1xuICAgICAgICAgICAgdGhpcy52aWV3ZXJJbnN0YW5jZS5kZXN0cm95KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIEAgUHVibGljIG1ldGhvZHNcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgbG9hZEltYWdlQnlGaWxlKCkge1xuICAgICAgICB0aGlzLndhaXRTcmMgPSBgJHt0aGlzLmFwaVNlcnZpY2UuYXBpU2VydmVyfS9hcGkvcHVibGljL2ltYWdlcy8ke3RoaXMuaW1nSWR9PyR7dGhpcy5nZXRIdHRwUGFyYW0oKS50b1N0cmluZygpfWA7XG4gICAgICAgIHRoaXMub3JpZ2luYWxTcmMgPSBgJHt0aGlzLmFwaVNlcnZpY2UuYXBpU2VydmVyfS9hcGkvcHVibGljL2ltYWdlcy8ke3RoaXMuaW1nSWR9YDtcblxuICAgICAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuc2tmaWxlIGFzIElNZXRhZGF0YTtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudE9wdGlvbi53aWR0aCA+IDAgJiYgdGhpcy5jdXJyZW50T3B0aW9uLmhlaWdodCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMucmF0aW8gPSB0aGlzLmN1cnJlbnRPcHRpb24uaGVpZ2h0IC8gdGhpcy5jdXJyZW50T3B0aW9uLndpZHRoICogMTAwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yYXRpbyA9IG1ldGFkYXRhLmhlaWdodCAvIG1ldGFkYXRhLndpZHRoICogMTAwO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5iYWNrZ3JvdW5kQ29sb3IgPSAhIXRoaXMuY3VycmVudE9wdGlvbi5wcmV2aWV3Q29sb3IgPyB0aGlzLmN1cnJlbnRPcHRpb24ucHJldmlld0NvbG9yIDpcbiAgICAgICAgICAgICh0aGlzLmN1cnJlbnRPcHRpb24uZmlsdGVyID09PSAnZ3JheScgPyAnI2ZmZicgOiBtZXRhZGF0YS5jb2xvcik7XG5cbiAgICAgICAgdGhpcy5hcGlDb21wbGV0ZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLmNkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB0aGlzLnN0YXJ0SW1hZ2VMb2FkKCk7XG4gICAgfVxuXG4gICAgbG9hZEltYWdlQnlJZCgpIHtcbiAgICAgICAgdGhpcy5hcGlTZXJ2aWNlLmdldDxTa0ZpbGU+KGAvYXBpL3B1YmxpYy9pbWFnZXMvJHt0aGlzLmltZ0lkfS9tZXRhZGF0YWApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAgIHJlc3VsdCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2tmaWxlID0gcmVzdWx0LmRhdGE7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZEltYWdlQnlGaWxlKCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd0ZhbGxiYWNrSW1hZ2UoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgIH1cblxuICAgIGxvYWRJbWFnZUJ5U3JjKCkge1xuICAgICAgICB0aGlzLndhaXRTcmMgPSB0aGlzLnNyYztcbiAgICAgICAgdGhpcy5hcGlDb21wbGV0ZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHNob3dGYWxsYmFja0ltYWdlKCkge1xuICAgICAgICB0aGlzLm1vZGUgPSAnZmFsbGJhY2snO1xuICAgICAgICB0aGlzLndhaXRTcmMgPSAnL2Fzc2V0cy9pbWFnZXMvbm9faW1hZ2VfYXZhaWxhYmxlLmpwZWcnO1xuICAgICAgICB0aGlzLmFwaUNvbXBsZXRlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgb25JbnRlcnNlY3Rpb24oZXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LnZpc2libGUpIHtcbiAgICAgICAgICAgIHRoaXMuaXNWaXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgICAgIGlmICh0aGlzLmFwaUNvbXBsZXRlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhcnRJbWFnZUxvYWQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHN0YXJ0SW1hZ2VMb2FkKCkge1xuICAgICAgICBpZiAoIXRoaXMuYWN0aXZlU3JjICYmIHRoaXMuYXBpQ29tcGxldGVkICYmIHRoaXMuaXNWaXNpYmxlKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZVNyYyA9IHRoaXMud2FpdFNyYztcbiAgICAgICAgICAgIHRoaXMuY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkltYWdlTG9hZCgpIHtcbiAgICAgICAgdGhpcy5pbWFnZU9wYWNpdHkgPSAxO1xuICAgICAgICB0aGlzLmNkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIG9uSW1hZ2VFcnJvcigpIHtcbiAgICAgICAgdGhpcy5hY3RpdmVTcmMgPSBudWxsO1xuICAgICAgICB0aGlzLnNob3dGYWxsYmFja0ltYWdlKCk7XG4gICAgICAgIHRoaXMuc3RhcnRJbWFnZUxvYWQoKTtcbiAgICB9XG5cbiAgICBvcGVuRGlhbG9nKCkge1xuICAgICAgICBpZiAodGhpcy5jdXJyZW50T3B0aW9uLmNsaWNrYWJsZSAmJiB0aGlzLm1vZGUgIT09ICdmYWxsYmFjaycpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnZpZXdlckluc3RhbmNlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy52aWV3ZXJJbnN0YW5jZS5kZXN0cm95KCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMudmlld2VySW5zdGFuY2UgPSBuZXcgVmlld2VyKHRoaXMuaW1hZ2VFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIHtcbiAgICAgICAgICAgICAgICAvLyBUcmFuc2l0aW9ucyBjdXJyZW50bHkgYnJlYWsgdGhlIFZpZXdlciB3aGVuIHJ1bm5pbmcgb3B0aW1pemF0aW9ucyBkdXJpbmcgbmcgYnVpbGQgKGkuZSBpbiBwcm9kIG1vZGUpXG4gICAgICAgICAgICAgICAgLy8gVE9ETzogRmluZCBhIGZpeCBmb3IgdGhpcyBzbyB3ZSBkb24ndCBoYXZlIHRvIGZvcmNlIGRpc2FibGUgdHJhbnNpdGlvbnNcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB1cmw6ICdzcmMtdmlld2VyJyxcbiAgICAgICAgICAgICAgICAuLi50aGlzLnZpZXdlck9wdGlvbnMsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMudmlld2VySW5zdGFuY2Uuc2hvdygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBAIFByaXZhdGUgbWV0aG9kc1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwcml2YXRlIF9pbml0KCkge1xuICAgICAgICB0aGlzLm1vZGUgPSAnaW1nSWQnO1xuICAgICAgICB0aGlzLmltYWdlT3BhY2l0eSA9IDA7XG4gICAgICAgIHRoaXMuYXBpQ29tcGxldGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuYWN0aXZlU3JjID0gbnVsbDtcbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLmN1cnJlbnRPcHRpb24sIHRoaXMuZGVmYXVsdE9wdGlvbiwgdGhpcy5vcHRpb24pO1xuXG4gICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0SHR0cFBhcmFtKCk6IEh0dHBQYXJhbXMge1xuICAgICAgICBjb25zdCBvcHRpb246IFNrSW1hZ2VPcHRpb25zID0gdGhpcy5jdXJyZW50T3B0aW9uO1xuXG4gICAgICAgIHJldHVybiBuZXcgSHR0cFBhcmFtcygpXG4gICAgICAgICAgICAuYXBwZW5kKCd3JywgU3RyaW5nKG9wdGlvbi53aWR0aCkpXG4gICAgICAgICAgICAuYXBwZW5kKCdoJywgU3RyaW5nKG9wdGlvbi5oZWlnaHQpKVxuICAgICAgICAgICAgLmFwcGVuZCgncmVzaXplJywgb3B0aW9uLnJlc2l6ZVR5cGUpXG4gICAgICAgICAgICAuYXBwZW5kKCdiZ2NvbG9yJywgb3B0aW9uLnJlc2l6ZUJnQ29sb3IpXG4gICAgICAgICAgICAuYXBwZW5kKCdmaWx0ZXInLCBTdHJpbmcob3B0aW9uLmZpbHRlcikpXG4gICAgICAgICAgICAuYXBwZW5kKCdibHVyJywgU3RyaW5nKG9wdGlvbi5ibHVyKSk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImltZy1jb250YWluZXJcIiBpblZpZXdwb3J0IChpblZpZXdwb3J0QWN0aW9uKT1cIm9uSW50ZXJzZWN0aW9uKCRldmVudClcIlxuICAgICBbbmdTdHlsZV09XCJjb250YWluZXJTdHlsZVwiIChjbGljayk9XCJvcGVuRGlhbG9nKClcIiAjaW1hZ2VFbGVtZW50PlxuICAgIDxkaXYgY2xhc3M9XCJpbWctY292ZXJcIiAqbmdJZj1cIm9wdGlvbi5jb3ZlckJhY2tncm91bmRcIiBbbmdTdHlsZV09XCJjb3ZlclN0eWxlXCI+PC9kaXY+XG4gICAgPGltZyAqbmdJZj1cImFjdGl2ZVNyYyAmJiBpc1Zpc2libGVcIiBbbmdDbGFzc109XCJpbWFnZUNsYXNzXCJcbiAgICAgICAgIFtzcmNdPVwiYWN0aXZlU3JjXCJcbiAgICAgICAgIFthdHRyLnNyYy12aWV3ZXJdPVwib3JpZ2luYWxTcmNcIlxuICAgICAgICAgW25nU3R5bGVdPVwiaW1hZ2VTdHlsZVwiXG4gICAgICAgICBbYWx0XT1cImFsdFwiXG4gICAgICAgICAobG9hZCk9XCJvbkltYWdlTG9hZCgpXCJcbiAgICAgICAgIChlcnJvcik9XCJvbkltYWdlRXJyb3IoKVwiXG4gICAgLz5cbjwvZGl2PlxuIl19
@@ -0,0 +1,43 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { MatDialogModule } from '@angular/material/dialog';
4
+ import { InViewportModule } from 'ng-in-viewport';
5
+ import { SkImageComponent } from './sk-image.component';
6
+ import { MatButtonModule } from '@angular/material/button';
7
+ import { MatIconModule } from '@angular/material/icon';
8
+ import * as i0 from "@angular/core";
9
+ export class SkImageModule {
10
+ }
11
+ SkImageModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: SkImageModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
12
+ SkImageModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: SkImageModule, declarations: [SkImageComponent], imports: [CommonModule,
13
+ InViewportModule,
14
+ MatDialogModule,
15
+ MatButtonModule,
16
+ MatIconModule], exports: [SkImageComponent] });
17
+ SkImageModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: SkImageModule, imports: [[
18
+ CommonModule,
19
+ InViewportModule,
20
+ MatDialogModule,
21
+ MatButtonModule,
22
+ MatIconModule
23
+ ]] });
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: SkImageModule, decorators: [{
25
+ type: NgModule,
26
+ args: [{
27
+ imports: [
28
+ CommonModule,
29
+ InViewportModule,
30
+ MatDialogModule,
31
+ MatButtonModule,
32
+ MatIconModule
33
+ ],
34
+ declarations: [
35
+ SkImageComponent,
36
+ ],
37
+ exports: [
38
+ SkImageComponent
39
+ ],
40
+ entryComponents: []
41
+ }]
42
+ }] });
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2staW1hZ2UubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc2stZnJvbnQtbGliL2ltYWdlL3NyYy9zay1pbWFnZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBRXpELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRWhELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7O0FBb0JyRCxNQUFNLE9BQU8sYUFBYTs7MEdBQWIsYUFBYTsyR0FBYixhQUFhLGlCQVJsQixnQkFBZ0IsYUFSaEIsWUFBWTtRQUNaLGdCQUFnQjtRQUVoQixlQUFlO1FBQ2YsZUFBZTtRQUNmLGFBQWEsYUFNYixnQkFBZ0I7MkdBS1gsYUFBYSxZQWpCYjtZQUNMLFlBQVk7WUFDWixnQkFBZ0I7WUFFaEIsZUFBZTtZQUNmLGVBQWU7WUFDZixhQUFhO1NBQ2hCOzJGQVVRLGFBQWE7a0JBbEJ6QixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRTt3QkFDTCxZQUFZO3dCQUNaLGdCQUFnQjt3QkFFaEIsZUFBZTt3QkFDZixlQUFlO3dCQUNmLGFBQWE7cUJBQ2hCO29CQUNELFlBQVksRUFBRTt3QkFDVixnQkFBZ0I7cUJBQ25CO29CQUNELE9BQU8sRUFBRTt3QkFDTCxnQkFBZ0I7cUJBQ25CO29CQUNELGVBQWUsRUFBRSxFQUNoQjtpQkFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge01hdERpYWxvZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcblxuaW1wb3J0IHtJblZpZXdwb3J0TW9kdWxlfSBmcm9tICduZy1pbi12aWV3cG9ydCc7XG5cbmltcG9ydCB7U2tJbWFnZUNvbXBvbmVudH0gZnJvbSAnLi9zay1pbWFnZS5jb21wb25lbnQnO1xuaW1wb3J0IHtNYXRCdXR0b25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQge01hdEljb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBJblZpZXdwb3J0TW9kdWxlLFxuXG4gICAgICAgIE1hdERpYWxvZ01vZHVsZSxcbiAgICAgICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgICAgICBNYXRJY29uTW9kdWxlXG4gICAgXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtcbiAgICAgICAgU2tJbWFnZUNvbXBvbmVudCxcbiAgICBdLFxuICAgIGV4cG9ydHM6IFtcbiAgICAgICAgU2tJbWFnZUNvbXBvbmVudFxuICAgIF0sXG4gICAgZW50cnlDb21wb25lbnRzOiBbXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBTa0ltYWdlTW9kdWxlIHtcbn1cbiJdfQ==
@@ -0,0 +1,18 @@
1
+ import { Pipe } from '@angular/core';
2
+ import { SkUtils } from './sk-utils';
3
+ import * as i0 from "@angular/core";
4
+ export class SkBytePipe {
5
+ transform(value, args) {
6
+ if (typeof value === 'number') {
7
+ return SkUtils.humanFileSize(value);
8
+ }
9
+ return value;
10
+ }
11
+ }
12
+ SkBytePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: SkBytePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
13
+ SkBytePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: SkBytePipe, name: "skByte" });
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: SkBytePipe, decorators: [{
15
+ type: Pipe,
16
+ args: [{ name: 'skByte' }]
17
+ }] });
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2stYnl0ZS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc2stZnJvbnQtbGliL3NyYy9saWIvc2stYnl0ZS5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxZQUFZLENBQUM7O0FBR25DLE1BQU0sT0FBTyxVQUFVO0lBQ25CLFNBQVMsQ0FBQyxLQUFVLEVBQUUsSUFBZTtRQUNqQyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtZQUMzQixPQUFPLE9BQU8sQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDdkM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDOzt1R0FOUSxVQUFVO3FHQUFWLFVBQVU7MkZBQVYsVUFBVTtrQkFEdEIsSUFBSTttQkFBQyxFQUFDLElBQUksRUFBRSxRQUFRLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1NrVXRpbHN9IGZyb20gJy4vc2stdXRpbHMnO1xuXG5AUGlwZSh7bmFtZTogJ3NrQnl0ZSd9KVxuZXhwb3J0IGNsYXNzIFNrQnl0ZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICB0cmFuc2Zvcm0odmFsdWU6IGFueSwgYXJncz86IHN0cmluZ1tdKTogYW55IHtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgIHJldHVybiBTa1V0aWxzLmh1bWFuRmlsZVNpemUodmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,16 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as moment from 'moment';
3
+ import * as i0 from "@angular/core";
4
+ export class SkDateTimePipe {
5
+ transform(value, args) {
6
+ const date = moment.utc(value).local();
7
+ return date.format('YYYY-MM-DD HH:mm:ss');
8
+ }
9
+ }
10
+ SkDateTimePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: SkDateTimePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
11
+ SkDateTimePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: SkDateTimePipe, name: "skDateTime" });
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: SkDateTimePipe, decorators: [{
13
+ type: Pipe,
14
+ args: [{ name: 'skDateTime' }]
15
+ }] });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2stZGF0ZS10aW1lLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zay1mcm9udC1saWIvc3JjL2xpYi9zay1kYXRlLXRpbWUucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEtBQUssTUFBTSxNQUFNLFFBQVEsQ0FBQzs7QUFHakMsTUFBTSxPQUFPLGNBQWM7SUFDdkIsU0FBUyxDQUFDLEtBQVUsRUFBRSxJQUFlO1FBQ2pDLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdkMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDOUMsQ0FBQzs7MkdBSlEsY0FBYzt5R0FBZCxjQUFjOzJGQUFkLGNBQWM7a0JBRDFCLElBQUk7bUJBQUMsRUFBQyxJQUFJLEVBQUUsWUFBWSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0ICogYXMgbW9tZW50IGZyb20gJ21vbWVudCc7XG5cbkBQaXBlKHtuYW1lOiAnc2tEYXRlVGltZSd9KVxuZXhwb3J0IGNsYXNzIFNrRGF0ZVRpbWVQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgdHJhbnNmb3JtKHZhbHVlOiBhbnksIGFyZ3M/OiBzdHJpbmdbXSk6IGFueSB7XG4gICAgICAgIGNvbnN0IGRhdGUgPSBtb21lbnQudXRjKHZhbHVlKS5sb2NhbCgpO1xuICAgICAgICByZXR1cm4gZGF0ZS5mb3JtYXQoJ1lZWVktTU0tREQgSEg6bW06c3MnKTtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,16 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as moment from 'moment';
3
+ import * as i0 from "@angular/core";
4
+ export class SkDatePipe {
5
+ transform(value, args) {
6
+ const date = moment.utc(value).local();
7
+ return date.format('YYYY.MM.DD.');
8
+ }
9
+ }
10
+ SkDatePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: SkDatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
11
+ SkDatePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: SkDatePipe, name: "skDate" });
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: SkDatePipe, decorators: [{
13
+ type: Pipe,
14
+ args: [{ name: 'skDate' }]
15
+ }] });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2stZGF0ZS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc2stZnJvbnQtbGliL3NyYy9saWIvc2stZGF0ZS5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sS0FBSyxNQUFNLE1BQU0sUUFBUSxDQUFDOztBQUdqQyxNQUFNLE9BQU8sVUFBVTtJQUNuQixTQUFTLENBQUMsS0FBVSxFQUFFLElBQWU7UUFDakMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN2QyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDdEMsQ0FBQzs7dUdBSlEsVUFBVTtxR0FBVixVQUFVOzJGQUFWLFVBQVU7a0JBRHRCLElBQUk7bUJBQUMsRUFBQyxJQUFJLEVBQUUsUUFBUSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0ICogYXMgbW9tZW50IGZyb20gJ21vbWVudCc7XG5cbkBQaXBlKHtuYW1lOiAnc2tEYXRlJ30pXG5leHBvcnQgY2xhc3MgU2tEYXRlUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHRyYW5zZm9ybSh2YWx1ZTogYW55LCBhcmdzPzogc3RyaW5nW10pOiBhbnkge1xuICAgICAgICBjb25zdCBkYXRlID0gbW9tZW50LnV0Yyh2YWx1ZSkubG9jYWwoKTtcbiAgICAgICAgcmV0dXJuIGRhdGUuZm9ybWF0KCdZWVlZLk1NLkRELicpO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,42 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { SkDatePipe } from './sk-date.pipe';
3
+ import { SkBytePipe } from './sk-byte.pipe';
4
+ import { SkDateTimePipe } from "./sk-date-time.pipe";
5
+ import { SkTimePipe } from "./sk-time.pipe";
6
+ import { SkKeysPipe } from "./sk-keys.pipe";
7
+ import * as i0 from "@angular/core";
8
+ export class SkFrontLibModule {
9
+ }
10
+ SkFrontLibModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: SkFrontLibModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
11
+ SkFrontLibModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: SkFrontLibModule, declarations: [SkDatePipe,
12
+ SkTimePipe,
13
+ SkDateTimePipe,
14
+ SkBytePipe,
15
+ SkKeysPipe], exports: [SkDatePipe,
16
+ SkTimePipe,
17
+ SkDateTimePipe,
18
+ SkBytePipe,
19
+ SkKeysPipe] });
20
+ SkFrontLibModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: SkFrontLibModule, imports: [[]] });
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: SkFrontLibModule, decorators: [{
22
+ type: NgModule,
23
+ args: [{
24
+ imports: [],
25
+ declarations: [
26
+ SkDatePipe,
27
+ SkTimePipe,
28
+ SkDateTimePipe,
29
+ SkBytePipe,
30
+ SkKeysPipe
31
+ ],
32
+ exports: [
33
+ SkDatePipe,
34
+ SkTimePipe,
35
+ SkDateTimePipe,
36
+ SkBytePipe,
37
+ SkKeysPipe
38
+ ],
39
+ entryComponents: []
40
+ }]
41
+ }] });
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2stZnJvbnQtbGliLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3NrLWZyb250LWxpYi9zcmMvbGliL3NrLWZyb250LWxpYi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUMsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzFDLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUMsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDOztBQXNCMUMsTUFBTSxPQUFPLGdCQUFnQjs7NkdBQWhCLGdCQUFnQjs4R0FBaEIsZ0JBQWdCLGlCQWhCckIsVUFBVTtRQUNWLFVBQVU7UUFDVixjQUFjO1FBQ2QsVUFBVTtRQUNWLFVBQVUsYUFHVixVQUFVO1FBQ1YsVUFBVTtRQUNWLGNBQWM7UUFDZCxVQUFVO1FBQ1YsVUFBVTs4R0FLTCxnQkFBZ0IsWUFuQmhCLEVBQ1I7MkZBa0JRLGdCQUFnQjtrQkFwQjVCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLEVBQ1I7b0JBQ0QsWUFBWSxFQUFFO3dCQUNWLFVBQVU7d0JBQ1YsVUFBVTt3QkFDVixjQUFjO3dCQUNkLFVBQVU7d0JBQ1YsVUFBVTtxQkFDYjtvQkFDRCxPQUFPLEVBQUU7d0JBQ0wsVUFBVTt3QkFDVixVQUFVO3dCQUNWLGNBQWM7d0JBQ2QsVUFBVTt3QkFDVixVQUFVO3FCQUNiO29CQUNELGVBQWUsRUFBRSxFQUNoQjtpQkFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtTa0RhdGVQaXBlfSBmcm9tICcuL3NrLWRhdGUucGlwZSc7XG5pbXBvcnQge1NrQnl0ZVBpcGV9IGZyb20gJy4vc2stYnl0ZS5waXBlJztcbmltcG9ydCB7U2tEYXRlVGltZVBpcGV9IGZyb20gXCIuL3NrLWRhdGUtdGltZS5waXBlXCI7XG5pbXBvcnQge1NrVGltZVBpcGV9IGZyb20gXCIuL3NrLXRpbWUucGlwZVwiO1xuaW1wb3J0IHtTa0tleXNQaXBlfSBmcm9tIFwiLi9zay1rZXlzLnBpcGVcIjtcblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbXG4gICAgXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtcbiAgICAgICAgU2tEYXRlUGlwZSxcbiAgICAgICAgU2tUaW1lUGlwZSxcbiAgICAgICAgU2tEYXRlVGltZVBpcGUsXG4gICAgICAgIFNrQnl0ZVBpcGUsXG4gICAgICAgIFNrS2V5c1BpcGVcbiAgICBdLFxuICAgIGV4cG9ydHM6IFtcbiAgICAgICAgU2tEYXRlUGlwZSxcbiAgICAgICAgU2tUaW1lUGlwZSxcbiAgICAgICAgU2tEYXRlVGltZVBpcGUsXG4gICAgICAgIFNrQnl0ZVBpcGUsXG4gICAgICAgIFNrS2V5c1BpcGVcbiAgICBdLFxuICAgIGVudHJ5Q29tcG9uZW50czogW1xuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgU2tGcm9udExpYk1vZHVsZSB7XG59XG4iXX0=
@@ -0,0 +1,23 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class SkKeysPipe {
4
+ transform(value, args) {
5
+ const keys = [];
6
+ for (const key in value) {
7
+ if (value.hasOwnProperty(key)) {
8
+ keys.push({
9
+ key,
10
+ value: value[key]
11
+ });
12
+ }
13
+ }
14
+ return keys;
15
+ }
16
+ }
17
+ SkKeysPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: SkKeysPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
18
+ SkKeysPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: SkKeysPipe, name: "skKeys" });
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: SkKeysPipe, decorators: [{
20
+ type: Pipe,
21
+ args: [{ name: 'skKeys' }]
22
+ }] });
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2sta2V5cy5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc2stZnJvbnQtbGliL3NyYy9saWIvc2sta2V5cy5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOztBQUdwRCxNQUFNLE9BQU8sVUFBVTtJQUNuQixTQUFTLENBQUMsS0FBVSxFQUFFLElBQWU7UUFDakMsTUFBTSxJQUFJLEdBQVUsRUFBRSxDQUFDO1FBRXZCLEtBQU0sTUFBTSxHQUFHLElBQUksS0FBSyxFQUFHO1lBQ3ZCLElBQUssS0FBSyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRztnQkFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQztvQkFDTixHQUFHO29CQUNILEtBQUssRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDO2lCQUNwQixDQUFDLENBQUM7YUFDTjtTQUNKO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQzs7dUdBZFEsVUFBVTtxR0FBVixVQUFVOzJGQUFWLFVBQVU7a0JBRHRCLElBQUk7bUJBQUMsRUFBQyxJQUFJLEVBQUUsUUFBUSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AUGlwZSh7bmFtZTogJ3NrS2V5cyd9KVxuZXhwb3J0IGNsYXNzIFNrS2V5c1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICB0cmFuc2Zvcm0odmFsdWU6IGFueSwgYXJncz86IHN0cmluZ1tdKTogYW55IHtcbiAgICAgICAgY29uc3Qga2V5czogYW55W10gPSBbXTtcblxuICAgICAgICBmb3IgKCBjb25zdCBrZXkgaW4gdmFsdWUgKSB7XG4gICAgICAgICAgICBpZiAoIHZhbHVlLmhhc093blByb3BlcnR5KGtleSkgKSB7XG4gICAgICAgICAgICAgICAga2V5cy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWVba2V5XVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGtleXM7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,16 @@
1
+ import { Pipe } from "@angular/core";
2
+ import * as moment from "moment";
3
+ import * as i0 from "@angular/core";
4
+ export class SkTimePipe {
5
+ transform(value, args) {
6
+ const date = moment.utc(value).local();
7
+ return date.format('HH:mm:ss');
8
+ }
9
+ }
10
+ SkTimePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: SkTimePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
11
+ SkTimePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: SkTimePipe, name: "skTime" });
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: SkTimePipe, decorators: [{
13
+ type: Pipe,
14
+ args: [{ name: 'skTime' }]
15
+ }] });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2stdGltZS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc2stZnJvbnQtbGliL3NyYy9saWIvc2stdGltZS5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxJQUFJLEVBQWdCLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sS0FBSyxNQUFNLE1BQU0sUUFBUSxDQUFDOztBQUdqQyxNQUFNLE9BQU8sVUFBVTtJQUNuQixTQUFTLENBQUMsS0FBVSxFQUFFLElBQWU7UUFDakMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN2QyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDbkMsQ0FBQzs7dUdBSlEsVUFBVTtxR0FBVixVQUFVOzJGQUFWLFVBQVU7a0JBRHRCLElBQUk7bUJBQUMsRUFBQyxJQUFJLEVBQUUsUUFBUSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtQaXBlLCBQaXBlVHJhbnNmb3JtfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0ICogYXMgbW9tZW50IGZyb20gXCJtb21lbnRcIjtcblxuQFBpcGUoe25hbWU6ICdza1RpbWUnfSlcbmV4cG9ydCBjbGFzcyBTa1RpbWVQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgdHJhbnNmb3JtKHZhbHVlOiBhbnksIGFyZ3M/OiBzdHJpbmdbXSk6IGFueSB7XG4gICAgICAgIGNvbnN0IGRhdGUgPSBtb21lbnQudXRjKHZhbHVlKS5sb2NhbCgpO1xuICAgICAgICByZXR1cm4gZGF0ZS5mb3JtYXQoJ0hIOm1tOnNzJyk7XG4gICAgfVxufVxuIl19