Skip to content
Snippets Groups Projects
Select Git revision
  • 9f533f0dc90fb3f36db48b486b4aa4d61b1add4d
  • main default protected
  • renovate/lock-file-maintenance
  • demo protected
  • person-select-custom
  • dbp-translation-component
  • icon-set-mapping
  • port-i18next-parser
  • remove-sentry
  • favorites-and-recent-files
  • revert-6c632dc6
  • lit2
  • advertisement
  • wc-part
  • automagic
  • publish
  • wip-cleanup
  • demo-file-handling
18 results

clipboard.js

  • clipboard.js 33.28 KiB
    import {i18n} from './i18n';
    import {css, html} from 'lit-element';
    import {ScopedElementsMixin} from '@open-wc/scoped-elements';
    import * as commonUtils from '@dbp-toolkit/common/utils';
    import * as commonStyles from '@dbp-toolkit/common/styles';
    import * as fileHandlingStyles from '@dbp-toolkit/file-handling/src/styles';
    import {Icon} from '@dbp-toolkit/common';
    import Tabulator from "tabulator-tables";
    import {humanFileSize} from "@dbp-toolkit/common/i18next";
    import {name as pkgName} from "@dbp-toolkit/file-handling/package.json";
    import {send} from "@dbp-toolkit/common/notification";
    import {AdapterLitElement} from "@dbp-toolkit/provider/src/adapter-lit-element";
    import {classMap} from 'lit-html/directives/class-map.js';
    
    const MODE_TABLE_ONLY = "table-only";
    const MODE_FILE_SINK = "file-sink";
    const MODE_FILE_SOURCE = "file-source";
    
    export class Clipboard extends ScopedElementsMixin(AdapterLitElement) {
    
        constructor() {
            super();
            this.lang = 'de';
            this.allowedMimeTypes = '*/*';
            this.clipboardFiles = {files: ''};
            this.clipboardSelectBtnDisabled = true;
            this.tabulatorTable = null;
            this._onReceiveBeforeUnload = this.onReceiveBeforeUnload.bind(this);
            this.filesToSave = [];
            this.numberOfSelectedFiles = 0;
            this.enabledTargets = 'local';
    
            this.nextcloudWebAppPasswordURL = "";
            this.nextcloudWebDavURL = "";
            this.nextcloudName = "";
            this.nextcloudFileURL = "";
            this.authInfo = '';
    
            this.allowNesting = false;
    
            // To avoid a cyclic dependency
            import('./file-sink').then(({ FileSink }) => this.defineScopedElement('dbp-file-sink', FileSink));
            import('./file-source').then(({ FileSource }) => this.defineScopedElement('dbp-file-source', FileSource));
    
            this.mode = MODE_TABLE_ONLY;
        }
    
        static get scopedElements() {
            return {
                'dbp-icon': Icon,
            };
        }
    
        static get properties() {
            return {
                ...super.properties,
                lang: { type: String },
                allowedMimeTypes: { type: String, attribute: 'allowed-mime-types' },
                clipboardSelectBtnDisabled: { type: Boolean, attribute: true },
                clipboardFiles: {type: Object, attribute: 'clipboard-files' },
                filesToSave: {type: Array, attribute: 'files-to-save' },
                numberOfSelectedFiles: {type: Number, attribute: false },
                enabledTargets: {type: String, attribute: 'enabled-targets'},
    
                nextcloudWebAppPasswordURL: { type: String, attribute: 'nextcloud-auth-url' },
                nextcloudWebDavURL: { type: String, attribute: 'nextcloud-web-dav-url' },
                nextcloudName: { type: String, attribute: 'nextcloud-name' },
                nextcloudFileURL: { type: String, attribute: 'nextcloud-file-url' },
                nextcloudAuthInfo: {type: String, attribute: 'nextcloud-auth-info'},