UNPKG

@rybos/angular2gridster

Version:

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

62 lines 10.8 kB
import { of, fromEvent, merge } from 'rxjs'; import { debounceTime, map, distinctUntilChanged } from 'rxjs/operators'; export class GridsterOptions { constructor(config, gridsterElement) { this.defaults = { lanes: 5, direction: 'horizontal', widthHeightRatio: 1, shrink: false, responsiveView: true, responsiveSizes: false, responsiveToParent: false, dragAndDrop: true, resizable: false, useCSSTransforms: false, floating: true, tolerance: 'pointer' }; this.responsiveOptions = []; this.breakpointsMap = { sm: 576, md: 768, lg: 992, xl: 1200 // Extra large }; const responsiveContainer = config.responsiveToParent ? gridsterElement : window; this.basicOptions = config; this.responsiveOptions = this.extendResponsiveOptions(config.responsiveOptions || []); this.change = merge(of(this.getOptionsByWidth(this.getElementWidth(responsiveContainer))), fromEvent(window, 'resize').pipe(debounceTime(config.responsiveDebounce || 0), map((event) => this.getOptionsByWidth(this.getElementWidth(responsiveContainer))))).pipe(distinctUntilChanged(null, (options) => options.minWidth)); } getOptionsByWidth(width) { let i = 0; 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; } 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) => Object.assign({}, this.defaults, this.basicOptions, options)); } getElementWidth($element) { if ($element === window) { return window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; } return $element.clientWidth; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JpZHN0ZXJPcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhcjJncmlkc3Rlci9zcmMvbGliL0dyaWRzdGVyT3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsRUFBRSxFQUFFLFNBQVMsRUFBUSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUl6RSxNQUFNLE9BQU8sZUFBZTtJQXlDeEIsWUFBWSxNQUF3QixFQUFFLGVBQTRCO1FBM0JsRSxhQUFRLEdBQXFCO1lBQ3pCLEtBQUssRUFBRSxDQUFDO1lBQ1IsU0FBUyxFQUFFLFlBQVk7WUFDdkIsZ0JBQWdCLEVBQUUsQ0FBQztZQUNuQixNQUFNLEVBQUUsS0FBSztZQUNiLGNBQWMsRUFBRSxJQUFJO1lBQ3BCLGVBQWUsRUFBRSxLQUFLO1lBQ3RCLGtCQUFrQixFQUFFLEtBQUs7WUFDekIsV0FBVyxFQUFFLElBQUk7WUFDakIsU0FBUyxFQUFFLEtBQUs7WUFDaEIsZ0JBQWdCLEVBQUUsS0FBSztZQUN2QixRQUFRLEVBQUUsSUFBSTtZQUNkLFNBQVMsRUFBRSxTQUFTO1NBQ3ZCLENBQUM7UUFJRixzQkFBaUIsR0FBNEIsRUFBRSxDQUFDO1FBR2hELG1CQUFjLEdBQUc7WUFDYixFQUFFLEVBQUUsR0FBRztZQUNQLEVBQUUsRUFBRSxHQUFHO1lBQ1AsRUFBRSxFQUFFLEdBQUc7WUFDUCxFQUFFLEVBQUUsSUFBSSxDQUFDLGNBQWM7U0FDMUIsQ0FBQztRQUdFLE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUVqRixJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQztRQUMzQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUV0RixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FDWCxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLEVBQ3JFLFNBQVMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUM1QixZQUFZLENBQUMsTUFBTSxDQUFDLGtCQUFrQixJQUFJLENBQUMsQ0FBQyxFQUM1QyxHQUFHLENBQUMsQ0FBQyxLQUFZLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUMzRixDQUNKLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksRUFBRSxDQUFDLE9BQVksRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUVELGlCQUFpQixDQUFDLEtBQWE7UUFDM0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ1YsSUFBSSxPQUFPLEdBQXFCLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRXBGLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQzlCLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsSUFBSSxLQUFLLEVBQUU7Z0JBQzdDLE9BQU8sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDdkM7WUFDRCxDQUFDLEVBQUUsQ0FBQztTQUNQO1FBRUQsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQztJQUVPLHVCQUF1QixDQUFDLGlCQUEwQztRQUN0RSxPQUFPLGlCQUFpQjtZQUNwQiwrREFBK0Q7YUFDOUQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQztZQUN0QyxvQ0FBb0M7YUFDbkMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDYixPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUM7Z0JBQ2pCLFFBQVEsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO2FBQ3pELEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDaEIsQ0FBQyxDQUFDO2FBQ0QsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO2FBQ25ELEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQW1CLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzFHLENBQUM7SUFFTyxlQUFlLENBQUMsUUFBYTtRQUNqQyxJQUFJLFFBQVEsS0FBSyxNQUFNLEVBQUU7WUFDckIsT0FBTyxNQUFNLENBQUMsVUFBVSxJQUFJLFFBQVEsQ0FBQyxlQUFlLENBQUMsV0FBVyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO1NBQ2pHO1FBRUQsT0FBTyxRQUFRLENBQUMsV0FBVyxDQUFDO0lBQ2hDLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUsIG9mLCBmcm9tRXZlbnQsIHBpcGUsIG1lcmdlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgbWFwLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IElHcmlkc3Rlck9wdGlvbnMgfSBmcm9tICcuL0lHcmlkc3Rlck9wdGlvbnMnO1xyXG5cclxuZXhwb3J0IGNsYXNzIEdyaWRzdGVyT3B0aW9ucyB7XHJcbiAgICBkaXJlY3Rpb246IHN0cmluZztcclxuICAgIGxhbmVzOiBudW1iZXI7XHJcbiAgICB3aWR0aEhlaWdodFJhdGlvOiBudW1iZXI7XHJcbiAgICBoZWlnaHRUb0ZvbnRTaXplUmF0aW86IG51bWJlcjtcclxuICAgIHJlc3BvbnNpdmVWaWV3OiBib29sZWFuO1xyXG4gICAgcmVzcG9uc2l2ZVNpemVzOiBib29sZWFuO1xyXG4gICAgcmVzcG9uc2l2ZVRvUGFyZW50OiBib29sZWFuO1xyXG4gICAgZHJhZ0FuZERyb3A6IGJvb2xlYW47XHJcbiAgICByZXNpemFibGU6IGJvb2xlYW47XHJcbiAgICBzaHJpbms6IGJvb2xlYW47XHJcbiAgICBtaW5XaWR0aDogbnVtYmVyO1xyXG4gICAgdXNlQ1NTVHJhbnNmb3JtczogYm9vbGVhbjtcclxuXHJcbiAgICBkZWZhdWx0czogSUdyaWRzdGVyT3B0aW9ucyA9IHtcclxuICAgICAgICBsYW5lczogNSxcclxuICAgICAgICBkaXJlY3Rpb246ICdob3Jpem9udGFsJyxcclxuICAgICAgICB3aWR0aEhlaWdodFJhdGlvOiAxLFxyXG4gICAgICAgIHNocmluazogZmFsc2UsXHJcbiAgICAgICAgcmVzcG9uc2l2ZVZpZXc6IHRydWUsXHJcbiAgICAgICAgcmVzcG9uc2l2ZVNpemVzOiBmYWxzZSxcclxuICAgICAgICByZXNwb25zaXZlVG9QYXJlbnQ6IGZhbHNlLFxyXG4gICAgICAgIGRyYWdBbmREcm9wOiB0cnVlLFxyXG4gICAgICAgIHJlc2l6YWJsZTogZmFsc2UsXHJcbiAgICAgICAgdXNlQ1NTVHJhbnNmb3JtczogZmFsc2UsXHJcbiAgICAgICAgZmxvYXRpbmc6IHRydWUsXHJcbiAgICAgICAgdG9sZXJhbmNlOiAncG9pbnRlcidcclxuICAgIH07XHJcblxyXG4gICAgY2hhbmdlOiBPYnNlcnZhYmxlPElHcmlkc3Rlck9wdGlvbnM+O1xyXG5cclxuICAgIHJlc3BvbnNpdmVPcHRpb25zOiBBcnJheTxJR3JpZHN0ZXJPcHRpb25zPiA9IFtdO1xyXG4gICAgYmFzaWNPcHRpb25zOiBJR3JpZHN0ZXJPcHRpb25zO1xyXG5cclxuICAgIGJyZWFrcG9pbnRzTWFwID0ge1xyXG4gICAgICAgIHNtOiA1NzYsIC8vIFNtYWxsIGRldmljZXNcclxuICAgICAgICBtZDogNzY4LCAvLyBNZWRpdW0gZGV2aWNlc1xyXG4gICAgICAgIGxnOiA5OTIsIC8vIExhcmdlIGRldmljZXNcclxuICAgICAgICB4bDogMTIwMCAvLyBFeHRyYSBsYXJnZVxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihjb25maWc6IElHcmlkc3Rlck9wdGlvbnMsIGdyaWRzdGVyRWxlbWVudDogSFRNTEVsZW1lbnQpIHtcclxuICAgICAgICBjb25zdCByZXNwb25zaXZlQ29udGFpbmVyID0gY29uZmlnLnJlc3BvbnNpdmVUb1BhcmVudCA/IGdyaWRzdGVyRWxlbWVudCA6IHdpbmRvdztcclxuXHJcbiAgICAgICAgdGhpcy5iYXNpY09wdGlvbnMgPSBjb25maWc7XHJcbiAgICAgICAgdGhpcy5yZXNwb25zaXZlT3B0aW9ucyA9IHRoaXMuZXh0ZW5kUmVzcG9uc2l2ZU9wdGlvbnMoY29uZmlnLnJlc3BvbnNpdmVPcHRpb25zIHx8IFtdKTtcclxuXHJcbiAgICAgICAgdGhpcy5jaGFuZ2UgPSBtZXJnZShcclxuICAgICAgICAgICAgICAgIG9mKHRoaXMuZ2V0T3B0aW9uc0J5V2lkdGgodGhpcy5nZXRFbGVtZW50V2lkdGgocmVzcG9uc2l2ZUNvbnRhaW5lcikpKSxcclxuICAgICAgICAgICAgICAgIGZyb21FdmVudCh3aW5kb3csICdyZXNpemUnKS5waXBlKFxyXG4gICAgICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZShjb25maWcucmVzcG9uc2l2ZURlYm91bmNlIHx8IDApLFxyXG4gICAgICAgICAgICAgICAgICAgIG1hcCgoZXZlbnQ6IEV2ZW50KSA9PiB0aGlzLmdldE9wdGlvbnNCeVdpZHRoKHRoaXMuZ2V0RWxlbWVudFdpZHRoKHJlc3BvbnNpdmVDb250YWluZXIpKSlcclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgKS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKG51bGwsIChvcHRpb25zOiBhbnkpID0+IG9wdGlvbnMubWluV2lkdGgpKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRPcHRpb25zQnlXaWR0aCh3aWR0aDogbnVtYmVyKTogSUdyaWRzdGVyT3B0aW9ucyB7XHJcbiAgICAgICAgbGV0IGkgPSAwO1xyXG4gICAgICAgIGxldCBvcHRpb25zOiBJR3JpZHN0ZXJPcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5kZWZhdWx0cywgdGhpcy5iYXNpY09wdGlvbnMpO1xyXG5cclxuICAgICAgICB3aGlsZSAodGhpcy5yZXNwb25zaXZlT3B0aW9uc1tpXSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5yZXNwb25zaXZlT3B0aW9uc1tpXS5taW5XaWR0aCA8PSB3aWR0aCkge1xyXG4gICAgICAgICAgICAgICAgb3B0aW9ucyA9IHRoaXMucmVzcG9uc2l2ZU9wdGlvbnNbaV07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaSsrO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIG9wdGlvbnM7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBleHRlbmRSZXNwb25zaXZlT3B0aW9ucyhyZXNwb25zaXZlT3B0aW9uczogQXJyYXk8SUdyaWRzdGVyT3B0aW9ucz4pOiBBcnJheTxJR3JpZHN0ZXJPcHRpb25zPiB7XHJcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNpdmVPcHRpb25zXHJcbiAgICAgICAgICAgIC8vIHJlc3BvbnNpdmUgb3B0aW9ucyBhcmUgdmFsaWQgb25seSB3aXRoIFwiYnJlYWtwb2ludFwiIHByb3BlcnR5XHJcbiAgICAgICAgICAgIC5maWx0ZXIob3B0aW9ucyA9PiBvcHRpb25zLmJyZWFrcG9pbnQpXHJcbiAgICAgICAgICAgIC8vIHNldCBkZWZhdWx0IG1pbldpZHRoIGlmIG5vdCBnaXZlblxyXG4gICAgICAgICAgICAubWFwKChvcHRpb25zKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7XHJcbiAgICAgICAgICAgICAgICAgICAgbWluV2lkdGg6IHRoaXMuYnJlYWtwb2ludHNNYXBbb3B0aW9ucy5icmVha3BvaW50XSB8fCAwXHJcbiAgICAgICAgICAgICAgICB9LCBvcHRpb25zKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLnNvcnQoKGN1cnIsIG5leHQpID0+IGN1cnIubWluV2lkdGggLSBuZXh0Lm1pbldpZHRoKVxyXG4gICAgICAgICAgICAubWFwKChvcHRpb25zKSA9PiA8SUdyaWRzdGVyT3B0aW9ucz5PYmplY3QuYXNzaWduKHt9LCB0aGlzLmRlZmF1bHRzLCB0aGlzLmJhc2ljT3B0aW9ucywgb3B0aW9ucykpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0RWxlbWVudFdpZHRoKCRlbGVtZW50OiBhbnkpIHtcclxuICAgICAgICBpZiAoJGVsZW1lbnQgPT09IHdpbmRvdykge1xyXG4gICAgICAgICAgICByZXR1cm4gd2luZG93LmlubmVyV2lkdGggfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoIHx8IGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGg7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gJGVsZW1lbnQuY2xpZW50V2lkdGg7XHJcbiAgICB9XHJcbn1cclxuIl19