utils.js 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. function arrayMin( array ) {
  2. if ( array.length === 0 ) return Infinity;
  3. let min = array[ 0 ];
  4. for ( let i = 1, l = array.length; i < l; ++ i ) {
  5. if ( array[ i ] < min ) min = array[ i ];
  6. }
  7. return min;
  8. }
  9. function arrayMax( array ) {
  10. if ( array.length === 0 ) return - Infinity;
  11. let max = array[ 0 ];
  12. for ( let i = 1, l = array.length; i < l; ++ i ) {
  13. if ( array[ i ] > max ) max = array[ i ];
  14. }
  15. return max;
  16. }
  17. function arrayNeedsUint32( array ) {
  18. // assumes larger values usually on last
  19. for ( let i = array.length - 1; i >= 0; -- i ) {
  20. if ( array[ i ] >= 65535 ) return true; // account for PRIMITIVE_RESTART_FIXED_INDEX, #24565
  21. }
  22. return false;
  23. }
  24. const TYPED_ARRAYS = {
  25. Int8Array: Int8Array,
  26. Uint8Array: Uint8Array,
  27. Uint8ClampedArray: Uint8ClampedArray,
  28. Int16Array: Int16Array,
  29. Uint16Array: Uint16Array,
  30. Int32Array: Int32Array,
  31. Uint32Array: Uint32Array,
  32. Float32Array: Float32Array,
  33. Float64Array: Float64Array
  34. };
  35. function getTypedArray( type, buffer ) {
  36. return new TYPED_ARRAYS[ type ]( buffer );
  37. }
  38. function createElementNS( name ) {
  39. return document.createElementNS( 'http://www.w3.org/1999/xhtml', name );
  40. }
  41. export { arrayMin, arrayMax, arrayNeedsUint32, getTypedArray, createElementNS };