@@ -53,23 +53,69 @@ export class Range extends ManifestResource {
5353 return this . _canvases ;
5454 }
5555
56- let manifestCanvases = this . getTopRange ( this )
57- . options . resource . getSequences ( ) [ 0 ]
58- . getCanvases ( ) ;
56+ let manifestSequence = this . getTopRange (
57+ this
58+ ) . options . resource . getSequences ( ) [ 0 ] ;
59+ let manifestCanvases =
60+ manifestSequence . __jsonld . canvases || manifestSequence . __jsonld . elements ;
61+ const canvasLength = this . canvases ? this . canvases . length : 0 ;
62+ let canvasItems : ( Canvas | null ) [ ] = new Array ( canvasLength ) . fill ( null ) ;
63+
64+ if ( manifestCanvases && this . canvases ) {
65+ for ( let i = 0 ; i < manifestCanvases . length ; i ++ ) {
66+ const c = manifestCanvases [ i ] ;
67+
68+ if ( c . id in this . canvases ) {
69+ const canvas : Canvas = new Canvas ( c , this . options ) ;
70+ canvas . index = this . canvases . indexOf ( c . id ) ;
71+ canvasItems . splice ( canvas . index , 1 , canvas ) ;
72+ }
73+ }
74+ } else if ( manifestSequence . __jsonld && this . canvases ) {
75+ for ( let i = 0 ; i < manifestSequence . __jsonld . length ; i ++ ) {
76+ const c = manifestSequence . __jsonld [ i ] ;
5977
60- if ( this . canvases ) {
61- let canvasItems : Canvas [ ] = [ ] ;
78+ if ( this . canvases . includes ( c . id ) ) {
79+ const canvas : Canvas = new Canvas ( c , this . options ) ;
6280
63- for ( let i = 0 ; i < this . canvases . length ; i ++ ) {
64- let cId = this . canvases [ i ] ;
65- const fullCanvas = manifestCanvases . find ( c => c . id === cId ) ;
66- canvasItems . push ( fullCanvas ) ;
81+ canvas . index = this . canvases . indexOf ( c . id ) ;
82+ canvasItems . splice ( canvas . index , 1 , canvas ) ;
83+ }
6784 }
68- return ( this . _canvases = canvasItems ) ;
6985 }
70- return [ ] ;
86+
87+ this . _canvases =
88+ canvasItems . length > 0
89+ ? ! canvasItems . includes ( null )
90+ ? < Canvas [ ] > canvasItems
91+ : null
92+ : null ;
93+
94+ return this . _canvases !== null ? this . _canvases : [ ] ;
7195 }
7296
97+ // update __jsonld canvas id's because that is used by other functions in
98+ // the library when working with canvases
99+ /* _updateCanvasIds(canvasJson: any, newCanvasId: string): any {
100+ // update ids in annotations
101+ const items = canvasJson.items || canvasJson.content;
102+ const annotations = items.length && items[0].items ? items[0].items : [];
103+ if (annotations && canvasJson.items) {
104+ for (let i = 0; i < annotations.length; i++) {
105+ canvasJson["id"] = newCanvasId;
106+ // update target canvas Id in all canvas annotations
107+ canvasJson.items[0].items[i]["target"] = newCanvasId;
108+ }
109+ } else if (annotations) {
110+ for (let i = 0; i < annotations.length; i++) {
111+ canvasJson["id"] = newCanvasId;
112+ // update target canvas Id in all canvas annotations
113+ canvasJson.content[0].items[i]["target"] = newCanvasId;
114+ }
115+ }
116+ return canvasJson;
117+ } */
118+
73119 getCanvasByIndex ( canvasIndex : number ) : any {
74120 return this . getCanvases ( ) [ canvasIndex ] ;
75121 }
0 commit comments