sk-front-lib 0.18.1 → 0.18.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 (163) hide show
  1. package/article/sk-article-editor-server.component.d.ts +1 -1
  2. package/article/sk-article-editor.component.d.ts +1 -1
  3. package/article/sk-froala-editor.directive.d.ts +1 -1
  4. package/crud/sk-auth-admin.guard.d.ts +2 -2
  5. package/crud/sk-auth.guard.d.ts +2 -2
  6. package/{esm2020 → esm2022}/api/sk-api.module.mjs +9 -9
  7. package/{esm2020 → esm2022}/api/sk-api.service.mjs +4 -4
  8. package/{esm2020 → esm2022}/article/sk-article-editor-server.component.mjs +4 -4
  9. package/{esm2020 → esm2022}/article/sk-article-editor.component.mjs +4 -4
  10. package/{esm2020 → esm2022}/article/sk-article-server.module.mjs +5 -5
  11. package/{esm2020 → esm2022}/article/sk-article.module.mjs +7 -7
  12. package/{esm2020 → esm2022}/article/sk-article.service.mjs +4 -4
  13. package/{esm2020 → esm2022}/article/sk-froala-editor.directive.mjs +7 -7
  14. package/{esm2020 → esm2022}/crud/sk-account.service.mjs +4 -4
  15. package/{esm2020 → esm2022}/crud/sk-affiliate.service.mjs +4 -4
  16. package/{esm2020 → esm2022}/crud/sk-auth-admin.guard.mjs +4 -4
  17. package/{esm2020 → esm2022}/crud/sk-auth.guard.mjs +4 -4
  18. package/{esm2020 → esm2022}/crud/sk-auth.service.mjs +7 -7
  19. package/{esm2020 → esm2022}/crud/sk-board.service.mjs +4 -4
  20. package/{esm2020 → esm2022}/crud/sk-brand.service.mjs +4 -4
  21. package/esm2022/crud/sk-cart.service.mjs +256 -0
  22. package/{esm2020 → esm2022}/crud/sk-category.service.mjs +4 -4
  23. package/{esm2020 → esm2022}/crud/sk-comment.service.mjs +4 -4
  24. package/{esm2020 → esm2022}/crud/sk-config.service.mjs +4 -4
  25. package/{esm2020 → esm2022}/crud/sk-contact.service.mjs +4 -4
  26. package/{esm2020 → esm2022}/crud/sk-coupon.service.mjs +4 -4
  27. package/{esm2020 → esm2022}/crud/sk-document.service.mjs +4 -4
  28. package/{esm2020 → esm2022}/crud/sk-etc.service.mjs +4 -4
  29. package/{esm2020 → esm2022}/crud/sk-file.service.mjs +4 -4
  30. package/{esm2020 → esm2022}/crud/sk-keyword.service.mjs +4 -4
  31. package/{esm2020 → esm2022}/crud/sk-order.service.mjs +4 -4
  32. package/{esm2020 → esm2022}/crud/sk-point.service.mjs +4 -4
  33. package/{esm2020 → esm2022}/crud/sk-product.service.mjs +4 -4
  34. package/{esm2020 → esm2022}/crud/sk-promotion.service.mjs +4 -4
  35. package/{esm2020 → esm2022}/crud/sk-search.service.mjs +4 -4
  36. package/{esm2020 → esm2022}/crud/sk-store.service.mjs +4 -4
  37. package/{esm2020 → esm2022}/crud/sk-user.service.mjs +4 -4
  38. package/{esm2020 → esm2022}/google-analytics/google-analytics-router.module.mjs +9 -9
  39. package/{esm2020 → esm2022}/google-analytics/google-analytics.module.mjs +5 -5
  40. package/{esm2020 → esm2022}/google-analytics/services/google-analytics.service.mjs +4 -4
  41. package/{esm2020 → esm2022}/image/sk-image.component.mjs +4 -4
  42. package/{esm2020 → esm2022}/image/sk-image.module.mjs +13 -13
  43. package/{esm2020 → esm2022}/lib/sk-byte.pipe.mjs +4 -4
  44. package/{esm2020 → esm2022}/lib/sk-date-time.pipe.mjs +4 -4
  45. package/{esm2020 → esm2022}/lib/sk-date.pipe.mjs +4 -4
  46. package/{esm2020 → esm2022}/lib/sk-front-lib.module.mjs +13 -13
  47. package/{esm2020 → esm2022}/lib/sk-keys.pipe.mjs +4 -4
  48. package/{esm2020 → esm2022}/lib/sk-time.pipe.mjs +4 -4
  49. package/esm2022/model/lib/filetype.mjs +179 -0
  50. package/{esm2020 → esm2022}/search-address/dialog/dialog.component.mjs +4 -4
  51. package/{esm2020 → esm2022}/search-address/sk-search-address.directive.mjs +4 -4
  52. package/{esm2020 → esm2022}/search-address/sk-search-address.module.mjs +16 -16
  53. package/{esm2020 → esm2022}/search-address/sk-search-address.service.mjs +4 -4
  54. package/esm2022/uploader/sk-uploader.component.mjs +119 -0
  55. package/esm2022/uploader/sk-uploader.directive.mjs +44 -0
  56. package/{esm2020 → esm2022}/uploader/sk-uploader.module.mjs +21 -21
  57. package/{fesm2020 → fesm2022}/sk-front-lib-api.mjs +11 -11
  58. package/{fesm2020 → fesm2022}/sk-front-lib-api.mjs.map +1 -1
  59. package/{fesm2020 → fesm2022}/sk-front-lib-article.mjs +25 -25
  60. package/{fesm2020 → fesm2022}/sk-front-lib-article.mjs.map +1 -1
  61. package/{fesm2020 → fesm2022}/sk-front-lib-crud.mjs +93 -93
  62. package/fesm2022/sk-front-lib-crud.mjs.map +1 -0
  63. package/{fesm2020 → fesm2022}/sk-front-lib-google-analytics.mjs +15 -15
  64. package/{fesm2020 → fesm2022}/sk-front-lib-google-analytics.mjs.map +1 -1
  65. package/{fesm2020 → fesm2022}/sk-front-lib-image.mjs +15 -15
  66. package/{fesm2020 → fesm2022}/sk-front-lib-image.mjs.map +1 -1
  67. package/{fesm2015 → fesm2022}/sk-front-lib-model.mjs +56 -56
  68. package/{fesm2020 → fesm2022}/sk-front-lib-model.mjs.map +1 -1
  69. package/{fesm2020 → fesm2022}/sk-front-lib-search-address.mjs +24 -24
  70. package/{fesm2020 → fesm2022}/sk-front-lib-search-address.mjs.map +1 -1
  71. package/{fesm2020 → fesm2022}/sk-front-lib-uploader.mjs +34 -35
  72. package/{fesm2015 → fesm2022}/sk-front-lib-uploader.mjs.map +1 -1
  73. package/{fesm2020 → fesm2022}/sk-front-lib.mjs +27 -27
  74. package/{fesm2015 → fesm2022}/sk-front-lib.mjs.map +1 -1
  75. package/google-analytics/types/ga-action.type.d.ts +1 -1
  76. package/google-analytics/types/ga-bind.type.d.ts +1 -1
  77. package/image/sk-image.component.d.ts +1 -1
  78. package/model/lib/payment.d.ts +1 -1
  79. package/package.json +44 -66
  80. package/search-address/dialog/dialog.component.d.ts +1 -1
  81. package/search-address/sk-search-address.directive.d.ts +1 -1
  82. package/uploader/sk-uploader.component.d.ts +1 -1
  83. package/uploader/sk-uploader.directive.d.ts +1 -1
  84. package/esm2020/crud/sk-cart.service.mjs +0 -256
  85. package/esm2020/model/lib/filetype.mjs +0 -179
  86. package/esm2020/uploader/sk-uploader.component.mjs +0 -120
  87. package/esm2020/uploader/sk-uploader.directive.mjs +0 -44
  88. package/fesm2015/sk-front-lib-api.mjs +0 -216
  89. package/fesm2015/sk-front-lib-api.mjs.map +0 -1
  90. package/fesm2015/sk-front-lib-article.mjs +0 -758
  91. package/fesm2015/sk-front-lib-article.mjs.map +0 -1
  92. package/fesm2015/sk-front-lib-crud.mjs +0 -1529
  93. package/fesm2015/sk-front-lib-crud.mjs.map +0 -1
  94. package/fesm2015/sk-front-lib-google-analytics.mjs +0 -334
  95. package/fesm2015/sk-front-lib-google-analytics.mjs.map +0 -1
  96. package/fesm2015/sk-front-lib-image.mjs +0 -303
  97. package/fesm2015/sk-front-lib-image.mjs.map +0 -1
  98. package/fesm2015/sk-front-lib-model.mjs.map +0 -1
  99. package/fesm2015/sk-front-lib-search-address.mjs +0 -183
  100. package/fesm2015/sk-front-lib-search-address.mjs.map +0 -1
  101. package/fesm2015/sk-front-lib-uploader.mjs +0 -546
  102. package/fesm2015/sk-front-lib.mjs +0 -538
  103. package/fesm2020/sk-front-lib-crud.mjs.map +0 -1
  104. package/fesm2020/sk-front-lib-model.mjs +0 -1105
  105. package/fesm2020/sk-front-lib-uploader.mjs.map +0 -1
  106. package/fesm2020/sk-front-lib.mjs.map +0 -1
  107. /package/{esm2020 → esm2022}/api/model/api-config.mjs +0 -0
  108. /package/{esm2020 → esm2022}/api/model/api-pageable-param.mjs +0 -0
  109. /package/{esm2020 → esm2022}/api/model/api-pageable.mjs +0 -0
  110. /package/{esm2020 → esm2022}/api/model/api-response.mjs +0 -0
  111. /package/{esm2020 → esm2022}/api/model/index.mjs +0 -0
  112. /package/{esm2020 → esm2022}/api/public_api.mjs +0 -0
  113. /package/{esm2020 → esm2022}/api/sk-front-lib-api.mjs +0 -0
  114. /package/{esm2020 → esm2022}/article/public_api.mjs +0 -0
  115. /package/{esm2020 → esm2022}/article/sk-front-lib-article.mjs +0 -0
  116. /package/{esm2020 → esm2022}/crud/public_api.mjs +0 -0
  117. /package/{esm2020 → esm2022}/crud/sk-front-lib-crud.mjs +0 -0
  118. /package/{esm2020 → esm2022}/google-analytics/initializers/google-analytics-router.initializer.mjs +0 -0
  119. /package/{esm2020 → esm2022}/google-analytics/initializers/google-analytics.initializer.mjs +0 -0
  120. /package/{esm2020 → esm2022}/google-analytics/interfaces/google-analytics-command.mjs +0 -0
  121. /package/{esm2020 → esm2022}/google-analytics/interfaces/google-analytics-settings.mjs +0 -0
  122. /package/{esm2020 → esm2022}/google-analytics/public_api.mjs +0 -0
  123. /package/{esm2020 → esm2022}/google-analytics/sk-front-lib-google-analytics.mjs +0 -0
  124. /package/{esm2020 → esm2022}/google-analytics/tokens/google-analytics-settings-token.mjs +0 -0
  125. /package/{esm2020 → esm2022}/google-analytics/types/ga-action.type.mjs +0 -0
  126. /package/{esm2020 → esm2022}/google-analytics/types/ga-bind.type.mjs +0 -0
  127. /package/{esm2020 → esm2022}/image/public_api.mjs +0 -0
  128. /package/{esm2020 → esm2022}/image/sk-front-lib-image.mjs +0 -0
  129. /package/{esm2020 → esm2022}/lib/sk-animations.mjs +0 -0
  130. /package/{esm2020 → esm2022}/lib/sk-utils.mjs +0 -0
  131. /package/{esm2020 → esm2022}/model/lib/article.mjs +0 -0
  132. /package/{esm2020 → esm2022}/model/lib/audit.mjs +0 -0
  133. /package/{esm2020 → esm2022}/model/lib/auth.mjs +0 -0
  134. /package/{esm2020 → esm2022}/model/lib/board.mjs +0 -0
  135. /package/{esm2020 → esm2022}/model/lib/cart.mjs +0 -0
  136. /package/{esm2020 → esm2022}/model/lib/comment.mjs +0 -0
  137. /package/{esm2020 → esm2022}/model/lib/contact.mjs +0 -0
  138. /package/{esm2020 → esm2022}/model/lib/coupon.mjs +0 -0
  139. /package/{esm2020 → esm2022}/model/lib/document.mjs +0 -0
  140. /package/{esm2020 → esm2022}/model/lib/etc.mjs +0 -0
  141. /package/{esm2020 → esm2022}/model/lib/file.mjs +0 -0
  142. /package/{esm2020 → esm2022}/model/lib/grid.mjs +0 -0
  143. /package/{esm2020 → esm2022}/model/lib/nicepay.mjs +0 -0
  144. /package/{esm2020 → esm2022}/model/lib/order.mjs +0 -0
  145. /package/{esm2020 → esm2022}/model/lib/payment.mjs +0 -0
  146. /package/{esm2020 → esm2022}/model/lib/point.mjs +0 -0
  147. /package/{esm2020 → esm2022}/model/lib/product-series.mjs +0 -0
  148. /package/{esm2020 → esm2022}/model/lib/product.mjs +0 -0
  149. /package/{esm2020 → esm2022}/model/lib/promotion.mjs +0 -0
  150. /package/{esm2020 → esm2022}/model/lib/shipping.mjs +0 -0
  151. /package/{esm2020 → esm2022}/model/lib/user.mjs +0 -0
  152. /package/{esm2020 → esm2022}/model/public_api.mjs +0 -0
  153. /package/{esm2020 → esm2022}/model/sk-front-lib-model.mjs +0 -0
  154. /package/{esm2020 → esm2022}/public-api.mjs +0 -0
  155. /package/{esm2020 → esm2022}/search-address/public_api.mjs +0 -0
  156. /package/{esm2020 → esm2022}/search-address/sk-front-lib-search-address.mjs +0 -0
  157. /package/{esm2020 → esm2022}/search-address/sk-search-address.model.mjs +0 -0
  158. /package/{esm2020 → esm2022}/sk-front-lib.mjs +0 -0
  159. /package/{esm2020 → esm2022}/uploader/public_api.mjs +0 -0
  160. /package/{esm2020 → esm2022}/uploader/sk-front-lib-uploader.mjs +0 -0
  161. /package/{esm2020 → esm2022}/uploader/sk-uploader-file-item.model.mjs +0 -0
  162. /package/{esm2020 → esm2022}/uploader/sk-uploader.animation.mjs +0 -0
  163. /package/{esm2020 → esm2022}/uploader/sk-uploader.class.mjs +0 -0
@@ -1,303 +0,0 @@
1
- import * as i0 from '@angular/core';
2
- import { Component, ChangeDetectionStrategy, Input, ViewChild, NgModule } from '@angular/core';
3
- import * as i4 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 i5 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, Object.assign({
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, url: 'src-viewer' }, this.viewerOptions));
219
- this.viewerInstance.show();
220
- }
221
- }
222
- // -----------------------------------------------------------------------------------------------------
223
- // @ Private methods
224
- // -----------------------------------------------------------------------------------------------------
225
- _init() {
226
- this.mode = 'imgId';
227
- this.imageOpacity = 0;
228
- this.apiCompleted = false;
229
- this.activeSrc = null;
230
- Object.assign(this.currentOption, this.defaultOption, this.option);
231
- this.cdRef.detectChanges();
232
- }
233
- getHttpParam() {
234
- const option = this.currentOption;
235
- return new HttpParams()
236
- .append('w', String(option.width))
237
- .append('h', String(option.height))
238
- .append('resize', option.resizeType)
239
- .append('bgcolor', option.resizeBgColor)
240
- .append('filter', String(option.filter))
241
- .append('blur', String(option.blur));
242
- }
243
- }
244
- SkImageComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SkImageComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.Platform }, { token: i2.MatDialog }, { token: i3.SkApiService }], target: i0.ɵɵFactoryTarget.Component });
245
- SkImageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", 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;inset:0;width:100%;height:100%;z-index:1;transition:opacity linear .8s}.img-container>img{display:block;opacity:0;transition:opacity linear .8s}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i5.InViewportDirective, selector: "[inViewport]", inputs: ["inViewportOptions"], outputs: ["inViewportAction"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
246
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SkImageComponent, decorators: [{
247
- type: Component,
248
- 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;inset:0;width:100%;height:100%;z-index:1;transition:opacity linear .8s}.img-container>img{display:block;opacity:0;transition:opacity linear .8s}\n"] }]
249
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.Platform }, { type: i2.MatDialog }, { type: i3.SkApiService }]; }, propDecorators: { src: [{
250
- type: Input
251
- }], imgId: [{
252
- type: Input
253
- }], skfile: [{
254
- type: Input
255
- }], option: [{
256
- type: Input
257
- }], alt: [{
258
- type: Input
259
- }], imageClass: [{
260
- type: Input
261
- }], imageElement: [{
262
- type: ViewChild,
263
- args: ['imageElement', { static: false }]
264
- }] } });
265
-
266
- class SkImageModule {
267
- }
268
- SkImageModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SkImageModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
269
- SkImageModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: SkImageModule, declarations: [SkImageComponent], imports: [CommonModule,
270
- InViewportModule,
271
- MatDialogModule,
272
- MatButtonModule,
273
- MatIconModule], exports: [SkImageComponent] });
274
- SkImageModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SkImageModule, imports: [CommonModule,
275
- InViewportModule,
276
- MatDialogModule,
277
- MatButtonModule,
278
- MatIconModule] });
279
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SkImageModule, decorators: [{
280
- type: NgModule,
281
- args: [{
282
- imports: [
283
- CommonModule,
284
- InViewportModule,
285
- MatDialogModule,
286
- MatButtonModule,
287
- MatIconModule
288
- ],
289
- declarations: [
290
- SkImageComponent,
291
- ],
292
- exports: [
293
- SkImageComponent
294
- ]
295
- }]
296
- }] });
297
-
298
- /**
299
- * Generated bundle index. Do not edit.
300
- */
301
-
302
- export { SkImageComponent, SkImageModule };
303
- //# 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 MatDialogModule,\n MatButtonModule,\n MatIconModule\n ],\n declarations: [\n SkImageComponent,\n ],\n exports: [\n SkImageComponent\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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"}