@teipublisher/pb-components 2.26.1-next.2 → 3.0.0

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.
Files changed (154) hide show
  1. package/.github/workflows/main.yml +3 -3
  2. package/.github/workflows/node.js.yml +3 -3
  3. package/.github/workflows/release.js.yml +4 -4
  4. package/.releaserc.json +2 -2
  5. package/CHANGELOG.md +267 -9
  6. package/Dockerfile +78 -70
  7. package/css/components.css +5 -5
  8. package/css/leaflet/images/layers.png +0 -0
  9. package/dist/demo/components.css +46 -1
  10. package/dist/demo/pb-browse-docs2.html +1 -1
  11. package/dist/demo/pb-dialog.html +3 -5
  12. package/dist/demo/pb-drawer2.html +1 -1
  13. package/dist/demo/pb-facsimile.html +2 -2
  14. package/dist/demo/pb-grid.html +19 -6
  15. package/dist/demo/pb-leaflet-map.html +1 -1
  16. package/dist/demo/pb-login.html +0 -2
  17. package/dist/demo/pb-message.html +1 -2
  18. package/dist/demo/pb-progress.html +2 -2
  19. package/dist/demo/pb-repeat.html +1 -3
  20. package/dist/demo/pb-search.html +7 -4
  21. package/dist/demo/pb-search3.html +1 -1
  22. package/dist/demo/pb-search4.html +2 -2
  23. package/dist/demo/pb-view3.html +1 -1
  24. package/dist/{iron-form-3b8dcaa7.js → iron-form-dfb3e3b1.js} +95 -95
  25. package/dist/paper-checkbox-645e1077.js +200 -0
  26. package/dist/{paper-icon-button-b1d31571.js → paper-icon-button-984162bd.js} +1 -1
  27. package/dist/{paper-checkbox-515a5284.js → paper-inky-focus-behavior-fa16796b.js} +58 -247
  28. package/dist/{paper-listbox-a3b7175c.js → paper-listbox-5f5d1cec.js} +152 -162
  29. package/dist/pb-code-editor.js +25 -20
  30. package/dist/pb-component-docs.js +68 -64
  31. package/dist/pb-components-bundle.js +1983 -2293
  32. package/dist/pb-edit-app.js +167 -107
  33. package/dist/pb-elements.json +176 -120
  34. package/dist/{pb-i18n-0611135a.js → pb-i18n-4cc00bfe.js} +1 -1
  35. package/dist/pb-leaflet-map.js +23 -23
  36. package/dist/pb-mei.js +56 -41
  37. package/dist/{pb-mixin-b1caa22e.js → pb-mixin-886ece32.js} +1 -1
  38. package/dist/pb-odd-editor.js +1023 -782
  39. package/dist/pb-tify.js +2 -2
  40. package/dist/vaadin-element-mixin-beb74ffd.js +545 -0
  41. package/gh-pages.js +5 -3
  42. package/i18n/common/en.json +6 -0
  43. package/i18n/common/pl.json +2 -2
  44. package/lib/openseadragon.min.js +6 -6
  45. package/package.json +3 -3
  46. package/pb-elements.json +176 -120
  47. package/src/assets/components.css +5 -5
  48. package/src/authority/airtable.js +20 -21
  49. package/src/authority/anton.js +129 -129
  50. package/src/authority/custom.js +23 -21
  51. package/src/authority/geonames.js +38 -32
  52. package/src/authority/gnd.js +50 -42
  53. package/src/authority/kbga.js +137 -134
  54. package/src/authority/metagrid.js +44 -46
  55. package/src/authority/reconciliation.js +66 -67
  56. package/src/authority/registry.js +4 -4
  57. package/src/docs/pb-component-docs.js +2 -2
  58. package/src/docs/pb-component-view.js +5 -5
  59. package/src/docs/pb-components-list.js +2 -2
  60. package/src/docs/pb-demo-snippet.js +2 -2
  61. package/src/dts-client.js +299 -297
  62. package/src/dts-select-endpoint.js +90 -82
  63. package/src/parse-date-service.js +184 -135
  64. package/src/pb-ajax.js +158 -171
  65. package/src/pb-authority-lookup.js +191 -156
  66. package/src/pb-autocomplete.js +292 -280
  67. package/src/pb-blacklab-highlight.js +264 -259
  68. package/src/pb-blacklab-results.js +236 -221
  69. package/src/pb-browse-docs.js +540 -475
  70. package/src/pb-browse.js +68 -65
  71. package/src/pb-clipboard.js +79 -76
  72. package/src/pb-code-editor.js +110 -102
  73. package/src/pb-code-highlight.js +209 -204
  74. package/src/pb-codepen.js +79 -72
  75. package/src/pb-collapse.js +211 -151
  76. package/src/pb-combo-box.js +190 -190
  77. package/src/pb-components-bundle.js +1 -1
  78. package/src/pb-components.js +1 -0
  79. package/src/pb-custom-form.js +173 -153
  80. package/src/pb-dialog.js +98 -62
  81. package/src/pb-document.js +89 -90
  82. package/src/pb-download.js +212 -196
  83. package/src/pb-drawer.js +145 -148
  84. package/src/pb-edit-app.js +301 -229
  85. package/src/pb-edit-xml.js +100 -97
  86. package/src/pb-events.js +114 -107
  87. package/src/pb-facs-link.js +104 -102
  88. package/src/pb-facsimile.js +474 -410
  89. package/src/pb-formula.js +151 -153
  90. package/src/pb-geolocation.js +129 -131
  91. package/src/pb-grid-action.js +53 -56
  92. package/src/pb-grid.js +231 -228
  93. package/src/pb-highlight.js +140 -140
  94. package/src/pb-hotkeys.js +40 -42
  95. package/src/pb-i18n.js +101 -104
  96. package/src/pb-image-strip.js +84 -78
  97. package/src/pb-lang.js +142 -57
  98. package/src/pb-leaflet-map.js +488 -485
  99. package/src/pb-link.js +126 -124
  100. package/src/pb-load.js +431 -429
  101. package/src/pb-login.js +299 -244
  102. package/src/pb-manage-odds.js +352 -336
  103. package/src/pb-map-icon.js +89 -89
  104. package/src/pb-map-layer.js +85 -85
  105. package/src/pb-markdown.js +90 -99
  106. package/src/pb-media-query.js +74 -72
  107. package/src/pb-mei.js +306 -295
  108. package/src/pb-message.js +139 -97
  109. package/src/pb-mixin.js +269 -264
  110. package/src/pb-navigation.js +80 -95
  111. package/src/pb-observable.js +38 -38
  112. package/src/pb-odd-editor.js +1054 -958
  113. package/src/pb-odd-elementspec-editor.js +349 -298
  114. package/src/pb-odd-model-editor.js +1075 -909
  115. package/src/pb-odd-parameter-editor.js +200 -178
  116. package/src/pb-odd-rendition-editor.js +136 -124
  117. package/src/pb-page.js +431 -422
  118. package/src/pb-paginate.js +228 -179
  119. package/src/pb-panel.js +198 -182
  120. package/src/pb-popover-themes.js +15 -8
  121. package/src/pb-popover.js +296 -287
  122. package/src/pb-print-preview.js +127 -127
  123. package/src/pb-progress.js +51 -51
  124. package/src/pb-repeat.js +105 -104
  125. package/src/pb-restricted.js +84 -77
  126. package/src/pb-search.js +256 -228
  127. package/src/pb-select-feature.js +127 -120
  128. package/src/pb-select-odd.js +132 -124
  129. package/src/pb-select-template.js +89 -78
  130. package/src/pb-select.js +251 -227
  131. package/src/pb-split-list.js +179 -174
  132. package/src/pb-svg.js +80 -79
  133. package/src/pb-table-column.js +54 -54
  134. package/src/pb-table-grid.js +221 -203
  135. package/src/pb-tabs.js +61 -63
  136. package/src/pb-tify.js +154 -154
  137. package/src/pb-timeline.js +382 -249
  138. package/src/pb-toggle-feature.js +195 -187
  139. package/src/pb-upload.js +184 -174
  140. package/src/pb-version.js +30 -30
  141. package/src/pb-view-annotate.js +135 -98
  142. package/src/pb-view.js +1282 -1270
  143. package/src/pb-zoom.js +127 -45
  144. package/src/polymer-hack.js +1 -1
  145. package/src/search-result-service.js +256 -223
  146. package/src/seed-element.js +13 -20
  147. package/src/settings.js +4 -4
  148. package/src/theming.js +98 -91
  149. package/src/urls.js +289 -289
  150. package/src/utils.js +53 -51
  151. package/css/pb-styles.css +0 -51
  152. package/dist/vaadin-element-mixin-6e4cee3a.js +0 -527
  153. package/src/assets/pb-styles.css +0 -51
  154. package/src/pb-light-dom.js +0 -40
@@ -1,6 +1,6 @@
1
1
  import { LitElement } from 'lit-element';
2
2
  import { pbMixin } from './pb-mixin.js';
3
- import { registry } from "./urls.js";
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
- static get properties() {
16
- return {
17
- ...super.properties,
18
- /**
19
- * The path to the document to be loaded. Should be relative to `root`.
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
- connectedCallback() {
75
- super.connectedCallback();
73
+ connectedCallback() {
74
+ super.connectedCallback();
76
75
 
77
- if (!this.disableHistory) {
78
- // if path is unset, use path taken from the URL
79
- if (registry.state.path && !this.path) {
80
- this.path = registry.state.path;
81
- }
82
- this.view = registry.state.view || this.view;
83
- this.odd = registry.state.odd || this.odd;
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
- attributeChangedCallback(name, oldVal, newVal) {
88
- super.attributeChangedCallback(name, oldVal, newVal);
89
- if (oldVal) {
90
- console.log('<pb-document> Emit update event');
91
- this.emitTo('pb-document', this);
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
- * Returns the name of the document without path.
97
- *
98
- * @returns {string} Name of the document
99
- */
100
- getFileName() {
101
- return this.path.replace(/^.*?([^\/]+)$/, '$1');
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
- getCollection() {
105
- return this.path.replace(/^(.*?)\/[^\/]+$/, '$1');
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
- getFullPath() {
114
- return this.rootPath + '/' + this.path;
115
- }
112
+ getFullPath() {
113
+ return `${this.rootPath}/${this.path}`;
114
+ }
116
115
  }
117
116
 
118
117
  customElements.define('pb-document', PbDocument);
@@ -1,6 +1,7 @@
1
1
  import { LitElement, html, css } from 'lit-element';
2
2
  import 'js-cookie/src/js.cookie.js';
3
3
  import { pbMixin, waitOnce } from './pb-mixin.js';
4
+ import { themableMixin } from './theming.js';
4
5
 
5
6
  /**
6
7
  * Generate a link to download a resource. Optionally shows a dialog during the download.
@@ -11,212 +12,227 @@ import { pbMixin, waitOnce } from './pb-mixin.js';
11
12
  * @cssprop --pb-download-color - Color of the download title label
12
13
  * @cssprop --pb-download-text-decoration - Extra effects for the download title label
13
14
  */
14
- export class PbDownload extends pbMixin(LitElement) {
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
- };
15
+ export class PbDownload extends themableMixin(pbMixin(LitElement)) {
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
+ });
83
101
  }
84
-
85
- constructor() {
86
- super();
87
-
88
- this.source = false;
89
- this._target = '_self';
90
- this.type = '';
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;
91
119
  }
92
120
 
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
- });
100
- }
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
- });
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:
111
134
  }
112
-
113
- attributeChangedCallback(name, oldVal, newVal) {
114
- super.attributeChangedCallback(name, oldVal, newVal);
115
-
116
- if (!oldVal) {
117
- return;
118
- }
119
-
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:
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}`;
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
- render() {
137
- return html`
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
- _computeTarget() {
156
- return this.source ? '_blank' : '_self';
199
+ if (this.source) {
200
+ url += '&source=true';
157
201
  }
158
-
159
- _computeURL() {
160
- this._token = new Date().getTime() * 797;
161
- let url;
162
- const doc = this.getDocument();
163
- if (doc) {
164
- if (this.url) {
165
- url = `${this.toAbsoluteURL(this.url)}?odd=${this.odd ? this.odd : doc.odd}.odd`;
166
- } else {
167
- const serverPart = `${this.getEndpoint()}/`;
168
- if (this.lessThanApiVersion('1.0.0')) {
169
- url = `${doc.getFileName()}${this.type ? `.${this.type}` : ''}?odd=${this.odd ? this.odd : doc.odd}.odd&cache=no&token=${this._token}`;
170
- } else {
171
- url = `${serverPart}api/document/${encodeURIComponent(doc.path)}/${this.type || 'html'}?odd=${this.odd ? this.odd : doc.odd}.odd&token=${this._token}`;
172
- }
173
- }
174
- } else {
175
- url = /^(?:[a-z]+:)?\/\//i.test(this.url) ? this.url : `${this.getEndpoint()}/${this.url}`;
176
- if (this.lessThanApiVersion('1.0.0')) {
177
- url = `${url}${this.type ? `.${this.type}` : ''}?odd=${this.odd}&cache=no&token='${this._token}`;
178
- } else {
179
- url = `${url}/${this.type}?odd=${this.odd}&token='${this._token}`;
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
+ 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
+ }
188
229
  }
189
- return url;
230
+ });
190
231
  }
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
- }
232
+ if (this._target === '_self') {
233
+ ev.preventDefault();
234
+ window.location = this._href;
220
235
  }
236
+ }
221
237
  }
222
- customElements.define('pb-download', PbDownload);
238
+ customElements.define('pb-download', PbDownload);