@dbp-topics/dispatch
Version:
[GitHub Repository](https://github.com/digital-blueprint/dispatch-frontend) | [npmjs package](https://www.npmjs.com/package/@dbp-topics/dispatch) | [Unpkg CDN](https://unpkg.com/browse/@dbp-topics/dispatch/) | [Dispatch Bundle](https://github.com/digital-
353 lines (352 loc) • 28.6 kB
JavaScript
let e,i,t,s,n,l,a=e=>e;function o(){return o=Object.assign?Object.assign.bind():function(e){for(var i=1;i<arguments.length;i++){var t=arguments[i];for(var s in t)Object.prototype.hasOwnProperty.call(t,s)&&(e[s]=t[s])}return e},o.apply(this,arguments)}
/*!
* 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/common: LGPL-2.1-or-later
* @dbp-toolkit/auth: LGPL-2.1-or-later
* event-target-shim: MIT
* @dbp-toolkit/notification: LGPL-2.1-or-later
* @dbp-toolkit/theme-switcher: LGPL-2.1-or-later
* path-to-regexp: MIT
* universal-router: MIT
* generateUrls: MIT
* @dbp-toolkit/matomo: LGPL-2.1-or-later
* @tugraz/web-components: LGPL-2.1-or-later
* @babel/runtime: MIT
* i18next: MIT
* @lit/reactive-element: BSD-3-Clause
* lit-html: BSD-3-Clause
* lit-element: BSD-3-Clause
* @open-wc/dedupe-mixin: MIT
* @open-wc/scoped-elements: MIT
* @popperjs/core: MIT
* tippy.js: MIT
* @dbp-toolkit/tooltip: LGPL-2.1-or-later
* @dbp-toolkit/person-select: LGPL-2.1-or-later
* @dbp-toolkit/file-handling: LGPL-2.1-or-later
* file-saver: MIT
* webdav: MIT
* tabulator-tables: MIT
* jose: MIT
* jquery: MIT
* select2: MIT
* @dbp-toolkit/resource-select: LGPL-2.1-or-later
* @dbp-topics/signature: LGPL-2.1-or-later
* @digital-blueprint/annotpdf: MIT
* pdfjs-dist: Apache-2.0
* dommatrix: MIT
* web-streams-polyfill: MIT
*/import{D as d,c as r,A as u,P as c,T as p,a as h,f,g,n as b}from"./shared/styles.5ae58174.es.js";import{S as m,I as v,M as F,P as $,s as P,z as y,i as w,g as x,b as S,f as A,d as k,y as q,o as E,n as I,k as D}from"./shared/notification.431b7aff.es.js";import{FileSource as U}from"./shared/file-source.7dcfb7c2.es.js";import{FileSink as j}from"./shared/file-sink.a4f3cd03.es.js";import{J as C}from"./shared/jsonld.f5d0f523.es.js";import"./shared/_commonjsHelpers.e3705ba7.es.js";import"./shared/_commonjs-dynamic-modules.1ca6ead7.es.js";import"./shared/resource-select.22699b80.es.js";import"./shared/dbp-file-handling-lit-element.c8c0eb51.es.js";var L={element:"dbp-official-signature-pdf-upload",module_src:"dbp-official-signature-pdf-upload.js",routing_name:"official-pdf-upload",name:{de:"Dokumente amtssignieren",en:"Officially sign documents"},short_name:{de:"Dokumente amtssignieren",en:"Officially sign documents"},description:{de:"Erlaubt das Hochladen von PDF-Dokumenten, um sie mit einer Amtssignatur zu versehen",en:"Allows upload of PDF-documents to officially sign them"},subscribe:"lang,entry-point-url,nextcloud-web-app-password-url,nextcloud-webdav-url,nextcloud-name,nextcloud-auth-info,nextcloud-file-url,auth,allow-annotating,file-handling-enabled-targets",required_roles:["ROLE_SCOPE_OFFICIAL-SIGNATURE"]};class N extends(m(d)){constructor(){super(),this._i18n=r(),this.lang=this._i18n.language,this.entryPointUrl="",this.nextcloudWebAppPasswordURL="",this.nextcloudWebDavURL="",this.nextcloudName="",this.nextcloudFileURL="",this.nextcloudAuthInfo="",this.signedFiles=[],this.signedFilesCount=0,this.signedFilesToDownload=0,this.errorFiles=[],this.errorFilesCount=0,this.uploadStatusFileName="",this.uploadStatusText="",this.currentFile={},this.currentFileName="",this.currentFilePlacementMode="",this.currentFileSignaturePlacement={},this.signingProcessEnabled=!1,this.signingProcessActive=!1,this.signaturePlacementInProgress=!1,this.withSigBlock=!1,this.queuedFilesSignaturePlacements=[],this.queuedFilesPlacementModes=[],this.queuedFilesNeedsPlacement=new Map,this.currentPreviewQueueKey="",this.allowAnnotating=!1,this.queuedFilesAnnotations=[],this.queuedFilesAnnotationModes=[],this.queuedFilesAnnotationsCount=0,this.queuedFilesAnnotationSaved=[],this.queuedFilesEnabledAnnotations=[],this.isAnnotationViewVisible=!1,this.addAnnotationInProgress=!1,this.activity=new u(L),this.fileHandlingEnabledTargets="local"}static get scopedElements(){return{"dbp-icon":v,"dbp-file-source":U,"dbp-file-sink":j,"dbp-pdf-preview":c,"dbp-mini-spinner":F,"dbp-button":$,"dbp-textswitch":p,"dbp-pdf-annotation-view":h}}static get properties(){return o({},super.properties,{lang:{type:String},entryPointUrl:{type:String,attribute:"entry-point-url"},nextcloudWebAppPasswordURL:{type:String,attribute:"nextcloud-web-app-password-url"},nextcloudWebDavURL:{type:String,attribute:"nextcloud-webdav-url"},nextcloudName:{type:String,attribute:"nextcloud-name"},nextcloudFileURL:{type:String,attribute:"nextcloud-file-url"},nextcloudAuthInfo:{type:String,attribute:"nextcloud-auth-info"},signedFiles:{type:Array,attribute:!1},signedFilesCount:{type:Number,attribute:!1},signedFilesToDownload:{type:Number,attribute:!1},queuedFilesCount:{type:Number,attribute:!1},errorFiles:{type:Array,attribute:!1},errorFilesCount:{type:Number,attribute:!1},uploadInProgress:{type:Boolean,attribute:!1},uploadStatusFileName:{type:String,attribute:!1},uploadStatusText:{type:String,attribute:!1},signingProcessEnabled:{type:Boolean,attribute:!1},signingProcessActive:{type:Boolean,attribute:!1},queueBlockEnabled:{type:Boolean,attribute:!1},currentFile:{type:Object,attribute:!1},currentFileName:{type:String,attribute:!1},signaturePlacementInProgress:{type:Boolean,attribute:!1},withSigBlock:{type:Boolean,attribute:!1},isSignaturePlacement:{type:Boolean,attribute:!1},allowAnnotating:{type:Boolean,attribute:"allow-annotating"},isAnnotationViewVisible:{type:Boolean,attribute:!1},queuedFilesAnnotations:{type:Array,attribute:!1},queuedFilesAnnotationsCount:{type:Number,attribute:!1},addAnnotationInProgress:{type:Boolean,attribute:!1},queuedFilesAnnotationModes:{type:Array,attribute:!1},queuedFilesAnnotationSaved:{type:Array,attribute:!1},fileHandlingEnabledTargets:{type:String,attribute:"file-handling-enabled-targets"}})}connectedCallback(){super.connectedCallback(),setInterval((()=>{this.handleQueuedFiles()}),1e3)}async queueFile(e){let i=await super.queueFile(e);return await this._updateNeedsPlacementStatus(i),this.requestUpdate(),i}async handleQueuedFiles(){const e=this._i18n;if(this.endSigningProcessIfQueueEmpty(),0===this.queuedFilesCount)return void(this.signingProcessEnabled=!1);if(!this.signingProcessEnabled||this.uploadInProgress||this.addAnnotationInProgress)return;this.signaturePlacementInProgress=!1;for(const i of Object.keys(this.queuedFiles)){const t="manual"===this.queuedFilesPlacementModes[i];if(this.queuedFilesNeedsPlacement.get(i)&&!t)return P({body:e.t("error-manual-positioning-missing"),type:"danger",timeout:5}),this.signingProcessEnabled=!1,void(this.signingProcessActive=!1)}const i=Object.keys(this.queuedFiles)[0],t=this.takeFileFromQueue(i).file;this.currentFile=t,this.currentFilePlacementMode=this.queuedFilesPlacementModes[i],this.currentFileSignaturePlacement=this.queuedFilesSignaturePlacements[i],this.uploadInProgress=!0;let s={};if("manual"===this.queuedFilesPlacementModes[i]){const e=this.queuedFilesSignaturePlacements[i];void 0!==e&&(s=f(e))}s.profile="official",this.uploadStatusText=e.t("official-pdf-upload.upload-status-file-text",{fileName:t.name,fileSize:y(t.size,!1)});const n=this.isAnnotationsEnabledForKey(i),l=this.takeAnnotationsFromQueue(i);await this.uploadFile(t,s,n?l:[]),this.uploadInProgress=!1}onReceiveBeforeUnload(e){const i=this._i18n;if(0!==this.signedFilesCount){if(!e.isTrusted){if(confirm(i.t("official-pdf-upload.confirm-page-leave")))return}e.preventDefault(),e.returnValue=""}}addToErrorFiles(e){this.endSigningProcessIfQueueEmpty(),this.errorFiles[Math.floor(1e6*Math.random())]=e,this.errorFilesCount++,this.sendSetPropertyEvent("analytics-event",{category:"officiallySigning",action:"SigningFailed",name:e.json["hydra:description"]})}onFileUploadFinished(e){if(201!==e.status)this.addToErrorFiles(e);else if("http://schema.org/MediaObject"===e.json["@type"]){this.signedFiles.push(e.json),this.signedFilesCount++;const i=e.json;this.currentFileName=i.name,this.endSigningProcessIfQueueEmpty(),this.sendSetPropertyEvent("analytics-event",{category:"OfficialSigning",action:"DocumentSigned",name:e.json.contentSize})}}update(e){e.forEach(((e,i)=>{switch(i){case"lang":this._i18n.changeLanguage(this.lang);break;case"entryPointUrl":C.getInstance(this.entryPointUrl).then((e=>{let i;try{i=e.getApiUrlForEntityName("EsignAdvancedlySignedDocument")}catch(t){i=e.getApiUrlForEntityName("AdvancedlySignedDocument")}this.fileSourceUrl=i}))}})),super.update(e)}clearQueuedFiles(){this.queuedFilesSignaturePlacements=[],this.queuedFilesPlacementModes=[],this.queuedFilesNeedsPlacement.clear(),super.clearQueuedFiles()}async stopSigningProcess(){if(console.log("stop"),this.signingProcessEnabled=!1,this.signingProcessActive=!1,void 0!==this.currentFile.file){const e=await this.queueFile(this.currentFile.file);this.queuedFilesPlacementModes[e]=this.currentFilePlacementMode,this.queuedFilesSignaturePlacements[e]=this.currentFileSignaturePlacement}}static get styles(){return w(e||(e=a`
${0}
${0}
${0}
${0}
${0}
`),x(),S(!1),A(),k(),g())}getQueuedFilesHtml(){const e=this._i18n,s=Object.keys(this.queuedFiles);let n=[];return s.forEach((s=>{const l=this.queuedFiles[s].file,o="manual"===this.queuedFilesPlacementModes[s],d=this.queuedFilesNeedsPlacement.get(s)&&!o;n.push(q(i||(i=a`
<div class="file-block">
<div class="header">
<span class="filename">
<strong>${0}</strong>
(${0})
</span>
<button
class="button close is-icon"
?disabled="${0}"
title="${0}"
="${0}">
<dbp-icon name="trash"></dbp-icon>
</button>
</div>
<div class="bottom-line">
<div></div>
<button
class="button"
?disabled="${0}"
="${0}">
${0}
</button>
<span class="headline">${0}:</span>
<dbp-textswitch
name1="auto"
name2="manual"
name="${0}"
class="${0}"
value1="${0}"
value2="${0}"
?disabled="${0}"
=${0}></dbp-textswitch>
<span class="headline ${0}">
${0}:
</span>
<div class="${0}">
<dbp-textswitch
id="annotation-switch"
name1="no-text"
name2="text-selected"
name="${0}"
class="${0}"
value1="${0}"
value2="${0}"
?disabled="${0}"
=${0}></dbp-textswitch>
</div>
</div>
<div class="error-line">
${0}
</div>
</div>
`),l.name,y(l.size),this.signingProcessEnabled,e.t("official-pdf-upload.remove-queued-file-button-title"),(()=>{this.takeFileFromQueue(s)}),this.signingProcessEnabled,(()=>{this.showPreview(s)}),e.t("official-pdf-upload.show-preview"),e.t("official-pdf-upload.positioning"),this.queuedFilesPlacementModes[s]||"auto",E({"placement-missing":d,switch:!0}),e.t("official-pdf-upload.positioning-automatic"),e.t("official-pdf-upload.positioning-manual"),this.signingProcessEnabled,(e=>this.queuePlacementSwitch(s,e.target.name)),E({hidden:!this.allowAnnotating}),e.t("official-pdf-upload.annotation"),E({hidden:!this.allowAnnotating}),this.queuedFilesAnnotationModes[s]||"no-text",E({switch:!0}),e.t("official-pdf-upload.annotation-no"),e.t("official-pdf-upload.annotation-yes"),this.signingProcessEnabled,(e=>this.showAnnotationView(s,e.target.name)),d?q(t||(t=a`
${0}
`),e.t("label-manual-positioning-missing")):""))})),n}getSignedFilesHtml(){const e=Object.keys(this.signedFiles),i=this._i18n;let t=[];return e.forEach((e=>{const n=this.signedFiles[e];t.push(q(s||(s=a`
<div class="file-block" id="file-block-${0}">
<div class="header">
<span class="filename">
<span class="bold-filename">${0}</span>
(${0})
</span>
<button
class="button is-icon"
title="${0}"
="${0}">
<dbp-icon name="download"></dbp-icon>
</button>
</div>
</div>
`),e,n.name,y(n.contentSize),i.t("official-pdf-upload.download-file-button-title"),(()=>{this.downloadFileClickHandler(n,"file-block-"+e)})))})),t}getErrorFilesHtml(){const e=Object.keys(this.errorFiles),i=this._i18n;let t=[];return e.forEach((e=>{const s=this.errorFiles[e];void 0!==s.file&&t.push(q(n||(n=a`
<div class="file-block error">
<div class="header">
<span class="filename">
<strong>${0}</strong>
(${0})
</span>
<div class="buttons">
<button
class="button is-icon"
title="${0}"
="${0}">
<dbp-icon name="reload"></dbp-icon>
</button>
<button
class="button is-icon"
title="${0}"
="${0}">
<dbp-icon name="trash"></dbp-icon>
</button>
</div>
</div>
<div class="bottom-line">
<strong class="error">${0}</strong>
</div>
</div>
`),s.file.name,y(s.file.size),i.t("official-pdf-upload.re-upload-file-button-title"),(()=>{this.fileQueueingClickHandler(s.file,e)}),i.t("official-pdf-upload.remove-failed-file-button-title"),(()=>{this.takeFailedFileFromQueue(e)}),s.json["hydra:description"]))})),t}hasSignaturePermissions(){return this._hasSignaturePermissions("ROLE_SCOPE_OFFICIAL-SIGNATURE")}render(){const e=I(b,"official-signature-placeholder.png"),i=this._i18n;return q(l||(l=a`
<div
class="${0}">
<div class="field">
<h2>${0}</h2>
<p class="subheadline">${0}</p>
<div class="control">
<p>${0}</p>
<button
="${0}"
?disabled="${0}"
class="button is-primary">
${0}
</button>
<dbp-file-source
id="file-source"
context="${0}"
subscribe="nextcloud-store-session:nextcloud-store-session"
allowed-mime-types="application/pdf"
enabled-targets="${0}"
nextcloud-auth-url="${0}"
nextcloud-web-dav-url="${0}"
nextcloud-name="${0}"
nextcloud-auth-info="${0}"
nextcloud-file-url="${0}"
decompress-zip
max-file-size="32000"
lang="${0}"
?disabled="${0}"
text="${0}"
button-label="${0}"
-file-source-file-selected="${0}"
-file-source-switched="${0}"></dbp-file-source>
</div>
</div>
<div id="grid-container">
<div class="left-container">
<div
class="files-block field ${0}">
<!-- Queued files headline and queueing spinner -->
<h3
class="${0}">
${0}
</h3>
<!-- Buttons to start/stop signing process and clear queue -->
<div class="control field">
<button
="${0}"
?disabled="${0}"
class="button ${0}">
${0}
</button>
<button
="${0}"
?disabled="${0}"
class="button is-right is-primary ${0}">
${0}
</button>
<!-- -->
<button
="${0}"
id="cancel-signing-process"
class="button is-right ${0}">
${0}
</button>
<!-- -->
</div>
<!-- List of queued files -->
<div
class="control file-list ${0}">
${0}
</div>
<!-- Text "queue empty" -->
<div
class="empty-queue control ${0}">
${0}
<br />
${0}
</div>
</div>
<!-- List of signed PDFs -->
<div
class="files-block field ${0}">
<h3>${0}</h3>
<!-- Button to download all signed PDFs -->
<div class="field ${0}">
<div class="control">
<button ="${0}" class="button">
${0}
</button>
<dbp-button
id="zip-download-button"
value="${0}"
title="${0}"
class="is-right"
="${0}"
type="is-primary"></dbp-button>
</div>
</div>
<div class="control">${0}</div>
</div>
<!-- List of errored files -->
<div
class="files-block error-files field ${0}">
<h3>${0}</h3>
<!-- Button to upload errored files again -->
<div class="field ${0}">
<div class="control">
<button ="${0}" class="button">
${0}
</button>
<dbp-button
id="re-upload-all-button"
?disabled="${0}"
value="${0}"
title="${0}"
class="is-right"
="${0}"
type="is-primary"></dbp-button>
</div>
</div>
<div class="control">${0}</div>
</div>
</div>
<div class="right-container">
<!-- PDF preview -->
<div
id="pdf-preview"
class="field ${0}">
<h3>
${0}
</h3>
<div class="box-header">
<div class="filename">
<strong>${0}</strong>
(${0})
</div>
<button class="is-cancel" ="${0}">
<dbp-icon name="close"></dbp-icon>
</button>
</div>
<dbp-pdf-preview
lang="${0}"
allow-signature-rotation
signature-placeholder-image-src="${0}"
signature-width="162"
signature-height="28"
-pdf-preview-accept="${0}"
-pdf-preview-cancel="${0}"></dbp-pdf-preview>
</div>
<!-- Annotation view -->
<div
id="annotation-view"
class="field ${0}">
<h2>${0}</h2>
<div class="box-header">
<div class="filename">
<strong>
${0}
</strong>
(${0})
</div>
<button
class="is-cancel annotation"
="${0}">
<dbp-icon name="close" id="close-icon"></dbp-icon>
</button>
</div>
<dbp-pdf-annotation-view
lang="${0}"
-pdf-annotations-save="${0}"
-pdf-annotations-cancel="${0}"></dbp-pdf-annotation-view>
</div>
<!-- File upload progress -->
<div
id="upload-progress"
class="field notification is-info ${0}">
<dbp-mini-spinner></dbp-mini-spinner>
<strong>${0}</strong>
${0}
</div>
</div>
</div>
</div>
<div
class="notification is-warning ${0}">
${0}
</div>
<div
class="notification is-danger ${0}">
${0}
</div>
<div class="${0}">
<dbp-mini-spinner></dbp-mini-spinner>
</div>
<dbp-file-sink
id="file-sink"
context="${0}"
filename="signed-documents.zip"
subscribe="initial-file-handling-state:initial-file-handling-state,clipboard-files:clipboard-files,nextcloud-store-session:nextcloud-store-session"
enabled-targets="${0}"
nextcloud-auth-url="${0}"
nextcloud-web-dav-url="${0}"
nextcloud-name="${0}"
nextcloud-file-url="${0}"
lang="${0}"></dbp-file-sink>
`),E({hidden:!this.isLoggedIn()||!this.hasSignaturePermissions()||this.isLoading()}),this.activity.getName(this.lang),this.activity.getDescription(this.lang),i.t("official-pdf-upload.upload-text"),(()=>{this._("#file-source").setAttribute("dialog-open","")}),this.signingProcessActive,i.t("official-pdf-upload.upload-button-label"),i.t("official-pdf-upload.file-picker-context"),this.fileHandlingEnabledTargets,this.nextcloudWebAppPasswordURL,this.nextcloudWebDavURL,this.nextcloudName,this.nextcloudAuthInfo,this.nextcloudFileURL,this.lang,this.signingProcessActive,i.t("official-pdf-upload.upload-area-text"),i.t("official-pdf-upload.upload-button-label"),this.onFileSelected,this.onFileSourceSwitch,E({hidden:!this.queueBlockEnabled}),E({"is-disabled":this.isUserInterfaceDisabled()}),i.t("official-pdf-upload.queued-files-label"),this.clearQueuedFiles,0===this.queuedFilesCount||this.signingProcessActive||this.isUserInterfaceDisabled(),E({"is-disabled":this.isUserInterfaceDisabled()}),i.t("official-pdf-upload.clear-all"),(()=>{this.signingProcessEnabled=!0,this.signingProcessActive=!0}),0===this.queuedFilesCount,E({"is-disabled":this.isUserInterfaceDisabled(),hidden:this.signingProcessActive}),i.t("official-pdf-upload.start-signing-process-button"),this.stopSigningProcess,E({hidden:!this.signingProcessActive}),i.t("official-pdf-upload.stop-signing-process-button"),E({"is-disabled":this.isUserInterfaceDisabled()}),this.getQueuedFilesHtml(),E({hidden:0!==this.queuedFilesCount,"is-disabled":this.isUserInterfaceDisabled()}),i.t("official-pdf-upload.queued-files-empty1"),i.t("official-pdf-upload.queued-files-empty2"),E({hidden:0===this.signedFilesCount,"is-disabled":this.isUserInterfaceDisabled()}),i.t("official-pdf-upload.signed-files-label"),E({hidden:0===this.signedFilesCount}),this.clearSignedFiles,i.t("official-pdf-upload.clear-all"),i.t("official-pdf-upload.download-zip-button"),i.t("official-pdf-upload.download-zip-button-tooltip"),this.zipDownloadClickHandler,this.getSignedFilesHtml(),E({hidden:0===this.errorFilesCount,"is-disabled":this.isUserInterfaceDisabled()}),i.t("official-pdf-upload.error-files-label"),E({hidden:0===this.errorFilesCount}),this.clearErrorFiles,i.t("official-pdf-upload.clear-all"),this.uploadInProgress,i.t("official-pdf-upload.re-upload-all-button"),i.t("official-pdf-upload.re-upload-all-button-title"),this.reUploadAllClickHandler,this.getErrorFilesHtml(),E({hidden:!this.signaturePlacementInProgress}),this.withSigBlock?i.t("official-pdf-upload.signature-placement-label"):i.t("official-pdf-upload.preview-label"),this.currentFile.name,y(void 0!==this.currentFile?this.currentFile.size:0),this.hidePDF,this.lang,e,this.storePDFData,this.hidePDF,E({hidden:!this.isAnnotationViewVisible||!this.allowAnnotating}),i.t("official-pdf-upload.annotation-view-label"),void 0!==this.currentFile.file?this.currentFile.file.name:"",y(void 0!==this.currentFile.file?this.currentFile.file.size:0),this.hideAnnotationView,this.lang,this.processAnnotationEvent,this.processAnnotationCancelEvent,E({hidden:!this.uploadInProgress}),this.uploadStatusFileName,this.uploadStatusText,E({hidden:this.isLoggedIn()||this.isLoading()}),i.t("error-login-message"),E({hidden:this.hasSignaturePermissions()||!this.isLoggedIn()||this.isLoading()}),i.t("error-permission-message"),E({hidden:!this.isLoading()}),i.t("qualified-pdf-upload.save-field-label",{count:this.signedFilesToDownload}),this.fileHandlingEnabledTargets,this.nextcloudWebAppPasswordURL,this.nextcloudWebDavURL,this.nextcloudName,this.nextcloudFileURL,this.lang)}}D("dbp-official-signature-pdf-upload",N);
//# sourceMappingURL=dbp-official-signature-pdf-upload.js.map