sk-front-lib 0.17.49 → 0.17.51

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 (255) hide show
  1. package/esm2020/lib/sk-byte.pipe.mjs +4 -4
  2. package/esm2020/lib/sk-date-time.pipe.mjs +4 -4
  3. package/esm2020/lib/sk-date.pipe.mjs +4 -4
  4. package/esm2020/lib/sk-front-lib.module.mjs +5 -5
  5. package/esm2020/lib/sk-keys.pipe.mjs +4 -4
  6. package/esm2020/lib/sk-time.pipe.mjs +4 -4
  7. package/fesm2015/sk-front-lib.mjs +19 -19
  8. package/fesm2015/sk-front-lib.mjs.map +1 -1
  9. package/fesm2020/sk-front-lib.mjs +19 -19
  10. package/fesm2020/sk-front-lib.mjs.map +1 -1
  11. package/lib/sk-byte.pipe.d.ts +1 -1
  12. package/lib/sk-date-time.pipe.d.ts +1 -1
  13. package/lib/sk-date.pipe.d.ts +1 -1
  14. package/lib/sk-keys.pipe.d.ts +1 -1
  15. package/lib/sk-time.pipe.d.ts +1 -1
  16. package/package.json +3 -67
  17. package/api/model/api-config.d.ts +0 -6
  18. package/api/model/api-pageable-param.d.ts +0 -11
  19. package/api/model/api-pageable.d.ts +0 -11
  20. package/api/model/api-response.d.ts +0 -8
  21. package/api/model/index.d.ts +0 -4
  22. package/api/package.json +0 -10
  23. package/api/public_api.d.ts +0 -3
  24. package/api/sk-api.module.d.ts +0 -12
  25. package/api/sk-api.service.d.ts +0 -34
  26. package/api/sk-front-lib-api.d.ts +0 -5
  27. package/article/package.json +0 -10
  28. package/article/public_api.d.ts +0 -6
  29. package/article/sk-article-editor-server.component.d.ts +0 -23
  30. package/article/sk-article-editor.component.d.ts +0 -27
  31. package/article/sk-article-server.module.d.ts +0 -10
  32. package/article/sk-article.module.d.ts +0 -9
  33. package/article/sk-article.service.d.ts +0 -96
  34. package/article/sk-froala-editor.directive.d.ts +0 -40
  35. package/article/sk-front-lib-article.d.ts +0 -5
  36. package/crud/package.json +0 -10
  37. package/crud/public_api.d.ts +0 -24
  38. package/crud/sk-account.service.d.ts +0 -16
  39. package/crud/sk-affiliate.service.d.ts +0 -38
  40. package/crud/sk-auth-admin.guard.d.ts +0 -13
  41. package/crud/sk-auth.guard.d.ts +0 -13
  42. package/crud/sk-auth.service.d.ts +0 -33
  43. package/crud/sk-board.service.d.ts +0 -21
  44. package/crud/sk-brand.service.d.ts +0 -19
  45. package/crud/sk-cart.service.d.ts +0 -72
  46. package/crud/sk-category.service.d.ts +0 -28
  47. package/crud/sk-comment.service.d.ts +0 -15
  48. package/crud/sk-config.service.d.ts +0 -13
  49. package/crud/sk-contact.service.d.ts +0 -15
  50. package/crud/sk-coupon.service.d.ts +0 -24
  51. package/crud/sk-document.service.d.ts +0 -51
  52. package/crud/sk-etc.service.d.ts +0 -12
  53. package/crud/sk-file.service.d.ts +0 -18
  54. package/crud/sk-front-lib-crud.d.ts +0 -5
  55. package/crud/sk-keyword.service.d.ts +0 -19
  56. package/crud/sk-order.service.d.ts +0 -45
  57. package/crud/sk-point.service.d.ts +0 -17
  58. package/crud/sk-product.service.d.ts +0 -84
  59. package/crud/sk-promotion.service.d.ts +0 -41
  60. package/crud/sk-search.service.d.ts +0 -12
  61. package/crud/sk-store.service.d.ts +0 -17
  62. package/crud/sk-user.service.d.ts +0 -25
  63. package/esm2020/api/model/api-config.mjs +0 -2
  64. package/esm2020/api/model/api-pageable-param.mjs +0 -29
  65. package/esm2020/api/model/api-pageable.mjs +0 -3
  66. package/esm2020/api/model/api-response.mjs +0 -3
  67. package/esm2020/api/model/index.mjs +0 -4
  68. package/esm2020/api/public_api.mjs +0 -4
  69. package/esm2020/api/sk-api.module.mjs +0 -35
  70. package/esm2020/api/sk-api.service.mjs +0 -145
  71. package/esm2020/api/sk-front-lib-api.mjs +0 -5
  72. package/esm2020/article/public_api.mjs +0 -7
  73. package/esm2020/article/sk-article-editor-server.component.mjs +0 -51
  74. package/esm2020/article/sk-article-editor.component.mjs +0 -93
  75. package/esm2020/article/sk-article-server.module.mjs +0 -33
  76. package/esm2020/article/sk-article.module.mjs +0 -32
  77. package/esm2020/article/sk-article.service.mjs +0 -248
  78. package/esm2020/article/sk-froala-editor.directive.mjs +0 -325
  79. package/esm2020/article/sk-front-lib-article.mjs +0 -5
  80. package/esm2020/crud/public_api.mjs +0 -25
  81. package/esm2020/crud/sk-account.service.mjs +0 -36
  82. package/esm2020/crud/sk-affiliate.service.mjs +0 -94
  83. package/esm2020/crud/sk-auth-admin.guard.mjs +0 -31
  84. package/esm2020/crud/sk-auth.guard.mjs +0 -31
  85. package/esm2020/crud/sk-auth.service.mjs +0 -67
  86. package/esm2020/crud/sk-board.service.mjs +0 -54
  87. package/esm2020/crud/sk-brand.service.mjs +0 -46
  88. package/esm2020/crud/sk-cart.service.mjs +0 -256
  89. package/esm2020/crud/sk-category.service.mjs +0 -63
  90. package/esm2020/crud/sk-comment.service.mjs +0 -43
  91. package/esm2020/crud/sk-config.service.mjs +0 -31
  92. package/esm2020/crud/sk-contact.service.mjs +0 -39
  93. package/esm2020/crud/sk-coupon.service.mjs +0 -62
  94. package/esm2020/crud/sk-document.service.mjs +0 -110
  95. package/esm2020/crud/sk-etc.service.mjs +0 -25
  96. package/esm2020/crud/sk-file.service.mjs +0 -37
  97. package/esm2020/crud/sk-front-lib-crud.mjs +0 -5
  98. package/esm2020/crud/sk-keyword.service.mjs +0 -46
  99. package/esm2020/crud/sk-order.service.mjs +0 -133
  100. package/esm2020/crud/sk-point.service.mjs +0 -45
  101. package/esm2020/crud/sk-product.service.mjs +0 -168
  102. package/esm2020/crud/sk-promotion.service.mjs +0 -84
  103. package/esm2020/crud/sk-search.service.mjs +0 -25
  104. package/esm2020/crud/sk-store.service.mjs +0 -47
  105. package/esm2020/crud/sk-user.service.mjs +0 -73
  106. package/esm2020/google-analytics/google-analytics-router.module.mjs +0 -30
  107. package/esm2020/google-analytics/google-analytics.module.mjs +0 -40
  108. package/esm2020/google-analytics/initializers/google-analytics-router.initializer.mjs +0 -24
  109. package/esm2020/google-analytics/initializers/google-analytics.initializer.mjs +0 -46
  110. package/esm2020/google-analytics/interfaces/google-analytics-command.mjs +0 -2
  111. package/esm2020/google-analytics/interfaces/google-analytics-settings.mjs +0 -2
  112. package/esm2020/google-analytics/public_api.mjs +0 -11
  113. package/esm2020/google-analytics/services/google-analytics.service.mjs +0 -223
  114. package/esm2020/google-analytics/sk-front-lib-google-analytics.mjs +0 -5
  115. package/esm2020/google-analytics/tokens/google-analytics-settings-token.mjs +0 -5
  116. package/esm2020/google-analytics/types/ga-action.type.mjs +0 -2
  117. package/esm2020/google-analytics/types/ga-bind.type.mjs +0 -2
  118. package/esm2020/image/public_api.mjs +0 -3
  119. package/esm2020/image/sk-front-lib-image.mjs +0 -5
  120. package/esm2020/image/sk-image.component.mjs +0 -262
  121. package/esm2020/image/sk-image.module.mjs +0 -43
  122. package/esm2020/model/lib/article.mjs +0 -11
  123. package/esm2020/model/lib/audit.mjs +0 -12
  124. package/esm2020/model/lib/auth.mjs +0 -2
  125. package/esm2020/model/lib/board.mjs +0 -21
  126. package/esm2020/model/lib/cart.mjs +0 -29
  127. package/esm2020/model/lib/comment.mjs +0 -25
  128. package/esm2020/model/lib/contact.mjs +0 -28
  129. package/esm2020/model/lib/coupon.mjs +0 -23
  130. package/esm2020/model/lib/document.mjs +0 -49
  131. package/esm2020/model/lib/etc.mjs +0 -57
  132. package/esm2020/model/lib/file.mjs +0 -8
  133. package/esm2020/model/lib/filetype.mjs +0 -179
  134. package/esm2020/model/lib/grid.mjs +0 -83
  135. package/esm2020/model/lib/nicepay.mjs +0 -81
  136. package/esm2020/model/lib/order.mjs +0 -106
  137. package/esm2020/model/lib/payment.mjs +0 -35
  138. package/esm2020/model/lib/point.mjs +0 -47
  139. package/esm2020/model/lib/product-series.mjs +0 -2
  140. package/esm2020/model/lib/product.mjs +0 -156
  141. package/esm2020/model/lib/promotion.mjs +0 -80
  142. package/esm2020/model/lib/shipping.mjs +0 -37
  143. package/esm2020/model/lib/tosspay.mjs +0 -61
  144. package/esm2020/model/lib/user.mjs +0 -61
  145. package/esm2020/model/public_api.mjs +0 -24
  146. package/esm2020/model/sk-front-lib-model.mjs +0 -5
  147. package/esm2020/search-address/dialog/dialog.component.mjs +0 -27
  148. package/esm2020/search-address/public_api.mjs +0 -4
  149. package/esm2020/search-address/sk-front-lib-search-address.mjs +0 -5
  150. package/esm2020/search-address/sk-search-address.directive.mjs +0 -41
  151. package/esm2020/search-address/sk-search-address.model.mjs +0 -8
  152. package/esm2020/search-address/sk-search-address.module.mjs +0 -52
  153. package/esm2020/search-address/sk-search-address.service.mjs +0 -65
  154. package/esm2020/uploader/public_api.mjs +0 -4
  155. package/esm2020/uploader/sk-front-lib-uploader.mjs +0 -5
  156. package/esm2020/uploader/sk-uploader-file-item.model.mjs +0 -95
  157. package/esm2020/uploader/sk-uploader.animation.mjs +0 -47
  158. package/esm2020/uploader/sk-uploader.class.mjs +0 -188
  159. package/esm2020/uploader/sk-uploader.component.mjs +0 -120
  160. package/esm2020/uploader/sk-uploader.directive.mjs +0 -44
  161. package/esm2020/uploader/sk-uploader.module.mjs +0 -62
  162. package/fesm2015/sk-front-lib-api.mjs +0 -218
  163. package/fesm2015/sk-front-lib-api.mjs.map +0 -1
  164. package/fesm2015/sk-front-lib-article.mjs +0 -762
  165. package/fesm2015/sk-front-lib-article.mjs.map +0 -1
  166. package/fesm2015/sk-front-lib-crud.mjs +0 -1529
  167. package/fesm2015/sk-front-lib-crud.mjs.map +0 -1
  168. package/fesm2015/sk-front-lib-google-analytics.mjs +0 -361
  169. package/fesm2015/sk-front-lib-google-analytics.mjs.map +0 -1
  170. package/fesm2015/sk-front-lib-image.mjs +0 -306
  171. package/fesm2015/sk-front-lib-image.mjs.map +0 -1
  172. package/fesm2015/sk-front-lib-model.mjs +0 -1171
  173. package/fesm2015/sk-front-lib-model.mjs.map +0 -1
  174. package/fesm2015/sk-front-lib-search-address.mjs +0 -188
  175. package/fesm2015/sk-front-lib-search-address.mjs.map +0 -1
  176. package/fesm2015/sk-front-lib-uploader.mjs +0 -551
  177. package/fesm2015/sk-front-lib-uploader.mjs.map +0 -1
  178. package/fesm2020/sk-front-lib-api.mjs +0 -216
  179. package/fesm2020/sk-front-lib-api.mjs.map +0 -1
  180. package/fesm2020/sk-front-lib-article.mjs +0 -771
  181. package/fesm2020/sk-front-lib-article.mjs.map +0 -1
  182. package/fesm2020/sk-front-lib-crud.mjs +0 -1525
  183. package/fesm2020/sk-front-lib-crud.mjs.map +0 -1
  184. package/fesm2020/sk-front-lib-google-analytics.mjs +0 -358
  185. package/fesm2020/sk-front-lib-google-analytics.mjs.map +0 -1
  186. package/fesm2020/sk-front-lib-image.mjs +0 -309
  187. package/fesm2020/sk-front-lib-image.mjs.map +0 -1
  188. package/fesm2020/sk-front-lib-model.mjs +0 -1171
  189. package/fesm2020/sk-front-lib-model.mjs.map +0 -1
  190. package/fesm2020/sk-front-lib-search-address.mjs +0 -186
  191. package/fesm2020/sk-front-lib-search-address.mjs.map +0 -1
  192. package/fesm2020/sk-front-lib-uploader.mjs +0 -549
  193. package/fesm2020/sk-front-lib-uploader.mjs.map +0 -1
  194. package/google-analytics/google-analytics-router.module.d.ts +0 -8
  195. package/google-analytics/google-analytics.module.d.ts +0 -10
  196. package/google-analytics/initializers/google-analytics-router.initializer.d.ts +0 -5
  197. package/google-analytics/initializers/google-analytics.initializer.d.ts +0 -4
  198. package/google-analytics/interfaces/google-analytics-command.d.ts +0 -4
  199. package/google-analytics/interfaces/google-analytics-settings.d.ts +0 -6
  200. package/google-analytics/package.json +0 -10
  201. package/google-analytics/public_api.d.ts +0 -10
  202. package/google-analytics/services/google-analytics.service.d.ts +0 -85
  203. package/google-analytics/sk-front-lib-google-analytics.d.ts +0 -5
  204. package/google-analytics/tokens/google-analytics-settings-token.d.ts +0 -3
  205. package/google-analytics/types/ga-action.type.d.ts +0 -1
  206. package/google-analytics/types/ga-bind.type.d.ts +0 -1
  207. package/image/package.json +0 -10
  208. package/image/public_api.d.ts +0 -3
  209. package/image/sk-front-lib-image.d.ts +0 -5
  210. package/image/sk-image.component.d.ts +0 -112
  211. package/image/sk-image.module.d.ts +0 -12
  212. package/model/lib/article.d.ts +0 -13
  213. package/model/lib/audit.d.ts +0 -13
  214. package/model/lib/auth.d.ts +0 -8
  215. package/model/lib/board.d.ts +0 -39
  216. package/model/lib/cart.d.ts +0 -45
  217. package/model/lib/comment.d.ts +0 -43
  218. package/model/lib/contact.d.ts +0 -40
  219. package/model/lib/coupon.d.ts +0 -116
  220. package/model/lib/document.d.ts +0 -104
  221. package/model/lib/etc.d.ts +0 -220
  222. package/model/lib/file.d.ts +0 -24
  223. package/model/lib/filetype.d.ts +0 -10
  224. package/model/lib/grid.d.ts +0 -97
  225. package/model/lib/nicepay.d.ts +0 -39
  226. package/model/lib/order.d.ts +0 -163
  227. package/model/lib/payment.d.ts +0 -32
  228. package/model/lib/point.d.ts +0 -30
  229. package/model/lib/product-series.d.ts +0 -25
  230. package/model/lib/product.d.ts +0 -309
  231. package/model/lib/promotion.d.ts +0 -169
  232. package/model/lib/shipping.d.ts +0 -44
  233. package/model/lib/tosspay.d.ts +0 -29
  234. package/model/lib/user.d.ts +0 -54
  235. package/model/package.json +0 -10
  236. package/model/public_api.d.ts +0 -23
  237. package/model/sk-front-lib-model.d.ts +0 -5
  238. package/search-address/dialog/dialog.component.d.ts +0 -13
  239. package/search-address/package.json +0 -10
  240. package/search-address/public_api.d.ts +0 -3
  241. package/search-address/sk-front-lib-search-address.d.ts +0 -5
  242. package/search-address/sk-search-address.directive.d.ts +0 -15
  243. package/search-address/sk-search-address.model.d.ts +0 -40
  244. package/search-address/sk-search-address.module.d.ts +0 -14
  245. package/search-address/sk-search-address.service.d.ts +0 -13
  246. package/uploader/package.json +0 -10
  247. package/uploader/public_api.d.ts +0 -4
  248. package/uploader/sk-front-lib-uploader.d.ts +0 -5
  249. package/uploader/sk-uploader-file-item.model.d.ts +0 -29
  250. package/uploader/sk-uploader.animation.d.ts +0 -1
  251. package/uploader/sk-uploader.class.d.ts +0 -47
  252. package/uploader/sk-uploader.component.d.ts +0 -28
  253. package/uploader/sk-uploader.directive.d.ts +0 -15
  254. package/uploader/sk-uploader.module.d.ts +0 -16
  255. /package/{sk-front-lib.d.ts → index.d.ts} +0 -0
@@ -1,309 +0,0 @@
1
- import * as i0 from '@angular/core';
2
- import { Component, ChangeDetectionStrategy, Input, ViewChild, NgModule } from '@angular/core';
3
- import * as i5 from '@angular/common';
4
- import { CommonModule } from '@angular/common';
5
- import * as i2 from '@angular/material/dialog';
6
- import { MatDialogModule } from '@angular/material/dialog';
7
- import * as i4 from 'ng-in-viewport';
8
- import { InViewportModule } from 'ng-in-viewport';
9
- import { HttpParams } from '@angular/common/http';
10
- import Viewer from 'viewerjs';
11
- import * as i1 from '@angular/cdk/platform';
12
- import * as i3 from 'sk-front-lib/api';
13
- import { MatButtonModule } from '@angular/material/button';
14
- import { MatIconModule } from '@angular/material/icon';
15
-
16
- class SkImageComponent {
17
- constructor(cdRef, platform, dialog, apiService) {
18
- this.cdRef = cdRef;
19
- this.platform = platform;
20
- this.dialog = dialog;
21
- this.apiService = apiService;
22
- this.mode = 'imgId';
23
- this.defaultOption = {
24
- mode: 'img',
25
- width: 0,
26
- height: 0,
27
- resizeType: 'ratio_crop',
28
- resizeBgColor: '',
29
- filter: '',
30
- blur: 0,
31
- clickable: false,
32
- coverBackground: null,
33
- previewColor: ''
34
- };
35
- this.currentOption = {};
36
- this.apiCompleted = false;
37
- this.isVisible = false;
38
- this.src = null;
39
- this.imgId = null;
40
- this.skfile = null;
41
- this.option = {};
42
- this.alt = '';
43
- this.imageClass = [];
44
- this.waitSrc = null;
45
- this.activeSrc = null;
46
- this.originalSrc = null;
47
- this.ratio = 100;
48
- this.backgroundColor = '#fff';
49
- this.imageOpacity = 0;
50
- this.viewerOptions = {
51
- navbar: false,
52
- backdrop: 'static',
53
- className: 'sk-custom-viewerjs',
54
- toolbar: {
55
- zoomIn: 1,
56
- zoomOut: 1,
57
- oneToOne: 1,
58
- reset: 1,
59
- },
60
- movable: true,
61
- rotatable: false,
62
- toggleOnDblclick: false,
63
- };
64
- }
65
- // -----------------------------------------------------------------------------------------------------
66
- // @ Accessors
67
- // ------------------------------------------1-----------------------------------------------------------
68
- get containerStyle() {
69
- if (this.mode === 'imgId' || this.mode === 'skfile') {
70
- return {
71
- 'padding-bottom': this.ratio + '%',
72
- height: '0px',
73
- overflow: 'hidden',
74
- 'background-color': this.backgroundColor,
75
- cursor: this.currentOption.clickable ? 'pointer' : 'inherit',
76
- };
77
- }
78
- else {
79
- return {
80
- 'padding-bottom': '0px',
81
- height: 'auto',
82
- overflow: 'hidden',
83
- 'background-color': this.backgroundColor
84
- };
85
- }
86
- }
87
- get imageStyle() {
88
- if (this.mode === 'imgId') {
89
- return {
90
- position: 'absolute',
91
- width: '100%',
92
- top: '0',
93
- left: '0',
94
- right: '0',
95
- bottom: '0',
96
- opacity: this.imageOpacity
97
- };
98
- }
99
- else {
100
- return {
101
- position: 'relative',
102
- width: '100%',
103
- opacity: this.imageOpacity
104
- };
105
- }
106
- }
107
- get coverStyle() {
108
- if (this.option.coverBackground) {
109
- return {
110
- background: this.option.coverBackground,
111
- opacity: this.imageOpacity
112
- };
113
- }
114
- else {
115
- return {};
116
- }
117
- }
118
- // -----------------------------------------------------------------------------------------------------
119
- // @ Lifecycle hooks
120
- // -----------------------------------------------------------------------------------------------------
121
- ngOnChanges(changes) {
122
- this._init();
123
- /**
124
- * skfile, imgId, src 순서로 우선권을 가진다.
125
- */
126
- if (!!changes.skfile && !!changes.skfile.currentValue) {
127
- this.mode = 'skfile';
128
- this.imgId = this.skfile.id;
129
- this.loadImageByFile();
130
- return;
131
- }
132
- if (!!changes.imgId) {
133
- this.mode = 'imgId';
134
- this.loadImageById();
135
- return;
136
- }
137
- if (!!changes.src) {
138
- this.mode = 'src';
139
- this.loadImageBySrc();
140
- return;
141
- }
142
- }
143
- ngAfterViewInit() {
144
- }
145
- ngOnDestroy() {
146
- if (this.viewerInstance) {
147
- this.viewerInstance.destroy();
148
- }
149
- }
150
- // -----------------------------------------------------------------------------------------------------
151
- // @ Public methods
152
- // -----------------------------------------------------------------------------------------------------
153
- loadImageByFile() {
154
- this.waitSrc = `${this.apiService.apiServer}/api/public/images/${this.imgId}?${this.getHttpParam().toString()}`;
155
- this.originalSrc = `${this.apiService.apiServer}/api/public/images/${this.imgId}`;
156
- const metadata = this.skfile;
157
- if (this.currentOption.width > 0 && this.currentOption.height > 0) {
158
- this.ratio = this.currentOption.height / this.currentOption.width * 100;
159
- }
160
- else {
161
- this.ratio = metadata.height / metadata.width * 100;
162
- }
163
- this.backgroundColor = !!this.currentOption.previewColor ? this.currentOption.previewColor :
164
- (this.currentOption.filter === 'gray' ? '#fff' : metadata.color);
165
- this.apiCompleted = true;
166
- this.cdRef.markForCheck();
167
- this.startImageLoad();
168
- }
169
- loadImageById() {
170
- this.apiService.get(`/api/public/images/${this.imgId}/metadata`)
171
- .subscribe(result => {
172
- this.skfile = result.data;
173
- this.loadImageByFile();
174
- }, error => {
175
- this.showFallbackImage();
176
- });
177
- }
178
- loadImageBySrc() {
179
- this.waitSrc = this.src;
180
- this.apiCompleted = true;
181
- }
182
- showFallbackImage() {
183
- this.mode = 'fallback';
184
- this.waitSrc = '/assets/images/no_image_available.jpeg';
185
- this.apiCompleted = true;
186
- }
187
- onIntersection(event) {
188
- if (event.visible) {
189
- this.isVisible = true;
190
- if (this.apiCompleted) {
191
- this.startImageLoad();
192
- }
193
- }
194
- }
195
- startImageLoad() {
196
- if (!this.activeSrc && this.apiCompleted && this.isVisible) {
197
- this.activeSrc = this.waitSrc;
198
- this.cdRef.markForCheck();
199
- }
200
- }
201
- onImageLoad() {
202
- this.imageOpacity = 1;
203
- this.cdRef.markForCheck();
204
- }
205
- onImageError() {
206
- this.activeSrc = null;
207
- this.showFallbackImage();
208
- this.startImageLoad();
209
- }
210
- openDialog() {
211
- if (this.currentOption.clickable && this.mode !== 'fallback') {
212
- if (this.viewerInstance) {
213
- this.viewerInstance.destroy();
214
- }
215
- this.viewerInstance = new Viewer(this.imageElement.nativeElement, {
216
- // Transitions currently break the Viewer when running optimizations during ng build (i.e in prod mode)
217
- // TODO: Find a fix for this so we don't have to force disable transitions
218
- transition: false,
219
- url: 'src-viewer',
220
- ...this.viewerOptions,
221
- });
222
- this.viewerInstance.show();
223
- }
224
- }
225
- // -----------------------------------------------------------------------------------------------------
226
- // @ Private methods
227
- // -----------------------------------------------------------------------------------------------------
228
- _init() {
229
- this.mode = 'imgId';
230
- this.imageOpacity = 0;
231
- this.apiCompleted = false;
232
- this.activeSrc = null;
233
- Object.assign(this.currentOption, this.defaultOption, this.option);
234
- this.cdRef.detectChanges();
235
- }
236
- getHttpParam() {
237
- const option = this.currentOption;
238
- return new HttpParams()
239
- .append('w', String(option.width))
240
- .append('h', String(option.height))
241
- .append('resize', option.resizeType)
242
- .append('bgcolor', option.resizeBgColor)
243
- .append('filter', String(option.filter))
244
- .append('blur', String(option.blur));
245
- }
246
- }
247
- 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 });
248
- 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 });
249
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: SkImageComponent, decorators: [{
250
- type: Component,
251
- 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"] }]
252
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.Platform }, { type: i2.MatDialog }, { type: i3.SkApiService }]; }, propDecorators: { src: [{
253
- type: Input
254
- }], imgId: [{
255
- type: Input
256
- }], skfile: [{
257
- type: Input
258
- }], option: [{
259
- type: Input
260
- }], alt: [{
261
- type: Input
262
- }], imageClass: [{
263
- type: Input
264
- }], imageElement: [{
265
- type: ViewChild,
266
- args: ['imageElement', { static: false }]
267
- }] } });
268
-
269
- class SkImageModule {
270
- }
271
- SkImageModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: SkImageModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
272
- SkImageModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: SkImageModule, declarations: [SkImageComponent], imports: [CommonModule,
273
- InViewportModule,
274
- MatDialogModule,
275
- MatButtonModule,
276
- MatIconModule], exports: [SkImageComponent] });
277
- SkImageModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: SkImageModule, imports: [[
278
- CommonModule,
279
- InViewportModule,
280
- MatDialogModule,
281
- MatButtonModule,
282
- MatIconModule
283
- ]] });
284
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: SkImageModule, decorators: [{
285
- type: NgModule,
286
- args: [{
287
- imports: [
288
- CommonModule,
289
- InViewportModule,
290
- MatDialogModule,
291
- MatButtonModule,
292
- MatIconModule
293
- ],
294
- declarations: [
295
- SkImageComponent,
296
- ],
297
- exports: [
298
- SkImageComponent
299
- ],
300
- entryComponents: []
301
- }]
302
- }] });
303
-
304
- /**
305
- * Generated bundle index. Do not edit.
306
- */
307
-
308
- export { SkImageComponent, SkImageModule };
309
- //# sourceMappingURL=sk-front-lib-image.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sk-front-lib-image.mjs","sources":["../../../projects/sk-front-lib/image/src/sk-image.component.ts","../../../projects/sk-front-lib/image/src/sk-image.component.html","../../../projects/sk-front-lib/image/src/sk-image.module.ts","../../../projects/sk-front-lib/image/src/sk-front-lib-image.ts"],"sourcesContent":["import { Platform } from '@angular/cdk/platform';\nimport { HttpParams } from '@angular/common/http';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input,\n OnChanges,\n OnDestroy,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\n\nimport { SkApiService } from 'sk-front-lib/api';\nimport { SkFile } from 'sk-front-lib/model';\n\nimport Viewer from 'viewerjs';\n\ninterface IMetadata {\n width?: number;\n height?: number;\n color?: string;\n}\n\nexport interface SkImageOptions {\n mode?: 'img' | 'css';\n width?: number;\n height?: number;\n resizeType?: 'ratio_crop' | 'ratio_fill';\n resizeBgColor?: string;\n filter?: 'gray' | '';\n blur?: number;\n clickable?: boolean;\n coverBackground?: string;\n previewColor?: string;\n}\n\n@Component({\n selector: 'sk-image',\n templateUrl: './sk-image.component.html',\n styleUrls: ['./sk-image.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SkImageComponent implements OnChanges, AfterViewInit, OnDestroy {\n\n mode: 'skfile' | 'imgId' | 'src' | 'fallback' = 'imgId';\n defaultOption: SkImageOptions = {\n mode: 'img',\n width: 0,\n height: 0,\n resizeType: 'ratio_crop',\n resizeBgColor: '',\n filter: '',\n blur: 0,\n clickable: false,\n coverBackground: null,\n previewColor: ''\n };\n currentOption: SkImageOptions = {};\n\n apiCompleted = false;\n isVisible = false;\n\n @Input() src: string = null;\n @Input() imgId: number = null;\n @Input() skfile: SkFile = null;\n @Input() option: SkImageOptions = {};\n @Input() alt = '';\n @Input() imageClass: string[] = [];\n waitSrc: string = null;\n activeSrc: string = null;\n originalSrc: string = null;\n\n ratio = 100;\n backgroundColor = '#fff';\n imageOpacity = 0;\n\n @ViewChild('imageElement', {static: false}) imageElement: ElementRef;\n viewerInstance: Viewer;\n viewerOptions = {\n navbar: false,\n backdrop: 'static',\n className: 'sk-custom-viewerjs',\n toolbar: {\n zoomIn: 1,\n zoomOut: 1,\n oneToOne: 1,\n reset: 1,\n },\n movable: true,\n rotatable: false,\n toggleOnDblclick: false,\n };\n\n constructor(private cdRef: ChangeDetectorRef,\n private platform: Platform,\n private dialog: MatDialog,\n private apiService: SkApiService) {\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Accessors\n // ------------------------------------------1-----------------------------------------------------------\n\n get containerStyle() {\n if (this.mode === 'imgId' || this.mode === 'skfile') {\n return {\n 'padding-bottom': this.ratio + '%',\n height: '0px',\n overflow: 'hidden',\n 'background-color': this.backgroundColor,\n cursor: this.currentOption.clickable ? 'pointer' : 'inherit',\n };\n } else {\n return {\n 'padding-bottom': '0px',\n height: 'auto',\n overflow: 'hidden',\n 'background-color': this.backgroundColor\n };\n }\n }\n\n get imageStyle() {\n if (this.mode === 'imgId') {\n return {\n position: 'absolute',\n width: '100%',\n top: '0',\n left: '0',\n right: '0',\n bottom: '0',\n opacity: this.imageOpacity\n };\n } else {\n return {\n position: 'relative',\n width: '100%',\n opacity: this.imageOpacity\n };\n }\n }\n\n get coverStyle() {\n if (this.option.coverBackground) {\n return {\n background: this.option.coverBackground,\n opacity: this.imageOpacity\n }\n } else {\n return {};\n }\n }\n\n\n // -----------------------------------------------------------------------------------------------------\n // @ Lifecycle hooks\n // -----------------------------------------------------------------------------------------------------\n\n ngOnChanges(changes: SimpleChanges): void {\n this._init();\n\n /**\n * skfile, imgId, src 순서로 우선권을 가진다.\n */\n if (!!changes.skfile && !!changes.skfile.currentValue) {\n this.mode = 'skfile';\n this.imgId = this.skfile.id;\n this.loadImageByFile();\n return;\n }\n\n if (!!changes.imgId) {\n this.mode = 'imgId';\n this.loadImageById();\n return;\n }\n\n if (!!changes.src) {\n this.mode = 'src';\n this.loadImageBySrc();\n return;\n }\n }\n\n ngAfterViewInit(): void {\n }\n\n ngOnDestroy(): void {\n if (this.viewerInstance) {\n this.viewerInstance.destroy();\n }\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Public methods\n // -----------------------------------------------------------------------------------------------------\n\n loadImageByFile() {\n this.waitSrc = `${this.apiService.apiServer}/api/public/images/${this.imgId}?${this.getHttpParam().toString()}`;\n this.originalSrc = `${this.apiService.apiServer}/api/public/images/${this.imgId}`;\n\n const metadata = this.skfile as IMetadata;\n if (this.currentOption.width > 0 && this.currentOption.height > 0) {\n this.ratio = this.currentOption.height / this.currentOption.width * 100;\n } else {\n this.ratio = metadata.height / metadata.width * 100;\n }\n\n this.backgroundColor = !!this.currentOption.previewColor ? this.currentOption.previewColor :\n (this.currentOption.filter === 'gray' ? '#fff' : metadata.color);\n\n this.apiCompleted = true;\n this.cdRef.markForCheck();\n this.startImageLoad();\n }\n\n loadImageById() {\n this.apiService.get<SkFile>(`/api/public/images/${this.imgId}/metadata`)\n .subscribe(\n result => {\n this.skfile = result.data;\n this.loadImageByFile();\n },\n error => {\n this.showFallbackImage();\n }\n );\n }\n\n loadImageBySrc() {\n this.waitSrc = this.src;\n this.apiCompleted = true;\n }\n\n showFallbackImage() {\n this.mode = 'fallback';\n this.waitSrc = '/assets/images/no_image_available.jpeg';\n this.apiCompleted = true;\n }\n\n onIntersection(event) {\n if (event.visible) {\n this.isVisible = true;\n if (this.apiCompleted) {\n this.startImageLoad();\n }\n }\n }\n\n startImageLoad() {\n if (!this.activeSrc && this.apiCompleted && this.isVisible) {\n this.activeSrc = this.waitSrc;\n this.cdRef.markForCheck();\n }\n }\n\n onImageLoad() {\n this.imageOpacity = 1;\n this.cdRef.markForCheck();\n }\n\n onImageError() {\n this.activeSrc = null;\n this.showFallbackImage();\n this.startImageLoad();\n }\n\n openDialog() {\n if (this.currentOption.clickable && this.mode !== 'fallback') {\n if (this.viewerInstance) {\n this.viewerInstance.destroy();\n }\n\n this.viewerInstance = new Viewer(this.imageElement.nativeElement, {\n // Transitions currently break the Viewer when running optimizations during ng build (i.e in prod mode)\n // TODO: Find a fix for this so we don't have to force disable transitions\n transition: false,\n url: 'src-viewer',\n ...this.viewerOptions,\n });\n this.viewerInstance.show();\n }\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Private methods\n // -----------------------------------------------------------------------------------------------------\n\n private _init() {\n this.mode = 'imgId';\n this.imageOpacity = 0;\n this.apiCompleted = false;\n this.activeSrc = null;\n Object.assign(this.currentOption, this.defaultOption, this.option);\n\n this.cdRef.detectChanges();\n }\n\n private getHttpParam(): HttpParams {\n const option: SkImageOptions = this.currentOption;\n\n return new HttpParams()\n .append('w', String(option.width))\n .append('h', String(option.height))\n .append('resize', option.resizeType)\n .append('bgcolor', option.resizeBgColor)\n .append('filter', String(option.filter))\n .append('blur', String(option.blur));\n }\n}\n","<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","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {MatDialogModule} from '@angular/material/dialog';\n\nimport {InViewportModule} from 'ng-in-viewport';\n\nimport {SkImageComponent} from './sk-image.component';\nimport {MatButtonModule} from '@angular/material/button';\nimport {MatIconModule} from '@angular/material/icon';\n\n@NgModule({\n imports: [\n CommonModule,\n InViewportModule,\n\n MatDialogModule,\n MatButtonModule,\n MatIconModule\n ],\n declarations: [\n SkImageComponent,\n ],\n exports: [\n SkImageComponent\n ],\n entryComponents: [\n ]\n})\nexport class SkImageModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}