UNPKG

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]

109 lines 10.5 kB
import { NullListItem } from "./list-item"; export class LinkedList { constructor(valueOrValues) { this._start = new NullListItem(); this._end = new NullListItem(); this.current = this._start; this._length = 0; this._start.insertNext(this._end); if (valueOrValues) { if (Array.isArray(valueOrValues)) { this.append(valueOrValues); } else { this.append(valueOrValues); } } } get start() { return this._start; } ; get first() { if (this._start.next) { return this._start.next; } return new NullListItem(); } ; get end() { return this._end; } ; get last() { if (this._end.previous) { return this._end.previous; } return new NullListItem(); } ; get length() { return this._length; } ; append(valueOrValues) { if (Array.isArray(valueOrValues)) { valueOrValues.forEach((value) => this.appendValue(value)); } else { this.appendValue(valueOrValues); } } appendValue(value) { this._end.insertPrevious(value); this._length++; } getItem(index) { if (index < 0 || index >= this._length) { throw new RangeError(`Index ${index} is out of bounds!`); } let current = this._start; for (let i = 0; i < index + 1; i++) { if (current.next) { current = current.next; } } return current; } getValue(index) { return this.getItem(index).value; } indexOf(finder) { let index = 0; for (let value of this) { if (finder(value)) { return index; } ; index++; } return -1; } find(finder) { for (let value of this) { if (finder(value)) { return value; } ; } return undefined; } isStart(item) { return this._start == item; } isEnd(item) { return this._end == item; } [Symbol.iterator]() { return this; } next() { if (this.current.next) { this.current = this.current.next; } let result = { done: false, value: this.current.value }; if (this.current == this._end) { this.current = this._start; return { done: true, value: undefined }; } return result; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlua2VkLWxpc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zYi1lbGVtZW50L3NyYy9saWIvbW9kZWxzL2xpbmtlZC1saXN0L2xpbmtlZC1saXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBWSxZQUFZLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFckQsTUFBTSxPQUFPLFVBQVU7SUFvQnJCLFlBQVksYUFBNEI7UUFuQmhDLFdBQU0sR0FBZ0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQU16QyxTQUFJLEdBQWdCLElBQUksWUFBWSxFQUFFLENBQUM7UUFPdkMsWUFBTyxHQUFnQixJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ25DLFlBQU8sR0FBVyxDQUFDLENBQUM7UUFNMUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xDLElBQUksYUFBYSxFQUFFO1lBQ2pCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsRUFBRTtnQkFDaEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQzthQUM1QjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2FBQzVCO1NBQ0Y7SUFDSCxDQUFDO0lBM0JELElBQUksS0FBSyxLQUFpQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQSxDQUFDO0lBQUEsQ0FBQztJQUMvQyxJQUFJLEtBQUs7UUFDUCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFO1lBQUMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztTQUFDO1FBQ2hELE9BQU8sSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBQUEsQ0FBQztJQUVGLElBQUksR0FBRyxLQUFpQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFDO0lB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QUMsS0FBSztTQUMxQixDQUFDO1FBRUYsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDN0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQzNCLE9BQU8sRUFBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUMsQ0FBQztTQUN2QztRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7Q0FFRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExpc3RJdGVtLCBOdWxsTGlzdEl0ZW0gfSBmcm9tIFwiLi9saXN0LWl0ZW1cIjtcblxuZXhwb3J0IGNsYXNzIExpbmtlZExpc3Q8VD4gaW1wbGVtZW50cyBJdGVyYWJsZTxUPiwgSXRlcmF0b3I8VD4ge1xuICBwcml2YXRlIF9zdGFydDogTGlzdEl0ZW08VD4gPSBuZXcgTnVsbExpc3RJdGVtKCk7XG4gIGdldCBzdGFydCgpOiBMaXN0SXRlbTxUPiB7cmV0dXJuIHRoaXMuX3N0YXJ0O307XG4gIGdldCBmaXJzdCgpOiBMaXN0SXRlbTxUPiB7XG4gICAgaWYgKHRoaXMuX3N0YXJ0Lm5leHQpIHtyZXR1cm4gdGhpcy5fc3RhcnQubmV4dDt9XG4gICAgcmV0dXJuIG5ldyBOdWxsTGlzdEl0ZW0oKTtcbiAgfTtcbiAgcHJpdmF0ZSBfZW5kOiBMaXN0SXRlbTxUPiA9IG5ldyBOdWxsTGlzdEl0ZW0oKTtcbiAgZ2V0IGVuZCgpOiBMaXN0SXRlbTxUPiB7cmV0dXJuIHRoaXMuX2VuZDt9O1xuICBnZXQgbGFzdCgpOiBMaXN0SXRlbTxUPiB7XG4gICAgaWYgKHRoaXMuX2VuZC5wcmV2aW91cykge3JldHVybiB0aGlzLl9lbmQucHJldmlvdXM7fVxuICAgIHJldHVybiBuZXcgTnVsbExpc3RJdGVtKCk7XG4gIH07XG5cbiAgcHJpdmF0ZSBjdXJyZW50OiBMaXN0SXRlbTxUPiA9IHRoaXMuX3N0YXJ0O1xuICBwcml2YXRlIF9sZW5ndGg6IG51bWJlciA9IDA7XG4gIGdldCBsZW5ndGgoKTogbnVtYmVyIHtyZXR1cm4gdGhpcy5fbGVuZ3RofTtcblxuICBjb25zdHJ1Y3Rvcih2YWx1ZXM/OiBBcnJheTxUPik7XG4gIGNvbnN0cnVjdG9yKHZhbHVlPzogVCk7XG4gIGNvbnN0cnVjdG9yKHZhbHVlT3JWYWx1ZXM/OiBUIHwgQXJyYXk8VD4pIHtcbiAgICB0aGlzLl9zdGFydC5pbnNlcnROZXh0KHRoaXMuX2VuZCk7XG4gICAgaWYgKHZhbHVlT3JWYWx1ZXMpIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlT3JWYWx1ZXMpKSB7XG4gICAgICAgIHRoaXMuYXBwZW5kKHZhbHVlT3JWYWx1ZXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5hcHBlbmQodmFsdWVPclZhbHVlcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFwcGVuZCh2YWx1ZXM6IEFycmF5PFQ+KTogdm9pZDtcbiAgcHVibGljIGFwcGVuZCh2YWx1ZTogVCk6IHZvaWQ7XG4gIHB1YmxpYyBhcHBlbmQodmFsdWVPclZhbHVlczogVCB8IEFycmF5PFQ+KTogdm9pZCB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWVPclZhbHVlcykpIHtcbiAgICAgIHZhbHVlT3JWYWx1ZXMuZm9yRWFjaCgodmFsdWU6IFQpID0+IHRoaXMuYXBwZW5kVmFsdWUodmFsdWUpKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFwcGVuZFZhbHVlKHZhbHVlT3JWYWx1ZXMpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXBwZW5kVmFsdWUodmFsdWU6IFQpOiB2b2lkIHtcbiAgICB0aGlzLl9lbmQuaW5zZXJ0UHJldmlvdXModmFsdWUpO1xuICAgIHRoaXMuX2xlbmd0aCsrO1xuICB9XG5cbiAgcHVibGljIGdldEl0ZW0oaW5kZXg6IG51bWJlcik6IExpc3RJdGVtPFQ+IHtcbiAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IHRoaXMuX2xlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoYEluZGV4ICR7aW5kZXh9IGlzIG91dCBvZiBib3VuZHMhYCk7XG4gICAgfVxuICAgIGxldCBjdXJyZW50ID0gdGhpcy5fc3RhcnQ7XG4gICAgZm9yIChsZXQgaSA9IDAgOyBpIDwgaW5kZXggKyAxIDsgaSsrKSB7XG4gICAgICBpZiAoY3VycmVudC5uZXh0KSB7Y3VycmVudCA9IGN1cnJlbnQubmV4dDt9XG4gICAgfVxuICAgIHJldHVybiBjdXJyZW50O1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlKGluZGV4OiBudW1iZXIpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5nZXRJdGVtKGluZGV4KS52YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBpbmRleE9mKGZpbmRlcjogKHZhbHVlOiBUKSA9PiBib29sZWFuKTogbnVtYmVyIHtcbiAgICBsZXQgaW5kZXggPSAwO1xuICAgIGZvciAobGV0IHZhbHVlIG9mIHRoaXMpIHtcbiAgICAgIGlmIChmaW5kZXIodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBpbmRleDtcbiAgICAgIH07XG4gICAgICBpbmRleCsrO1xuICAgIH1cbiAgICByZXR1cm4gLTE7XG4gIH1cblxuICBwdWJsaWMgZmluZChmaW5kZXI6ICh2YWx1ZTogVCkgPT4gYm9vbGVhbik6IFQgfCB1bmRlZmluZWQge1xuICAgIGZvciAobGV0IHZhbHVlIG9mIHRoaXMpIHtcbiAgICAgIGlmIChmaW5kZXIodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBwdWJsaWMgaXNTdGFydChpdGVtOiBMaXN0SXRlbTxUPik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9zdGFydCA9PSBpdGVtO1xuICB9XG5cbiAgcHVibGljIGlzRW5kKGl0ZW06IExpc3RJdGVtPFQ+KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2VuZCA9PSBpdGVtO1xuICB9XG5cbiAgW1N5bWJvbC5pdGVyYXRvcl0oKTogSXRlcmF0b3I8VD4ge1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgbmV4dCgpOiBJdGVyYXRvclJlc3VsdDxUPiB7XG4gICAgaWYgKHRoaXMuY3VycmVudC5uZXh0KSB7dGhpcy5jdXJyZW50ID0gdGhpcy5jdXJyZW50Lm5leHQ7fVxuXG4gICAgbGV0IHJlc3VsdDogSXRlcmF0b3JSZXN1bHQ8VD4gPSB7XG4gICAgICBkb25lOiBmYWxzZSxcbiAgICAgIHZhbHVlOiB0aGlzLmN1cnJlbnQudmFsdWVcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMuY3VycmVudCA9PSB0aGlzLl9lbmQpIHtcbiAgICAgIHRoaXMuY3VycmVudCA9IHRoaXMuX3N0YXJ0O1xuICAgICAgcmV0dXJuIHtkb25lOiB0cnVlLCB2YWx1ZTogdW5kZWZpbmVkfTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbn1cbiJdfQ==