@blare/angular2gridster
Version:
[](https://badge.fury.io/js/angular2gridster)
119 lines • 11.6 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';
var GridsterOptions = /** @class */ (function () {
function GridsterOptions(config, element) {
var _this = this;
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(function (event) {
return _this.getOptionsByWidth(element.nativeElement.offsetWidth);
}))).pipe(distinctUntilChanged(null, function (options) { return options.minWidth; }));
}
/**
* @param {?} width
* @return {?}
*/
GridsterOptions.prototype.getOptionsByWidth = /**
* @param {?} width
* @return {?}
*/
function (width) {
/** @type {?} */
var i = 0;
/** @type {?} */
var 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 {?}
*/
GridsterOptions.prototype.extendResponsiveOptions = /**
* @param {?} responsiveOptions
* @return {?}
*/
function (responsiveOptions) {
var _this = this;
return responsiveOptions
// responsive options are valid only with "breakpoint" property
.filter(function (options) { return options.breakpoint; })
// set default minWidth if not given
.map(function (options) {
return Object.assign({
minWidth: _this.breakpointsMap[options.breakpoint] || 0
}, options);
})
.sort(function (curr, next) { return curr.minWidth - next.minWidth; })
.map(function (options) { return (/** @type {?} */ (Object.assign({}, _this.defaults, _this.basicOptions, options))); });
};
return GridsterOptions;
}());
export { GridsterOptions };
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JpZHN0ZXJPcHRpb25zLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGJsYXJlL2FuZ3VsYXIyZ3JpZHN0ZXIvIiwic291cmNlcyI6WyJsaWIvR3JpZHN0ZXJPcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQWMsRUFBRSxFQUFFLFNBQVMsRUFBUSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUt6RTtJQXVDSSx5QkFBWSxNQUF3QixFQUFFLE9BQW1CO1FBQXpELGlCQWNDO1FBeENELGFBQVEsR0FBcUI7WUFDekIsS0FBSyxFQUFFLENBQUM7WUFDUixTQUFTLEVBQUUsWUFBWTtZQUN2QixnQkFBZ0IsRUFBRSxDQUFDO1lBQ25CLE1BQU0sRUFBRSxLQUFLO1lBQ2IsY0FBYyxFQUFFLElBQUk7WUFDcEIsZUFBZSxFQUFFLEtBQUs7WUFDdEIsV0FBVyxFQUFFLElBQUk7WUFDakIsU0FBUyxFQUFFLEtBQUs7WUFDaEIsZ0JBQWdCLEVBQUUsS0FBSztZQUN2QixRQUFRLEVBQUUsSUFBSTtZQUNkLFNBQVMsRUFBRSxTQUFTO1NBQ3ZCLENBQUM7UUFJRixzQkFBaUIsR0FBNEIsRUFBRSxDQUFDO1FBR2hELG1CQUFjLEdBQUc7WUFDYixFQUFFLEVBQUUsR0FBRzs7WUFDUCxFQUFFLEVBQUUsR0FBRzs7WUFDUCxFQUFFLEVBQUUsR0FBRzs7WUFDUCxFQUFFLEVBQUUsSUFBSSxDQUFDLGNBQWM7U0FDMUIsQ0FBQztRQUdFLElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDO1FBRTNCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsTUFBTSxDQUFDLGlCQUFpQixJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRXRGLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUNYLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUNoRSxTQUFTLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FDNUIsWUFBWSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsSUFBSSxDQUFDLENBQUMsRUFDNUMsR0FBRyxDQUFDLFVBQUMsS0FBWTtZQUNmLE9BQU8sS0FBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkUsQ0FBQyxDQUFDLENBQ0wsQ0FDSixDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsVUFBQyxPQUFZLElBQUssT0FBQSxPQUFPLENBQUMsUUFBUSxFQUFoQixDQUFnQixDQUFDLENBQUMsQ0FBQztJQUMvRSxDQUFDOzs7OztJQUVELDJDQUFpQjs7OztJQUFqQixVQUFrQixLQUFhOztZQUN2QixDQUFDLEdBQUcsQ0FBQzs7WUFDTCxPQUFPLEdBQXFCLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUVuRixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUM5QixJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLElBQUksS0FBSyxFQUFFO2dCQUM3QyxPQUFPLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3ZDO1lBQ0QsQ0FBQyxFQUFFLENBQUM7U0FDUDtRQUVELE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUM7Ozs7O0lBRU8saURBQXVCOzs7O0lBQS9CLFVBQWdDLGlCQUEwQztRQUExRSxpQkFZQztRQVhHLE9BQU8saUJBQWlCO1lBQ3BCLCtEQUErRDthQUM5RCxNQUFNLENBQUMsVUFBQSxPQUFPLElBQUksT0FBQSxPQUFPLENBQUMsVUFBVSxFQUFsQixDQUFrQixDQUFDO1lBQ3RDLG9DQUFvQzthQUNuQyxHQUFHLENBQUMsVUFBQyxPQUFPO1lBQ1QsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDO2dCQUNqQixRQUFRLEVBQUUsS0FBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQzthQUN6RCxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2hCLENBQUMsQ0FBQzthQUNELElBQUksQ0FBQyxVQUFDLElBQUksRUFBRSxJQUFJLElBQUssT0FBQSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQTdCLENBQTZCLENBQUM7YUFDbkQsR0FBRyxDQUFDLFVBQUMsT0FBTyxXQUFLLG1CQUFrQixNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxLQUFJLENBQUMsUUFBUSxFQUFFLEtBQUksQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLEVBQUEsR0FBQSxDQUFDLENBQUM7SUFDMUcsQ0FBQztJQUNMLHNCQUFDO0FBQUQsQ0FBQyxBQWxGRCxJQWtGQzs7OztJQWpGRyxvQ0FBa0I7O0lBQ2xCLGdDQUFjOztJQUNkLDJDQUF5Qjs7SUFDekIsZ0RBQThCOztJQUM5Qix5Q0FBd0I7O0lBQ3hCLDBDQUF5Qjs7SUFDekIsc0NBQXFCOztJQUNyQixvQ0FBbUI7O0lBQ25CLGlDQUFnQjs7SUFDaEIsbUNBQWlCOztJQUNqQiwyQ0FBMEI7O0lBRTFCLG1DQVlFOztJQUVGLGlDQUFxQzs7SUFFckMsNENBQWdEOztJQUNoRCx1Q0FBK0I7O0lBRS9CLHlDQUtFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIGZyb21FdmVudCwgcGlwZSwgbWVyZ2UgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgbWFwLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgSUdyaWRzdGVyT3B0aW9ucyB9IGZyb20gJy4vSUdyaWRzdGVyT3B0aW9ucyc7XG5pbXBvcnQge0VsZW1lbnRSZWZ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgY2xhc3MgR3JpZHN0ZXJPcHRpb25zIHtcbiAgICBkaXJlY3Rpb246IHN0cmluZztcbiAgICBsYW5lczogbnVtYmVyO1xuICAgIHdpZHRoSGVpZ2h0UmF0aW86IG51bWJlcjtcbiAgICBoZWlnaHRUb0ZvbnRTaXplUmF0aW86IG51bWJlcjtcbiAgICByZXNwb25zaXZlVmlldzogYm9vbGVhbjtcbiAgICByZXNwb25zaXZlU2l6ZXM6IGJvb2xlYW47XG4gICAgZHJhZ0FuZERyb3A6IGJvb2xlYW47XG4gICAgcmVzaXphYmxlOiBib29sZWFuO1xuICAgIHNocmluazogYm9vbGVhbjtcbiAgICBtaW5XaWR0aDogbnVtYmVyO1xuICAgIHVzZUNTU1RyYW5zZm9ybXM6IGJvb2xlYW47XG5cbiAgICBkZWZhdWx0czogSUdyaWRzdGVyT3B0aW9ucyA9IHtcbiAgICAgICAgbGFuZXM6IDUsXG4gICAgICAgIGRpcmVjdGlvbjogJ2hvcml6b250YWwnLFxuICAgICAgICB3aWR0aEhlaWdodFJhdGlvOiAxLFxuICAgICAgICBzaHJpbms6IGZhbHNlLFxuICAgICAgICByZXNwb25zaXZlVmlldzogdHJ1ZSxcbiAgICAgICAgcmVzcG9uc2l2ZVNpemVzOiBmYWxzZSxcbiAgICAgICAgZHJhZ0FuZERyb3A6IHRydWUsXG4gICAgICAgIHJlc2l6YWJsZTogZmFsc2UsXG4gICAgICAgIHVzZUNTU1RyYW5zZm9ybXM6IGZhbHNlLFxuICAgICAgICBmbG9hdGluZzogdHJ1ZSxcbiAgICAgICAgdG9sZXJhbmNlOiAncG9pbnRlcicsXG4gICAgfTtcblxuICAgIGNoYW5nZTogT2JzZXJ2YWJsZTxJR3JpZHN0ZXJPcHRpb25zPjtcblxuICAgIHJlc3BvbnNpdmVPcHRpb25zOiBBcnJheTxJR3JpZHN0ZXJPcHRpb25zPiA9IFtdO1xuICAgIGJhc2ljT3B0aW9uczogSUdyaWRzdGVyT3B0aW9ucztcblxuICAgIGJyZWFrcG9pbnRzTWFwID0ge1xuICAgICAgICBzbTogNTc2LCAvLyBTbWFsbCBkZXZpY2VzXG4gICAgICAgIG1kOiA3NjgsIC8vIE1lZGl1bSBkZXZpY2VzXG4gICAgICAgIGxnOiA5OTIsIC8vIExhcmdlIGRldmljZXNcbiAgICAgICAgeGw6IDEyMDAgLy8gRXh0cmEgbGFyZ2VcbiAgICB9O1xuXG4gICAgY29uc3RydWN0b3IoY29uZmlnOiBJR3JpZHN0ZXJPcHRpb25zLCBlbGVtZW50OiBFbGVtZW50UmVmKSB7XG4gICAgICAgIHRoaXMuYmFzaWNPcHRpb25zID0gY29uZmlnO1xuXG4gICAgICAgIHRoaXMucmVzcG9uc2l2ZU9wdGlvbnMgPSB0aGlzLmV4dGVuZFJlc3BvbnNpdmVPcHRpb25zKGNvbmZpZy5yZXNwb25zaXZlT3B0aW9ucyB8fCBbXSk7XG5cbiAgICAgICAgdGhpcy5jaGFuZ2UgPSBtZXJnZShcbiAgICAgICAgICAgICAgICBvZih0aGlzLmdldE9wdGlvbnNCeVdpZHRoKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCkpLFxuICAgICAgICAgICAgICAgIGZyb21FdmVudCh3aW5kb3csICdyZXNpemUnKS5waXBlKFxuICAgICAgICAgICAgICAgICAgICBkZWJvdW5jZVRpbWUoY29uZmlnLnJlc3BvbnNpdmVEZWJvdW5jZSB8fCAwKSxcbiAgICAgICAgICAgICAgICAgICAgbWFwKChldmVudDogRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRPcHRpb25zQnlXaWR0aChlbGVtZW50Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGgpO1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICkucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZChudWxsLCAob3B0aW9uczogYW55KSA9PiBvcHRpb25zLm1pbldpZHRoKSk7XG4gICAgfVxuXG4gICAgZ2V0T3B0aW9uc0J5V2lkdGgod2lkdGg6IG51bWJlcik6IElHcmlkc3Rlck9wdGlvbnMge1xuICAgICAgICBsZXQgaSA9IDA7XG4gICAgICAgIGxldCBvcHRpb25zOiBJR3JpZHN0ZXJPcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5kZWZhdWx0cywgdGhpcy5iYXNpY09wdGlvbnMpO1xuXG4gICAgICAgIHdoaWxlICh0aGlzLnJlc3BvbnNpdmVPcHRpb25zW2ldKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5yZXNwb25zaXZlT3B0aW9uc1tpXS5taW5XaWR0aCA8PSB3aWR0aCkge1xuICAgICAgICAgICAgICAgIG9wdGlvbnMgPSB0aGlzLnJlc3BvbnNpdmVPcHRpb25zW2ldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaSsrO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG9wdGlvbnM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBleHRlbmRSZXNwb25zaXZlT3B0aW9ucyhyZXNwb25zaXZlT3B0aW9uczogQXJyYXk8SUdyaWRzdGVyT3B0aW9ucz4pOiBBcnJheTxJR3JpZHN0ZXJPcHRpb25zPiB7XG4gICAgICAgIHJldHVybiByZXNwb25zaXZlT3B0aW9uc1xuICAgICAgICAgICAgLy8gcmVzcG9uc2l2ZSBvcHRpb25zIGFyZSB2YWxpZCBvbmx5IHdpdGggXCJicmVha3BvaW50XCIgcHJvcGVydHlcbiAgICAgICAgICAgIC5maWx0ZXIob3B0aW9ucyA9PiBvcHRpb25zLmJyZWFrcG9pbnQpXG4gICAgICAgICAgICAvLyBzZXQgZGVmYXVsdCBtaW5XaWR0aCBpZiBub3QgZ2l2ZW5cbiAgICAgICAgICAgIC5tYXAoKG9wdGlvbnMpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7XG4gICAgICAgICAgICAgICAgICAgIG1pbldpZHRoOiB0aGlzLmJyZWFrcG9pbnRzTWFwW29wdGlvbnMuYnJlYWtwb2ludF0gfHwgMFxuICAgICAgICAgICAgICAgIH0sIG9wdGlvbnMpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5zb3J0KChjdXJyLCBuZXh0KSA9PiBjdXJyLm1pbldpZHRoIC0gbmV4dC5taW5XaWR0aClcbiAgICAgICAgICAgIC5tYXAoKG9wdGlvbnMpID0+IDxJR3JpZHN0ZXJPcHRpb25zPk9iamVjdC5hc3NpZ24oe30sIHRoaXMuZGVmYXVsdHMsIHRoaXMuYmFzaWNPcHRpb25zLCBvcHRpb25zKSk7XG4gICAgfVxufVxuIl19