@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.
Files changed (132) 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 +3 -3
  4. package/CHANGELOG.md +30 -0
  5. package/Dockerfile +78 -70
  6. package/css/components.css +5 -5
  7. package/dist/demo/pb-drawer2.html +1 -1
  8. package/dist/demo/pb-leaflet-map.html +1 -1
  9. package/dist/demo/pb-progress.html +2 -2
  10. package/dist/demo/pb-repeat.html +1 -3
  11. package/dist/demo/pb-view3.html +1 -1
  12. package/dist/{paper-icon-button-0fb125c4.js → paper-icon-button-72125e67.js} +1 -1
  13. package/dist/pb-code-editor.js +25 -20
  14. package/dist/pb-component-docs.js +58 -54
  15. package/dist/pb-components-bundle.js +1937 -1782
  16. package/dist/pb-edit-app.js +167 -107
  17. package/dist/pb-elements.json +45 -45
  18. package/dist/{pb-i18n-0611135a.js → pb-i18n-4cc00bfe.js} +1 -1
  19. package/dist/pb-leaflet-map.js +23 -23
  20. package/dist/pb-mei.js +56 -41
  21. package/dist/{pb-mixin-b1caa22e.js → pb-mixin-886ece32.js} +1 -1
  22. package/dist/pb-odd-editor.js +923 -756
  23. package/dist/pb-tify.js +2 -2
  24. package/dist/{vaadin-element-mixin-49ab4037.js → vaadin-element-mixin-84fb7d82.js} +178 -163
  25. package/gh-pages.js +5 -3
  26. package/i18n/common/pl.json +2 -2
  27. package/lib/openseadragon.min.js +1 -1
  28. package/package.json +2 -2
  29. package/pb-elements.json +45 -45
  30. package/src/assets/components.css +5 -5
  31. package/src/authority/airtable.js +20 -21
  32. package/src/authority/anton.js +129 -129
  33. package/src/authority/custom.js +23 -21
  34. package/src/authority/geonames.js +38 -32
  35. package/src/authority/gnd.js +47 -42
  36. package/src/authority/kbga.js +137 -134
  37. package/src/authority/metagrid.js +44 -46
  38. package/src/authority/reconciliation.js +66 -67
  39. package/src/authority/registry.js +4 -4
  40. package/src/docs/pb-component-docs.js +2 -2
  41. package/src/docs/pb-component-view.js +5 -5
  42. package/src/docs/pb-components-list.js +2 -2
  43. package/src/docs/pb-demo-snippet.js +2 -2
  44. package/src/dts-client.js +299 -297
  45. package/src/dts-select-endpoint.js +90 -82
  46. package/src/parse-date-service.js +184 -135
  47. package/src/pb-ajax.js +150 -146
  48. package/src/pb-authority-lookup.js +183 -146
  49. package/src/pb-autocomplete.js +292 -280
  50. package/src/pb-blacklab-highlight.js +264 -259
  51. package/src/pb-blacklab-results.js +236 -221
  52. package/src/pb-browse-docs.js +540 -475
  53. package/src/pb-browse.js +68 -65
  54. package/src/pb-clipboard.js +79 -76
  55. package/src/pb-code-editor.js +110 -102
  56. package/src/pb-code-highlight.js +209 -204
  57. package/src/pb-codepen.js +79 -72
  58. package/src/pb-collapse.js +212 -207
  59. package/src/pb-combo-box.js +190 -190
  60. package/src/pb-components-bundle.js +1 -1
  61. package/src/pb-custom-form.js +151 -149
  62. package/src/pb-dialog.js +94 -85
  63. package/src/pb-document.js +89 -90
  64. package/src/pb-download.js +210 -198
  65. package/src/pb-drawer.js +145 -148
  66. package/src/pb-edit-app.js +301 -229
  67. package/src/pb-edit-xml.js +98 -96
  68. package/src/pb-events.js +114 -107
  69. package/src/pb-facs-link.js +104 -102
  70. package/src/pb-facsimile.js +411 -413
  71. package/src/pb-formula.js +151 -153
  72. package/src/pb-geolocation.js +129 -131
  73. package/src/pb-grid-action.js +53 -56
  74. package/src/pb-grid.js +231 -228
  75. package/src/pb-highlight.js +140 -140
  76. package/src/pb-hotkeys.js +40 -42
  77. package/src/pb-i18n.js +101 -104
  78. package/src/pb-image-strip.js +84 -78
  79. package/src/pb-lang.js +132 -128
  80. package/src/pb-leaflet-map.js +488 -485
  81. package/src/pb-link.js +126 -124
  82. package/src/pb-load.js +431 -426
  83. package/src/pb-login.js +291 -248
  84. package/src/pb-manage-odds.js +364 -318
  85. package/src/pb-map-icon.js +89 -89
  86. package/src/pb-map-layer.js +85 -85
  87. package/src/pb-markdown.js +90 -99
  88. package/src/pb-media-query.js +74 -72
  89. package/src/pb-mei.js +306 -295
  90. package/src/pb-message.js +144 -144
  91. package/src/pb-mixin.js +269 -264
  92. package/src/pb-navigation.js +80 -82
  93. package/src/pb-observable.js +38 -38
  94. package/src/pb-odd-editor.js +1053 -955
  95. package/src/pb-odd-elementspec-editor.js +348 -297
  96. package/src/pb-odd-model-editor.js +1061 -901
  97. package/src/pb-odd-parameter-editor.js +200 -178
  98. package/src/pb-odd-rendition-editor.js +136 -124
  99. package/src/pb-page.js +431 -421
  100. package/src/pb-paginate.js +202 -190
  101. package/src/pb-panel.js +191 -179
  102. package/src/pb-popover-themes.js +7 -5
  103. package/src/pb-popover.js +296 -287
  104. package/src/pb-print-preview.js +127 -127
  105. package/src/pb-progress.js +51 -51
  106. package/src/pb-repeat.js +105 -104
  107. package/src/pb-restricted.js +84 -77
  108. package/src/pb-search.js +252 -241
  109. package/src/pb-select-feature.js +127 -120
  110. package/src/pb-select-odd.js +132 -124
  111. package/src/pb-select-template.js +89 -78
  112. package/src/pb-select.js +251 -227
  113. package/src/pb-split-list.js +179 -174
  114. package/src/pb-svg.js +80 -79
  115. package/src/pb-table-column.js +54 -54
  116. package/src/pb-table-grid.js +221 -203
  117. package/src/pb-tabs.js +61 -63
  118. package/src/pb-tify.js +154 -154
  119. package/src/pb-timeline.js +271 -229
  120. package/src/pb-toggle-feature.js +182 -175
  121. package/src/pb-upload.js +184 -174
  122. package/src/pb-version.js +30 -30
  123. package/src/pb-view-annotate.js +132 -98
  124. package/src/pb-view.js +1289 -1270
  125. package/src/pb-zoom.js +75 -59
  126. package/src/polymer-hack.js +1 -1
  127. package/src/search-result-service.js +256 -223
  128. package/src/seed-element.js +13 -20
  129. package/src/settings.js +4 -4
  130. package/src/theming.js +96 -96
  131. package/src/urls.js +289 -289
  132. package/src/utils.js +53 -51
@@ -8,29 +8,22 @@ import { LitElement, html, css } from 'lit-element';
8
8
  * @demo demo/seed-element.html
9
9
  */
10
10
  export class SeedElement extends LitElement {
11
+ static get styles() {
12
+ return css``;
13
+ }
11
14
 
12
- static get styles() {
13
- return css`
14
- `;
15
- }
15
+ static get properties() {
16
+ return {};
17
+ }
16
18
 
17
- static get properties() {
18
- return {
19
- };
20
- }
21
-
22
- constructor(){
23
- super();
24
- }
25
-
26
- render() {
27
- return html`
28
- `;
29
- }
30
-
31
- firstUpdated(_changedProperties) {
32
- }
19
+ constructor() {
20
+ super();
21
+ }
33
22
 
23
+ render() {
24
+ return html``;
25
+ }
34
26
 
27
+ firstUpdated(_changedProperties) {}
35
28
  }
36
29
  customElements.define('seed-element', SeedElement);
package/src/settings.js CHANGED
@@ -1,6 +1,6 @@
1
1
  export const settings = {
2
- /**
3
- * absolute Url to Publisher installation
4
- */
5
- publisherLocation:"http://localhost:8080/exist/apps/tei-publisher"
2
+ /**
3
+ * absolute Url to Publisher installation
4
+ */
5
+ publisherLocation: 'http://localhost:8080/exist/apps/tei-publisher',
6
6
  };
package/src/theming.js CHANGED
@@ -1,9 +1,9 @@
1
- import { waitOnce } from "./pb-mixin.js";
1
+ import { waitOnce } from './pb-mixin.js';
2
2
  import 'construct-style-sheets-polyfill';
3
3
 
4
4
  /**
5
5
  * Maps theme selector to CSSStyleSheet or null.
6
- *
6
+ *
7
7
  * @type {Map<string,(CSSStyleSheet|null)>}
8
8
  */
9
9
  const themeMap = new Map();
@@ -12,145 +12,145 @@ const themeMap = new Map();
12
12
  * Load one or more CSS stylesheet from the given URL and return
13
13
  * a CSSStyleSheet. The returned stylesheet can be assigned
14
14
  * to `adoptedStyleSheets`.
15
- *
15
+ *
16
16
  * @param {string[]} urls absolute URL
17
17
  * @returns {Promise<CSSStyleSheet|null>} constructed CSSStyleSheet or null
18
18
  */
19
19
  export async function loadStylesheets(urls) {
20
- const output = [];
21
- for (const url of urls) {
22
- const css = await loadResource(url);
23
- if (css) {
24
- output.push(css);
25
- }
26
- }
27
- if (output.length > 0) {
28
- const sheet = new CSSStyleSheet();
29
- return sheet.replace(output.join(''));
20
+ const output = [];
21
+ for (const url of urls) {
22
+ const css = await loadResource(url);
23
+ if (css) {
24
+ output.push(css);
30
25
  }
31
- return null;
26
+ }
27
+ if (output.length > 0) {
28
+ const sheet = new CSSStyleSheet();
29
+ return sheet.replace(output.join(''));
30
+ }
31
+ return null;
32
32
  }
33
33
 
34
34
  function loadResource(url) {
35
- return fetch(url)
36
- .then(response => {
37
- if (response.ok) {
38
- return response.text();
39
- }
40
- console.warn('<theming> Component stylesheet not found: %s', url);
41
- return null;
42
- })
43
- .then(text => text)
44
- .catch(error => {
45
- console.error('<theming> Error loading stylesheet %s: %o', url, error);
46
- return null;
47
- });
35
+ return fetch(url)
36
+ .then(response => {
37
+ if (response.ok) {
38
+ return response.text();
39
+ }
40
+ console.warn('<theming> Component stylesheet not found: %s', url);
41
+ return null;
42
+ })
43
+ .then(text => text)
44
+ .catch(error => {
45
+ console.error('<theming> Error loading stylesheet %s: %o', url, error);
46
+ return null;
47
+ });
48
48
  }
49
49
 
50
50
  /**
51
51
  * From the global component theme, import all rules which would apply to the
52
52
  * given element into a new CSSStyleSheet and return it.
53
- *
53
+ *
54
54
  * @param {HTMLElement} elem a web component or HTML element
55
55
  * @returns {CSSStyleSheet|null} a new CSSStylesheet or null
56
56
  */
57
57
  export function importStyles(elem) {
58
- const theme = getThemeCSS();
59
- if (!theme) {
60
- return null;
61
- }
62
- const selectors = getSelectors(elem).join('|');
63
- if (themeMap.has(selectors)) {
64
- return themeMap.get(selectors);
65
- }
66
- const prefixRegex = new RegExp(`^(${selectors})\\b`);
67
- let adoptedSheet = null;
68
- const rules = theme.cssRules;
69
- const newCSS = copyStyles(rules, prefixRegex, []);
70
- if (newCSS.length > 0) {
71
- adoptedSheet = new CSSStyleSheet();
72
- adoptedSheet.replaceSync(newCSS.join(''));
73
- }
74
- console.log('<theming> caching stylesheet for %s', selectors);
75
- themeMap.set(selectors, adoptedSheet);
76
- return adoptedSheet;
58
+ const theme = getThemeCSS();
59
+ if (!theme) {
60
+ return null;
61
+ }
62
+ const selectors = getSelectors(elem).join('|');
63
+ if (themeMap.has(selectors)) {
64
+ return themeMap.get(selectors);
65
+ }
66
+ const prefixRegex = new RegExp(`^(${selectors})\\b`);
67
+ let adoptedSheet = null;
68
+ const rules = theme.cssRules;
69
+ const newCSS = copyStyles(rules, prefixRegex, []);
70
+ if (newCSS.length > 0) {
71
+ adoptedSheet = new CSSStyleSheet();
72
+ adoptedSheet.replaceSync(newCSS.join(''));
73
+ }
74
+ console.log('<theming> caching stylesheet for %s', selectors);
75
+ themeMap.set(selectors, adoptedSheet);
76
+ return adoptedSheet;
77
77
  }
78
78
 
79
79
  export function getThemeCSS() {
80
- const page = document.querySelector('pb-page');
81
- if (!page) {
82
- return null;
83
- }
84
- const theme = page.stylesheet;
85
- if (!theme) {
86
- // no component styles defined
87
- return null;
88
- }
89
- return theme;
80
+ const page = document.querySelector('pb-page');
81
+ if (!page) {
82
+ return null;
83
+ }
84
+ const theme = page.stylesheet;
85
+ if (!theme) {
86
+ // no component styles defined
87
+ return null;
88
+ }
89
+ return theme;
90
90
  }
91
91
 
92
92
  /**
93
93
  * Recursively copy matching styles from the theme CSS
94
94
  * to create a new CSS stylesheet having all styles required
95
95
  * by the component.
96
- *
97
- * @param {CSSRule[]} rules
98
- * @param {RegExp} prefixRegex
99
- * @param {string[]} output
96
+ *
97
+ * @param {CSSRule[]} rules
98
+ * @param {RegExp} prefixRegex
99
+ * @param {string[]} output
100
100
  * @returns {string[]}
101
101
  */
102
102
  function copyStyles(rules, prefixRegex, output) {
103
- for (let i = 0; i < rules.length; i++) {
104
- const rule = rules[i];
105
- if (rule instanceof CSSStyleRule) {
106
- if (prefixRegex.test(rule.selectorText)) {
107
- const css = rule.cssText.replace(prefixRegex, `:host($1) `);
108
- output.push(css);
109
- }
110
- } else if (rule instanceof CSSMediaRule) {
111
- output.push(`\n@media ${rule.conditionText} {\n`);
112
- copyStyles(rule.cssRules, prefixRegex, output);
113
- output.push('\n}\n');
114
- } else if (rule instanceof CSSFontFaceRule) {
115
- // not allowed in constructed stylesheets
116
- } else {
117
- output.push(rule.cssText);
118
- }
103
+ for (let i = 0; i < rules.length; i++) {
104
+ const rule = rules[i];
105
+ if (rule instanceof CSSStyleRule) {
106
+ if (prefixRegex.test(rule.selectorText)) {
107
+ const css = rule.cssText.replace(prefixRegex, `:host($1) `);
108
+ output.push(css);
109
+ }
110
+ } else if (rule instanceof CSSMediaRule) {
111
+ output.push(`\n@media ${rule.conditionText} {\n`);
112
+ copyStyles(rule.cssRules, prefixRegex, output);
113
+ output.push('\n}\n');
114
+ } else if (rule instanceof CSSFontFaceRule) {
115
+ // not allowed in constructed stylesheets
116
+ } else {
117
+ output.push(rule.cssText);
119
118
  }
120
- return output;
119
+ }
120
+ return output;
121
121
  }
122
122
 
123
123
  /**
124
124
  * Get a list of selectors, which could match the given component.
125
125
  * This will return the local name of the component, a selector for the id
126
126
  * and all classes assigned.
127
- *
127
+ *
128
128
  * @param {HTMLElement} component the web component
129
129
  * @returns {string[]} list of selectors
130
130
  */
131
131
  function getSelectors(component) {
132
- const prefixes = [component.localName];
133
- if (component.id) {
134
- prefixes.push(`#${component.id}`);
135
- }
136
- component.classList.forEach((cls) => prefixes.push(`.${cls}`));
137
- return prefixes;
132
+ const prefixes = [component.localName];
133
+ if (component.id) {
134
+ prefixes.push(`#${component.id}`);
135
+ }
136
+ component.classList.forEach(cls => prefixes.push(`.${cls}`));
137
+ return prefixes;
138
138
  }
139
139
 
140
140
  /**
141
141
  * Implements support for injecting user-defined styles into a web component's shadow DOM.
142
- * Styles will be copied from the global component theme CSS imported by `pb-page`
142
+ * Styles will be copied from the global component theme CSS imported by `pb-page`
143
143
  * (see `theme` property on `pb-page`)
144
144
  */
145
- export const themableMixin = (superclass) => class ThemableMixin extends superclass {
146
-
145
+ export const themableMixin = superclass =>
146
+ class ThemableMixin extends superclass {
147
147
  connectedCallback() {
148
- super.connectedCallback();
149
- waitOnce('pb-page-ready', (options) => {
150
- const theme = getThemeCSS();
151
- if (theme) {
152
- this.shadowRoot.adoptedStyleSheets = [...this.shadowRoot.adoptedStyleSheets, theme];
153
- }
154
- });
148
+ super.connectedCallback();
149
+ waitOnce('pb-page-ready', options => {
150
+ const theme = getThemeCSS();
151
+ if (theme) {
152
+ this.shadowRoot.adoptedStyleSheets = [...this.shadowRoot.adoptedStyleSheets, theme];
153
+ }
154
+ });
155
155
  }
156
- };
156
+ };