UNPKG

@raphy/ngx-equalizer

Version:

A library to equalize height and width of elements with Angular4+

293 lines (282 loc) 19.4 kB
import { Injectable, Directive, ElementRef, Input, ContentChildren, HostListener, QueryList, Renderer2, NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; /** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ var EqualizerService = /** @class */ (function () { function EqualizerService() { } /** * @param {?} renderer * @param {?} elementRefs * @param {?=} params * @return {?} */ EqualizerService.prototype.equalize = /** * @param {?} renderer * @param {?} elementRefs * @param {?=} params * @return {?} */ function (renderer, elementRefs, params) { if (params === void 0) { params = { property: 'height', reset: true }; } var /** @type {?} */ maxValue = 0; elementRefs.map(function (elementRef) { if (params.reset) { renderer.setStyle(elementRef.nativeElement, params.property, 'initial'); } var /** @type {?} */ value = elementRef.nativeElement['offset' + params.property[0].toUpperCase() + params.property.slice(1)]; maxValue = value > maxValue ? value : maxValue; }); elementRefs.map(function (elementRef) { renderer.setStyle(elementRef.nativeElement, params.property, maxValue + 'px'); }); }; EqualizerService.decorators = [ { type: Injectable }, ]; return EqualizerService; }()); /** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ /** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ var EqualizerWatcherDirective = /** @class */ (function () { function EqualizerWatcherDirective(_elementRef) { this._elementRef = _elementRef; } Object.defineProperty(EqualizerWatcherDirective.prototype, "elementRef", { get: /** * @return {?} */ function () { return this._elementRef; }, enumerable: true, configurable: true }); Object.defineProperty(EqualizerWatcherDirective.prototype, "id", { get: /** * @return {?} */ function () { return this._id; }, set: /** * @param {?} value * @return {?} */ function (value) { this._id = value; }, enumerable: true, configurable: true }); EqualizerWatcherDirective.decorators = [ { type: Directive, args: [{ selector: '[equalizerWatcher]' },] }, ]; /** @nocollapse */ EqualizerWatcherDirective.ctorParameters = function () { return [ { type: ElementRef } ]; }; EqualizerWatcherDirective.propDecorators = { _id: [{ type: Input, args: ['equalizerWatcher',] }] }; return EqualizerWatcherDirective; }()); /** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ var EqualizerDirective = /** @class */ (function () { function EqualizerDirective(_elementRef, _renderer, _equalizerService) { this._elementRef = _elementRef; this._renderer = _renderer; this._equalizerService = _equalizerService; this._params = 'height'; this._watchers = new QueryList(); } Object.defineProperty(EqualizerDirective.prototype, "params", { get: /** * @return {?} */ function () { return this._params; }, set: /** * @param {?} value * @return {?} */ function (value) { this._params = value; this.equalize(); }, enumerable: true, configurable: true }); Object.defineProperty(EqualizerDirective.prototype, "elementRef", { get: /** * @return {?} */ function () { return this._elementRef; }, enumerable: true, configurable: true }); Object.defineProperty(EqualizerDirective.prototype, "id", { get: /** * @return {?} */ function () { return this._id; }, set: /** * @param {?} value * @return {?} */ function (value) { this._id = value; }, enumerable: true, configurable: true }); /** * @return {?} */ EqualizerDirective.prototype.ngAfterViewChecked = /** * @return {?} */ function () { this.equalize(); }; /** * @return {?} */ EqualizerDirective.prototype._onResize = /** * @return {?} */ function () { this.equalize(); }; /** * @return {?} */ EqualizerDirective.prototype.equalize = /** * @return {?} */ function () { var _this = this; if (!this._params) { this._params = 'height'; } var /** @type {?} */ params = Object.assign({ property: 'height', reset: true }, typeof this._params === 'string' ? { property: this._params } : this._params); var /** @type {?} */ watchers = this._watchers.filter(function (watcher) { console.log('ID matching', watcher.id, _this.id); if (watcher.id || _this.id) { return watcher.id === _this.id; } return watcher.elementRef.nativeElement !== _this._elementRef.nativeElement; }).map(function (watcher) { return watcher.elementRef; }); this._equalizerService.equalize(this._renderer, watchers, params); }; EqualizerDirective.decorators = [ { type: Directive, args: [{ selector: '[equalizer]', exportAs: 'equalizer' },] }, ]; /** @nocollapse */ EqualizerDirective.ctorParameters = function () { return [ { type: ElementRef }, { type: Renderer2 }, { type: EqualizerService } ]; }; EqualizerDirective.propDecorators = { _params: [{ type: Input, args: ['equalizer',] }], _id: [{ type: Input, args: ['equalizerId',] }], _watchers: [{ type: ContentChildren, args: [EqualizerWatcherDirective, { read: EqualizerWatcherDirective },] }], _onResize: [{ type: HostListener, args: ['window:resize',] }] }; return EqualizerDirective; }()); /** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ /** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ var EqualizerModule = /** @class */ (function () { function EqualizerModule() { } /** * @return {?} */ EqualizerModule.forRoot = /** * @return {?} */ function () { return { ngModule: EqualizerModule, providers: [ EqualizerService, ] }; }; /** * @return {?} */ EqualizerModule.forChild = /** * @return {?} */ function () { return { ngModule: EqualizerModule, providers: [ EqualizerService ] }; }; EqualizerModule.decorators = [ { type: NgModule, args: [{ imports: [ CommonModule, ], exports: [ EqualizerDirective, EqualizerWatcherDirective, ], declarations: [ EqualizerDirective, EqualizerWatcherDirective, ], providers: [ EqualizerService, ], },] }, ]; return EqualizerModule; }()); /** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ /** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ /** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ export { EqualizerDirective, EqualizerWatcherDirective, EqualizerService, EqualizerModule, EqualizerDirective as ɵa, EqualizerWatcherDirective as ɵb, EqualizerService as ɵc }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFwaHktbmd4LWVxdWFsaXplci5qcy5tYXAiLCJzb3VyY2VzIjpbIm5nOi8vQHJhcGh5L25neC1lcXVhbGl6ZXIvbGliL3NlcnZpY2VzL2VxdWFsaXplci5zZXJ2aWNlLnRzIiwibmc6Ly9AcmFwaHkvbmd4LWVxdWFsaXplci9saWIvZGlyZWN0aXZlcy9lcXVhbGl6ZXItd2F0Y2hlci5kaXJlY3RpdmUudHMiLCJuZzovL0ByYXBoeS9uZ3gtZXF1YWxpemVyL2xpYi9kaXJlY3RpdmVzL2VxdWFsaXplci5kaXJlY3RpdmUudHMiLCJuZzovL0ByYXBoeS9uZ3gtZXF1YWxpemVyL2xpYi9lcXVhbGl6ZXIubW9kdWxlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnRSZWYsIEluamVjdGFibGUsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBFcXVhbGl6ZVBhcmFtcyB9IGZyb20gJy4uL2VxdWFsaXplLXBhcmFtcyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBFcXVhbGl6ZXJTZXJ2aWNlIHtcbiAgICBwdWJsaWMgZXF1YWxpemUoXG4gICAgICAgIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgIGVsZW1lbnRSZWZzOiBFbGVtZW50UmVmW10sXG4gICAgICAgIHBhcmFtczogRXF1YWxpemVQYXJhbXMgPSB7cHJvcGVydHk6ICdoZWlnaHQnLCByZXNldDogdHJ1ZX1cbiAgICApIHtcblxuICAgICAgICBsZXQgbWF4VmFsdWU6IG51bWJlciA9IDA7XG5cbiAgICAgICAgZWxlbWVudFJlZnMubWFwKFxuICAgICAgICAgICAgKGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocGFyYW1zLnJlc2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlbmRlcmVyLnNldFN0eWxlKGVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgcGFyYW1zLnByb3BlcnR5LCAnaW5pdGlhbCcpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlOiBudW1iZXIgPSBlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnRbJ29mZnNldCcgKyBwYXJhbXMucHJvcGVydHlbMF0udG9VcHBlckNhc2UoKSArIHBhcmFtcy5wcm9wZXJ0eS5zbGljZSgxKV07XG4gICAgICAgICAgICAgICAgbWF4VmFsdWUgPSB2YWx1ZSA+IG1heFZhbHVlID8gdmFsdWUgOiBtYXhWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgICAgICBlbGVtZW50UmVmcy5tYXAoXG4gICAgICAgICAgICAoZWxlbWVudFJlZjogRWxlbWVudFJlZikgPT4ge1xuICAgICAgICAgICAgICAgIHJlbmRlcmVyLnNldFN0eWxlKGVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgcGFyYW1zLnByb3BlcnR5LCBtYXhWYWx1ZSArICdweCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cbn1cbiIsImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZXF1YWxpemVyV2F0Y2hlcl0nXG59KVxuZXhwb3J0IGNsYXNzIEVxdWFsaXplcldhdGNoZXJEaXJlY3RpdmUge1xuICAgIEBJbnB1dCgnZXF1YWxpemVyV2F0Y2hlcicpXG4gICAgcHJpdmF0ZSBfaWQ6IHN0cmluZyB8IG51bWJlcjtcblxuICAgIGdldCBlbGVtZW50UmVmKCk6IEVsZW1lbnRSZWYge1xuICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudFJlZjtcbiAgICB9XG5cbiAgICBnZXQgaWQoKTogc3RyaW5nIHwgbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lkO1xuICAgIH1cblxuICAgIHNldCBpZCh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX2lkID0gdmFsdWU7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWZcbiAgICApIHtcbiAgICB9XG59XG4iLCJpbXBvcnQgeyBBZnRlclZpZXdDaGVja2VkLCBDb250ZW50Q2hpbGRyZW4sIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBJbnB1dCwgUXVlcnlMaXN0LCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgRXF1YWxpemVQYXJhbXMgfSBmcm9tICcuLi9lcXVhbGl6ZS1wYXJhbXMnO1xuaW1wb3J0IHsgRXF1YWxpemVyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2luZGV4JztcbmltcG9ydCB7IEVxdWFsaXplcldhdGNoZXJEaXJlY3RpdmUgfSBmcm9tICcuL2VxdWFsaXplci13YXRjaGVyLmRpcmVjdGl2ZSc7XG5cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZXF1YWxpemVyXScsXG4gICAgZXhwb3J0QXM6ICdlcXVhbGl6ZXInXG59KVxuZXhwb3J0IGNsYXNzIEVxdWFsaXplckRpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0NoZWNrZWQge1xuICAgIEBJbnB1dCgnZXF1YWxpemVyJylcbiAgICBwcml2YXRlIF9wYXJhbXM6ICdoZWlnaHQnIHwgJ3dpZHRoJyB8IEVxdWFsaXplUGFyYW1zID0gJ2hlaWdodCc7XG5cbiAgICBASW5wdXQoJ2VxdWFsaXplcklkJylcbiAgICBwcml2YXRlIF9pZDogc3RyaW5nIHwgbnVtYmVyO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihFcXVhbGl6ZXJXYXRjaGVyRGlyZWN0aXZlLCB7cmVhZDogRXF1YWxpemVyV2F0Y2hlckRpcmVjdGl2ZX0pXG4gICAgcHJpdmF0ZSBfd2F0Y2hlcnM6IFF1ZXJ5TGlzdDxFcXVhbGl6ZXJXYXRjaGVyRGlyZWN0aXZlPiA9IG5ldyBRdWVyeUxpc3Q8RXF1YWxpemVyV2F0Y2hlckRpcmVjdGl2ZT4oKTtcblxuICAgIGdldCBwYXJhbXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wYXJhbXM7XG4gICAgfVxuXG4gICAgc2V0IHBhcmFtcyh2YWx1ZSkge1xuICAgICAgICB0aGlzLl9wYXJhbXMgPSB2YWx1ZTtcblxuICAgICAgICB0aGlzLmVxdWFsaXplKCk7XG4gICAgfVxuXG4gICAgZ2V0IGVsZW1lbnRSZWYoKTogRWxlbWVudFJlZiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50UmVmO1xuICAgIH1cblxuICAgIGdldCBpZCgpOiBzdHJpbmcgfCBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5faWQ7XG4gICAgfVxuXG4gICAgc2V0IGlkKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5faWQgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSBfcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgcHJpdmF0ZSBfZXF1YWxpemVyU2VydmljZTogRXF1YWxpemVyU2VydmljZVxuICAgICkge1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0NoZWNrZWQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZXF1YWxpemUoKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJylcbiAgICBwcml2YXRlIF9vblJlc2l6ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lcXVhbGl6ZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBlcXVhbGl6ZSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLl9wYXJhbXMpIHtcbiAgICAgICAgICAgIHRoaXMuX3BhcmFtcyA9ICdoZWlnaHQnO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcGFyYW1zOiBFcXVhbGl6ZVBhcmFtcyA9IE9iamVjdC5hc3NpZ24oe3Byb3BlcnR5OiAnaGVpZ2h0JywgcmVzZXQ6IHRydWV9LCB0eXBlb2YgdGhpcy5fcGFyYW1zID09PSAnc3RyaW5nJyA/IHtwcm9wZXJ0eTogdGhpcy5fcGFyYW1zfSA6IHRoaXMuX3BhcmFtcyk7XG4gICAgICAgIGNvbnN0IHdhdGNoZXJzOiBFbGVtZW50UmVmW10gPSB0aGlzLl93YXRjaGVycy5maWx0ZXIoKHdhdGNoZXIpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdJRCBtYXRjaGluZycsIHdhdGNoZXIuaWQsIHRoaXMuaWQpO1xuICAgICAgICAgICAgaWYgKHdhdGNoZXIuaWQgfHwgdGhpcy5pZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB3YXRjaGVyLmlkID09PSB0aGlzLmlkO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gd2F0Y2hlci5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgIT09IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgfSkubWFwKCh3YXRjaGVyKSA9PiB3YXRjaGVyLmVsZW1lbnRSZWYpO1xuXG4gICAgICAgIHRoaXMuX2VxdWFsaXplclNlcnZpY2UuZXF1YWxpemUoXG4gICAgICAgICAgICB0aGlzLl9yZW5kZXJlcixcbiAgICAgICAgICAgIHdhdGNoZXJzLFxuICAgICAgICAgICAgcGFyYW1zXG4gICAgICAgICk7XG4gICAgfVxufVxuIiwiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEVxdWFsaXplckRpcmVjdGl2ZSwgRXF1YWxpemVyV2F0Y2hlckRpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcyc7XG5pbXBvcnQgeyBFcXVhbGl6ZXJTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcyc7XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgXSxcbiAgICBleHBvcnRzOiBbXG4gICAgICAgIEVxdWFsaXplckRpcmVjdGl2ZSxcbiAgICAgICAgRXF1YWxpemVyV2F0Y2hlckRpcmVjdGl2ZSxcbiAgICBdLFxuICAgIGRlY2xhcmF0aW9uczogW1xuICAgICAgICBFcXVhbGl6ZXJEaXJlY3RpdmUsXG4gICAgICAgIEVxdWFsaXplcldhdGNoZXJEaXJlY3RpdmUsXG4gICAgXSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgRXF1YWxpemVyU2VydmljZSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBFcXVhbGl6ZXJNb2R1bGUge1xuICAgIHB1YmxpYyBzdGF0aWMgZm9yUm9vdCgpOiBNb2R1bGVXaXRoUHJvdmlkZXJzIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG5nTW9kdWxlOiBFcXVhbGl6ZXJNb2R1bGUsXG4gICAgICAgICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgICAgICAgICBFcXVhbGl6ZXJTZXJ2aWNlLFxuICAgICAgICAgICAgXVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZm9yQ2hpbGQoKTogTW9kdWxlV2l0aFByb3ZpZGVycyB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBuZ01vZHVsZTogRXF1YWxpemVyTW9kdWxlLFxuICAgICAgICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgICAgICAgICAgRXF1YWxpemVyU2VydmljZVxuICAgICAgICAgICAgXVxuICAgICAgICB9O1xuICAgIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7Ozs7Ozs7OztJQU1XLG1DQUFROzs7Ozs7Y0FDWCxRQUFtQixFQUNuQixXQUF5QixFQUN6QixNQUEwRDtRQUExRCx1QkFBQSxFQUFBLFdBQTBCLFFBQVEsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBQztRQUcxRCxxQkFB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