sb-element
Version:
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 12.0.1. It is a component library constructed around the SCSS library [Sb-Theming](https://github.com/SeverinBuchser/SbTheming) and supports [Angular Schematics]
67 lines • 5.53 kB
JavaScript
/**
* A queue class with basic queue operations.
*
* The queue class handles dequeuing and enqueuing of elements, as well as
* length management. The [dequeue]{@link #dequeue} method checks for an empty
* queue, but does not produce an error if the queue is empty. Instead it
* returns `undefinded`.
*/
export class Queue {
constructor() {
/**
* The actual queue, which holds the elements.
*/
this.queue = new Array();
}
/**
* Enqueues an element into the `Queue`.
*
* It appends an element to the [queue]{@link #queue} `Array`.
*
* @param{T} value The element to add to the `Queue`
*/
enqueue(value) {
this.queue.push(value);
}
/**
* Removes (dequeues) the next element in the `Queue`.
*
* The next element is the first element of the [queue]{@link #queue} `Array`.
* The method therefore gets the first element of this `Array` and shifts the
* `Array` by one to the left.
*
* If the `Queue` is empty (the [queue]{@link #queue} `Array` is empty), the
* method will return `undefined` instead of throwing an error.
*
* @returns{T | undefined} The first element in the queue or `undefined` if the
* `Queue` is empty
*/
dequeue() {
if (!this.isEmpty()) {
return this.queue.shift();
}
else
return undefined;
}
/**
* Gets the current length of the `Queue`.
*
* The method returns the length of the [queue]{@link #queue} `Array`.
*
* @returns{number} The length of the `Queue`
*/
get length() {
return this.queue.length;
}
/**
* Checks if the `Queue` is empty or not.
*
* The `Queue` if the [queue]{@link #queue} `Array` is empty.
*
* @returns{boolean} `true` if the queue is empty or `false` otherwise
*/
isEmpty() {
return this.queue.length == 0;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVldWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zYi1lbGVtZW50L3NyYy9saWIvbW9kZWxzL3F1ZXVlL3F1ZXVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLE9BQU8sS0FBSztJQUFsQjtRQUNFOztXQUVHO1FBQ0ssVUFBSyxHQUFhLElBQUksS0FBSyxFQUFLLENBQUM7SUFzRDNDLENBQUM7SUFwREM7Ozs7OztPQU1HO0lBQ0ksT0FBTyxDQUFDLEtBQVE7UUFDckIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7T0FZRztJQUNJLE9BQU87UUFDWixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ25CLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUMzQjs7WUFBTSxPQUFPLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztJQUMzQixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksT0FBTztRQUNaLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDO0lBQ2hDLENBQUM7Q0FFRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQSBxdWV1ZSBjbGFzcyB3aXRoIGJhc2ljIHF1ZXVlIG9wZXJhdGlvbnMuXG4gKlxuICogVGhlIHF1ZXVlIGNsYXNzIGhhbmRsZXMgZGVxdWV1aW5nIGFuZCBlbnF1ZXVpbmcgb2YgZWxlbWVudHMsIGFzIHdlbGwgYXNcbiAqIGxlbmd0aCBtYW5hZ2VtZW50LiBUaGUgW2RlcXVldWVde0BsaW5rICNkZXF1ZXVlfSBtZXRob2QgY2hlY2tzIGZvciBhbiBlbXB0eVxuICogcXVldWUsIGJ1dCBkb2VzIG5vdCBwcm9kdWNlIGFuIGVycm9yIGlmIHRoZSBxdWV1ZSBpcyBlbXB0eS4gSW5zdGVhZCBpdFxuICogcmV0dXJucyBgdW5kZWZpbmRlZGAuXG4gKi9cbmV4cG9ydCBjbGFzcyBRdWV1ZTxUPiB7XG4gIC8qKlxuICAgKiBUaGUgYWN0dWFsIHF1ZXVlLCB3aGljaCBob2xkcyB0aGUgZWxlbWVudHMuXG4gICAqL1xuICBwcml2YXRlIHF1ZXVlOiBBcnJheTxUPiA9IG5ldyBBcnJheTxUPigpO1xuXG4gIC8qKlxuICAgKiBFbnF1ZXVlcyBhbiBlbGVtZW50IGludG8gdGhlIGBRdWV1ZWAuXG4gICAqXG4gICAqIEl0IGFwcGVuZHMgYW4gZWxlbWVudCB0byB0aGUgW3F1ZXVlXXtAbGluayAjcXVldWV9IGBBcnJheWAuXG4gICAqXG4gICAqICBAcGFyYW17VH0gdmFsdWUgVGhlIGVsZW1lbnQgdG8gYWRkIHRvIHRoZSBgUXVldWVgXG4gICAqL1xuICBwdWJsaWMgZW5xdWV1ZSh2YWx1ZTogVCk6IHZvaWQge1xuICAgIHRoaXMucXVldWUucHVzaCh2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyAoZGVxdWV1ZXMpIHRoZSBuZXh0IGVsZW1lbnQgaW4gdGhlIGBRdWV1ZWAuXG4gICAqXG4gICAqIFRoZSBuZXh0IGVsZW1lbnQgaXMgdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlIFtxdWV1ZV17QGxpbmsgI3F1ZXVlfSBgQXJyYXlgLlxuICAgKiBUaGUgbWV0aG9kIHRoZXJlZm9yZSBnZXRzIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoaXMgYEFycmF5YCBhbmQgc2hpZnRzIHRoZVxuICAgKiBgQXJyYXlgIGJ5IG9uZSB0byB0aGUgbGVmdC5cbiAgICpcbiAgICogSWYgdGhlIGBRdWV1ZWAgaXMgZW1wdHkgKHRoZSBbcXVldWVde0BsaW5rICNxdWV1ZX0gYEFycmF5YCBpcyBlbXB0eSksIHRoZVxuICAgKiBtZXRob2Qgd2lsbCByZXR1cm4gYHVuZGVmaW5lZGAgaW5zdGVhZCBvZiB0aHJvd2luZyBhbiBlcnJvci5cbiAgICpcbiAgICogQHJldHVybnN7VCB8IHVuZGVmaW5lZH0gVGhlIGZpcnN0IGVsZW1lbnQgaW4gdGhlIHF1ZXVlIG9yIGB1bmRlZmluZWRgIGlmIHRoZVxuICAgKiBgUXVldWVgIGlzIGVtcHR5XG4gICAqL1xuICBwdWJsaWMgZGVxdWV1ZSgpOiBUIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIXRoaXMuaXNFbXB0eSgpKSB7XG4gICAgICByZXR1cm4gdGhpcy5xdWV1ZS5zaGlmdCgpO1xuICAgIH0gZWxzZSByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGN1cnJlbnQgbGVuZ3RoIG9mIHRoZSBgUXVldWVgLlxuICAgKlxuICAgKiBUaGUgbWV0aG9kIHJldHVybnMgdGhlIGxlbmd0aCBvZiB0aGUgW3F1ZXVlXXtAbGluayAjcXVldWV9IGBBcnJheWAuXG4gICAqXG4gICAqIEByZXR1cm5ze251bWJlcn0gVGhlIGxlbmd0aCBvZiB0aGUgYFF1ZXVlYFxuICAgKi9cbiAgZ2V0IGxlbmd0aCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnF1ZXVlLmxlbmd0aDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIGBRdWV1ZWAgaXMgZW1wdHkgb3Igbm90LlxuICAgKlxuICAgKiBUaGUgYFF1ZXVlYCBpZiB0aGUgW3F1ZXVlXXtAbGluayAjcXVldWV9IGBBcnJheWAgaXMgZW1wdHkuXG4gICAqXG4gICAqIEByZXR1cm5ze2Jvb2xlYW59IGB0cnVlYCBpZiB0aGUgcXVldWUgaXMgZW1wdHkgb3IgYGZhbHNlYCBvdGhlcndpc2VcbiAgICovXG4gIHB1YmxpYyBpc0VtcHR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnF1ZXVlLmxlbmd0aCA9PSAwO1xuICB9XG5cbn1cbiJdfQ==