zhitong.yu
2024-12-27 8abbee975353926e51a426a75c67119337fbdae4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
function arrayMin( array ) {
 
    if ( array.length === 0 ) return Infinity;
 
    let min = array[ 0 ];
 
    for ( let i = 1, l = array.length; i < l; ++ i ) {
 
        if ( array[ i ] < min ) min = array[ i ];
 
    }
 
    return min;
 
}
 
function arrayMax( array ) {
 
    if ( array.length === 0 ) return - Infinity;
 
    let max = array[ 0 ];
 
    for ( let i = 1, l = array.length; i < l; ++ i ) {
 
        if ( array[ i ] > max ) max = array[ i ];
 
    }
 
    return max;
 
}
 
function arrayNeedsUint32( array ) {
 
    // assumes larger values usually on last
 
    for ( let i = array.length - 1; i >= 0; -- i ) {
 
        if ( array[ i ] >= 65535 ) return true; // account for PRIMITIVE_RESTART_FIXED_INDEX, #24565
 
    }
 
    return false;
 
}
 
const TYPED_ARRAYS = {
    Int8Array: Int8Array,
    Uint8Array: Uint8Array,
    Uint8ClampedArray: Uint8ClampedArray,
    Int16Array: Int16Array,
    Uint16Array: Uint16Array,
    Int32Array: Int32Array,
    Uint32Array: Uint32Array,
    Float32Array: Float32Array,
    Float64Array: Float64Array
};
 
function getTypedArray( type, buffer ) {
 
    return new TYPED_ARRAYS[ type ]( buffer );
 
}
 
function createElementNS( name ) {
 
    return document.createElementNS( 'http://www.w3.org/1999/xhtml', name );
 
}
 
export { arrayMin, arrayMax, arrayNeedsUint32, getTypedArray, createElementNS };