UNPKG

@blare/angular2gridster

Version:

[![npm version](https://badge.fury.io/js/angular2gridster.svg)](https://badge.fury.io/js/angular2gridster)

111 lines 11.1 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,uselessCode} checked by tsc */ import { of, fromEvent, merge } from 'rxjs'; import { debounceTime, map, distinctUntilChanged } from 'rxjs/operators'; export class GridsterOptions { /** * @param {?} config * @param {?} element */ constructor(config, element) { this.defaults = { lanes: 5, direction: 'horizontal', widthHeightRatio: 1, shrink: false, responsiveView: true, responsiveSizes: false, dragAndDrop: true, resizable: false, useCSSTransforms: false, floating: true, tolerance: 'pointer', }; this.responsiveOptions = []; this.breakpointsMap = { sm: 576, // Small devices md: 768, // Medium devices lg: 992, // Large devices xl: 1200 // Extra large }; this.basicOptions = config; this.responsiveOptions = this.extendResponsiveOptions(config.responsiveOptions || []); this.change = merge(of(this.getOptionsByWidth(document.documentElement.clientWidth)), fromEvent(window, 'resize').pipe(debounceTime(config.responsiveDebounce || 0), map((event) => { return this.getOptionsByWidth(element.nativeElement.offsetWidth); }))).pipe(distinctUntilChanged(null, (options) => options.minWidth)); } /** * @param {?} width * @return {?} */ getOptionsByWidth(width) { /** @type {?} */ let i = 0; /** @type {?} */ let options = Object.assign({}, this.defaults, this.basicOptions); while (this.responsiveOptions[i]) { if (this.responsiveOptions[i].minWidth <= width) { options = this.responsiveOptions[i]; } i++; } return options; } /** * @param {?} responsiveOptions * @return {?} */ extendResponsiveOptions(responsiveOptions) { return responsiveOptions // responsive options are valid only with "breakpoint" property .filter(options => options.breakpoint) // set default minWidth if not given .map((options) => { return Object.assign({ minWidth: this.breakpointsMap[options.breakpoint] || 0 }, options); }) .sort((curr, next) => curr.minWidth - next.minWidth) .map((options) => (/** @type {?} */ (Object.assign({}, this.defaults, this.basicOptions, options)))); } } if (false) { /** @type {?} */ GridsterOptions.prototype.direction; /** @type {?} */ GridsterOptions.prototype.lanes; /** @type {?} */ GridsterOptions.prototype.widthHeightRatio; /** @type {?} */ GridsterOptions.prototype.heightToFontSizeRatio; /** @type {?} */ GridsterOptions.prototype.responsiveView; /** @type {?} */ GridsterOptions.prototype.responsiveSizes; /** @type {?} */ GridsterOptions.prototype.dragAndDrop; /** @type {?} */ GridsterOptions.prototype.resizable; /** @type {?} */ GridsterOptions.prototype.shrink; /** @type {?} */ GridsterOptions.prototype.minWidth; /** @type {?} */ GridsterOptions.prototype.useCSSTransforms; /** @type {?} */ GridsterOptions.prototype.defaults; /** @type {?} */ GridsterOptions.prototype.change; /** @type {?} */ GridsterOptions.prototype.responsiveOptions; /** @type {?} */ GridsterOptions.prototype.basicOptions; /** @type {?} */ GridsterOptions.prototype.breakpointsMap; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JpZHN0ZXJPcHRpb25zLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGJsYXJlL2FuZ3VsYXIyZ3JpZHN0ZXIvIiwic291cmNlcyI6WyJsaWIvR3JpZHN0ZXJPcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQWMsRUFBRSxFQUFFLFNBQVMsRUFBUSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUt6RSxNQUFNLE9BQU8sZUFBZTs7Ozs7SUF1Q3hCLFlBQVksTUFBd0IsRUFBRSxPQUFtQjtRQTFCekQsYUFBUSxHQUFxQjtZQUN6QixLQUFLLEVBQUUsQ0FBQztZQUNSLFNBQVMsRUFBRSxZQUFZO1lBQ3ZCLGdCQUFnQixFQUFFLENBQUM7WUFDbkIsTUFBTSxFQUFFLEtBQUs7WUFDYixjQUFjLEVBQUUsSUFBSTtZQUNwQixlQUFlLEVBQUUsS0FBSztZQUN0QixXQUFXLEVBQUUsSUFBSTtZQUNqQixTQUFTLEVBQUUsS0FBSztZQUNoQixnQkFBZ0IsRUFBRSxLQUFLO1lBQ3ZCLFFBQVEsRUFBRSxJQUFJO1lBQ2QsU0FBUyxFQUFFLFNBQVM7U0FDdkIsQ0FBQztRQUlGLHNCQUFpQixHQUE0QixFQUFFLENBQUM7UUFHaEQsbUJBQWMsR0FBRztZQUNiLEVBQUUsRUFBRSxHQUFHOztZQUNQLEVBQUUsRUFBRSxHQUFHOztZQUNQLEVBQUUsRUFBRSxHQUFHOztZQUNQLEVBQUUsRUFBRSxJQUFJLENBQUMsY0FBYztTQUMxQixDQUFDO1FBR0UsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUM7UUFFM0IsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLElBQUksRUFBRSxDQUFDLENBQUM7UUFFdEYsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQ1gsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQ2hFLFNBQVMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUM1QixZQUFZLENBQUMsTUFBTSxDQUFDLGtCQUFrQixJQUFJLENBQUMsQ0FBQyxFQUM1QyxHQUFHLENBQUMsQ0FBQyxLQUFZLEVBQUUsRUFBRTtZQUNuQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25FLENBQUMsQ0FBQyxDQUNMLENBQ0osQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxFQUFFLENBQUMsT0FBWSxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUMvRSxDQUFDOzs7OztJQUVELGlCQUFpQixDQUFDLEtBQWE7O1lBQ3ZCLENBQUMsR0FBRyxDQUFDOztZQUNMLE9BQU8sR0FBcUIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDO1FBRW5GLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQzlCLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsSUFBSSxLQUFLLEVBQUU7Z0JBQzdDLE9BQU8sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDdkM7WUFDRCxDQUFDLEVBQUUsQ0FBQztTQUNQO1FBRUQsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQzs7Ozs7SUFFTyx1QkFBdUIsQ0FBQyxpQkFBMEM7UUFDdEUsT0FBTyxpQkFBaUI7WUFDcEIsK0RBQStEO2FBQzlELE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7WUFDdEMsb0NBQW9DO2FBQ25DLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ2IsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDO2dCQUNqQixRQUFRLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQzthQUN6RCxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2hCLENBQUMsQ0FBQzthQUNELElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQzthQUNuRCxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLG1CQUFrQixNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLEVBQUEsQ0FBQyxDQUFDO0lBQzFHLENBQUM7Q0FDSjs7O0lBakZHLG9DQUFrQjs7SUFDbEIsZ0NBQWM7O0lBQ2QsMkNBQXlCOztJQUN6QixnREFBOEI7O0lBQzlCLHlDQUF3Qjs7SUFDeEIsMENBQXlCOztJQUN6QixzQ0FBcUI7O0lBQ3JCLG9DQUFtQjs7SUFDbkIsaUNBQWdCOztJQUNoQixtQ0FBaUI7O0lBQ2pCLDJDQUEwQjs7SUFFMUIsbUNBWUU7O0lBRUYsaUNBQXFDOztJQUVyQyw0Q0FBZ0Q7O0lBQ2hELHVDQUErQjs7SUFFL0IseUNBS0UiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgZnJvbUV2ZW50LCBwaXBlLCBtZXJnZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBtYXAsIGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBJR3JpZHN0ZXJPcHRpb25zIH0gZnJvbSAnLi9JR3JpZHN0ZXJPcHRpb25zJztcbmltcG9ydCB7RWxlbWVudFJlZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBjbGFzcyBHcmlkc3Rlck9wdGlvbnMge1xuICAgIGRpcmVjdGlvbjogc3RyaW5nO1xuICAgIGxhbmVzOiBudW1iZXI7XG4gICAgd2lkdGhIZWlnaHRSYXRpbzogbnVtYmVyO1xuICAgIGhlaWdodFRvRm9udFNpemVSYXRpbzogbnVtYmVyO1xuICAgIHJlc3BvbnNpdmVWaWV3OiBib29sZWFuO1xuICAgIHJlc3BvbnNpdmVTaXplczogYm9vbGVhbjtcbiAgICBkcmFnQW5kRHJvcDogYm9vbGVhbjtcbiAgICByZXNpemFibGU6IGJvb2xlYW47XG4gICAgc2hyaW5rOiBib29sZWFuO1xuICAgIG1pbldpZHRoOiBudW1iZXI7XG4gICAgdXNlQ1NTVHJhbnNmb3JtczogYm9vbGVhbjtcblxuICAgIGRlZmF1bHRzOiBJR3JpZHN0ZXJPcHRpb25zID0ge1xuICAgICAgICBsYW5lczogNSxcbiAgICAgICAgZGlyZWN0aW9uOiAnaG9yaXpvbnRhbCcsXG4gICAgICAgIHdpZHRoSGVpZ2h0UmF0aW86IDEsXG4gICAgICAgIHNocmluazogZmFsc2UsXG4gICAgICAgIHJlc3BvbnNpdmVWaWV3OiB0cnVlLFxuICAgICAgICByZXNwb25zaXZlU2l6ZXM6IGZhbHNlLFxuICAgICAgICBkcmFnQW5kRHJvcDogdHJ1ZSxcbiAgICAgICAgcmVzaXphYmxlOiBmYWxzZSxcbiAgICAgICAgdXNlQ1NTVHJhbnNmb3JtczogZmFsc2UsXG4gICAgICAgIGZsb2F0aW5nOiB0cnVlLFxuICAgICAgICB0b2xlcmFuY2U6ICdwb2ludGVyJyxcbiAgICB9O1xuXG4gICAgY2hhbmdlOiBPYnNlcnZhYmxlPElHcmlkc3Rlck9wdGlvbnM+O1xuXG4gICAgcmVzcG9uc2l2ZU9wdGlvbnM6IEFycmF5PElHcmlkc3Rlck9wdGlvbnM+ID0gW107XG4gICAgYmFzaWNPcHRpb25zOiBJR3JpZHN0ZXJPcHRpb25zO1xuXG4gICAgYnJlYWtwb2ludHNNYXAgPSB7XG4gICAgICAgIHNtOiA1NzYsIC8vIFNtYWxsIGRldmljZXNcbiAgICAgICAgbWQ6IDc2OCwgLy8gTWVkaXVtIGRldmljZXNcbiAgICAgICAgbGc6IDk5MiwgLy8gTGFyZ2UgZGV2aWNlc1xuICAgICAgICB4bDogMTIwMCAvLyBFeHRyYSBsYXJnZVxuICAgIH07XG5cbiAgICBjb25zdHJ1Y3Rvcihjb25maWc6IElHcmlkc3Rlck9wdGlvbnMsIGVsZW1lbnQ6IEVsZW1lbnRSZWYpIHtcbiAgICAgICAgdGhpcy5iYXNpY09wdGlvbnMgPSBjb25maWc7XG5cbiAgICAgICAgdGhpcy5yZXNwb25zaXZlT3B0aW9ucyA9IHRoaXMuZXh0ZW5kUmVzcG9uc2l2ZU9wdGlvbnMoY29uZmlnLnJlc3BvbnNpdmVPcHRpb25zIHx8IFtdKTtcblxuICAgICAgICB0aGlzLmNoYW5nZSA9IG1lcmdlKFxuICAgICAgICAgICAgICAgIG9mKHRoaXMuZ2V0T3B0aW9uc0J5V2lkdGgoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoKSksXG4gICAgICAgICAgICAgICAgZnJvbUV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZShjb25maWcucmVzcG9uc2l2ZURlYm91bmNlIHx8IDApLFxuICAgICAgICAgICAgICAgICAgICBtYXAoKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldE9wdGlvbnNCeVdpZHRoKGVsZW1lbnQubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCk7XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKG51bGwsIChvcHRpb25zOiBhbnkpID0+IG9wdGlvbnMubWluV2lkdGgpKTtcbiAgICB9XG5cbiAgICBnZXRPcHRpb25zQnlXaWR0aCh3aWR0aDogbnVtYmVyKTogSUdyaWRzdGVyT3B0aW9ucyB7XG4gICAgICAgIGxldCBpID0gMDtcbiAgICAgICAgbGV0IG9wdGlvbnM6IElHcmlkc3Rlck9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmRlZmF1bHRzLCB0aGlzLmJhc2ljT3B0aW9ucyk7XG5cbiAgICAgICAgd2hpbGUgKHRoaXMucmVzcG9uc2l2ZU9wdGlvbnNbaV0pIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnJlc3BvbnNpdmVPcHRpb25zW2ldLm1pbldpZHRoIDw9IHdpZHRoKSB7XG4gICAgICAgICAgICAgICAgb3B0aW9ucyA9IHRoaXMucmVzcG9uc2l2ZU9wdGlvbnNbaV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpKys7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gb3B0aW9ucztcbiAgICB9XG5cbiAgICBwcml2YXRlIGV4dGVuZFJlc3BvbnNpdmVPcHRpb25zKHJlc3BvbnNpdmVPcHRpb25zOiBBcnJheTxJR3JpZHN0ZXJPcHRpb25zPik6IEFycmF5PElHcmlkc3Rlck9wdGlvbnM+IHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNpdmVPcHRpb25zXG4gICAgICAgICAgICAvLyByZXNwb25zaXZlIG9wdGlvbnMgYXJlIHZhbGlkIG9ubHkgd2l0aCBcImJyZWFrcG9pbnRcIiBwcm9wZXJ0eVxuICAgICAgICAgICAgLmZpbHRlcihvcHRpb25zID0+IG9wdGlvbnMuYnJlYWtwb2ludClcbiAgICAgICAgICAgIC8vIHNldCBkZWZhdWx0IG1pbldpZHRoIGlmIG5vdCBnaXZlblxuICAgICAgICAgICAgLm1hcCgob3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHtcbiAgICAgICAgICAgICAgICAgICAgbWluV2lkdGg6IHRoaXMuYnJlYWtwb2ludHNNYXBbb3B0aW9ucy5icmVha3BvaW50XSB8fCAwXG4gICAgICAgICAgICAgICAgfSwgb3B0aW9ucyk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLnNvcnQoKGN1cnIsIG5leHQpID0+IGN1cnIubWluV2lkdGggLSBuZXh0Lm1pbldpZHRoKVxuICAgICAgICAgICAgLm1hcCgob3B0aW9ucykgPT4gPElHcmlkc3Rlck9wdGlvbnM+T2JqZWN0LmFzc2lnbih7fSwgdGhpcy5kZWZhdWx0cywgdGhpcy5iYXNpY09wdGlvbnMsIG9wdGlvbnMpKTtcbiAgICB9XG59XG4iXX0=