3
3
var c = require ( './constants' ) ;
4
4
var extendFlat = require ( '../../lib/extend' ) . extendFlat ;
5
5
var isNumeric = require ( 'fast-isnumeric' ) ;
6
+ var isArrayOrTypedArray = require ( '../../lib/array' ) . isArrayOrTypedArray ;
6
7
7
8
// pure functions, don't alter but passes on `gd` and parts of `trace` without deep copying
8
9
module . exports = function calc ( gd , trace ) {
@@ -35,9 +36,13 @@ module.exports = function calc(gd, trace) {
35
36
var headerRowBlocks = makeRowBlock ( anchorToHeaderRowBlock , [ ] ) ;
36
37
var rowBlocks = makeRowBlock ( anchorToRowBlock , headerRowBlocks ) ;
37
38
var uniqueKeys = { } ;
38
- var columnOrder = trace . _fullInput . columnorder . concat ( slicer ( cellsValues . map ( function ( d , i ) { return i ; } ) ) ) ;
39
+
40
+ var columnOrder = trace . _fullInput . columnorder ;
41
+ if ( isArrayOrTypedArray ( columnOrder ) ) columnOrder = Array . from ( columnOrder ) ;
42
+ columnOrder = columnOrder . concat ( slicer ( cellsValues . map ( function ( d , i ) { return i ; } ) ) ) ;
43
+
39
44
var columnWidths = headerValues . map ( function ( d , i ) {
40
- var value = Array . isArray ( trace . columnwidth ) ?
45
+ var value = isArrayOrTypedArray ( trace . columnwidth ) ?
41
46
trace . columnwidth [ Math . min ( i , trace . columnwidth . length - 1 ) ] :
42
47
trace . columnwidth ;
43
48
return isNumeric ( value ) ? Number ( value ) : 1 ;
@@ -95,7 +100,7 @@ module.exports = function calc(gd, trace) {
95
100
} ;
96
101
97
102
function arrayMax ( maybeArray ) {
98
- if ( Array . isArray ( maybeArray ) ) {
103
+ if ( isArrayOrTypedArray ( maybeArray ) ) {
99
104
var max = 0 ;
100
105
for ( var i = 0 ; i < maybeArray . length ; i ++ ) {
101
106
max = Math . max ( max , arrayMax ( maybeArray [ i ] ) ) ;
@@ -115,7 +120,7 @@ function squareStringMatrix(matrixIn) {
115
120
var maxLen = 0 ;
116
121
var i ;
117
122
for ( i = 0 ; i < matrix . length ; i ++ ) {
118
- if ( ! Array . isArray ( matrix [ i ] ) ) matrix [ i ] = [ matrix [ i ] ] ;
123
+ if ( ! isArrayOrTypedArray ( matrix [ i ] ) ) matrix [ i ] = [ matrix [ i ] ] ;
119
124
minLen = Math . min ( minLen , matrix [ i ] . length ) ;
120
125
maxLen = Math . max ( maxLen , matrix [ i ] . length ) ;
121
126
}
0 commit comments