+++ /dev/null
-/**
- * Copyright (c) 2018 The xterm.js authors. All rights reserved.
- * @license MIT
- */
-
-export type TypedArray = Uint8Array | Uint16Array | Uint32Array | Uint8ClampedArray
- | Int8Array | Int16Array | Int32Array
- | Float32Array | Float64Array;
-
-
-/**
- * polyfill for TypedArray.fill
- * This is needed to support .fill in all safari versions and IE 11.
- */
-export function fill<T extends TypedArray>(array: T, value: number, start?: number, end?: number): T {
- // all modern engines that support .fill
- if (array.fill) {
- return array.fill(value, start, end) as T;
- }
- return fillFallback(array, value, start, end);
-}
-
-export function fillFallback<T extends TypedArray>(array: T, value: number, start: number = 0, end: number = array.length): T {
- // safari and IE 11
- // since IE 11 does not support Array.prototype.fill either
- // we cannot use the suggested polyfill from MDN
- // instead we simply fall back to looping
- if (start >= array.length) {
- return array;
- }
- start = (array.length + start) % array.length;
- if (end >= array.length) {
- end = array.length;
- } else {
- end = (array.length + end) % array.length;
- }
- for (let i = start; i < end; ++i) {
- array[i] = value;
- }
- return array;
-}
-
-/**
- * Concat two typed arrays `a` and `b`.
- * Returns a new typed array.
- */
-export function concat<T extends TypedArray>(a: T, b: T): T {
- const result = new (a.constructor as any)(a.length + b.length);
- result.set(a);
- result.set(b, a.length);
- return result;
-}