@digital-blueprint/esign-app
Version:
[GitHub Repository](https://github.com/digital-blueprint/esign-app) | [npmjs package](https://www.npmjs.com/package/@digital-blueprint/esign-app) | [Unpkg CDN](https://unpkg.com/browse/@digital-blueprint/esign-app/) | [Esign Bundle](https://gitlab.tugraz.
408 lines (398 loc) • 36.4 kB
JavaScript
/*!
* License: LGPL-2.1-or-later
* Dependencies:
*
* @webcomponents/scoped-custom-element-registry: BSD-3-Clause
* @dbp-toolkit/app-shell: LGPL-2.1-or-later
* @dbp-toolkit/language-select: LGPL-2.1-or-later
* @dbp-toolkit/auth: LGPL-2.1-or-later
* lit-html: BSD-3-Clause
* @dbp-toolkit/notification: LGPL-2.1-or-later
* @dbp-toolkit/theme-switcher: LGPL-2.1-or-later
* universal-router: MIT
* @dbp-toolkit/matomo: LGPL-2.1-or-later
* @tugraz/web-components: LGPL-2.1-or-later
*/
import{A as e,L as t,M as n,Q as r,W as i,Y as a,_ as o,b as s,d as c,j as l,k as u,o as d,q as f,s as p,t as m,v as h,w as g,x as _,y as v,z as y}from"./shared/dbp-lit-element.BQ5UQue-.js";import"./shared/directive-helpers.BcbjX-8e.js";import"./shared/i18n.CFAuR9R5.js";import{a as b,c as x,i as S,l as C,n as w,o as T,r as E,s as D,t as O}from"./shared/table-components.D8cP2E_k.js";import"./shared/dbp-file-handling-lit-element.FiLZbGlJ.js";import{t as k}from"./shared/file-source.BuwpzU-D.js";import{t as A}from"./shared/file-sink.CqCc3sCg.js";var j=class extends e(i){constructor(){super(),this._loading=!1,this._done=!0,this.locationCount=0,this.loginPageLoaded=!1,this._onReceiveIframeMessage=this._onReceiveIframeMessage.bind(this)}static get scopedElements(){return{"dbp-mini-spinner":l}}static get properties(){return{_loading:{type:Boolean,state:!0},_done:{type:Boolean,state:!0},locationCount:{type:Number,attribute:`location-count`,reflect:!0},loginPageLoaded:{type:Boolean,attribute:`login-page-loaded`,reflect:!0}}}connectedCallback(){super.connectedCallback(),window.addEventListener(`message`,this._onReceiveIframeMessage)}disconnectedCallback(){window.removeEventListener(`message`,this._onReceiveIframeMessage),super.disconnectedCallback()}_onReceiveIframeMessage(e){let t=e.data;if(t.type===`pdf-as-error`){this._done=!0;let e=t.error;t.cause&&(e=`${e}: ${t.cause}`),this.dispatchEvent(new CustomEvent(`signature-error`,{detail:{message:e}}))}else t.type===`pdf-as-callback`&&(this._done=!0,this.dispatchEvent(new CustomEvent(`signature-done`,{detail:{code:t.code??t.sessionId}})))}setUrl(e){let t=this.renderRoot.querySelector(`#iframe`);this._loading=!0,this._done=!1,t.src=e,this.locationCount=0}reset(){this.setUrl(`about:blank`),this.locationCount=0}static get styles(){return a`
:host {
display: inline-block;
}
#iframe {
/* "overflow" should not be supported by browsers,
but some seem to use it */
overflow: hidden;
border-width: 0;
width: 100%;
height: 100%;
}
.hidden {
display: none;
}
`}update(e){e.forEach((e,t)=>{switch(t){case`locationCount`:this.loginPageLoaded=this.locationCount>1;break}}),super.update(e)}render(){return f`
${this._loading?f`
<dbp-mini-spinner></dbp-mini-spinner>
`:f``}
<!-- "scrolling" is deprecated, but still seem to help -->
<iframe
id="iframe"
class=${c({hidden:this._loading||this._done})}
="${e=>{this._loading=!1,this.locationCount++}}"
="${e=>{this._loading=!1}}"
scrolling="no"></iframe>
`}};t(`dbp-qualified-signature-pdf-upload`,class extends e(D){constructor(){super(),this.entryPointUrl=``,this.nextcloudWebAppPasswordURL=``,this.nextcloudWebDavURL=``,this.nextcloudName=``,this.nextcloudFileURL=``,this.nextcloudAuthInfo=``,this.fileHandlingEnabledTargets=`local`,this._onReceiveBeforeUnload=this.onReceiveBeforeUnload.bind(this),this._setQueuedFilesTabulatorTable=this.setQueuedFilesTabulatorTable.bind(this),this._tabulatorTableHandleCollapse=this.tabulatorTableHandleCollapse.bind(this),this._handleTableSelection=this.handleTableSelection.bind(this),this._tabulatorTableHandleRenderCompleted=this.tabulatorTableHandleRenderCompleted.bind(this),this._handleModalClosed=this.handleModalClosed.bind(this),this._handlePdfModalClosing=this.handlePdfModalClosing.bind(this),this._handleAnnotationModalClosing=this.handleAnnotationModalClosing.bind(this)}static get scopedElements(){return{"dbp-icon":n,"dbp-file-source":k,"dbp-file-sink":A,"dbp-pdf-preview":T,"dbp-mini-spinner":l,"dbp-button":o,"dbp-icon-button":h,"dbp-loading-button":v,"dbp-pdf-annotation-view":E,"external-sign-iframe":j,"dbp-esign-tabulator-table":O,"dbp-tooltip":b,"dbp-modal":p}}static get properties(){return{...super.properties,externalAuthInProgress:{type:Boolean,attribute:!1}}}connectedCallback(){super.connectedCallback(),setInterval(()=>{this.handleQueuedFiles()},1e3),window.addEventListener(`beforeunload`,this._onReceiveBeforeUnload),window.addEventListener(`dbp-pdf-preview-accept`,this._setQueuedFilesTabulatorTable),window.addEventListener(`dbp-pdf-annotations-save`,this._setQueuedFilesTabulatorTable),window.addEventListener(`dbp-pdf-annotations-cancel`,this._setQueuedFilesTabulatorTable),window.addEventListener(`dbp-tabulator-table-collapsible-event`,this._tabulatorTableHandleCollapse),window.addEventListener(`dbp-tabulator-table-row-selection-changed-event`,this._handleTableSelection),window.addEventListener(`dbp-tabulator-table-render-complete-event`,this._tabulatorTableHandleRenderCompleted),window.addEventListener(`dbp-modal-closed`,this._handleModalClosed),window.addEventListener(`dbp-pdf-preview-accept`,this._handlePdfModalClosing),window.addEventListener(`dbp-pdf-preview-cancel`,this._handlePdfModalClosing),window.addEventListener(`dbp-pdf-annotations-cancel`,this._handleAnnotationModalClosing),window.addEventListener(`dbp-pdf-annotations-save`,this._handleAnnotationModalClosing)}disconnectedCallback(){window.removeEventListener(`beforeunload`,this._onReceiveBeforeUnload),window.removeEventListener(`dbp-pdf-preview-accept`,this._setQueuedFilesTabulatorTable),window.removeEventListener(`dbp-pdf-annotations-save`,this._setQueuedFilesTabulatorTable),window.removeEventListener(`dbp-pdf-annotations-cancel`,this._setQueuedFilesTabulatorTable),window.removeEventListener(`dbp-tabulator-table-collapsible-event`,this._tabulatorTableHandleCollapse),window.removeEventListener(`dbp-tabulator-table-render-complete-event`,this._tabulatorTableHandleRenderCompleted),window.removeEventListener(`dbp-tabulator-table-row-selection-changed-event`,this._handleTableSelection),window.removeEventListener(`dbp-modal-closed`,this._handleModalClosed),window.removeEventListener(`dbp-pdf-preview-accept`,this._handlePdfModalClosing),window.removeEventListener(`dbp-pdf-preview-cancel`,this._handlePdfModalClosing),window.removeEventListener(`dbp-pdf-annotations-cancel`,this._handleAnnotationModalClosing),window.removeEventListener(`dbp-pdf-annotations-save`,this._handleAnnotationModalClosing),super.disconnectedCallback()}firstUpdated(e){super.firstUpdated(e),this.tableQueuedFilesTable=this._(`#table-queued-files`),this.tableSignedFilesTable=this._(`#table-signed-files`),this.tableFailedFilesTable=this._(`#table-failed-files`)}async queueFile(e){let t=await super.queueFile(e);return await this._updateNeedsPlacementStatus(t),this.setQueuedFilesTabulatorTable(),this.requestUpdate(),t}async handleQueuedFiles(){let e=this._i18n;if(this.endSigningProcessIfQueueEmpty(),this.queuedFilesCount===0){this.signingProcessEnabled=!1;return}if(!this.signingProcessEnabled||this.externalAuthInProgress||this.uploadInProgress||this.addAnnotationInProgress)return;this.signaturePlacementInProgress=!1;let t=!1;for(let n of Object.keys(this.queuedFiles)){if(t===!0)continue;let r=this.queuedFilesPlacementModes[n]===`manual`;this.queuedFilesNeedsPlacement.get(n)&&!r&&(this.selectedFiles.length===0||this.fileIsSelectedFile(n))&&(m({summary:e.t(`error-manual-positioning-missing-title`),body:e.t(`error-manual-positioning-missing`),type:`danger`,timeout:5}),t=!0)}if(t){this.signingProcessEnabled=!1,this.signingProcessActive=!1,await this.stopSigningProcess();return}let n=null;if(this.selectedFiles.length>0){let e=this.selectedFiles.shift();n=Object.keys(this.queuedFiles).find(t=>this.queuedFiles[t].file.name.trim()===e.filename.trim()),this.selectedFilesProcessing=!0}else n=Object.keys(this.queuedFiles)[0];this._(`#external-auth`).open();let i=this.takeFileFromQueue(n).file;this.currentFile=i,this.currentKey=n,this.currentFilePlacementMode=this.queuedFilesPlacementModes[n],this.currentFileSignaturePlacement=this.queuedFilesSignaturePlacements[n],this.uploadInProgress=!0;let a={};if(this.queuedFilesPlacementModes[n]===`manual`){let e=this.queuedFilesSignaturePlacements[n];e!==void 0&&(a=x(e))}a.invisible=`false`,a.profile=`default`,this.uploadStatusText=e.t(`qualified-pdf-upload.upload-status-file-text`,{fileName:i.name,fileSize:r(i.size,!1)});let o=this.isAnnotationsEnabledForKey(n),s=this.takeAnnotationsFromQueue(n);await this.uploadFile(i,a,o?s:[]),this.uploadInProgress=!1,this.selectedFilesProcessing&&this.selectedFiles.length===0&&(this.signingProcessEnabled=!1,this.signingProcessActive=!1,await this.stopSigningProcess())}onReceiveBeforeUnload(e){let t=this._i18n;this.signedFilesCount!==0&&(!e.isTrusted&&confirm(t.t(`qualified-pdf-upload.confirm-page-leave`))||(e.preventDefault(),e.returnValue=``))}parseError(e){let t=this._i18n,n=e;return e.includes(`SecurityLayer Error: [6001]`)||e.includes(`SecurityLayer Error: [6000]`)?n=t.t(`error-cancel-message`):e.includes(`SecurityLayer Error: [6002]`)&&(n=t.t(`error-rights-message`)),n}async _onIFrameDone(e){let t=e.detail.code,n=this.currentFileName===``?`mydoc.pdf`:this.currentFileName,r=d(this.entryPointUrl,`/esign/qualifiedly-signed-documents`)+`/`+encodeURIComponent(t);try{let e=await fetch(r,{headers:{"Content-Type":`application/ld+json`,Authorization:`Bearer `+this.auth.token}});if(this.externalAuthInProgress=!1,this._(`#iframe`).reset(),this.endSigningProcessIfQueueEmpty(),!e.ok)throw e;let t=await e.json();t.name=C(n),this.signedFiles.push(t),this.signedFilesCount++,this.signedFilesCountToReport++,this.sendSetPropertyEvent(`analytics-event`,{category:`QualifiedlySigning`,action:`DocumentSigned`,name:t.contentSize})}catch(e){console.error(`Error while fetching signed document:`,e);let t=this.currentFile;t.json={"hydra:description":`Download failed!`},this.addToErrorFiles(t)}finally{this._(`#external-auth`).close(),this.sendReportNotification()}}_onIFrameError(e){let t=e.detail.message,n=this.currentFile;n.json={"hydra:description":this.parseError(t)},this.addToErrorFiles(n),this._(`#iframe`).reset(),this.externalAuthInProgress=!1,this.endSigningProcessIfQueueEmpty(),this._(`#external-auth`).close(),this.sendReportNotification()}addToErrorFiles(e){this.endSigningProcessIfQueueEmpty(),this.errorFiles[Math.floor(Math.random()*1e6)]=e,this.errorFilesCount++,this.errorFilesCountToReport++,this.sendSetPropertyEvent(`analytics-event`,{category:`QualifiedlySigning`,action:`SigningFailed`,name:e.json[`hydra:description`]})}onFileUploadFinished(e){if(e.status!==201)this.addToErrorFiles(e),this.sendReportNotification(),this._(`#external-auth`).close();else if(e.json[``]===`http://schema.org/EntryPoint`){this.externalAuthInProgress=!0;let t=e.json;this.currentFileName=t.name,this.currentFile=e,this._(`#iframe`).setUrl(t.url)}}update(e){super.update(e),e.forEach((e,t)=>{switch(t){case`lang`:this.setQueuedFilesTabulatorTable();break;case`entryPointUrl`:this.entryPointUrl&&(this.fileSourceUrl=d(this.entryPointUrl,`/esign/qualified-signing-requests`));break;case`queuedFilesCount`:this.setQueuedFilesTabulatorTable();break;case`signedFilesCount`:this.setSignedFilesTabulatorTable();break;case`errorFilesCount`:this.setFailedFilesTabulatorTable();break}})}clearQueuedFiles(){if(this.selectedFiles.length){let e=[];for(let t of this.selectedFiles)this.queuedFilesSignaturePlacements.forEach((e,n)=>{n==t.key&&delete this.queuedFilesSignaturePlacements[n]}),this.queuedFilesPlacementModes.forEach((e,n)=>{n==t.key&&delete this.queuedFilesPlacementModes[n]}),this.queuedFilesNeedsPlacement.delete(t.key),e.push(t.key);super.clearQueuedFiles(e)}}static get styles(){return a`
${u()}
${_(!1)}
${s()}
${g()}
${w()}
#external-auth #iframe {
margin-top: 0.5em;
}
#external-auth .button.is-cancel {
color: var(--dbp-danger);
}
#iframe {
width: 100%;
height: 350px;
/* keeps the A-Trust webpage aligned left */
max-width: 575px;
}
`}hasSignaturePermissions(){return this._hasSignaturePermissions(`ROLE_SCOPE_QUALIFIED-SIGNATURE`)}async stopSigningProcess(){if(this.externalAuthInProgress&&(this._(`#iframe`).reset(),this.signingProcessEnabled=!1,this.externalAuthInProgress=!1,this.signingProcessActive=!1,this.currentFile.file!==void 0)){let e=await this.reQueueFile(this.currentFile.file);this.queuedFilesPlacementModes[e]=this.currentFilePlacementMode,this.queuedFilesSignaturePlacements[e]=this.currentFileSignaturePlacement,this.setQueuedFilesTabulatorTable()}}_onLoginClicked(e){this.sendSetPropertyEvent(`requested-login-status`,`logged-in`),e.preventDefault()}render(){let e=y(S,`qualified-signature-placeholder.png`),t=this._i18n;return f`
<div
class="${c({hidden:!this.isLoggedIn()||!this.hasSignaturePermissions()||this.isLoading()})}">
<div class="field">
<div class="control">
<p class="description">${t.t(`qualified-pdf-upload.upload-text`)}</p>
<button
="${()=>{this._(`#file-source`).setAttribute(`dialog-open`,``)}}"
?disabled="${this.signingProcessActive}"
class="button is-primary"
id="upload-pdf-button">
${t.t(`qualified-pdf-upload.upload-button-label`)}
</button>
<dbp-file-source
id="file-source"
subscribe="nextcloud-store-session:nextcloud-store-session"
context="${t.t(`qualified-pdf-upload.file-picker-context`)}"
allowed-mime-types="application/pdf"
enabled-targets="${this.fileHandlingEnabledTargets}"
nextcloud-auth-url="${this.nextcloudWebAppPasswordURL}"
nextcloud-web-dav-url="${this.nextcloudWebDavURL}"
nextcloud-name="${this.nextcloudName}"
nextcloud-auth-info="${this.nextcloudAuthInfo}"
nextcloud-file-url="${this.nextcloudFileURL}"
decompress-zip
max-file-size="32000"
lang="${this.lang}"
?disabled="${this.signingProcessActive}"
text="${t.t(`qualified-pdf-upload.upload-area-text`)}"
button-label="${t.t(`qualified-pdf-upload.upload-button-label`)}"
-file-source-file-selected="${this.onFileSelected}"
-file-source-switched="${this.onFileSourceSwitch}"></dbp-file-source>
</div>
</div>
<div id="grid-container">
<div class="table-container">
<div
class="files-block queued-files field ${c({hidden:!this.queueBlockEnabled})}">
<!-- Queued files headline and queueing spinner -->
<h3 class="section-title">
${t.t(`qualified-pdf-upload.queued-files-label`)}
</h3>
<div class="control field tabulator-actions">
<div class="table-actions">
<dbp-loading-button
id="expand-all-btn-queued-files"
class="${c({hidden:this.queuedFilesTableExpanded})}"
?disabled="${this.queuedFilesCount===0||this.queuedFilesTableCollapsible===!1}"
value="${t.t(`qualified-pdf-upload.expand-all`)}"
="${()=>{this.tableQueuedFilesTable.expandAll(),this.queuedFilesTableExpanded=!0}}"
title="${t.t(`qualified-pdf-upload.expand-all`)}">
${t.t(`qualified-pdf-upload.expand-all`)}
</dbp-loading-button>
<dbp-loading-button
id="collapse-all-btn-queued-files"
class="${c({hidden:!this.queuedFilesTableExpanded})}"
?disabled="${this.queuedFilesCount===0||this.queuedFilesTableCollapsible===!1}"
value="${t.t(`qualified-pdf-upload.collapse-all`)}"
="${()=>{this.tableQueuedFilesTable.collapseAll(),this.queuedFilesTableExpanded=!1}}"
title="${t.t(`qualified-pdf-upload.collapse-all`)}">
${t.t(`qualified-pdf-upload.collapse-all`)}
</dbp-loading-button>
<dbp-loading-button
id="select-all-btn-queued-files"
class="${c({hidden:this.queuedFilesTableAllSelected})}"
?disabled="${this.queuedFilesCount===0}"
value="${t.t(`qualified-pdf-upload.select-all`)}"
="${()=>{this.queuedFilesTableAllSelected=!0,this.tableQueuedFilesTable.selectAllRows()}}"
title="${t.t(`qualified-pdf-upload.select-all`)}">
${t.t(`qualified-pdf-upload.select-all`)}
</dbp-loading-button>
<dbp-loading-button
id="deselect-all-btn-queued-files"
class="${c({hidden:!this.queuedFilesTableAllSelected})}"
?disabled="${this.queuedFilesCount===0}"
value="${t.t(`qualified-pdf-upload.deselect-all`)}"
="${()=>{this.queuedFilesTableAllSelected=!1,this.tableQueuedFilesTable.deselectAllRows()}}"
title="${t.t(`qualified-pdf-upload.deselect-all`)}">
${t.t(`qualified-pdf-upload.deselect-all`)}
</dbp-loading-button>
</div>
<div class="sign-actions">
<!-- Buttons to start/stop signing process and clear queue -->
<button
id="clear-queue-button-queued-files"
="${this.clearQueuedFiles}"
?disabled="${this.queuedFilesCount===0||this.signingProcessActive||this.selectedFiles.length<1}"
class="button">
${t.t(`qualified-pdf-upload.clear-all`)}
</button>
<button
id="start-signing-button"
="${()=>{this.signingProcessEnabled=!0,this.signingProcessActive=!0,this.initialQueuedFilesCount=this.queuedFilesCount}}"
?disabled="${this.queuedFilesCount===0}"
class="button is-primary">
${t.t(`qualified-pdf-upload.start-signing-process-button`)}
</button>
</div>
</div>
<!-- List of queued files -->
<div class="control file-list">
<dbp-esign-tabulator-table
id="table-queued-files"
identifier="table-queued-files"
class="table-queued-files"
lang="${this.lang}"
select-rows-enabled></dbp-esign-tabulator-table>
</div>
${this.anyPlacementMissing?f`
<div class="legend">
<dbp-icon
name="warning-high"
aria-hidden="true"></dbp-icon>
<span class="legend-description">
${t.t(`label-manual-positioning-missing`)}
</span>
</div>
`:``}
<!-- Text "queue empty" -->
<div
class="empty-queue control ${c({hidden:this.queuedFilesCount!==0})}">
${t.t(`qualified-pdf-upload.queued-files-empty1`)}
<br />
${t.t(`qualified-pdf-upload.queued-files-empty2`)}
</div>
</div>
<!-- List of signed PDFs -->
<div
class="files-block signed-files field ${c({hidden:this.signedFilesCount===0})}">
<h3 class="section-title ">
${t.t(`qualified-pdf-upload.signed-files-label`)}
</h3>
<!-- Button to download all signed PDFs -->
<div class="field ${c({hidden:this.signedFilesCount===0})}">
<div class="control tabulator-actions">
<div class="table-actions">
<dbp-loading-button
id="expand-all-btn-signed-files"
class="${c({hidden:this.signedFilesTableExpanded})}"
?disabled="${this.signedFilesCount===0||this.signedFilesTableCollapsible===!1}"
value="${t.t(`qualified-pdf-upload.expand-all`)}"
="${()=>{this.tableSignedFilesTable.expandAll(),this.signedFilesTableExpanded=!0}}"
title="${t.t(`qualified-pdf-upload.expand-all`)}">
${t.t(`qualified-pdf-upload.expand-all`)}
</dbp-loading-button>
<dbp-loading-button
id="collapse-all-btn-signed-files"
class="${c({hidden:!this.signedFilesTableExpanded})}"
?disabled="${this.signedFilesCount===0||this.signedFilesTableCollapsible===!1}"
value="${t.t(`qualified-pdf-upload.collapse-all`)}"
="${()=>{this.tableSignedFilesTable.collapseAll(),this.signedFilesTableExpanded=!1}}"
title="${t.t(`qualified-pdf-upload.collapse-all`)}">
${t.t(`qualified-pdf-upload.collapse-all`)}
</dbp-loading-button>
</div>
<div class="signed-actions">
<button
id="clear-signed-files-btn"
class="clear-signed-files button"
="${this.clearSignedFiles}"
class="button">
${t.t(`qualified-pdf-upload.clear-all`)}
</button>
<dbp-loading-button
id="zip-download-button"
value="${t.t(`qualified-pdf-upload.download-zip-button`)}"
title="${t.t(`qualified-pdf-upload.download-zip-button-tooltip`)}"
class="zip-download-button"
="${this.zipDownloadClickHandler}"
type="is-primary"></dbp-loading-button>
</div>
</div>
</div>
<dbp-esign-tabulator-table
id="table-signed-files"
identifier="table-signed-files"
class="table-signed-files"
lang="${this.lang}"></dbp-esign-tabulator-table>
</div>
<!-- List of errored files -->
<div
class="files-block error-files field ${c({hidden:this.errorFilesCount===0})}">
<h3 class="section-title">
${t.t(`qualified-pdf-upload.error-files-label`)}
</h3>
<!-- Button to upload errored files again -->
<div class="field ${c({hidden:this.errorFilesCount===0})}">
<div class="control tabulator-actions">
<div class="table-actions">
<dbp-loading-button
id="expand-all-btn-failed-files"
class="${c({hidden:this.failedFilesTableExpanded})}"
?disabled="${this.errorFilesCount===0||this.failedFilesTableCollapsible===!1}"
value="${t.t(`qualified-pdf-upload.expand-all`)}"
="${()=>{this.tableFailedFilesTable.expandAll(),this.failedFilesTableExpanded=!0}}"
title="${t.t(`qualified-pdf-upload.expand-all`)}">
${t.t(`qualified-pdf-upload.expand-all`)}
</dbp-loading-button>
<dbp-loading-button
id="collapse-all-btn-failed-files"
class="${c({hidden:!this.failedFilesTableExpanded})}"
?disabled="${this.errorFilesCount===0||this.failedFilesTableCollapsible===!1}"
value="${t.t(`qualified-pdf-upload.collapse-all`)}"
="${()=>{this.tableFailedFilesTable.collapseAll(),this.failedFilesTableExpanded=!1}}"
title="${t.t(`qualified-pdf-upload.collapse-all`)}">
${t.t(`qualified-pdf-upload.collapse-all`)}
</dbp-loading-button>
</div>
<div class="failed-actions">
<button
id="clear-error-files-btn"
="${this.clearErrorFiles}"
class="clear-signed-files button">
${t.t(`qualified-pdf-upload.clear-all`)}
</button>
<dbp-loading-button
id="re-upload-all-button"
?disabled="${this.uploadInProgress}"
value="${t.t(`qualified-pdf-upload.re-upload-all-button`)}"
title="${t.t(`qualified-pdf-upload.re-upload-all-button-title`)}"
class="is-right"
="${this.reUploadAllClickHandler}"
type="is-primary"></dbp-loading-button>
</div>
</div>
</div>
<dbp-esign-tabulator-table
id="table-failed-files"
identifier="table-failed-files"
class="table-failed-files"
lang="${this.lang}"></dbp-esign-tabulator-table>
</div>
</div>
<div class="modal-container">
<!-- PDF preview -->
<dbp-modal
id="pdf-preview"
modal-id="pdf-preview-modal"
class="modal--pdf-preview"
title="${this.withSigBlock?t.t(`official-pdf-upload.signature-placement-label`):t.t(`official-pdf-upload.preview-label`)}">
<div slot="header" class="header">
<div class="filename">
<strong>${this.currentFile.name}</strong>
(${r(this.currentFile===void 0?0:this.currentFile.size)})
</div>
</div>
<div slot="content">
<dbp-pdf-preview
lang="${this.lang}"
allow-signature-rotation
signature-placeholder-image-src="${e}"
signature-width="80"
signature-height="29"
-pdf-preview-accept="${this.storePDFData}"
-pdf-preview-cancel="${this.hidePDF}"></dbp-pdf-preview>
</div>
</dbp-modal>
<!-- Annotation view -->
<dbp-modal
id="annotation-view"
modal-id="annotation-view-modal"
class="modal--annotation-view ${c({hidden:!this.isAnnotationViewVisible})}"
title="${t.t(`qualified-pdf-upload.annotation-view-label`)}">
<div slot="header" class="header">
<div class="modal-notification">
<dbp-notification
id="dbp-modal-notification-annotation"
inline
lang="${this.lang}"></dbp-notification>
</div>
<div class="filename">
<strong>
${this.currentFile.file===void 0?``:this.currentFile.file.name}
</strong>
(${r(this.currentFile.file===void 0?0:this.currentFile.file.size)})
</div>
</div>
<div slot="content">
<dbp-pdf-annotation-view
lang="${this.lang}"
-pdf-annotations-save="${this.processAnnotationEvent}"
-pdf-annotations-cancel="${this.processAnnotationCancelEvent}"></dbp-pdf-annotation-view>
</div>
</dbp-modal>
<!-- File upload progress -->
<div
id="upload-progress"
class="field notification is-info ${c({hidden:!this.uploadInProgress})}">
<dbp-mini-spinner></dbp-mini-spinner>
<strong>${this.uploadStatusFileName}</strong>
${this.uploadStatusText}
</div>
<!-- External auth -->
<dbp-modal
id="external-auth"
modal-id="external-auth-modal"
class="modal--external-auth ${c({hidden:!this.externalAuthInProgress})}"
title="${t.t(`qualified-pdf-upload.current-signing-process-label`)}">
<div slot="header" class="header">
<div class="filename">
<strong>${this.currentFileName}</strong>
(${r(this.currentFile.file===void 0?0:this.currentFile.file.size)})
</div>
</div>
<div slot="content">
<external-sign-iframe
id="iframe"
-error="${this._onIFrameError}"
-done="${this._onIFrameDone}"></external-sign-iframe>
</div>
</dbp-modal>
</div>
</div>
</div>
<div
class="notification is-warning ${c({hidden:this.isLoggedIn()||this.isLoading()})}">
${t.t(`error-login-message`)}
<a href="#" ="${this._onLoginClicked}">${t.t(`error-login-link`)}</a>
</div>
<div
class="notification is-danger ${c({hidden:this.hasSignaturePermissions()||!this.isLoggedIn()||this.isLoading()})}">
${t.t(`error-permission-message-qualified`)}
</div>
<div class="${c({hidden:!this.isLoading()})}">
<dbp-mini-spinner></dbp-mini-spinner>
</div>
<dbp-file-sink
id="file-sink"
context="${t.t(`qualified-pdf-upload.save-field-label`,{count:this.signedFilesToDownload})}"
filename="signed-documents.zip"
subscribe="initial-file-handling-state:initial-file-handling-state,nextcloud-store-session:nextcloud-store-session"
enabled-targets="${this.fileHandlingEnabledTargets}"
nextcloud-auth-url="${this.nextcloudWebAppPasswordURL}"
nextcloud-web-dav-url="${this.nextcloudWebDavURL}"
nextcloud-name="${this.nextcloudName}"
nextcloud-file-url="${this.nextcloudFileURL}"
lang="${this.lang}"></dbp-file-sink>
`}});
//# sourceMappingURL=dbp-qualified-signature-pdf-upload.js.map