@teipublisher/pb-components 2.26.0-next-3.12 → 2.26.0-next-3.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/main.yml +3 -3
- package/.github/workflows/node.js.yml +3 -3
- package/.github/workflows/release.js.yml +3 -3
- package/CHANGELOG.md +30 -0
- package/Dockerfile +78 -70
- package/css/components.css +5 -5
- package/dist/demo/pb-drawer2.html +1 -1
- package/dist/demo/pb-leaflet-map.html +1 -1
- package/dist/demo/pb-progress.html +2 -2
- package/dist/demo/pb-repeat.html +1 -3
- package/dist/demo/pb-view3.html +1 -1
- package/dist/{paper-icon-button-0fb125c4.js → paper-icon-button-72125e67.js} +1 -1
- package/dist/pb-code-editor.js +25 -20
- package/dist/pb-component-docs.js +58 -54
- package/dist/pb-components-bundle.js +1937 -1782
- package/dist/pb-edit-app.js +167 -107
- package/dist/pb-elements.json +45 -45
- package/dist/{pb-i18n-0611135a.js → pb-i18n-4cc00bfe.js} +1 -1
- package/dist/pb-leaflet-map.js +23 -23
- package/dist/pb-mei.js +56 -41
- package/dist/{pb-mixin-b1caa22e.js → pb-mixin-886ece32.js} +1 -1
- package/dist/pb-odd-editor.js +923 -756
- package/dist/pb-tify.js +2 -2
- package/dist/{vaadin-element-mixin-49ab4037.js → vaadin-element-mixin-84fb7d82.js} +178 -163
- package/gh-pages.js +5 -3
- package/i18n/common/pl.json +2 -2
- package/lib/openseadragon.min.js +1 -1
- package/package.json +2 -2
- package/pb-elements.json +45 -45
- package/src/assets/components.css +5 -5
- package/src/authority/airtable.js +20 -21
- package/src/authority/anton.js +129 -129
- package/src/authority/custom.js +23 -21
- package/src/authority/geonames.js +38 -32
- package/src/authority/gnd.js +47 -42
- package/src/authority/kbga.js +137 -134
- package/src/authority/metagrid.js +44 -46
- package/src/authority/reconciliation.js +66 -67
- package/src/authority/registry.js +4 -4
- package/src/docs/pb-component-docs.js +2 -2
- package/src/docs/pb-component-view.js +5 -5
- package/src/docs/pb-components-list.js +2 -2
- package/src/docs/pb-demo-snippet.js +2 -2
- package/src/dts-client.js +299 -297
- package/src/dts-select-endpoint.js +90 -82
- package/src/parse-date-service.js +184 -135
- package/src/pb-ajax.js +150 -146
- package/src/pb-authority-lookup.js +183 -146
- package/src/pb-autocomplete.js +292 -280
- package/src/pb-blacklab-highlight.js +264 -259
- package/src/pb-blacklab-results.js +236 -221
- package/src/pb-browse-docs.js +540 -475
- package/src/pb-browse.js +68 -65
- package/src/pb-clipboard.js +79 -76
- package/src/pb-code-editor.js +110 -102
- package/src/pb-code-highlight.js +209 -204
- package/src/pb-codepen.js +79 -72
- package/src/pb-collapse.js +212 -207
- package/src/pb-combo-box.js +190 -190
- package/src/pb-components-bundle.js +1 -1
- package/src/pb-custom-form.js +151 -149
- package/src/pb-dialog.js +94 -85
- package/src/pb-document.js +89 -90
- package/src/pb-download.js +210 -198
- package/src/pb-drawer.js +145 -148
- package/src/pb-edit-app.js +301 -229
- package/src/pb-edit-xml.js +98 -96
- package/src/pb-events.js +114 -107
- package/src/pb-facs-link.js +104 -102
- package/src/pb-facsimile.js +411 -413
- package/src/pb-formula.js +151 -153
- package/src/pb-geolocation.js +129 -131
- package/src/pb-grid-action.js +53 -56
- package/src/pb-grid.js +231 -228
- package/src/pb-highlight.js +140 -140
- package/src/pb-hotkeys.js +40 -42
- package/src/pb-i18n.js +101 -104
- package/src/pb-image-strip.js +84 -78
- package/src/pb-lang.js +132 -128
- package/src/pb-leaflet-map.js +488 -485
- package/src/pb-link.js +126 -124
- package/src/pb-load.js +431 -426
- package/src/pb-login.js +291 -248
- package/src/pb-manage-odds.js +364 -318
- package/src/pb-map-icon.js +89 -89
- package/src/pb-map-layer.js +85 -85
- package/src/pb-markdown.js +90 -99
- package/src/pb-media-query.js +74 -72
- package/src/pb-mei.js +306 -295
- package/src/pb-message.js +144 -144
- package/src/pb-mixin.js +269 -264
- package/src/pb-navigation.js +80 -82
- package/src/pb-observable.js +38 -38
- package/src/pb-odd-editor.js +1053 -955
- package/src/pb-odd-elementspec-editor.js +348 -297
- package/src/pb-odd-model-editor.js +1061 -901
- package/src/pb-odd-parameter-editor.js +200 -178
- package/src/pb-odd-rendition-editor.js +136 -124
- package/src/pb-page.js +431 -421
- package/src/pb-paginate.js +202 -190
- package/src/pb-panel.js +191 -179
- package/src/pb-popover-themes.js +7 -5
- package/src/pb-popover.js +296 -287
- package/src/pb-print-preview.js +127 -127
- package/src/pb-progress.js +51 -51
- package/src/pb-repeat.js +105 -104
- package/src/pb-restricted.js +84 -77
- package/src/pb-search.js +252 -241
- package/src/pb-select-feature.js +127 -120
- package/src/pb-select-odd.js +132 -124
- package/src/pb-select-template.js +89 -78
- package/src/pb-select.js +251 -227
- package/src/pb-split-list.js +179 -174
- package/src/pb-svg.js +80 -79
- package/src/pb-table-column.js +54 -54
- package/src/pb-table-grid.js +221 -203
- package/src/pb-tabs.js +61 -63
- package/src/pb-tify.js +154 -154
- package/src/pb-timeline.js +271 -229
- package/src/pb-toggle-feature.js +182 -175
- package/src/pb-upload.js +184 -174
- package/src/pb-version.js +30 -30
- package/src/pb-view-annotate.js +132 -98
- package/src/pb-view.js +1289 -1270
- package/src/pb-zoom.js +75 -59
- package/src/polymer-hack.js +1 -1
- package/src/search-result-service.js +256 -223
- package/src/seed-element.js +13 -20
- package/src/settings.js +4 -4
- package/src/theming.js +96 -96
- package/src/urls.js +289 -289
- package/src/utils.js +53 -51
package/src/pb-document.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { LitElement } from 'lit-element';
|
|
2
2
|
import { pbMixin } from './pb-mixin.js';
|
|
3
|
-
import { registry } from
|
|
3
|
+
import { registry } from './urls.js';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Represents a Publisher document. It has no visual presentation but holds meta-data
|
|
@@ -11,108 +11,107 @@ import { registry } from "./urls.js";
|
|
|
11
11
|
* @fires pb-document - Fires update event
|
|
12
12
|
*/
|
|
13
13
|
class PbDocument extends pbMixin(LitElement) {
|
|
14
|
+
static get properties() {
|
|
15
|
+
return {
|
|
16
|
+
...super.properties,
|
|
17
|
+
/**
|
|
18
|
+
* The path to the document to be loaded. Should be relative to `root`.
|
|
19
|
+
*/
|
|
20
|
+
path: {
|
|
21
|
+
type: String,
|
|
22
|
+
reflect: true,
|
|
23
|
+
},
|
|
24
|
+
/**
|
|
25
|
+
* The root collection which will be used to resolve relative paths
|
|
26
|
+
* specified in `path`.
|
|
27
|
+
*/
|
|
28
|
+
rootPath: {
|
|
29
|
+
type: String,
|
|
30
|
+
attribute: 'root-path',
|
|
31
|
+
},
|
|
32
|
+
/**
|
|
33
|
+
* The odd file which should be used to render this document by default. Might be
|
|
34
|
+
* overwritten in a `pb-view`. The odd should be specified by its name without path
|
|
35
|
+
* or the `.odd` suffix.
|
|
36
|
+
*/
|
|
37
|
+
odd: {
|
|
38
|
+
type: String,
|
|
39
|
+
reflect: true,
|
|
40
|
+
},
|
|
41
|
+
/**
|
|
42
|
+
* The default view to be used for displaying this document. Can be either `page`, `div` or `simple`.
|
|
43
|
+
* Might be overwritten in a `pb-view`.
|
|
44
|
+
*
|
|
45
|
+
* Value | Displayed content
|
|
46
|
+
* ------|------------------
|
|
47
|
+
* `page` | content is displayed page by page as determined by tei:pb
|
|
48
|
+
* `div` | content is displayed by divisions
|
|
49
|
+
* `single` | do not paginate but display entire content at once
|
|
50
|
+
*/
|
|
51
|
+
view: {
|
|
52
|
+
type: String,
|
|
53
|
+
reflect: true,
|
|
54
|
+
},
|
|
55
|
+
disableHistory: {
|
|
56
|
+
type: Boolean,
|
|
57
|
+
attribute: 'disable-history',
|
|
58
|
+
},
|
|
59
|
+
sourceView: {
|
|
60
|
+
type: String,
|
|
61
|
+
attribute: 'source-view',
|
|
62
|
+
},
|
|
63
|
+
};
|
|
64
|
+
}
|
|
14
65
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
path: {
|
|
22
|
-
type: String,
|
|
23
|
-
reflect: true
|
|
24
|
-
},
|
|
25
|
-
/**
|
|
26
|
-
* The root collection which will be used to resolve relative paths
|
|
27
|
-
* specified in `path`.
|
|
28
|
-
*/
|
|
29
|
-
rootPath: {
|
|
30
|
-
type: String,
|
|
31
|
-
attribute: 'root-path'
|
|
32
|
-
},
|
|
33
|
-
/**
|
|
34
|
-
* The odd file which should be used to render this document by default. Might be
|
|
35
|
-
* overwritten in a `pb-view`. The odd should be specified by its name without path
|
|
36
|
-
* or the `.odd` suffix.
|
|
37
|
-
*/
|
|
38
|
-
odd: {
|
|
39
|
-
type: String,
|
|
40
|
-
reflect: true
|
|
41
|
-
},
|
|
42
|
-
/**
|
|
43
|
-
* The default view to be used for displaying this document. Can be either `page`, `div` or `simple`.
|
|
44
|
-
* Might be overwritten in a `pb-view`.
|
|
45
|
-
*
|
|
46
|
-
* Value | Displayed content
|
|
47
|
-
* ------|------------------
|
|
48
|
-
* `page` | content is displayed page by page as determined by tei:pb
|
|
49
|
-
* `div` | content is displayed by divisions
|
|
50
|
-
* `single` | do not paginate but display entire content at once
|
|
51
|
-
*/
|
|
52
|
-
view: {
|
|
53
|
-
type: String,
|
|
54
|
-
reflect: true
|
|
55
|
-
},
|
|
56
|
-
disableHistory: {
|
|
57
|
-
type: Boolean,
|
|
58
|
-
attribute: 'disable-history'
|
|
59
|
-
},
|
|
60
|
-
sourceView: {
|
|
61
|
-
type: String,
|
|
62
|
-
attribute: 'source-view'
|
|
63
|
-
}
|
|
64
|
-
};
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
constructor() {
|
|
68
|
-
super();
|
|
69
|
-
this.path = null;
|
|
70
|
-
this.rootPath = '';
|
|
71
|
-
this.disableHistory = false;
|
|
72
|
-
}
|
|
66
|
+
constructor() {
|
|
67
|
+
super();
|
|
68
|
+
this.path = null;
|
|
69
|
+
this.rootPath = '';
|
|
70
|
+
this.disableHistory = false;
|
|
71
|
+
}
|
|
73
72
|
|
|
74
|
-
|
|
75
|
-
|
|
73
|
+
connectedCallback() {
|
|
74
|
+
super.connectedCallback();
|
|
76
75
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
}
|
|
76
|
+
if (!this.disableHistory) {
|
|
77
|
+
// if path is unset, use path taken from the URL
|
|
78
|
+
if (registry.state.path && !this.path) {
|
|
79
|
+
this.path = registry.state.path;
|
|
80
|
+
}
|
|
81
|
+
this.view = registry.state.view || this.view;
|
|
82
|
+
this.odd = registry.state.odd || this.odd;
|
|
85
83
|
}
|
|
84
|
+
}
|
|
86
85
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
}
|
|
86
|
+
attributeChangedCallback(name, oldVal, newVal) {
|
|
87
|
+
super.attributeChangedCallback(name, oldVal, newVal);
|
|
88
|
+
if (oldVal) {
|
|
89
|
+
console.log('<pb-document> Emit update event');
|
|
90
|
+
this.emitTo('pb-document', this);
|
|
93
91
|
}
|
|
92
|
+
}
|
|
94
93
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
94
|
+
/**
|
|
95
|
+
* Returns the name of the document without path.
|
|
96
|
+
*
|
|
97
|
+
* @returns {string} Name of the document
|
|
98
|
+
*/
|
|
99
|
+
getFileName() {
|
|
100
|
+
return this.path.replace(/^.*?([^\/]+)$/, '$1');
|
|
101
|
+
}
|
|
103
102
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
103
|
+
getCollection() {
|
|
104
|
+
return this.path.replace(/^(.*?)\/[^\/]+$/, '$1');
|
|
105
|
+
}
|
|
107
106
|
|
|
108
|
-
|
|
107
|
+
/**
|
|
109
108
|
* Returns the full path to the document.
|
|
110
109
|
|
|
111
110
|
* @returns {string} Full path to the document
|
|
112
111
|
*/
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
112
|
+
getFullPath() {
|
|
113
|
+
return `${this.rootPath}/${this.path}`;
|
|
114
|
+
}
|
|
116
115
|
}
|
|
117
116
|
|
|
118
117
|
customElements.define('pb-document', PbDocument);
|
package/src/pb-download.js
CHANGED
|
@@ -13,214 +13,226 @@ import { themableMixin } from './theming.js';
|
|
|
13
13
|
* @cssprop --pb-download-text-decoration - Extra effects for the download title label
|
|
14
14
|
*/
|
|
15
15
|
export class PbDownload extends themableMixin(pbMixin(LitElement)) {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
16
|
+
static get properties() {
|
|
17
|
+
return {
|
|
18
|
+
...super.properties,
|
|
19
|
+
/**
|
|
20
|
+
* optional id reference to a pb-document. If `url` is not specified,
|
|
21
|
+
* a correct download URL is constructed using the given document path and parameters.
|
|
22
|
+
* Otherwise `url` will be used as main URL.
|
|
23
|
+
*/
|
|
24
|
+
src: {
|
|
25
|
+
type: String,
|
|
26
|
+
},
|
|
27
|
+
/**
|
|
28
|
+
* the base URL to construct the link from. If specified, only the ODD and optional parameters
|
|
29
|
+
* will be appended to the URL.
|
|
30
|
+
*/
|
|
31
|
+
url: {
|
|
32
|
+
type: String,
|
|
33
|
+
},
|
|
34
|
+
/**
|
|
35
|
+
* optional suffix to append to the constructed URL. Use for getting a PDF, epub or similar.
|
|
36
|
+
*/
|
|
37
|
+
type: {
|
|
38
|
+
type: String,
|
|
39
|
+
},
|
|
40
|
+
/**
|
|
41
|
+
* extra odd parameter to be added. This will correspond to the ODD used by the document, if given.
|
|
42
|
+
*/
|
|
43
|
+
odd: {
|
|
44
|
+
type: String,
|
|
45
|
+
},
|
|
46
|
+
/**
|
|
47
|
+
* id of dialog component to show when downloading. A paper-dialog component with this id must
|
|
48
|
+
* exist.
|
|
49
|
+
*/
|
|
50
|
+
dialog: {
|
|
51
|
+
type: String,
|
|
52
|
+
},
|
|
53
|
+
/**
|
|
54
|
+
* title to show in the dialog while download is in progress
|
|
55
|
+
*/
|
|
56
|
+
title: {
|
|
57
|
+
type: String,
|
|
58
|
+
},
|
|
59
|
+
/**
|
|
60
|
+
* add a special parameter 'source=yes' if true. For PDF this will result
|
|
61
|
+
* in generated source code to be displayed
|
|
62
|
+
*/
|
|
63
|
+
source: {
|
|
64
|
+
type: Boolean,
|
|
65
|
+
},
|
|
66
|
+
/**
|
|
67
|
+
* extra params to be added
|
|
68
|
+
*/
|
|
69
|
+
params: {
|
|
70
|
+
type: String,
|
|
71
|
+
},
|
|
72
|
+
_target: {
|
|
73
|
+
type: String,
|
|
74
|
+
reflect: true,
|
|
75
|
+
},
|
|
76
|
+
_href: {
|
|
77
|
+
type: String,
|
|
78
|
+
reflect: true,
|
|
79
|
+
},
|
|
80
|
+
_token: {
|
|
81
|
+
type: String,
|
|
82
|
+
},
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
constructor() {
|
|
87
|
+
super();
|
|
88
|
+
|
|
89
|
+
this.source = false;
|
|
90
|
+
this._target = '_self';
|
|
91
|
+
this.type = '';
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
firstUpdated() {
|
|
95
|
+
if (this.src) {
|
|
96
|
+
this.subscribeTo('pb-document', ev => {
|
|
97
|
+
if (ev.detail.id === this.src) {
|
|
98
|
+
this.odd = ev.detail.odd;
|
|
99
|
+
}
|
|
100
|
+
});
|
|
85
101
|
}
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
102
|
+
this.subscribeTo('pb-refresh', ev => {
|
|
103
|
+
if (ev.detail.odd) {
|
|
104
|
+
this.odd = ev.detail.odd;
|
|
105
|
+
this._href = this._computeURL();
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
waitOnce('pb-page-ready', () => {
|
|
109
|
+
this._target = this._computeTarget();
|
|
110
|
+
this._href = this._computeURL();
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
attributeChangedCallback(name, oldVal, newVal) {
|
|
115
|
+
super.attributeChangedCallback(name, oldVal, newVal);
|
|
116
|
+
|
|
117
|
+
if (!oldVal) {
|
|
118
|
+
return;
|
|
93
119
|
}
|
|
94
120
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
});
|
|
109
|
-
waitOnce('pb-page-ready', () => {
|
|
110
|
-
this._target = this._computeTarget();
|
|
111
|
-
this._href = this._computeURL();
|
|
112
|
-
});
|
|
121
|
+
switch (name) {
|
|
122
|
+
case 'source':
|
|
123
|
+
this._target = this._computeTarget();
|
|
124
|
+
break;
|
|
125
|
+
case 'src':
|
|
126
|
+
case 'type':
|
|
127
|
+
case 'file':
|
|
128
|
+
case 'odd':
|
|
129
|
+
case 'params':
|
|
130
|
+
case 'url':
|
|
131
|
+
this._href = this._computeURL();
|
|
132
|
+
break;
|
|
133
|
+
default:
|
|
113
134
|
}
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
render() {
|
|
138
|
+
return html`
|
|
139
|
+
<a
|
|
140
|
+
id="button"
|
|
141
|
+
@click="${this._handleClick}"
|
|
142
|
+
title="${this.title}"
|
|
143
|
+
target="${this._target}"
|
|
144
|
+
href="${this._href}"
|
|
145
|
+
><slot></slot
|
|
146
|
+
></a>
|
|
147
|
+
`;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
static get styles() {
|
|
151
|
+
return css`
|
|
152
|
+
:host {
|
|
153
|
+
display: inline-block;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
a {
|
|
157
|
+
text-decoration: var(--pb-download-text-decoration, none);
|
|
158
|
+
}
|
|
159
|
+
`;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
_computeTarget() {
|
|
163
|
+
return this.source ? '_blank' : '_self';
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
_computeURL() {
|
|
167
|
+
this._token = new Date().getTime() * 797;
|
|
168
|
+
let url;
|
|
169
|
+
const doc = this.getDocument();
|
|
170
|
+
if (doc) {
|
|
171
|
+
if (this.url) {
|
|
172
|
+
url = `${this.toAbsoluteURL(this.url)}?odd=${this.odd ? this.odd : doc.odd}.odd`;
|
|
173
|
+
} else {
|
|
174
|
+
const serverPart = `${this.getEndpoint()}/`;
|
|
175
|
+
if (this.lessThanApiVersion('1.0.0')) {
|
|
176
|
+
url = `${doc.getFileName()}${this.type ? `.${this.type}` : ''}?odd=${
|
|
177
|
+
this.odd ? this.odd : doc.odd
|
|
178
|
+
}.odd&cache=no&token=${this._token}`;
|
|
179
|
+
} else {
|
|
180
|
+
url = `${serverPart}api/document/${encodeURIComponent(doc.path)}/${
|
|
181
|
+
this.type || 'html'
|
|
182
|
+
}?odd=${this.odd ? this.odd : doc.odd}.odd&token=${this._token}`;
|
|
135
183
|
}
|
|
184
|
+
}
|
|
185
|
+
} else {
|
|
186
|
+
url = /^(?:[a-z]+:)?\/\//i.test(this.url) ? this.url : `${this.getEndpoint()}/${this.url}`;
|
|
187
|
+
if (this.lessThanApiVersion('1.0.0')) {
|
|
188
|
+
url = `${url}${this.type ? `.${this.type}` : ''}?odd=${this.odd}&cache=no&token='${
|
|
189
|
+
this._token
|
|
190
|
+
}`;
|
|
191
|
+
} else {
|
|
192
|
+
url = `${url}/${this.type}?odd=${this.odd}&token='${this._token}`;
|
|
193
|
+
}
|
|
136
194
|
}
|
|
137
195
|
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
<a id="button" @click="${this._handleClick}" title="${this.title}" target="${this._target}" href="${this._href}"><slot></slot></a>
|
|
141
|
-
`;
|
|
196
|
+
if (this.params) {
|
|
197
|
+
url += `&${this.params}`;
|
|
142
198
|
}
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
return css`
|
|
146
|
-
:host {
|
|
147
|
-
display: inline-block;
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
a {
|
|
151
|
-
text-decoration: var(--pb-download-text-decoration, none);
|
|
152
|
-
}
|
|
153
|
-
`;
|
|
199
|
+
if (this.source) {
|
|
200
|
+
url += '&source=true';
|
|
154
201
|
}
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
if (this.params) {
|
|
185
|
-
url += `&${this.params}`;
|
|
186
|
-
}
|
|
187
|
-
if (this.source) {
|
|
188
|
-
url += '&source=true';
|
|
202
|
+
return url;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
*
|
|
207
|
+
* triggers a document download
|
|
208
|
+
*
|
|
209
|
+
* @param ev
|
|
210
|
+
* @private
|
|
211
|
+
*/
|
|
212
|
+
_handleClick(ev) {
|
|
213
|
+
if (this.dialog) {
|
|
214
|
+
const dialog = document.getElementById(this.dialog);
|
|
215
|
+
|
|
216
|
+
if (dialog) {
|
|
217
|
+
dialog.openDialog();
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
const token = this._token;
|
|
221
|
+
const downloadCheck = window.setInterval(() => {
|
|
222
|
+
const cookieValue = Cookies.get('simple.token');
|
|
223
|
+
if (cookieValue === token) {
|
|
224
|
+
window.clearInterval(downloadCheck);
|
|
225
|
+
Cookies.remove('simple.token');
|
|
226
|
+
if (dialog) {
|
|
227
|
+
dialog.closeDialog();
|
|
228
|
+
}
|
|
189
229
|
}
|
|
190
|
-
|
|
230
|
+
});
|
|
191
231
|
}
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
* triggers a document download
|
|
196
|
-
*
|
|
197
|
-
* @param ev
|
|
198
|
-
* @private
|
|
199
|
-
*/
|
|
200
|
-
_handleClick(ev) {
|
|
201
|
-
if (this.dialog) {
|
|
202
|
-
const dialog = document.getElementById(this.dialog);
|
|
203
|
-
|
|
204
|
-
if (dialog) {
|
|
205
|
-
dialog.openDialog();
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
const token = this._token;
|
|
209
|
-
const downloadCheck = window.setInterval(() => {
|
|
210
|
-
const cookieValue = Cookies.get("simple.token");
|
|
211
|
-
if (cookieValue === token) {
|
|
212
|
-
window.clearInterval(downloadCheck);
|
|
213
|
-
Cookies.remove("simple.token");
|
|
214
|
-
if (dialog) {
|
|
215
|
-
dialog.closeDialog();
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
});
|
|
219
|
-
}
|
|
220
|
-
if (this._target === '_self') {
|
|
221
|
-
ev.preventDefault();
|
|
222
|
-
window.location = this._href;
|
|
223
|
-
}
|
|
232
|
+
if (this._target === '_self') {
|
|
233
|
+
ev.preventDefault();
|
|
234
|
+
window.location = this._href;
|
|
224
235
|
}
|
|
236
|
+
}
|
|
225
237
|
}
|
|
226
|
-
customElements.define('pb-download', PbDownload);
|
|
238
|
+
customElements.define('pb-download', PbDownload);
|