@@ -47,14 +47,12 @@ export async function setData(id, data) {
4747 return ;
4848 }
4949
50- const { options, objectUrl } = pdf ;
51- if ( objectUrl ) {
52- URL . revokeObjectURL ( objectUrl ) ;
53- }
50+ const objectUrl = createObjectURLFromByte ( data ) ;
51+ pdf . objectUrl = objectUrl ;
5452
55- options . url = createObjectURLFromByte ( data ) ;
53+ const { options } = pdf ;
54+ options . url = objectUrl ;
5655 options . data = null ;
57- pdf . objectUrl = options . url ;
5856 await loadPdf ( pdf ) ;
5957}
6058
@@ -125,8 +123,34 @@ export function resetThumbnails(id) {
125123const loadPdf = async pdf => {
126124 const { el, invoke, options } = pdf ;
127125 const loadingTask = pdfjsLib . getDocument ( options ) ;
126+
127+ const progressEl = el . querySelector ( '.bb-view-progress' ) ;
128+ if ( progressEl ) {
129+ progressEl . classList . add ( 'show' ) ;
130+ }
131+ const bar = el . querySelector ( '.bb-view-progress-bar' ) ;
132+ if ( bar ) {
133+ bar . style . setProperty ( '--bb-view-progress-val' , '0' ) ;
134+ }
135+
136+ let progressHandler = null ;
128137 loadingTask . onProgress = function ( progressData ) {
138+ const { loaded, total } = progressData ;
129139
140+ if ( bar ) {
141+ const val = loaded / total * 100 ;
142+ if ( val > 100 ) {
143+ val = 100 ;
144+ }
145+ bar . style . setProperty ( '--bb-view-progress-val' , `${ val } %` ) ;
146+
147+ if ( progressHandler === null ) {
148+ progressHandler = setTimeout ( ( ) => {
149+ clearTimeout ( progressHandler ) ;
150+ progressEl . classList . remove ( 'show' ) ;
151+ } , 300 ) ;
152+ }
153+ }
130154 } ;
131155
132156 loadingTask . onPassword = function ( updatePassword , reason ) {
@@ -161,7 +185,11 @@ const loadPdf = async pdf => {
161185}
162186
163187const disposePdf = pdf => {
164- const { el, observer, loadingTask } = pdf ;
188+ const { el, observer, loadingTask, objectUrl } = pdf ;
189+ if ( objectUrl ) {
190+ URL . revokeObjectURL ( objectUrl ) ;
191+ }
192+
165193 if ( observer ) {
166194 observer . disconnect ( ) ;
167195 }
0 commit comments