ember-material-icons
Version:
Google Material icons for your ember-cli app
50 lines (38 loc) • 1.01 kB
text/typescript
import { Option, Dict, dict, HAS_NATIVE_WEAKMAP } from '@glimmer/util';
export const EMPTY_ARRAY = HAS_NATIVE_WEAKMAP ? Object.freeze([]) : [];
export const EMPTY_DICT: Dict<any> = HAS_NATIVE_WEAKMAP ? Object.freeze(dict<any>()) : dict<any>();
export interface EnumerableCallback<T> {
(item: T): void;
}
export interface Enumerable<T> {
forEach(callback: EnumerableCallback<T>): void;
}
export interface Destroyable {
destroy(): void;
}
export interface Range<T> {
min(): number;
max(): number;
at(index: number): Option<T>;
}
export class ListRange<T> implements Range<T> {
private list: T[];
// [start, end]
private start: number;
private end: number;
constructor(list: T[], start: number, end: number) {
this.list = list;
this.start = start;
this.end = end;
}
at(index: number): Option<T> {
if (index >= this.list.length) return null;
return this.list[index];
}
min(): number {
return this.start;
}
max(): number {
return this.end;
}
}