@egjs/ngx-infinitegrid 4.10.0-beta.1 → 4.10.1

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 (40) hide show
  1. package/esm2020/egjs-ngx-infinitegrid.mjs +5 -0
  2. package/esm2020/lib/grids/ngx-frame-infinitegrid.component.mjs +25 -0
  3. package/esm2020/lib/grids/ngx-justified-infinitegrid.component.mjs +29 -0
  4. package/esm2020/lib/grids/ngx-masonry-infinitegrid.component.mjs +31 -0
  5. package/esm2020/lib/grids/ngx-packing-infinitegrid.component.mjs +27 -0
  6. package/esm2020/lib/ngx-infinitegrid.component.mjs +232 -0
  7. package/esm2020/lib/ngx-infinitegrid.module.mjs +44 -0
  8. package/{esm2015/lib/types.js → esm2020/lib/types.mjs} +1 -1
  9. package/fesm2015/egjs-ngx-infinitegrid.mjs +388 -0
  10. package/fesm2015/egjs-ngx-infinitegrid.mjs.map +1 -0
  11. package/fesm2020/egjs-ngx-infinitegrid.mjs +398 -0
  12. package/fesm2020/egjs-ngx-infinitegrid.mjs.map +1 -0
  13. package/index.d.ts +5 -0
  14. package/lib/grids/ngx-frame-infinitegrid.component.d.ts +3 -0
  15. package/lib/grids/ngx-justified-infinitegrid.component.d.ts +3 -0
  16. package/lib/grids/ngx-masonry-infinitegrid.component.d.ts +3 -0
  17. package/lib/grids/ngx-packing-infinitegrid.component.d.ts +3 -0
  18. package/lib/ngx-infinitegrid.component.d.ts +4 -0
  19. package/lib/ngx-infinitegrid.module.d.ts +10 -0
  20. package/lib/types.d.ts +1 -0
  21. package/package.json +22 -10
  22. package/bundles/egjs-ngx-infinitegrid.umd.js +0 -664
  23. package/bundles/egjs-ngx-infinitegrid.umd.js.map +0 -1
  24. package/bundles/egjs-ngx-infinitegrid.umd.min.js +0 -2
  25. package/bundles/egjs-ngx-infinitegrid.umd.min.js.map +0 -1
  26. package/egjs-ngx-infinitegrid.d.ts +0 -6
  27. package/egjs-ngx-infinitegrid.metadata.json +0 -1
  28. package/esm2015/egjs-ngx-infinitegrid.js +0 -7
  29. package/esm2015/lib/grids/ngx-frame-infinitegrid.component.js +0 -19
  30. package/esm2015/lib/grids/ngx-justified-infinitegrid.component.js +0 -21
  31. package/esm2015/lib/grids/ngx-masonry-infinitegrid.component.js +0 -22
  32. package/esm2015/lib/grids/ngx-packing-infinitegrid.component.js +0 -20
  33. package/esm2015/lib/ngx-infinitegrid.component.js +0 -187
  34. package/esm2015/lib/ngx-infinitegrid.module.js +0 -31
  35. package/fesm2015/egjs-ngx-infinitegrid.js +0 -318
  36. package/fesm2015/egjs-ngx-infinitegrid.js.map +0 -1
  37. /package/{esm2015/lib/consts.js → esm2020/lib/consts.mjs} +0 -0
  38. /package/{esm2015/lib/ngx-infinitegrid.interface.js → esm2020/lib/ngx-infinitegrid.interface.mjs} +0 -0
  39. /package/{esm2015/private_export.js → esm2020/private_export.mjs} +0 -0
  40. /package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
@@ -0,0 +1,388 @@
1
+ import { __decorate, __rest } from 'tslib';
2
+ import * as i0 from '@angular/core';
3
+ import { EventEmitter, PLATFORM_ID, Component, Inject, Input, Output, NgModule } from '@angular/core';
4
+ import * as i1 from '@angular/common';
5
+ import { isPlatformServer, CommonModule } from '@angular/common';
6
+ import { Subject, fromEvent } from 'rxjs';
7
+ import { takeUntil } from 'rxjs/operators';
8
+ import { withInfiniteGridMethods, Renderer, INFINITEGRID_EVENTS, mountRenderingItems, getRenderingItems, MasonryInfiniteGrid, JustifiedInfiniteGrid, FrameInfiniteGrid, PackingInfiniteGrid } from '@egjs/infinitegrid';
9
+
10
+ class NgxInfiniteGridInterface {
11
+ }
12
+ __decorate([
13
+ withInfiniteGridMethods
14
+ ], NgxInfiniteGridInterface.prototype, "vanillaGrid", void 0);
15
+
16
+ class NgxInfiniteGridComponent extends NgxInfiniteGridInterface {
17
+ constructor(elementRef, _platformId, _ngZone) {
18
+ super();
19
+ this.elementRef = elementRef;
20
+ this._platformId = _platformId;
21
+ this._ngZone = _ngZone;
22
+ this.items = [];
23
+ this.trackBy = ((_, item) => item.key);
24
+ this.groupBy = ((_, item) => item.groupKey);
25
+ this.infoBy = () => ({});
26
+ this.visibleItems = [];
27
+ this._renderer = new Renderer();
28
+ this._isChange = false;
29
+ this._destroy$ = new Subject();
30
+ for (const name in INFINITEGRID_EVENTS) {
31
+ const eventName = INFINITEGRID_EVENTS[name];
32
+ this[eventName] = new EventEmitter();
33
+ }
34
+ }
35
+ ngOnInit() {
36
+ this._updateVisibleChildren();
37
+ }
38
+ ngOnChanges() {
39
+ this._isChange = true;
40
+ this._updateVisibleChildren();
41
+ }
42
+ ngAfterViewInit() {
43
+ if (isPlatformServer(this._platformId)) {
44
+ return;
45
+ }
46
+ const GridClass = this.constructor.GridClass;
47
+ const defaultOptions = GridClass.defaultOptions;
48
+ const options = {};
49
+ for (const name in defaultOptions) {
50
+ if (name in this && typeof this[name] !== "undefined") {
51
+ options[name] = this[name];
52
+ }
53
+ }
54
+ options.renderer = this._renderer;
55
+ // The `InfiniteGrid` set ups `scroll` and `resize` events through `ScrollManager`
56
+ // and `ResizeWatcher`. These events force Angular to run change detection whenever
57
+ // dispatched; this happens too often.
58
+ const grid = this._ngZone.runOutsideAngular(() => new GridClass(this.elementRef.nativeElement, options));
59
+ for (const name in INFINITEGRID_EVENTS) {
60
+ const eventName = INFINITEGRID_EVENTS[name];
61
+ fromEvent(grid, eventName)
62
+ .pipe(takeUntil(this._destroy$))
63
+ .subscribe((event) => {
64
+ const emitter = this[eventName];
65
+ if (emitter && emitter.observers.length > 0) {
66
+ this._ngZone.run(() => emitter.emit(event));
67
+ }
68
+ });
69
+ }
70
+ this.vanillaGrid = grid;
71
+ fromEvent(this._renderer, 'requestUpdate')
72
+ .pipe(takeUntil(this._destroy$))
73
+ .subscribe(() => {
74
+ this._ngZone.run(() => {
75
+ this._isChange = true;
76
+ this._updateVisibleChildren();
77
+ });
78
+ });
79
+ mountRenderingItems(this._getItemInfos(), {
80
+ grid,
81
+ useFirstRender: this.useFirstRender,
82
+ useLoading: this.useLoading,
83
+ usePlaceholder: this.usePlaceholder,
84
+ horizontal: this.horizontal,
85
+ status: this.status,
86
+ });
87
+ this._renderer.updated();
88
+ }
89
+ ngAfterViewChecked() {
90
+ if (!this._isChange || !this.vanillaGrid) {
91
+ return;
92
+ }
93
+ const children = [].slice.call(this.getContainerElement().children);
94
+ if (this.visibleItems.length !== children.length) {
95
+ return;
96
+ }
97
+ this._isChange = false;
98
+ const GridClass = this.constructor.GridClass;
99
+ const propertyTypes = GridClass.propertyTypes;
100
+ const grid = this.vanillaGrid;
101
+ for (const name in propertyTypes) {
102
+ if (name in this) {
103
+ grid[name] = this[name];
104
+ }
105
+ }
106
+ this._renderer.updated(children);
107
+ }
108
+ ngOnDestroy() {
109
+ var _a;
110
+ this._destroy$.next();
111
+ (_a = this.vanillaGrid) === null || _a === void 0 ? void 0 : _a.destroy();
112
+ }
113
+ _getItemInfos() {
114
+ const items = this.items;
115
+ const trackBy = this.trackBy;
116
+ const groupBy = this.groupBy;
117
+ const infoBy = this.infoBy;
118
+ return items.map((item, i) => {
119
+ const _a = infoBy(i, item), { data } = _a, rest = __rest(_a, ["data"]);
120
+ return Object.assign(Object.assign({ groupKey: groupBy(i, item), key: trackBy(i, item) }, rest), { data: Object.assign(Object.assign({}, data), item) });
121
+ });
122
+ }
123
+ _updateVisibleChildren() {
124
+ this.visibleItems = getRenderingItems(this._getItemInfos(), {
125
+ grid: this.vanillaGrid,
126
+ useFirstRender: this.useFirstRender,
127
+ useLoading: this.useLoading,
128
+ usePlaceholder: this.usePlaceholder,
129
+ horizontal: this.horizontal,
130
+ status: this.status,
131
+ });
132
+ }
133
+ }
134
+ NgxInfiniteGridComponent.GridClass = null;
135
+ NgxInfiniteGridComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: NgxInfiniteGridComponent, deps: [{ token: i0.ElementRef }, { token: PLATFORM_ID }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
136
+ NgxInfiniteGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: NgxInfiniteGridComponent, selector: "ngx-infinite-grid, [NgxInfiniteGrid]", inputs: { gridConstructor: "gridConstructor", renderer: "renderer", container: "container", containerTag: "containerTag", threshold: "threshold", useRecycle: "useRecycle", horizontal: "horizontal", percentage: "percentage", isEqualSize: "isEqualSize", isConstantSize: "isConstantSize", gap: "gap", attributePrefix: "attributePrefix", resizeDebounce: "resizeDebounce", maxResizeDebounce: "maxResizeDebounce", autoResize: "autoResize", useFit: "useFit", useTransform: "useTransform", renderOnPropertyChange: "renderOnPropertyChange", preserveUIOnDestroy: "preserveUIOnDestroy", defaultDirection: "defaultDirection", externalItemRenderer: "externalItemRenderer", externalContainerManager: "externalContainerManager", outlineLength: "outlineLength", outlineSize: "outlineSize", useRoundedSize: "useRoundedSize", useResizeObserver: "useResizeObserver", observeChildren: "observeChildren", scrollContainer: "scrollContainer", appliedItemChecker: "appliedItemChecker", usePlaceholder: "usePlaceholder", useLoading: "useLoading", status: "status", useFirstRender: "useFirstRender", items: "items", trackBy: "trackBy", groupBy: "groupBy", infoBy: "infoBy" }, outputs: { renderComplete: "renderComplete", contentError: "contentError", changeScroll: "changeScroll", requestAppend: "requestAppend", requestPrepend: "requestPrepend" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: '<slot></slot>', isInline: true, styles: [":host{display:block}\n"] });
137
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: NgxInfiniteGridComponent, decorators: [{
138
+ type: Component,
139
+ args: [{ selector: 'ngx-infinite-grid, [NgxInfiniteGrid]', template: '<slot></slot>', styles: [":host{display:block}\n"] }]
140
+ }], ctorParameters: function () {
141
+ return [{ type: i0.ElementRef }, { type: undefined, decorators: [{
142
+ type: Inject,
143
+ args: [PLATFORM_ID]
144
+ }] }, { type: i0.NgZone }];
145
+ }, propDecorators: { gridConstructor: [{
146
+ type: Input
147
+ }], renderer: [{
148
+ type: Input
149
+ }], container: [{
150
+ type: Input
151
+ }], containerTag: [{
152
+ type: Input
153
+ }], threshold: [{
154
+ type: Input
155
+ }], useRecycle: [{
156
+ type: Input
157
+ }], horizontal: [{
158
+ type: Input
159
+ }], percentage: [{
160
+ type: Input
161
+ }], isEqualSize: [{
162
+ type: Input
163
+ }], isConstantSize: [{
164
+ type: Input
165
+ }], gap: [{
166
+ type: Input
167
+ }], attributePrefix: [{
168
+ type: Input
169
+ }], resizeDebounce: [{
170
+ type: Input
171
+ }], maxResizeDebounce: [{
172
+ type: Input
173
+ }], autoResize: [{
174
+ type: Input
175
+ }], useFit: [{
176
+ type: Input
177
+ }], useTransform: [{
178
+ type: Input
179
+ }], renderOnPropertyChange: [{
180
+ type: Input
181
+ }], preserveUIOnDestroy: [{
182
+ type: Input
183
+ }], defaultDirection: [{
184
+ type: Input
185
+ }], externalItemRenderer: [{
186
+ type: Input
187
+ }], externalContainerManager: [{
188
+ type: Input
189
+ }], outlineLength: [{
190
+ type: Input
191
+ }], outlineSize: [{
192
+ type: Input
193
+ }], useRoundedSize: [{
194
+ type: Input
195
+ }], useResizeObserver: [{
196
+ type: Input
197
+ }], observeChildren: [{
198
+ type: Input
199
+ }], scrollContainer: [{
200
+ type: Input
201
+ }], appliedItemChecker: [{
202
+ type: Input
203
+ }], usePlaceholder: [{
204
+ type: Input
205
+ }], useLoading: [{
206
+ type: Input
207
+ }], status: [{
208
+ type: Input
209
+ }], useFirstRender: [{
210
+ type: Input
211
+ }], items: [{
212
+ type: Input
213
+ }], trackBy: [{
214
+ type: Input
215
+ }], groupBy: [{
216
+ type: Input
217
+ }], infoBy: [{
218
+ type: Input
219
+ }], renderComplete: [{
220
+ type: Output
221
+ }], contentError: [{
222
+ type: Output
223
+ }], changeScroll: [{
224
+ type: Output
225
+ }], requestAppend: [{
226
+ type: Output
227
+ }], requestPrepend: [{
228
+ type: Output
229
+ }] } });
230
+
231
+ const TEMPLATE = `
232
+ <ng-template #content><ng-content></ng-content></ng-template>
233
+
234
+ <ng-template #viewer>
235
+ <div *ngIf="container === true; else noContainer" #containerRef>
236
+ <ng-template [ngTemplateOutlet]="content"></ng-template>
237
+ </div>
238
+
239
+ <ng-template #noContainer>
240
+ <ng-template [ngTemplateOutlet]="content"></ng-template>
241
+ </ng-template>
242
+ </ng-template>
243
+
244
+ <div *ngIf="elementRef.nativeElement.tagName.indexOf('NGX-') === 0; else noWrapper" #wrapperRef>
245
+ <ng-template [ngTemplateOutlet]="viewer"></ng-template>
246
+ </div>
247
+
248
+ <ng-template #noWrapper>
249
+ <ng-template [ngTemplateOutlet]="viewer"></ng-template>
250
+ </ng-template>
251
+ `;
252
+
253
+ class NgxMasonryInfiniteGridComponent extends NgxInfiniteGridComponent {
254
+ }
255
+ NgxMasonryInfiniteGridComponent.GridClass = MasonryInfiniteGrid;
256
+ NgxMasonryInfiniteGridComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: NgxMasonryInfiniteGridComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
257
+ NgxMasonryInfiniteGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: NgxMasonryInfiniteGridComponent, selector: "ngx-masonry-infinite-grid, [NgxMasonryInfiniteGrid]", inputs: { column: "column", columnSize: "columnSize", columnSizeRatio: "columnSizeRatio", align: "align", columnCalculationThreshold: "columnCalculationThreshold", maxStretchColumnSize: "maxStretchColumnSize" }, usesInheritance: true, ngImport: i0, template: "\n<ng-template #content><ng-content></ng-content></ng-template>\n\n<ng-template #viewer>\n <div *ngIf=\"container === true; else noContainer\" #containerRef>\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n </div>\n\n <ng-template #noContainer>\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n </ng-template>\n</ng-template>\n\n<div *ngIf=\"elementRef.nativeElement.tagName.indexOf('NGX-') === 0; else noWrapper\" #wrapperRef>\n <ng-template [ngTemplateOutlet]=\"viewer\"></ng-template>\n</div>\n\n<ng-template #noWrapper>\n <ng-template [ngTemplateOutlet]=\"viewer\"></ng-template>\n</ng-template>\n", isInline: true, dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
258
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: NgxMasonryInfiniteGridComponent, decorators: [{
259
+ type: Component,
260
+ args: [{
261
+ selector: 'ngx-masonry-infinite-grid, [NgxMasonryInfiniteGrid]',
262
+ template: TEMPLATE,
263
+ }]
264
+ }], propDecorators: { column: [{
265
+ type: Input
266
+ }], columnSize: [{
267
+ type: Input
268
+ }], columnSizeRatio: [{
269
+ type: Input
270
+ }], align: [{
271
+ type: Input
272
+ }], columnCalculationThreshold: [{
273
+ type: Input
274
+ }], maxStretchColumnSize: [{
275
+ type: Input
276
+ }] } });
277
+
278
+ class NgxJustifiedInfiniteGridComponent extends NgxInfiniteGridComponent {
279
+ }
280
+ NgxJustifiedInfiniteGridComponent.GridClass = JustifiedInfiniteGrid;
281
+ NgxJustifiedInfiniteGridComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: NgxJustifiedInfiniteGridComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
282
+ NgxJustifiedInfiniteGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: NgxJustifiedInfiniteGridComponent, selector: "ngx-justified-infinite-grid, [NgxJustifiedInfiniteGrid]", inputs: { columnRange: "columnRange", rowRange: "rowRange", sizeRange: "sizeRange", displayedRow: "displayedRow", isCroppedSize: "isCroppedSize" }, usesInheritance: true, ngImport: i0, template: "\n<ng-template #content><ng-content></ng-content></ng-template>\n\n<ng-template #viewer>\n <div *ngIf=\"container === true; else noContainer\" #containerRef>\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n </div>\n\n <ng-template #noContainer>\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n </ng-template>\n</ng-template>\n\n<div *ngIf=\"elementRef.nativeElement.tagName.indexOf('NGX-') === 0; else noWrapper\" #wrapperRef>\n <ng-template [ngTemplateOutlet]=\"viewer\"></ng-template>\n</div>\n\n<ng-template #noWrapper>\n <ng-template [ngTemplateOutlet]=\"viewer\"></ng-template>\n</ng-template>\n", isInline: true, dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
283
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: NgxJustifiedInfiniteGridComponent, decorators: [{
284
+ type: Component,
285
+ args: [{
286
+ selector: 'ngx-justified-infinite-grid, [NgxJustifiedInfiniteGrid]',
287
+ template: TEMPLATE,
288
+ }]
289
+ }], propDecorators: { columnRange: [{
290
+ type: Input
291
+ }], rowRange: [{
292
+ type: Input
293
+ }], sizeRange: [{
294
+ type: Input
295
+ }], displayedRow: [{
296
+ type: Input
297
+ }], isCroppedSize: [{
298
+ type: Input
299
+ }] } });
300
+
301
+ class NgxFrameInfiniteGridComponent extends NgxInfiniteGridComponent {
302
+ }
303
+ NgxFrameInfiniteGridComponent.GridClass = FrameInfiniteGrid;
304
+ NgxFrameInfiniteGridComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: NgxFrameInfiniteGridComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
305
+ NgxFrameInfiniteGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: NgxFrameInfiniteGridComponent, selector: "ngx-frame-infinite-grid, [NgxFrameInfiniteGrid]", inputs: { frame: "frame", useFrameFill: "useFrameFill", rectSize: "rectSize" }, usesInheritance: true, ngImport: i0, template: "\n<ng-template #content><ng-content></ng-content></ng-template>\n\n<ng-template #viewer>\n <div *ngIf=\"container === true; else noContainer\" #containerRef>\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n </div>\n\n <ng-template #noContainer>\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n </ng-template>\n</ng-template>\n\n<div *ngIf=\"elementRef.nativeElement.tagName.indexOf('NGX-') === 0; else noWrapper\" #wrapperRef>\n <ng-template [ngTemplateOutlet]=\"viewer\"></ng-template>\n</div>\n\n<ng-template #noWrapper>\n <ng-template [ngTemplateOutlet]=\"viewer\"></ng-template>\n</ng-template>\n", isInline: true, dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
306
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: NgxFrameInfiniteGridComponent, decorators: [{
307
+ type: Component,
308
+ args: [{
309
+ selector: 'ngx-frame-infinite-grid, [NgxFrameInfiniteGrid]',
310
+ template: TEMPLATE,
311
+ }]
312
+ }], propDecorators: { frame: [{
313
+ type: Input
314
+ }], useFrameFill: [{
315
+ type: Input
316
+ }], rectSize: [{
317
+ type: Input
318
+ }] } });
319
+
320
+ class NgxPackingInfiniteGridComponent extends NgxInfiniteGridComponent {
321
+ }
322
+ NgxPackingInfiniteGridComponent.GridClass = PackingInfiniteGrid;
323
+ NgxPackingInfiniteGridComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: NgxPackingInfiniteGridComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
324
+ NgxPackingInfiniteGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: NgxPackingInfiniteGridComponent, selector: "ngx-packing-infinite-grid, [NgxPackingInfiniteGrid]", inputs: { aspectRatio: "aspectRatio", sizeWeight: "sizeWeight", ratioWeight: "ratioWeight", weightPriority: "weightPriority" }, usesInheritance: true, ngImport: i0, template: "\n<ng-template #content><ng-content></ng-content></ng-template>\n\n<ng-template #viewer>\n <div *ngIf=\"container === true; else noContainer\" #containerRef>\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n </div>\n\n <ng-template #noContainer>\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n </ng-template>\n</ng-template>\n\n<div *ngIf=\"elementRef.nativeElement.tagName.indexOf('NGX-') === 0; else noWrapper\" #wrapperRef>\n <ng-template [ngTemplateOutlet]=\"viewer\"></ng-template>\n</div>\n\n<ng-template #noWrapper>\n <ng-template [ngTemplateOutlet]=\"viewer\"></ng-template>\n</ng-template>\n", isInline: true, dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
325
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: NgxPackingInfiniteGridComponent, decorators: [{
326
+ type: Component,
327
+ args: [{
328
+ selector: 'ngx-packing-infinite-grid, [NgxPackingInfiniteGrid]',
329
+ template: TEMPLATE,
330
+ }]
331
+ }], propDecorators: { aspectRatio: [{
332
+ type: Input
333
+ }], sizeWeight: [{
334
+ type: Input
335
+ }], ratioWeight: [{
336
+ type: Input
337
+ }], weightPriority: [{
338
+ type: Input
339
+ }] } });
340
+
341
+ class NgxInfiniteGridModule {
342
+ }
343
+ NgxInfiniteGridModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: NgxInfiniteGridModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
344
+ NgxInfiniteGridModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.7", ngImport: i0, type: NgxInfiniteGridModule, declarations: [NgxInfiniteGridComponent,
345
+ NgxMasonryInfiniteGridComponent,
346
+ NgxJustifiedInfiniteGridComponent,
347
+ NgxFrameInfiniteGridComponent,
348
+ NgxPackingInfiniteGridComponent], imports: [CommonModule], exports: [NgxInfiniteGridComponent,
349
+ NgxMasonryInfiniteGridComponent,
350
+ NgxJustifiedInfiniteGridComponent,
351
+ NgxFrameInfiniteGridComponent,
352
+ NgxPackingInfiniteGridComponent] });
353
+ NgxInfiniteGridModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: NgxInfiniteGridModule, imports: [CommonModule] });
354
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: NgxInfiniteGridModule, decorators: [{
355
+ type: NgModule,
356
+ args: [{
357
+ declarations: [
358
+ NgxInfiniteGridComponent,
359
+ NgxMasonryInfiniteGridComponent,
360
+ NgxJustifiedInfiniteGridComponent,
361
+ NgxFrameInfiniteGridComponent,
362
+ NgxPackingInfiniteGridComponent,
363
+ ],
364
+ imports: [
365
+ CommonModule,
366
+ ],
367
+ exports: [
368
+ NgxInfiniteGridComponent,
369
+ NgxMasonryInfiniteGridComponent,
370
+ NgxJustifiedInfiniteGridComponent,
371
+ NgxFrameInfiniteGridComponent,
372
+ NgxPackingInfiniteGridComponent,
373
+ ],
374
+ }]
375
+ }] });
376
+
377
+ /** This shouldn't be used outside of the library, required for the Ivy compilation. */
378
+
379
+ /*
380
+ * Public API Surface of ngx-infinitegrid
381
+ */
382
+
383
+ /**
384
+ * Generated bundle index. Do not edit.
385
+ */
386
+
387
+ export { NgxInfiniteGridComponent, NgxInfiniteGridModule, NgxMasonryInfiniteGridComponent, NgxFrameInfiniteGridComponent as ɵNgxFrameInfiniteGridComponent, NgxJustifiedInfiniteGridComponent as ɵNgxJustifiedInfiniteGridComponent, NgxPackingInfiniteGridComponent as ɵNgxPackingInfiniteGridComponent };
388
+ //# sourceMappingURL=egjs-ngx-infinitegrid.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"egjs-ngx-infinitegrid.mjs","sources":["../../../projects/ngx-infinitegrid/src/lib/ngx-infinitegrid.interface.ts","../../../projects/ngx-infinitegrid/src/lib/ngx-infinitegrid.component.ts","../../../projects/ngx-infinitegrid/src/lib/consts.ts","../../../projects/ngx-infinitegrid/src/lib/grids/ngx-masonry-infinitegrid.component.ts","../../../projects/ngx-infinitegrid/src/lib/grids/ngx-justified-infinitegrid.component.ts","../../../projects/ngx-infinitegrid/src/lib/grids/ngx-frame-infinitegrid.component.ts","../../../projects/ngx-infinitegrid/src/lib/grids/ngx-packing-infinitegrid.component.ts","../../../projects/ngx-infinitegrid/src/lib/ngx-infinitegrid.module.ts","../../../projects/ngx-infinitegrid/src/private_export.ts","../../../projects/ngx-infinitegrid/src/public-api.ts","../../../projects/ngx-infinitegrid/src/egjs-ngx-infinitegrid.ts"],"sourcesContent":["/**\n * egjs-infinitegrid\n * Copyright (c) 2021-present NAVER Corp.\n * MIT license\n */\nimport VanillaInfiniteGrid, { InfiniteGridMethods, withInfiniteGridMethods } from '@egjs/infinitegrid';\nimport { NgxInfiniteGridComponent } from './ngx-infinitegrid.component';\n\nexport class NgxInfiniteGridInterface {\n @withInfiniteGridMethods\n protected vanillaGrid!: VanillaInfiniteGrid;\n}\nexport interface NgxInfiniteGridInterface extends InfiniteGridMethods<NgxInfiniteGridComponent> { }\n","/**\n * egjs-infinitegrid\n * Copyright (c) 2021-present NAVER Corp.\n * MIT license\n */\n import {\n AfterViewChecked,\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n PLATFORM_ID,\n Inject,\n NgZone\n} from '@angular/core';\nimport { isPlatformServer } from '@angular/common';\nimport { fromEvent, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport {\n getRenderingItems,\n InfiniteGridFunction,\n InfiniteGridItem,\n InfiniteGridItemInfo,\n InfiniteGridOptions,\n INFINITEGRID_EVENTS,\n mountRenderingItems,\n OnContentError,\n OnRenderComplete,\n OnRequestAppend,\n OnRequestPrepend,\n OnChangeScroll,\n Renderer,\n} from '@egjs/infinitegrid';\nimport { NgxInfiniteGridInterface } from './ngx-infinitegrid.interface';\nimport { NgxInfiniteGridProps } from './types';\nimport Grid, { GridOptions } from '@egjs/grid';\n\n@Component({\n selector: 'ngx-infinite-grid, [NgxInfiniteGrid]',\n template: '<slot></slot>',\n styles: [\n ':host { display: block }',\n ],\n})\nexport class NgxInfiniteGridComponent\n extends NgxInfiniteGridInterface\n implements Required<InfiniteGridOptions>,\n NgxInfiniteGridProps,\n AfterViewInit, AfterViewChecked, OnChanges, OnDestroy {\n public static GridClass: InfiniteGridFunction | null = null;\n @Input() gridConstructor!: NgxInfiniteGridProps['gridConstructor'];\n @Input() renderer!: NgxInfiniteGridProps['renderer'];\n @Input() container!: NgxInfiniteGridProps['container'];\n @Input() containerTag!: NgxInfiniteGridProps['containerTag'];\n @Input() threshold!: NgxInfiniteGridProps['threshold'];\n @Input() useRecycle!: NgxInfiniteGridProps['useRecycle'];\n @Input() horizontal!: NgxInfiniteGridProps['horizontal'];\n @Input() percentage!: NgxInfiniteGridProps['percentage'];\n @Input() isEqualSize!: NgxInfiniteGridProps['isEqualSize'];\n @Input() isConstantSize!: NgxInfiniteGridProps['isConstantSize'];\n @Input() gap!: NgxInfiniteGridProps['gap'];\n @Input() attributePrefix!: NgxInfiniteGridProps['attributePrefix'];\n @Input() resizeDebounce!: NgxInfiniteGridProps['resizeDebounce'];\n @Input() maxResizeDebounce!: NgxInfiniteGridProps['maxResizeDebounce'];\n @Input() autoResize!: NgxInfiniteGridProps['autoResize'];\n @Input() useFit!: NgxInfiniteGridProps['useFit'];\n @Input() useTransform!: NgxInfiniteGridProps['useTransform'];\n @Input() renderOnPropertyChange!: NgxInfiniteGridProps['renderOnPropertyChange'];\n @Input() preserveUIOnDestroy!: NgxInfiniteGridProps['preserveUIOnDestroy'];\n @Input() defaultDirection!: NgxInfiniteGridProps['defaultDirection'];\n @Input() externalItemRenderer!: NgxInfiniteGridProps['externalItemRenderer'];\n @Input() externalContainerManager!: NgxInfiniteGridProps['externalContainerManager'];\n @Input() outlineLength!: NgxInfiniteGridProps['outlineLength'];\n @Input() outlineSize!: NgxInfiniteGridProps['outlineSize'];\n @Input() useRoundedSize!: NgxInfiniteGridProps['useRoundedSize'];\n @Input() useResizeObserver!: NgxInfiniteGridProps['useResizeObserver'];\n @Input() observeChildren!: NgxInfiniteGridProps['observeChildren'];\n @Input() scrollContainer!: NgxInfiniteGridProps['scrollContainer'];\n @Input() appliedItemChecker!: NgxInfiniteGridProps['appliedItemChecker'];\n\n @Input() usePlaceholder!: NgxInfiniteGridProps['useFirstRender'];\n @Input() useLoading!: NgxInfiniteGridProps['useLoading'];\n @Input() status!: NgxInfiniteGridProps['status'];\n @Input() useFirstRender!: NgxInfiniteGridProps['useFirstRender'];\n @Input() items: NgxInfiniteGridProps['items'] = [];\n @Input() trackBy: NgxInfiniteGridProps['trackBy'] = ((_, item) => item.key);\n @Input() groupBy: NgxInfiniteGridProps['groupBy'] = ((_, item) => item.groupKey);\n @Input() infoBy: NgxInfiniteGridProps['infoBy'] = () => ({});\n @Output() renderComplete!: EventEmitter<OnRenderComplete>;\n @Output() contentError!: EventEmitter<OnContentError>;\n @Output() changeScroll!: EventEmitter<OnChangeScroll>;\n @Output() requestAppend!: EventEmitter<OnRequestAppend>;\n @Output() requestPrepend!: EventEmitter<OnRequestPrepend>;\n public visibleItems: InfiniteGridItem[] = [];\n\n private _renderer = new Renderer();\n private _isChange = false;\n\n private _destroy$ = new Subject<void>();\n\n constructor(\n public elementRef: ElementRef<HTMLElement>,\n @Inject(PLATFORM_ID) private _platformId: string,\n private _ngZone: NgZone\n ) {\n super();\n\n for (const name in INFINITEGRID_EVENTS) {\n const eventName = (INFINITEGRID_EVENTS as any)[name];\n (this as any)[eventName] = new EventEmitter();\n }\n }\n\n ngOnInit() {\n this._updateVisibleChildren();\n }\n\n ngOnChanges() {\n this._isChange = true;\n this._updateVisibleChildren();\n }\n\n ngAfterViewInit(): void {\n if (isPlatformServer(this._platformId)) {\n return;\n }\n\n const GridClass = (this.constructor as typeof NgxInfiniteGridComponent).GridClass;\n const defaultOptions = GridClass!.defaultOptions;\n const options: Partial<InfiniteGridOptions> = {};\n\n for (const name in defaultOptions) {\n if (name in this && typeof (this as any)[name] !== \"undefined\") {\n (options as any)[name] = (this as any)[name];\n }\n }\n\n options.renderer = this._renderer;\n\n // The `InfiniteGrid` set ups `scroll` and `resize` events through `ScrollManager`\n // and `ResizeWatcher`. These events force Angular to run change detection whenever\n // dispatched; this happens too often.\n const grid = this._ngZone.runOutsideAngular(\n () => new GridClass!(this.elementRef.nativeElement, options)\n );\n\n for (const name in INFINITEGRID_EVENTS) {\n const eventName = (INFINITEGRID_EVENTS as any)[name];\n\n fromEvent(grid, eventName)\n .pipe(takeUntil(this._destroy$))\n .subscribe((event) => {\n const emitter = (this as any)[eventName];\n if (emitter && emitter.observers.length > 0) {\n this._ngZone.run(() => emitter.emit(event));\n }\n });\n }\n\n this.vanillaGrid = grid;\n\n fromEvent(this._renderer, 'requestUpdate')\n .pipe(takeUntil(this._destroy$))\n .subscribe(() => {\n this._ngZone.run(() => {\n this._isChange = true;\n this._updateVisibleChildren();\n });\n });\n\n mountRenderingItems(this._getItemInfos(), {\n grid,\n useFirstRender: this.useFirstRender,\n useLoading: this.useLoading,\n usePlaceholder: this.usePlaceholder,\n horizontal: this.horizontal,\n status: this.status,\n });\n this._renderer.updated();\n }\n\n ngAfterViewChecked() {\n if (!this._isChange || !this.vanillaGrid) {\n return;\n }\n const children = [].slice.call(this.getContainerElement().children);\n\n if (this.visibleItems.length !== children.length) {\n return;\n }\n this._isChange = false;\n const GridClass = (this.constructor as typeof NgxInfiniteGridComponent).GridClass;\n const propertyTypes = GridClass!.propertyTypes;\n const grid = this.vanillaGrid;\n\n for (const name in propertyTypes) {\n if (name in this) {\n (grid as any)[name] = (this as any)[name];\n }\n }\n\n this._renderer.updated(children);\n }\n\n ngOnDestroy() {\n this._destroy$.next();\n this.vanillaGrid?.destroy();\n }\n\n private _getItemInfos(): InfiniteGridItemInfo[] {\n const items = this.items;\n const trackBy = this.trackBy;\n const groupBy = this.groupBy;\n const infoBy = this.infoBy;\n\n return items.map((item, i) => {\n const {\n data,\n ...rest\n } = infoBy(i, item);\n return {\n groupKey: groupBy(i, item),\n key: trackBy(i, item),\n ...rest,\n data: {\n ...data,\n ...item,\n },\n };\n });\n }\n\n private _updateVisibleChildren() {\n this.visibleItems = getRenderingItems(this._getItemInfos(), {\n grid: this.vanillaGrid,\n useFirstRender: this.useFirstRender,\n useLoading: this.useLoading,\n usePlaceholder: this.usePlaceholder,\n horizontal: this.horizontal,\n status: this.status,\n });\n }\n}\n","export const TEMPLATE = `\n<ng-template #content><ng-content></ng-content></ng-template>\n\n<ng-template #viewer>\n <div *ngIf=\"container === true; else noContainer\" #containerRef>\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n </div>\n\n <ng-template #noContainer>\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n </ng-template>\n</ng-template>\n\n<div *ngIf=\"elementRef.nativeElement.tagName.indexOf('NGX-') === 0; else noWrapper\" #wrapperRef>\n <ng-template [ngTemplateOutlet]=\"viewer\"></ng-template>\n</div>\n\n<ng-template #noWrapper>\n <ng-template [ngTemplateOutlet]=\"viewer\"></ng-template>\n</ng-template>\n`;\n","import {\n NgxInfiniteGridComponent,\n} from '../ngx-infinitegrid.component';\nimport { Component, Input } from '@angular/core';\nimport {\n MasonryInfiniteGrid as VanillaMasonryInfiniteGrid,\n MasonryInfiniteGridOptions,\n} from \"@egjs/infinitegrid\";\nimport { TEMPLATE } from '../consts';\n\n\n@Component({\n selector: 'ngx-masonry-infinite-grid, [NgxMasonryInfiniteGrid]',\n template: TEMPLATE,\n})\nexport class NgxMasonryInfiniteGridComponent extends NgxInfiniteGridComponent\n implements Required<MasonryInfiniteGridOptions> {\n public static GridClass = VanillaMasonryInfiniteGrid;\n @Input() column!: Required<MasonryInfiniteGridOptions>['column'];\n @Input() columnSize!: Required<MasonryInfiniteGridOptions>['columnSize'];\n @Input() columnSizeRatio!: Required<MasonryInfiniteGridOptions>['columnSizeRatio'];\n @Input() align!: Required<MasonryInfiniteGridOptions>['align'];\n @Input() columnCalculationThreshold!: Required<MasonryInfiniteGridOptions>['columnCalculationThreshold'];\n @Input() maxStretchColumnSize!: Required<MasonryInfiniteGridOptions>['maxStretchColumnSize'];\n}\n","import {\n NgxInfiniteGridComponent,\n} from '../ngx-infinitegrid.component';\nimport { Component, Input } from '@angular/core';\nimport {\n JustifiedInfiniteGrid as VanillaJustifiedInfiniteGrid,\n JustifiedInfiniteGridOptions,\n} from \"@egjs/infinitegrid\";\nimport { TEMPLATE } from '../consts';\n\n\n@Component({\n selector: 'ngx-justified-infinite-grid, [NgxJustifiedInfiniteGrid]',\n template: TEMPLATE,\n})\nexport class NgxJustifiedInfiniteGridComponent extends NgxInfiniteGridComponent\n implements Required<JustifiedInfiniteGridOptions> {\n @Input() columnRange!: Required<JustifiedInfiniteGridOptions>['columnRange'];\n @Input() rowRange!: Required<JustifiedInfiniteGridOptions>['rowRange'];\n @Input() sizeRange!: Required<JustifiedInfiniteGridOptions>['sizeRange'];\n @Input() displayedRow!: Required<JustifiedInfiniteGridOptions>['displayedRow'];\n @Input() isCroppedSize!: Required<JustifiedInfiniteGridOptions>['isCroppedSize'];\n public static GridClass = VanillaJustifiedInfiniteGrid;\n}\n","import {\n NgxInfiniteGridComponent,\n} from '../ngx-infinitegrid.component';\nimport { Component, Input } from '@angular/core';\nimport {\n FrameInfiniteGrid as VanillaFrameInfiniteGrid,\n FrameInfiniteGridOptions,\n} from \"@egjs/infinitegrid\";\nimport { TEMPLATE } from '../consts';\n\n@Component({\n selector: 'ngx-frame-infinite-grid, [NgxFrameInfiniteGrid]',\n template: TEMPLATE,\n})\nexport class NgxFrameInfiniteGridComponent extends NgxInfiniteGridComponent\n implements Required<FrameInfiniteGridOptions> {\n @Input() frame!: Required<FrameInfiniteGridOptions>['frame'];\n @Input() useFrameFill!: Required<FrameInfiniteGridOptions>['useFrameFill'];\n @Input() rectSize!: Required<FrameInfiniteGridOptions>['rectSize'];\n public static GridClass = VanillaFrameInfiniteGrid;\n}\n","import {\n NgxInfiniteGridComponent,\n} from '../ngx-infinitegrid.component';\nimport { Component, Input } from '@angular/core';\nimport {\n PackingInfiniteGrid as VanillaPackingInfiniteGrid,\n PackingInfiniteGridOptions,\n} from \"@egjs/infinitegrid\";\nimport { TEMPLATE } from '../consts';\n\n\n@Component({\n selector: 'ngx-packing-infinite-grid, [NgxPackingInfiniteGrid]',\n template: TEMPLATE,\n})\nexport class NgxPackingInfiniteGridComponent extends NgxInfiniteGridComponent\n implements Required<PackingInfiniteGridOptions> {\n @Input() aspectRatio!: Required<PackingInfiniteGridOptions>['aspectRatio'];\n @Input() sizeWeight!: Required<PackingInfiniteGridOptions>['sizeWeight'];\n @Input() ratioWeight!: Required<PackingInfiniteGridOptions>['ratioWeight'];\n @Input() weightPriority!: Required<PackingInfiniteGridOptions>['weightPriority'];\n public static GridClass = VanillaPackingInfiniteGrid;\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { NgxInfiniteGridComponent } from './ngx-infinitegrid.component';\nimport { NgxMasonryInfiniteGridComponent } from './grids/ngx-masonry-infinitegrid.component';\nimport { NgxJustifiedInfiniteGridComponent } from './grids/ngx-justified-infinitegrid.component';\nimport { NgxFrameInfiniteGridComponent } from './grids/ngx-frame-infinitegrid.component';\nimport { NgxPackingInfiniteGridComponent } from './grids/ngx-packing-infinitegrid.component';\n\n\n\n\n@NgModule({\n declarations: [\n NgxInfiniteGridComponent,\n NgxMasonryInfiniteGridComponent,\n NgxJustifiedInfiniteGridComponent,\n NgxFrameInfiniteGridComponent,\n NgxPackingInfiniteGridComponent,\n ],\n imports: [\n CommonModule,\n ],\n exports: [\n NgxInfiniteGridComponent,\n NgxMasonryInfiniteGridComponent,\n NgxJustifiedInfiniteGridComponent,\n NgxFrameInfiniteGridComponent,\n NgxPackingInfiniteGridComponent,\n ],\n})\nexport class NgxInfiniteGridModule { }\n","/** This shouldn't be used outside of the library, required for the Ivy compilation. */\nexport { NgxJustifiedInfiniteGridComponent as ɵNgxJustifiedInfiniteGridComponent } from './lib/grids/ngx-justified-infinitegrid.component';\nexport { NgxFrameInfiniteGridComponent as ɵNgxFrameInfiniteGridComponent } from './lib/grids/ngx-frame-infinitegrid.component';\nexport { NgxPackingInfiniteGridComponent as ɵNgxPackingInfiniteGridComponent } from './lib/grids/ngx-packing-infinitegrid.component';\n","/*\n * Public API Surface of ngx-infinitegrid\n */\n\nexport * from './lib/grids/ngx-masonry-infinitegrid.component';\nexport * from './lib/ngx-infinitegrid.component';\nexport * from './lib/ngx-infinitegrid.module';\n\nexport * from './private_export';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["VanillaMasonryInfiniteGrid","VanillaJustifiedInfiniteGrid","VanillaFrameInfiniteGrid","VanillaPackingInfiniteGrid"],"mappings":"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"}