@blare/angular2gridster
Version:
[](https://badge.fury.io/js/angular2gridster)
111 lines • 11.1 kB
JavaScript
/**
* @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=