@@ -81,11 +81,7 @@ LayoutBuilder.prototype.layoutDocument = function (docStructure, fontProvider, s
81
81
}
82
82
} ) ;
83
83
nodeInfo . startPosition = node . positions [ 0 ] ;
84
- nodeInfo . pageNumbers = node . positions . map ( function ( node ) {
85
- return node . pageNumber ;
86
- } ) . filter ( function ( element , position , array ) {
87
- return array . indexOf ( element ) === position ;
88
- } ) ;
84
+ nodeInfo . pageNumbers = Array . from ( new Set ( node . positions . map ( function ( node ) { return node . pageNumber ; } ) ) ) ;
89
85
nodeInfo . pages = pages . length ;
90
86
nodeInfo . stack = isArray ( node . stack ) ;
91
87
@@ -100,17 +96,21 @@ LayoutBuilder.prototype.layoutDocument = function (docStructure, fontProvider, s
100
96
var followingNodesOnPage = [ ] ;
101
97
var nodesOnNextPage = [ ] ;
102
98
var previousNodesOnPage = [ ] ;
103
- for ( var ii = index + 1 , l = linearNodeList . length ; ii < l ; ii ++ ) {
104
- if ( linearNodeList [ ii ] . nodeInfo . pageNumbers . indexOf ( pageNumber ) > - 1 ) {
105
- followingNodesOnPage . push ( linearNodeList [ ii ] . nodeInfo ) ;
106
- }
107
- if ( linearNodeList [ ii ] . nodeInfo . pageNumbers . indexOf ( pageNumber + 1 ) > - 1 ) {
108
- nodesOnNextPage . push ( linearNodeList [ ii ] . nodeInfo ) ;
99
+ if ( pageBreakBeforeFct . length > 1 ) {
100
+ for ( var ii = index + 1 , l = linearNodeList . length ; ii < l ; ii ++ ) {
101
+ if ( linearNodeList [ ii ] . nodeInfo . pageNumbers . indexOf ( pageNumber ) > - 1 ) {
102
+ followingNodesOnPage . push ( linearNodeList [ ii ] . nodeInfo ) ;
103
+ }
104
+ if ( pageBreakBeforeFct . length > 2 && linearNodeList [ ii ] . nodeInfo . pageNumbers . indexOf ( pageNumber + 1 ) > - 1 ) {
105
+ nodesOnNextPage . push ( linearNodeList [ ii ] . nodeInfo ) ;
106
+ }
109
107
}
110
108
}
111
- for ( var ii = 0 ; ii < index ; ii ++ ) {
112
- if ( linearNodeList [ ii ] . nodeInfo . pageNumbers . indexOf ( pageNumber ) > - 1 ) {
113
- previousNodesOnPage . push ( linearNodeList [ ii ] . nodeInfo ) ;
109
+ if ( pageBreakBeforeFct . length > 3 ) {
110
+ for ( var ii = 0 ; ii < index ; ii ++ ) {
111
+ if ( linearNodeList [ ii ] . nodeInfo . pageNumbers . indexOf ( pageNumber ) > - 1 ) {
112
+ previousNodesOnPage . push ( linearNodeList [ ii ] . nodeInfo ) ;
113
+ }
114
114
}
115
115
}
116
116
if ( pageBreakBeforeFct ( node . nodeInfo , followingNodesOnPage , nodesOnNextPage , previousNodesOnPage ) ) {
0 commit comments