1- import { elementReady } from " ./elementReady" ;
1+ import { elementReady } from ' ./elementReady'
22import { debounce } from 'perfect-debounce'
33
44const DEFAULTS = {
55 viewerPath : '/pdfjs' ,
66 viewerEntry : '/web/viewer.html' ,
77 src : '' ,
8+ iframeTitle : 'PDF viewer window' ,
89 page : '' ,
910 search : '' ,
1011 phrase : '' ,
@@ -43,7 +44,7 @@ export class PdfjsViewerElement extends HTMLElement {
4344 const template = document . createElement ( 'template' )
4445 template . innerHTML = `
4546 <style>:host{width:100%;display:block;overflow:hidden}:host iframe{height:100%}</style>
46- <iframe frameborder="0" width="100%" loading="lazy"></iframe>
47+ <iframe frameborder="0" width="100%" loading="lazy" title=" ${ this . getAttribute ( 'iframe-title' ) || DEFAULTS . iframeTitle } " ></iframe>
4748 `
4849 shadowRoot . appendChild ( template . content . cloneNode ( true ) )
4950 }
@@ -54,12 +55,12 @@ export class PdfjsViewerElement extends HTMLElement {
5455 return [
5556 'src' , 'viewer-path' , 'page' , 'search' , 'phrase' , 'zoom' , 'pagemode' ,
5657 'disable-worker' , 'text-layer' , 'disable-font-face' , 'disable-range' , 'disable-stream' , 'disable-auto-fetch' , 'verbosity' , 'locale' ,
57- 'viewer-css-theme' , 'viewer-extra-styles' , 'viewer-extra-styles-urls' , 'nameddest'
58+ 'viewer-css-theme' , 'viewer-extra-styles' , 'viewer-extra-styles-urls' , 'nameddest' , 'iframe-title'
5859 ]
5960 }
6061
6162 connectedCallback ( ) {
62- this . iframe = this . shadowRoot ! . querySelector ( 'iframe' ) as PdfjsViewerElementIframe
63+ this . iframe = this . shadowRoot ? .querySelector ( 'iframe' ) as PdfjsViewerElementIframe
6364 document . addEventListener ( 'webviewerloaded' , async ( ) => {
6465 this . setCssTheme ( this . getCssThemeOption ( ) )
6566 this . injectExtraStylesLinks ( this . getAttribute ( 'viewer-extra-styles-urls' ) ?? DEFAULTS . viewerExtraStylesUrls )
@@ -68,7 +69,7 @@ export class PdfjsViewerElement extends HTMLElement {
6869 this . iframe . contentWindow ?. PDFViewerApplicationOptions ?. set ( 'disablePreferences' , true )
6970 this . iframe . contentWindow ?. PDFViewerApplicationOptions ?. set ( 'pdfBugEnabled' , true )
7071 this . iframe . contentWindow ?. PDFViewerApplicationOptions ?. set ( 'eventBusDispatchToDOM' , true )
71- } ) ;
72+ } )
7273 }
7374
7475 attributeChangedCallback ( name : string ) {
@@ -126,9 +127,10 @@ ${nameddest ? '&nameddest=' + nameddest : ''}`
126127
127128 private mountViewer ( src : string ) {
128129 if ( ! src || ! this . iframe ) return
129- this . shadowRoot ! . replaceChild ( this . iframe . cloneNode ( ) , this . iframe )
130- this . iframe = this . shadowRoot ! . querySelector ( 'iframe' ) as PdfjsViewerElementIframe
130+ this . shadowRoot ? .replaceChild ( this . iframe . cloneNode ( ) , this . iframe )
131+ this . iframe = this . shadowRoot ? .querySelector ( 'iframe' ) as PdfjsViewerElementIframe
131132 this . iframe . src = src
133+ this . iframe . setAttribute ( 'title' , this . getAttribute ( 'iframe-title' ) || DEFAULTS . iframeTitle )
132134 }
133135
134136 private getFullPath ( path : string ) {
@@ -161,7 +163,7 @@ ${nameddest ? '&nameddest=' + nameddest : ''}`
161163 else {
162164 this . iframe . contentDocument ?. head . querySelector ( 'style[theme]' ) ?. remove ( )
163165 }
164- this . iframe . contentWindow ?. PDFViewerApplicationOptions . set ( 'viewerCssTheme' , theme )
166+ this . iframe . contentWindow ?. PDFViewerApplicationOptions ? .set ( 'viewerCssTheme' , theme )
165167 }
166168
167169 private setViewerExtraStyles = ( styles ?: string | null , id = 'extra' ) => {
@@ -190,7 +192,7 @@ ${nameddest ? '&nameddest=' + nameddest : ''}`
190192 }
191193
192194 public initialize = ( ) : Promise < PdfjsViewerElementIframeWindow [ 'PDFViewerApplication' ] > => new Promise ( async ( resolve ) => {
193- await elementReady ( 'iframe' , this . shadowRoot ! )
195+ await elementReady ( 'iframe' , this . shadowRoot as ShadowRoot )
194196 this . iframe ?. addEventListener ( 'load' , async ( ) => {
195197 await this . iframe . contentWindow ?. PDFViewerApplication ?. initializedPromise
196198 resolve ( this . iframe . contentWindow ?. PDFViewerApplication )
0 commit comments