ng-masonry-layout
Version:
Angular Module for displaying a feed of items in a masonry layout using https://github.com/desandro/masonry
108 lines • 7.44 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Directive, Inject, ElementRef, forwardRef, PLATFORM_ID } from '@angular/core';
import { NgxMasonryComponent } from './ngx-masonry.component';
import { isPlatformBrowser } from '@angular/common';
/**
* @record
*/
function MutationWindow() { }
if (false) {
/** @type {?} */
MutationWindow.prototype.MutationObserver;
/** @type {?} */
MutationWindow.prototype.WebKitMutationObserver;
}
export class NgxMasonryDirective {
/**
* @param {?} _element
* @param {?} _parent
* @param {?} platformId
*/
constructor(_element, _parent, platformId) {
this._element = _element;
this._parent = _parent;
this.platformId = platformId;
}
/**
* @return {?}
*/
ngAfterViewInit() {
if (isPlatformBrowser(this.platformId)) {
this._parent.add(this._element.nativeElement);
this.watchForHtmlChanges();
}
}
/**
* @return {?}
*/
ngOnDestroy() {
if (isPlatformBrowser(this.platformId)) {
this._parent.remove(this._element.nativeElement);
}
}
/**
* When HTML in brick changes dinamically, observe that and change layout
* @private
* @return {?}
*/
watchForHtmlChanges() {
MutationObserver = window.MutationObserver || window.WebKitMutationObserver;
if (MutationObserver) {
/**
* Watch for any changes to subtree
* @type {?}
*/
const self = this;
/** @type {?} */
const observer = new MutationObserver((/**
* @param {?} mutations
* @param {?} observerFromElement
* @return {?}
*/
function (mutations, observerFromElement) {
self._parent.layout();
}));
// define what element should be observed by the observer
// and what types of mutations trigger the callback
observer.observe(this._element.nativeElement, {
subtree: true,
childList: true
});
}
}
}
NgxMasonryDirective.decorators = [
{ type: Directive, args: [{
selector: '[ngxMasonryItem], ngxMasonryItem'
},] }
];
/** @nocollapse */
NgxMasonryDirective.ctorParameters = () => [
{ type: ElementRef },
{ type: NgxMasonryComponent, decorators: [{ type: Inject, args: [forwardRef((/**
* @return {?}
*/
() => NgxMasonryComponent)),] }] },
{ type: undefined, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] }
];
if (false) {
/**
* @type {?}
* @private
*/
NgxMasonryDirective.prototype._element;
/**
* @type {?}
* @private
*/
NgxMasonryDirective.prototype._parent;
/**
* @type {?}
* @private
*/
NgxMasonryDirective.prototype.platformId;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LW1hc29ucnkuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctbWFzb25yeS1sYXlvdXQvIiwic291cmNlcyI6WyJsaWIvbmd4LW1hc29ucnkuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUE0QixXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFakgsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7QUFFcEQsNkJBR0M7OztJQUZDLDBDQUFzQjs7SUFDdEIsZ0RBQTRCOztBQVE5QixNQUFNLE9BQU8sbUJBQW1COzs7Ozs7SUFDOUIsWUFDVSxRQUFvQixFQUVwQixPQUE0QixFQUNQLFVBQWU7UUFIcEMsYUFBUSxHQUFSLFFBQVEsQ0FBWTtRQUVwQixZQUFPLEdBQVAsT0FBTyxDQUFxQjtRQUNQLGVBQVUsR0FBVixVQUFVLENBQUs7SUFDM0MsQ0FBQzs7OztJQUVKLGVBQWU7UUFDYixJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUN0QyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQzlDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1NBQzVCO0lBQ0gsQ0FBQzs7OztJQUVELFdBQVc7UUFDVCxJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUN0QyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQ2xEO0lBQ0gsQ0FBQzs7Ozs7O0lBR08sbUJBQW1CO1FBQ3pCLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsSUFBSSxNQUFNLENBQUMsc0JBQXNCLENBQUM7UUFFNUUsSUFBSSxnQkFBZ0IsRUFBRTs7Ozs7a0JBRWQsSUFBSSxHQUFHLElBQUk7O2tCQUNYLFFBQVEsR0FBRyxJQUFJLGdCQUFnQjs7Ozs7WUFBQyxVQUFTLFNBQVMsRUFBRSxtQkFBbUI7Z0JBQzNFLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDeEIsQ0FBQyxFQUFDO1lBRUYseURBQXlEO1lBQ3pELG1EQUFtRDtZQUNuRCxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFO2dCQUM1QyxPQUFPLEVBQUUsSUFBSTtnQkFDYixTQUFTLEVBQUUsSUFBSTthQUNoQixDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7OztZQTFDRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGtDQUFrQzthQUM3Qzs7OztZQWQyQixVQUFVO1lBRTdCLG1CQUFtQix1QkFnQnZCLE1BQU0sU0FBQyxVQUFVOzs7b0JBQUMsR0FBRyxFQUFFLENBQUMsbUJBQW1CLEVBQUM7NENBRTVDLE1BQU0sU0FBQyxXQUFXOzs7Ozs7O0lBSG5CLHVDQUE0Qjs7Ozs7SUFDNUIsc0NBQ29DOzs7OztJQUNwQyx5Q0FBNEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEluamVjdCwgRWxlbWVudFJlZiwgZm9yd2FyZFJlZiwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0LCBQTEFURk9STV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBOZ3hNYXNvbnJ5Q29tcG9uZW50IH0gZnJvbSAnLi9uZ3gtbWFzb25yeS5jb21wb25lbnQnO1xuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5pbnRlcmZhY2UgTXV0YXRpb25XaW5kb3cgZXh0ZW5kcyBXaW5kb3cge1xuICBNdXRhdGlvbk9ic2VydmVyOiBhbnk7XG4gIFdlYktpdE11dGF0aW9uT2JzZXJ2ZXI6IGFueTtcbn1cblxuZGVjbGFyZSB2YXIgd2luZG93OiBNdXRhdGlvbldpbmRvdztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW25neE1hc29ucnlJdGVtXSwgbmd4TWFzb25yeUl0ZW0nXG59KVxuZXhwb3J0IGNsYXNzIE5neE1hc29ucnlEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9lbGVtZW50OiBFbGVtZW50UmVmLFxuICAgIEBJbmplY3QoZm9yd2FyZFJlZigoKSA9PiBOZ3hNYXNvbnJ5Q29tcG9uZW50KSlcbiAgICBwcml2YXRlIF9wYXJlbnQ6IE5neE1hc29ucnlDb21wb25lbnQsXG4gICAgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBhbnlcbiAgKSB7fVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgdGhpcy5fcGFyZW50LmFkZCh0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgdGhpcy53YXRjaEZvckh0bWxDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgIHRoaXMuX3BhcmVudC5yZW1vdmUodGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG4gIH1cblxuICAvKiogV2hlbiBIVE1MIGluIGJyaWNrIGNoYW5nZXMgZGluYW1pY2FsbHksIG9ic2VydmUgdGhhdCBhbmQgY2hhbmdlIGxheW91dCAqL1xuICBwcml2YXRlIHdhdGNoRm9ySHRtbENoYW5nZXMoKTogdm9pZCB7XG4gICAgTXV0YXRpb25PYnNlcnZlciA9IHdpbmRvdy5NdXRhdGlvbk9ic2VydmVyIHx8IHdpbmRvdy5XZWJLaXRNdXRhdGlvbk9ic2VydmVyO1xuXG4gICAgaWYgKE11dGF0aW9uT2JzZXJ2ZXIpIHtcbiAgICAgIC8qKiBXYXRjaCBmb3IgYW55IGNoYW5nZXMgdG8gc3VidHJlZSAqL1xuICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKG11dGF0aW9ucywgb2JzZXJ2ZXJGcm9tRWxlbWVudCkge1xuICAgICAgICBzZWxmLl9wYXJlbnQubGF5b3V0KCk7XG4gICAgICB9KTtcblxuICAgICAgLy8gZGVmaW5lIHdoYXQgZWxlbWVudCBzaG91bGQgYmUgb2JzZXJ2ZWQgYnkgdGhlIG9ic2VydmVyXG4gICAgICAvLyBhbmQgd2hhdCB0eXBlcyBvZiBtdXRhdGlvbnMgdHJpZ2dlciB0aGUgY2FsbGJhY2tcbiAgICAgIG9ic2VydmVyLm9ic2VydmUodGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LCB7XG4gICAgICAgIHN1YnRyZWU6IHRydWUsXG4gICAgICAgIGNoaWxkTGlzdDogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iXX0=