@teipublisher/pb-components 2.25.4 → 2.25.6
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 +4 -4
- package/.releaserc.json +1 -1
- package/CHANGELOG.md +15 -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-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 +1827 -1520
- package/dist/pb-edit-app.js +167 -107
- package/dist/pb-elements.json +54 -54
- 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 +925 -758
- package/dist/pb-tify.js +2 -2
- package/dist/{vaadin-element-mixin-859a0132.js → vaadin-element-mixin-ad07ba25.js} +88 -61
- package/gh-pages.js +5 -3
- package/i18n/common/pl.json +2 -2
- package/package.json +2 -2
- package/pb-elements.json +54 -54
- 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 +171 -167
- package/src/pb-authority-lookup.js +96 -81
- 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 +149 -146
- package/src/pb-combo-box.js +190 -190
- package/src/pb-components-bundle.js +1 -1
- package/src/pb-custom-form.js +150 -149
- package/src/pb-document.js +89 -90
- package/src/pb-download.js +208 -195
- package/src/pb-drawer.js +145 -148
- package/src/pb-edit-app.js +301 -229
- package/src/pb-edit-xml.js +99 -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 +83 -70
- 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 +275 -254
- 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 +143 -130
- 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 +1056 -958
- package/src/pb-odd-elementspec-editor.js +348 -297
- package/src/pb-odd-model-editor.js +1058 -898
- package/src/pb-odd-parameter-editor.js +200 -178
- package/src/pb-odd-rendition-editor.js +136 -124
- package/src/pb-page.js +432 -422
- 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 +49 -49
- package/src/pb-repeat.js +105 -104
- package/src/pb-restricted.js +84 -77
- package/src/pb-search.js +238 -221
- 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 +198 -185
- 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 +1282 -1263
- package/src/pb-zoom.js +40 -40
- 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 +91 -91
- package/src/urls.js +289 -289
- package/src/utils.js +53 -51
package/src/pb-download.js
CHANGED
|
@@ -12,211 +12,224 @@ import { pbMixin, waitOnce } from './pb-mixin.js';
|
|
|
12
12
|
* @cssprop --pb-download-text-decoration - Extra effects for the download title label
|
|
13
13
|
*/
|
|
14
14
|
export class PbDownload extends pbMixin(LitElement) {
|
|
15
|
-
|
|
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
|
-
|
|
15
|
+
static get properties() {
|
|
16
|
+
return {
|
|
17
|
+
...super.properties,
|
|
18
|
+
/**
|
|
19
|
+
* optional id reference to a pb-document. If `url` is not specified,
|
|
20
|
+
* a correct download URL is constructed using the given document path and parameters.
|
|
21
|
+
* Otherwise `url` will be used as main URL.
|
|
22
|
+
*/
|
|
23
|
+
src: {
|
|
24
|
+
type: String,
|
|
25
|
+
},
|
|
26
|
+
/**
|
|
27
|
+
* the base URL to construct the link from. If specified, only the ODD and optional parameters
|
|
28
|
+
* will be appended to the URL.
|
|
29
|
+
*/
|
|
30
|
+
url: {
|
|
31
|
+
type: String,
|
|
32
|
+
},
|
|
33
|
+
/**
|
|
34
|
+
* optional suffix to append to the constructed URL. Use for getting a PDF, epub or similar.
|
|
35
|
+
*/
|
|
36
|
+
type: {
|
|
37
|
+
type: String,
|
|
38
|
+
},
|
|
39
|
+
/**
|
|
40
|
+
* extra odd parameter to be added. This will correspond to the ODD used by the document, if given.
|
|
41
|
+
*/
|
|
42
|
+
odd: {
|
|
43
|
+
type: String,
|
|
44
|
+
},
|
|
45
|
+
/**
|
|
46
|
+
* id of dialog component to show when downloading. A paper-dialog component with this id must
|
|
47
|
+
* exist.
|
|
48
|
+
*/
|
|
49
|
+
dialog: {
|
|
50
|
+
type: String,
|
|
51
|
+
},
|
|
52
|
+
/**
|
|
53
|
+
* title to show in the dialog while download is in progress
|
|
54
|
+
*/
|
|
55
|
+
title: {
|
|
56
|
+
type: String,
|
|
57
|
+
},
|
|
58
|
+
/**
|
|
59
|
+
* add a special parameter 'source=yes' if true. For PDF this will result
|
|
60
|
+
* in generated source code to be displayed
|
|
61
|
+
*/
|
|
62
|
+
source: {
|
|
63
|
+
type: Boolean,
|
|
64
|
+
},
|
|
65
|
+
/**
|
|
66
|
+
* extra params to be added
|
|
67
|
+
*/
|
|
68
|
+
params: {
|
|
69
|
+
type: String,
|
|
70
|
+
},
|
|
71
|
+
_target: {
|
|
72
|
+
type: String,
|
|
73
|
+
reflect: true,
|
|
74
|
+
},
|
|
75
|
+
_href: {
|
|
76
|
+
type: String,
|
|
77
|
+
reflect: true,
|
|
78
|
+
},
|
|
79
|
+
_token: {
|
|
80
|
+
type: String,
|
|
81
|
+
},
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
constructor() {
|
|
86
|
+
super();
|
|
87
|
+
|
|
88
|
+
this.source = false;
|
|
89
|
+
this._target = '_self';
|
|
90
|
+
this.type = '';
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
firstUpdated() {
|
|
94
|
+
if (this.src) {
|
|
95
|
+
this.subscribeTo('pb-document', ev => {
|
|
96
|
+
if (ev.detail.id === this.src) {
|
|
97
|
+
this.odd = ev.detail.odd;
|
|
98
|
+
}
|
|
99
|
+
});
|
|
83
100
|
}
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
101
|
+
this.subscribeTo('pb-refresh', ev => {
|
|
102
|
+
if (ev.detail.odd) {
|
|
103
|
+
this.odd = ev.detail.odd;
|
|
104
|
+
this._href = this._computeURL();
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
waitOnce('pb-page-ready', () => {
|
|
108
|
+
this._target = this._computeTarget();
|
|
109
|
+
this._href = this._computeURL();
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
attributeChangedCallback(name, oldVal, newVal) {
|
|
114
|
+
super.attributeChangedCallback(name, oldVal, newVal);
|
|
115
|
+
|
|
116
|
+
if (!oldVal) {
|
|
117
|
+
return;
|
|
91
118
|
}
|
|
92
119
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
});
|
|
107
|
-
waitOnce('pb-page-ready', () => {
|
|
108
|
-
this._target = this._computeTarget();
|
|
109
|
-
this._href = this._computeURL();
|
|
110
|
-
});
|
|
120
|
+
switch (name) {
|
|
121
|
+
case 'source':
|
|
122
|
+
this._target = this._computeTarget();
|
|
123
|
+
break;
|
|
124
|
+
case 'src':
|
|
125
|
+
case 'type':
|
|
126
|
+
case 'file':
|
|
127
|
+
case 'odd':
|
|
128
|
+
case 'params':
|
|
129
|
+
case 'url':
|
|
130
|
+
this._href = this._computeURL();
|
|
131
|
+
break;
|
|
132
|
+
default:
|
|
111
133
|
}
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
render() {
|
|
137
|
+
return html`
|
|
138
|
+
<a
|
|
139
|
+
id="button"
|
|
140
|
+
@click="${this._handleClick}"
|
|
141
|
+
title="${this.title}"
|
|
142
|
+
target="${this._target}"
|
|
143
|
+
href="${this._href}"
|
|
144
|
+
><slot></slot
|
|
145
|
+
></a>
|
|
146
|
+
`;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
static get styles() {
|
|
150
|
+
return css`
|
|
151
|
+
:host {
|
|
152
|
+
display: inline-block;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
a {
|
|
156
|
+
text-decoration: var(--pb-download-text-decoration, none);
|
|
157
|
+
color: var(--pb-download-color);
|
|
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}`;
|
|
133
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
|
+
}
|
|
134
194
|
}
|
|
135
195
|
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
<a id="button" @click="${this._handleClick}" title="${this.title}" target="${this._target}" href="${this._href}"><slot></slot></a>
|
|
139
|
-
`;
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
static get styles() {
|
|
143
|
-
return css`
|
|
144
|
-
:host {
|
|
145
|
-
display: inline-block;
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
a {
|
|
149
|
-
text-decoration: var(--pb-download-text-decoration, none);
|
|
150
|
-
color: var(--pb-download-color);
|
|
151
|
-
}
|
|
152
|
-
`;
|
|
196
|
+
if (this.params) {
|
|
197
|
+
url += `&${this.params}`;
|
|
153
198
|
}
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
return this.source ? '_blank' : '_self';
|
|
199
|
+
if (this.source) {
|
|
200
|
+
url += '&source=true';
|
|
157
201
|
}
|
|
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
|
-
if (this.params) {
|
|
184
|
-
url += `&${this.params}`;
|
|
185
|
-
}
|
|
186
|
-
if (this.source) {
|
|
187
|
-
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
|
+
// todo: this will error when dialog is not found or defined on element.
|
|
217
|
+
dialog.open();
|
|
218
|
+
|
|
219
|
+
const token = this._token;
|
|
220
|
+
const downloadCheck = window.setInterval(() => {
|
|
221
|
+
const cookieValue = Cookies.get('simple.token');
|
|
222
|
+
if (cookieValue === token) {
|
|
223
|
+
window.clearInterval(downloadCheck);
|
|
224
|
+
Cookies.remove('simple.token');
|
|
225
|
+
dialog.close();
|
|
188
226
|
}
|
|
189
|
-
|
|
227
|
+
});
|
|
190
228
|
}
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
* triggers a document download
|
|
195
|
-
*
|
|
196
|
-
* @param ev
|
|
197
|
-
* @private
|
|
198
|
-
*/
|
|
199
|
-
_handleClick(ev) {
|
|
200
|
-
if (this.dialog) {
|
|
201
|
-
const dialog = document.getElementById(this.dialog);
|
|
202
|
-
|
|
203
|
-
//todo: this will error when dialog is not found or defined on element.
|
|
204
|
-
dialog.open();
|
|
205
|
-
|
|
206
|
-
const token = this._token;
|
|
207
|
-
const downloadCheck = window.setInterval(() => {
|
|
208
|
-
const cookieValue = Cookies.get("simple.token");
|
|
209
|
-
if (cookieValue === token) {
|
|
210
|
-
window.clearInterval(downloadCheck);
|
|
211
|
-
Cookies.remove("simple.token");
|
|
212
|
-
dialog.close();
|
|
213
|
-
}
|
|
214
|
-
});
|
|
215
|
-
}
|
|
216
|
-
if (this._target === '_self') {
|
|
217
|
-
ev.preventDefault();
|
|
218
|
-
window.location = this._href;
|
|
219
|
-
}
|
|
229
|
+
if (this._target === '_self') {
|
|
230
|
+
ev.preventDefault();
|
|
231
|
+
window.location = this._href;
|
|
220
232
|
}
|
|
233
|
+
}
|
|
221
234
|
}
|
|
222
|
-
customElements.define('pb-download', PbDownload);
|
|
235
|
+
customElements.define('pb-download', PbDownload);
|