ng-masonry-layout
Version:
Angular Module for displaying a feed of items in a masonry layout using https://github.com/desandro/masonry
117 lines • 8.04 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;
}
var NgxMasonryDirective = /** @class */ (function () {
function NgxMasonryDirective(_element, _parent, platformId) {
this._element = _element;
this._parent = _parent;
this.platformId = platformId;
}
/**
* @return {?}
*/
NgxMasonryDirective.prototype.ngAfterViewInit = /**
* @return {?}
*/
function () {
if (isPlatformBrowser(this.platformId)) {
this._parent.add(this._element.nativeElement);
this.watchForHtmlChanges();
}
};
/**
* @return {?}
*/
NgxMasonryDirective.prototype.ngOnDestroy = /**
* @return {?}
*/
function () {
if (isPlatformBrowser(this.platformId)) {
this._parent.remove(this._element.nativeElement);
}
};
/** When HTML in brick changes dinamically, observe that and change layout */
/**
* When HTML in brick changes dinamically, observe that and change layout
* @private
* @return {?}
*/
NgxMasonryDirective.prototype.watchForHtmlChanges = /**
* When HTML in brick changes dinamically, observe that and change layout
* @private
* @return {?}
*/
function () {
MutationObserver = window.MutationObserver || window.WebKitMutationObserver;
if (MutationObserver) {
/**
* Watch for any changes to subtree
* @type {?}
*/
var self_1 = this;
/** @type {?} */
var observer = new MutationObserver((/**
* @param {?} mutations
* @param {?} observerFromElement
* @return {?}
*/
function (mutations, observerFromElement) {
self_1._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 = function () { return [
{ type: ElementRef },
{ type: NgxMasonryComponent, decorators: [{ type: Inject, args: [forwardRef((/**
* @return {?}
*/
function () { return NgxMasonryComponent; })),] }] },
{ type: undefined, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] }
]; };
return NgxMasonryDirective;
}());
export { NgxMasonryDirective };
if (false) {
/**
* @type {?}
* @private
*/
NgxMasonryDirective.prototype._element;
/**
* @type {?}
* @private
*/
NgxMasonryDirective.prototype._parent;
/**
* @type {?}
* @private
*/
NgxMasonryDirective.prototype.platformId;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LW1hc29ucnkuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctbWFzb25yeS1sYXlvdXQvIiwic291cmNlcyI6WyJsaWIvbmd4LW1hc29ucnkuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUE0QixXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFakgsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7QUFFcEQsNkJBR0M7OztJQUZDLDBDQUFzQjs7SUFDdEIsZ0RBQTRCOztBQUs5QjtJQUlFLDZCQUNVLFFBQW9CLEVBRXBCLE9BQTRCLEVBQ1AsVUFBZTtRQUhwQyxhQUFRLEdBQVIsUUFBUSxDQUFZO1FBRXBCLFlBQU8sR0FBUCxPQUFPLENBQXFCO1FBQ1AsZUFBVSxHQUFWLFVBQVUsQ0FBSztJQUMzQyxDQUFDOzs7O0lBRUosNkNBQWU7OztJQUFmO1FBQ0UsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDdEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUM5QyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztTQUM1QjtJQUNILENBQUM7Ozs7SUFFRCx5Q0FBVzs7O0lBQVg7UUFDRSxJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUN0QyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQ2xEO0lBQ0gsQ0FBQztJQUVELDZFQUE2RTs7Ozs7O0lBQ3JFLGlEQUFtQjs7Ozs7SUFBM0I7UUFDRSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLElBQUksTUFBTSxDQUFDLHNCQUFzQixDQUFDO1FBRTVFLElBQUksZ0JBQWdCLEVBQUU7Ozs7O2dCQUVkLE1BQUksR0FBRyxJQUFJOztnQkFDWCxRQUFRLEdBQUcsSUFBSSxnQkFBZ0I7Ozs7O1lBQUMsVUFBUyxTQUFTLEVBQUUsbUJBQW1CO2dCQUMzRSxNQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3hCLENBQUMsRUFBQztZQUVGLHlEQUF5RDtZQUN6RCxtREFBbUQ7WUFDbkQsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRTtnQkFDNUMsT0FBTyxFQUFFLElBQUk7Z0JBQ2IsU0FBUyxFQUFFLElBQUk7YUFDaEIsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDOztnQkExQ0YsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSxrQ0FBa0M7aUJBQzdDOzs7O2dCQWQyQixVQUFVO2dCQUU3QixtQkFBbUIsdUJBZ0J2QixNQUFNLFNBQUMsVUFBVTs7O3dCQUFDLGNBQU0sT0FBQSxtQkFBbUIsRUFBbkIsQ0FBbUIsRUFBQztnREFFNUMsTUFBTSxTQUFDLFdBQVc7O0lBbUN2QiwwQkFBQztDQUFBLEFBM0NELElBMkNDO1NBeENZLG1CQUFtQjs7Ozs7O0lBRTVCLHVDQUE0Qjs7Ozs7SUFDNUIsc0NBQ29DOzs7OztJQUNwQyx5Q0FBNEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEluamVjdCwgRWxlbWVudFJlZiwgZm9yd2FyZFJlZiwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0LCBQTEFURk9STV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBOZ3hNYXNvbnJ5Q29tcG9uZW50IH0gZnJvbSAnLi9uZ3gtbWFzb25yeS5jb21wb25lbnQnO1xuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5pbnRlcmZhY2UgTXV0YXRpb25XaW5kb3cgZXh0ZW5kcyBXaW5kb3cge1xuICBNdXRhdGlvbk9ic2VydmVyOiBhbnk7XG4gIFdlYktpdE11dGF0aW9uT2JzZXJ2ZXI6IGFueTtcbn1cblxuZGVjbGFyZSB2YXIgd2luZG93OiBNdXRhdGlvbldpbmRvdztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW25neE1hc29ucnlJdGVtXSwgbmd4TWFzb25yeUl0ZW0nXG59KVxuZXhwb3J0IGNsYXNzIE5neE1hc29ucnlEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9lbGVtZW50OiBFbGVtZW50UmVmLFxuICAgIEBJbmplY3QoZm9yd2FyZFJlZigoKSA9PiBOZ3hNYXNvbnJ5Q29tcG9uZW50KSlcbiAgICBwcml2YXRlIF9wYXJlbnQ6IE5neE1hc29ucnlDb21wb25lbnQsXG4gICAgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBhbnlcbiAgKSB7fVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgdGhpcy5fcGFyZW50LmFkZCh0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgdGhpcy53YXRjaEZvckh0bWxDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgIHRoaXMuX3BhcmVudC5yZW1vdmUodGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG4gIH1cblxuICAvKiogV2hlbiBIVE1MIGluIGJyaWNrIGNoYW5nZXMgZGluYW1pY2FsbHksIG9ic2VydmUgdGhhdCBhbmQgY2hhbmdlIGxheW91dCAqL1xuICBwcml2YXRlIHdhdGNoRm9ySHRtbENoYW5nZXMoKTogdm9pZCB7XG4gICAgTXV0YXRpb25PYnNlcnZlciA9IHdpbmRvdy5NdXRhdGlvbk9ic2VydmVyIHx8IHdpbmRvdy5XZWJLaXRNdXRhdGlvbk9ic2VydmVyO1xuXG4gICAgaWYgKE11dGF0aW9uT2JzZXJ2ZXIpIHtcbiAgICAgIC8qKiBXYXRjaCBmb3IgYW55IGNoYW5nZXMgdG8gc3VidHJlZSAqL1xuICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKG11dGF0aW9ucywgb2JzZXJ2ZXJGcm9tRWxlbWVudCkge1xuICAgICAgICBzZWxmLl9wYXJlbnQubGF5b3V0KCk7XG4gICAgICB9KTtcblxuICAgICAgLy8gZGVmaW5lIHdoYXQgZWxlbWVudCBzaG91bGQgYmUgb2JzZXJ2ZWQgYnkgdGhlIG9ic2VydmVyXG4gICAgICAvLyBhbmQgd2hhdCB0eXBlcyBvZiBtdXRhdGlvbnMgdHJpZ2dlciB0aGUgY2FsbGJhY2tcbiAgICAgIG9ic2VydmVyLm9ic2VydmUodGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LCB7XG4gICAgICAgIHN1YnRyZWU6IHRydWUsXG4gICAgICAgIGNoaWxkTGlzdDogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iXX0=