@teipublisher/pb-components 2.26.0-next-3.12 → 2.26.0-next-3.14

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 (136) 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 +43 -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-grid.html +19 -6
  9. package/dist/demo/pb-leaflet-map.html +1 -1
  10. package/dist/demo/pb-progress.html +2 -2
  11. package/dist/demo/pb-repeat.html +1 -3
  12. package/dist/demo/pb-view3.html +1 -1
  13. package/dist/{iron-form-277f9d42.js → iron-form-78b43d38.js} +1 -1
  14. package/dist/{paper-checkbox-4f410b1f.js → paper-checkbox-d16f23be.js} +44 -44
  15. package/dist/{paper-icon-button-0fb125c4.js → paper-icon-button-2cd9e0b4.js} +3 -3
  16. package/dist/{paper-listbox-c2468542.js → paper-listbox-2ad5c882.js} +7 -7
  17. package/dist/pb-code-editor.js +25 -20
  18. package/dist/pb-component-docs.js +58 -54
  19. package/dist/pb-components-bundle.js +2057 -2351
  20. package/dist/pb-edit-app.js +167 -107
  21. package/dist/pb-elements.json +45 -45
  22. package/dist/{pb-i18n-0611135a.js → pb-i18n-4cc00bfe.js} +1 -1
  23. package/dist/pb-leaflet-map.js +23 -23
  24. package/dist/pb-mei.js +56 -41
  25. package/dist/{pb-mixin-b1caa22e.js → pb-mixin-886ece32.js} +1 -1
  26. package/dist/pb-odd-editor.js +923 -756
  27. package/dist/pb-tify.js +2 -2
  28. package/dist/{vaadin-element-mixin-49ab4037.js → vaadin-element-mixin-c200b196.js} +179 -164
  29. package/gh-pages.js +5 -3
  30. package/i18n/common/pl.json +2 -2
  31. package/lib/openseadragon.min.js +1 -1
  32. package/package.json +2 -2
  33. package/pb-elements.json +45 -45
  34. package/src/assets/components.css +5 -5
  35. package/src/authority/airtable.js +20 -21
  36. package/src/authority/anton.js +129 -129
  37. package/src/authority/custom.js +23 -21
  38. package/src/authority/geonames.js +38 -32
  39. package/src/authority/gnd.js +47 -42
  40. package/src/authority/kbga.js +137 -134
  41. package/src/authority/metagrid.js +44 -46
  42. package/src/authority/reconciliation.js +66 -67
  43. package/src/authority/registry.js +4 -4
  44. package/src/docs/pb-component-docs.js +2 -2
  45. package/src/docs/pb-component-view.js +5 -5
  46. package/src/docs/pb-components-list.js +2 -2
  47. package/src/docs/pb-demo-snippet.js +2 -2
  48. package/src/dts-client.js +299 -297
  49. package/src/dts-select-endpoint.js +90 -82
  50. package/src/parse-date-service.js +184 -135
  51. package/src/pb-ajax.js +150 -146
  52. package/src/pb-authority-lookup.js +183 -146
  53. package/src/pb-autocomplete.js +292 -280
  54. package/src/pb-blacklab-highlight.js +264 -259
  55. package/src/pb-blacklab-results.js +236 -221
  56. package/src/pb-browse-docs.js +540 -475
  57. package/src/pb-browse.js +68 -65
  58. package/src/pb-clipboard.js +79 -76
  59. package/src/pb-code-editor.js +110 -102
  60. package/src/pb-code-highlight.js +209 -204
  61. package/src/pb-codepen.js +79 -72
  62. package/src/pb-collapse.js +212 -207
  63. package/src/pb-combo-box.js +190 -190
  64. package/src/pb-components-bundle.js +1 -1
  65. package/src/pb-custom-form.js +151 -149
  66. package/src/pb-dialog.js +94 -85
  67. package/src/pb-document.js +89 -90
  68. package/src/pb-download.js +210 -198
  69. package/src/pb-drawer.js +145 -148
  70. package/src/pb-edit-app.js +301 -229
  71. package/src/pb-edit-xml.js +98 -96
  72. package/src/pb-events.js +114 -107
  73. package/src/pb-facs-link.js +104 -102
  74. package/src/pb-facsimile.js +419 -414
  75. package/src/pb-formula.js +151 -153
  76. package/src/pb-geolocation.js +129 -131
  77. package/src/pb-grid-action.js +53 -56
  78. package/src/pb-grid.js +231 -228
  79. package/src/pb-highlight.js +140 -140
  80. package/src/pb-hotkeys.js +40 -42
  81. package/src/pb-i18n.js +101 -104
  82. package/src/pb-image-strip.js +84 -78
  83. package/src/pb-lang.js +132 -128
  84. package/src/pb-leaflet-map.js +488 -485
  85. package/src/pb-link.js +126 -124
  86. package/src/pb-load.js +431 -426
  87. package/src/pb-login.js +291 -248
  88. package/src/pb-manage-odds.js +364 -318
  89. package/src/pb-map-icon.js +89 -89
  90. package/src/pb-map-layer.js +85 -85
  91. package/src/pb-markdown.js +90 -99
  92. package/src/pb-media-query.js +74 -72
  93. package/src/pb-mei.js +306 -295
  94. package/src/pb-message.js +144 -144
  95. package/src/pb-mixin.js +269 -264
  96. package/src/pb-navigation.js +80 -82
  97. package/src/pb-observable.js +38 -38
  98. package/src/pb-odd-editor.js +1053 -955
  99. package/src/pb-odd-elementspec-editor.js +348 -297
  100. package/src/pb-odd-model-editor.js +1061 -901
  101. package/src/pb-odd-parameter-editor.js +200 -178
  102. package/src/pb-odd-rendition-editor.js +136 -124
  103. package/src/pb-page.js +431 -421
  104. package/src/pb-paginate.js +202 -190
  105. package/src/pb-panel.js +198 -182
  106. package/src/pb-popover-themes.js +7 -5
  107. package/src/pb-popover.js +296 -287
  108. package/src/pb-print-preview.js +127 -127
  109. package/src/pb-progress.js +51 -51
  110. package/src/pb-repeat.js +105 -104
  111. package/src/pb-restricted.js +84 -77
  112. package/src/pb-search.js +252 -241
  113. package/src/pb-select-feature.js +127 -120
  114. package/src/pb-select-odd.js +132 -124
  115. package/src/pb-select-template.js +89 -78
  116. package/src/pb-select.js +251 -227
  117. package/src/pb-split-list.js +179 -174
  118. package/src/pb-svg.js +80 -79
  119. package/src/pb-table-column.js +54 -54
  120. package/src/pb-table-grid.js +221 -203
  121. package/src/pb-tabs.js +61 -63
  122. package/src/pb-tify.js +154 -154
  123. package/src/pb-timeline.js +271 -229
  124. package/src/pb-toggle-feature.js +182 -175
  125. package/src/pb-upload.js +184 -174
  126. package/src/pb-version.js +30 -30
  127. package/src/pb-view-annotate.js +132 -98
  128. package/src/pb-view.js +1290 -1270
  129. package/src/pb-zoom.js +75 -59
  130. package/src/polymer-hack.js +1 -1
  131. package/src/search-result-service.js +256 -223
  132. package/src/seed-element.js +13 -20
  133. package/src/settings.js +4 -4
  134. package/src/theming.js +96 -96
  135. package/src/urls.js +289 -289
  136. package/src/utils.js +53 -51
@@ -1,7 +1,6 @@
1
1
  import { LitElement, html, css } from 'lit-element';
2
2
  import { pbMixin } from './pb-mixin';
3
3
 
4
-
5
4
  /**
6
5
  * Link elements to each other: if the user moves the mouse over one element,
7
6
  * the others are highlighted by changing their background color. Which elements
@@ -11,7 +10,7 @@ import { pbMixin } from './pb-mixin';
11
10
  *
12
11
  * `pb-highlight` should be output for relevant elements via ODD processing model.
13
12
  *
14
- *
13
+ *
15
14
  *
16
15
  * @slot - default unnamed slot for highlight content
17
16
  * @fires pb-highlight-off - Fires removal of all highlights that might have existed before
@@ -19,151 +18,152 @@ import { pbMixin } from './pb-mixin';
19
18
  * @fires pb-highlight-off - When received, triggers removal of a highlight that might have been on for this element before
20
19
  * @fires pb-highlight-on - When received, switches the highlight on if the same key was received as the current element has
21
20
  * @cssprop --pb-highlight-color - Background color to highlight an element
22
- */
21
+ */
23
22
  export class PbHighlight extends pbMixin(LitElement) {
24
- static get properties() {
25
- return {
26
- ...super.properties,
27
- /**
28
- * The key to which this element is connected.
29
- */
30
- key: {
31
- type: String
32
- },
33
- /**
34
- * If set to > 0, specifies a duration (in ms) after which
35
- * the highlighting will be removed again
36
- */
37
- duration: {
38
- type: Number
39
- },
40
- /**
41
- * Scroll this element into view when it receives a highlight event
42
- */
43
- scroll: {
44
- type: Boolean
45
- },
46
- highlightSelf: {
47
- type: Boolean,
48
- attribute: 'highlight-self'
49
- },
50
- _className: {
51
- type: String
52
- }
53
- };
23
+ static get properties() {
24
+ return {
25
+ ...super.properties,
26
+ /**
27
+ * The key to which this element is connected.
28
+ */
29
+ key: {
30
+ type: String,
31
+ },
32
+ /**
33
+ * If set to > 0, specifies a duration (in ms) after which
34
+ * the highlighting will be removed again
35
+ */
36
+ duration: {
37
+ type: Number,
38
+ },
39
+ /**
40
+ * Scroll this element into view when it receives a highlight event
41
+ */
42
+ scroll: {
43
+ type: Boolean,
44
+ },
45
+ highlightSelf: {
46
+ type: Boolean,
47
+ attribute: 'highlight-self',
48
+ },
49
+ _className: {
50
+ type: String,
51
+ },
52
+ };
53
+ }
54
+
55
+ constructor() {
56
+ super();
57
+ this.key = null;
58
+ this.duration = 0;
59
+ this.scroll = false;
60
+ this.highlightSelf = false;
61
+ this._className = 'highlight-off';
62
+ }
63
+
64
+ connectedCallback() {
65
+ super.connectedCallback();
66
+ this.subscribeTo('pb-highlight-on', this._highlightOn.bind(this));
67
+ this.subscribeTo('pb-highlight-off', this._highlightOff.bind(this));
68
+ }
69
+
70
+ command(command, state) {
71
+ super.command(command, state);
72
+ if (this.disabled) {
73
+ this._className = 'highlight-off';
54
74
  }
55
-
56
- constructor() {
57
- super();
58
- this.key = null;
59
- this.duration = 0;
60
- this.scroll = false;
61
- this.highlightSelf = false;
62
- this._className = 'highlight-off';
75
+ }
76
+
77
+ _mouseOver() {
78
+ this.emitTo('pb-highlight-off', {
79
+ source: this,
80
+ });
81
+ if (this.highlightSelf) {
82
+ this._highlightOn({ detail: { id: this.key } });
63
83
  }
64
-
65
- connectedCallback() {
66
- super.connectedCallback();
67
- this.subscribeTo('pb-highlight-on', this._highlightOn.bind(this));
68
- this.subscribeTo('pb-highlight-off', this._highlightOff.bind(this));
84
+ this.emitTo('pb-highlight-on', {
85
+ id: this.key,
86
+ source: this,
87
+ scroll: this.scroll,
88
+ });
89
+ }
90
+
91
+ render() {
92
+ if (this.disabled) {
93
+ return html`<slot></slot>`;
69
94
  }
70
-
71
- command(command, state) {
72
- super.command(command, state);
73
- if (this.disabled) {
74
- this._className = 'highlight-off';
95
+ return html`<span id="content" class="${this._className}" @mouseover="${this._mouseOver}"
96
+ ><slot></slot
97
+ ></span>`;
98
+ }
99
+
100
+ static get styles() {
101
+ return css`
102
+ :host {
103
+ display: inline;
104
+ }
105
+
106
+ @keyframes keyFrameBackgroundColorIn {
107
+ 0% {
108
+ background-color: inherit;
75
109
  }
76
- }
77
-
78
- _mouseOver() {
79
- this.emitTo('pb-highlight-off', {
80
- source: this
81
- });
82
- if (this.highlightSelf) {
83
- this._highlightOn({ detail: { id: this.key } });
110
+ 100% {
111
+ background-color: var(--pb-highlight-color, #f9e976);
84
112
  }
85
- this.emitTo('pb-highlight-on', {
86
- id: this.key,
87
- source: this,
88
- scroll: this.scroll
89
- });
113
+ }
114
+
115
+ #content {
116
+ display: inline;
117
+ }
118
+
119
+ .highlight-on {
120
+ background-color: var(--pb-highlight-color, #f9e976);
121
+ animation-name: keyFrameBackgroundColorIn;
122
+ animation-duration: 500ms;
123
+ animation-iteration-count: 1;
124
+ animation-timing-function: ease-in;
125
+ }
126
+
127
+ .highlight-off {
128
+ background-color: inherit;
129
+ }
130
+ `;
131
+ }
132
+
133
+ _highlightOn(ev) {
134
+ if (ev.detail.source != this && ev.detail.id === this.key) {
135
+ this._className = 'highlight-on';
136
+ if (ev.detail.scroll && this.disabled == false) {
137
+ this.scrollIntoView({ block: 'center', behaviour: 'smooth' });
138
+ }
139
+ if (this.duration > 0) {
140
+ setTimeout(() => {
141
+ this._className = 'highlight-off';
142
+ }, this.duration);
143
+ }
90
144
  }
145
+ }
91
146
 
92
- render() {
93
- if (this.disabled) {
94
- return html`<slot></slot>`;
95
- }
96
- return html`<span id="content" class="${this._className}" @mouseover="${this._mouseOver}"><slot></slot></span>`;
147
+ _highlightOff(ev) {
148
+ if (ev.detail.source != this) {
149
+ this._className = 'highlight-off';
97
150
  }
98
-
99
- static get styles() {
100
- return css`
101
- :host {
102
- display: inline;
103
- }
104
-
105
- @keyframes keyFrameBackgroundColorIn {
106
- 0% {
107
- background-color: inherit;
108
- }
109
- 100% {
110
- background-color: var(--pb-highlight-color, #F9E976);
111
- }
112
- }
113
-
114
- #content {
115
- display: inline;
116
- }
117
-
118
- .highlight-on {
119
- background-color: var(--pb-highlight-color, #F9E976);
120
- animation-name: keyFrameBackgroundColorIn;
121
- animation-duration: 500ms;
122
- animation-iteration-count: 1;
123
- animation-timing-function: ease-in;
124
-
125
- }
126
-
127
- .highlight-off {
128
- background-color: inherit;
129
- }
130
- `;
131
- }
132
-
133
- _highlightOn(ev) {
134
- if (ev.detail.source != this && ev.detail.id === this.key) {
135
- this._className = 'highlight-on';
136
- if (ev.detail.scroll && this.disabled == false) {
137
- this.scrollIntoView({ block: "center", behaviour: 'smooth' });
138
- }
139
- if (this.duration > 0) {
140
- setTimeout(function () {
141
- this._className = 'highlight-off';
142
- }.bind(this), this.duration);
143
- }
144
- }
145
- }
146
-
147
- _highlightOff(ev) {
148
- if (ev.detail.source != this) {
149
- this._className = 'highlight-off';
150
- }
151
- }
152
-
153
- /**
154
- * Fired if mouse pointer enters the element
155
- *
156
- * @event pb-highlight-on
157
- * @param {String} id key
158
- * @param {Object} source this element
159
- * @param {scroll} should target scroll to highlighted position
160
- */
161
-
162
- /**
163
- * Fired if mouse pointer leaves the element
164
- *
165
- * @event pb-highlight-off
166
- * @param {Object} source this element
167
- */
151
+ }
152
+
153
+ /**
154
+ * Fired if mouse pointer enters the element
155
+ *
156
+ * @event pb-highlight-on
157
+ * @param {String} id key
158
+ * @param {Object} source this element
159
+ * @param {scroll} should target scroll to highlighted position
160
+ */
161
+
162
+ /**
163
+ * Fired if mouse pointer leaves the element
164
+ *
165
+ * @event pb-highlight-off
166
+ * @param {Object} source this element
167
+ */
168
168
  }
169
- customElements.define('pb-highlight', PbHighlight);
169
+ customElements.define('pb-highlight', PbHighlight);
package/src/pb-hotkeys.js CHANGED
@@ -1,18 +1,16 @@
1
1
  import hotkeys from 'hotkeys-js';
2
2
 
3
- const EXCLUDED_TAGS = [
4
- 'INPUT', 'SELECT', 'TEXTAREA', 'PAPER-INPUT', 'PAPER-TEXTAREA', 'PB-SEARCH'
5
- ];
3
+ const EXCLUDED_TAGS = ['INPUT', 'SELECT', 'TEXTAREA', 'PAPER-INPUT', 'PAPER-TEXTAREA', 'PB-SEARCH'];
6
4
  const excluded = new Set(EXCLUDED_TAGS);
7
5
 
8
6
  // disable hotkeys for form elements
9
7
  let firstLoad = true;
10
8
  if (firstLoad) {
11
- hotkeys.filter = (event) => {
12
- const tagName = (event.target || event.srcElement).tagName;
13
- return !(tagName.isContentEditable || excluded.has(tagName));
14
- }
15
- firstLoad = false;
9
+ hotkeys.filter = event => {
10
+ const { tagName } = event.target || event.srcElement;
11
+ return !(tagName.isContentEditable || excluded.has(tagName));
12
+ };
13
+ firstLoad = false;
16
14
  }
17
15
 
18
16
  /**
@@ -21,56 +19,56 @@ if (firstLoad) {
21
19
  * can then map the symbolic name to a function by calling `registerHotkey`.
22
20
  *
23
21
  */
24
- export const pbHotkeys = (superclass) => class PbHotkeys extends superclass {
25
-
22
+ export const pbHotkeys = superclass =>
23
+ class PbHotkeys extends superclass {
26
24
  static get properties() {
27
- return {
28
- ...super.properties,
29
- hotkeys: {
30
- type: Object
31
- }
32
- };
33
- };
25
+ return {
26
+ ...super.properties,
27
+ hotkeys: {
28
+ type: Object,
29
+ },
30
+ };
31
+ }
34
32
 
35
33
  constructor() {
36
- super();
37
- this.hotkeys = {};
34
+ super();
35
+ this.hotkeys = {};
38
36
  }
39
37
 
40
38
  /**
41
- *
39
+ *
42
40
  * @param {String} name symbolic name, must be defined in `this.hotkeys`
43
41
  * @param {import('hotkeys-js').KeyHandler} callback a callback function
44
42
  */
45
43
  registerHotkey(name, callback, target) {
46
- if (name && this.hotkeys[name]) {
47
- if (target) {
48
- hotkeys(this.hotkeys[name], { element: target }, callback);
49
- } else {
50
- hotkeys(this.hotkeys[name], callback);
51
- }
44
+ if (name && this.hotkeys[name]) {
45
+ if (target) {
46
+ hotkeys(this.hotkeys[name], { element: target }, callback);
47
+ } else {
48
+ hotkeys(this.hotkeys[name], callback);
52
49
  }
50
+ }
53
51
  }
54
52
 
55
53
  display(name) {
56
- if (name && this.hotkeys[name]) {
57
- let output = [];
58
- const keys = this.hotkeys[name].split(/\s*,\s*/);
59
- keys.forEach((key) => {
60
- output.push(key.replace('+', '-'));
61
- });
62
- return output.join(', ');
63
- }
64
- return '';
54
+ if (name && this.hotkeys[name]) {
55
+ const output = [];
56
+ const keys = this.hotkeys[name].split(/\s*,\s*/);
57
+ keys.forEach(key => {
58
+ output.push(key.replace('+', '-'));
59
+ });
60
+ return output.join(', ');
61
+ }
62
+ return '';
65
63
  }
66
- }
64
+ };
67
65
 
68
66
  export function registerHotkey(name, callback, target) {
69
- if (target) {
70
- hotkeys(name, { element: target }, callback);
71
- } else {
72
- hotkeys(name, callback);
73
- }
67
+ if (target) {
68
+ hotkeys(name, { element: target }, callback);
69
+ } else {
70
+ hotkeys(name, callback);
71
+ }
74
72
  }
75
73
 
76
- window.pbKeyboard = registerHotkey;
74
+ window.pbKeyboard = registerHotkey;
package/src/pb-i18n.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { LitElement, html } from 'lit-element';
2
- import { directive, NodePart, AttributePart } from "lit-html";
2
+ import { directive, NodePart, AttributePart } from 'lit-html';
3
3
 
4
4
  // Cache created lit-html parts, so we can update translations
5
5
  const partCache = new Map();
@@ -7,92 +7,89 @@ const partCache = new Map();
7
7
  // The currently used i18next translation function
8
8
  let _translate;
9
9
 
10
- /**
10
+ /**
11
11
  * Called by pb-page before the first pb-i18n-update
12
12
  * to make sure the translation function is set.
13
13
  */
14
14
  export function initTranslation(translate) {
15
- _translate = translate;
15
+ _translate = translate;
16
16
  }
17
17
 
18
18
  function isConnected(part) {
19
- if (part instanceof NodePart) {
20
- return part.startNode.isConnected;
21
-
22
- }
23
- if (part instanceof AttributePart) {
24
- return part.committer.element.isConnected;
25
-
26
- }
27
- return part.element.isConnected;
19
+ if (part instanceof NodePart) {
20
+ return part.startNode.isConnected;
21
+ }
22
+ if (part instanceof AttributePart) {
23
+ return part.committer.element.isConnected;
24
+ }
25
+ return part.element.isConnected;
28
26
  }
29
27
 
30
28
  function removeDisconnectedParts() {
31
- Object.keys(partCache).forEach((part) => {
32
- if (!isConnected(part)) {
33
- partCache.delete(part);
34
- }
35
- });
29
+ Object.keys(partCache).forEach(part => {
30
+ if (!isConnected(part)) {
31
+ partCache.delete(part);
32
+ }
33
+ });
36
34
  }
37
35
 
38
36
  function whenIdle(cb) {
39
- "requestIdleCallback" in window ? window.requestIdleCallback(cb) : setTimeout(cb)
37
+ 'requestIdleCallback' in window ? window.requestIdleCallback(cb) : setTimeout(cb);
40
38
  }
41
39
 
42
40
  function updatePart(part, cb) {
41
+ // Grab the new value
42
+ const newValue = cb();
43
43
 
44
- // Grab the new value
45
- const newValue = cb();
44
+ // Only set the value if it has changed
45
+ if (part.value === newValue) {
46
+ return;
47
+ }
46
48
 
47
- // Only set the value if it has changed
48
- if (part.value === newValue) {
49
- return;
50
- }
51
-
52
- // Set the new value
53
- part.setValue(newValue);
54
- part.commit();
49
+ // Set the new value
50
+ part.setValue(newValue);
51
+ part.commit();
55
52
  }
56
53
 
57
54
  function updateParts(options) {
58
- _translate = options.t;
59
- partCache.forEach((cb, part) => {
60
- if (isConnected(part)) {
61
- updatePart(part, cb);
62
- }
63
- });
55
+ _translate = options.t;
56
+ partCache.forEach((cb, part) => {
57
+ if (isConnected(part)) {
58
+ updatePart(part, cb);
59
+ }
60
+ });
64
61
  }
65
62
 
66
63
  /**
67
64
  * Translate the given string using i18n.
68
- *
65
+ *
69
66
  * @param {String} key The key to translate
70
67
  * @param {Object} [value] Optional object containing interpolation values
71
- * @returns
68
+ * @returns
72
69
  */
73
70
  export function get(key, value) {
74
- if (_translate) {
75
- return _translate(key, value);
76
- }
77
- return key;
71
+ if (_translate) {
72
+ return _translate(key, value);
73
+ }
74
+ return key;
78
75
  }
79
76
 
80
- export const langChanged = directive((cb) => (part) => {
81
- partCache.set(part, cb);
82
- updatePart(part, cb);
77
+ export const langChanged = directive(cb => part => {
78
+ partCache.set(part, cb);
79
+ updatePart(part, cb);
83
80
  });
84
81
 
85
82
  /**
86
83
  * lit-html directive to translate a given key into the target language
87
84
  * using i18next.
88
- *
85
+ *
89
86
  * @param {String} key The key to translate
90
87
  * @param {Object} [value] Optional object containing interpolation values
91
88
  */
92
89
  export const translate = (key, value) => langChanged(() => get(key, value));
93
90
 
94
- document.addEventListener('pb-i18n-update', (ev) => {
95
- updateParts(ev.detail);
91
+ document.addEventListener('pb-i18n-update', ev => {
92
+ updateParts(ev.detail);
96
93
  });
97
94
 
98
95
  // start a background task to garbage collect parts
@@ -103,65 +100,65 @@ setInterval(() => whenIdle(() => removeDisconnectedParts()), 1000 * 60);
103
100
  * display the contained content.
104
101
  */
105
102
  export class PbI18n extends LitElement {
106
- static get properties() {
107
- return {
108
- ...super.properties,
109
- /**
110
- * The i18n key to use for looking up the translation.
111
- */
112
- key: {
113
- type: String
114
- },
115
- /**
116
- * Optional interpolation parameters to be passed to the
117
- * translation function
118
- */
119
- options: {
120
- type: Object
121
- },
122
- _translated: {
123
- type: String
124
- }
125
- };
126
- }
127
-
128
- constructor() {
129
- super();
130
- this.key = 'missing-key';
131
- this._options = null;
132
- this._translated = null;
133
- }
134
-
135
- connectedCallback() {
136
- super.connectedCallback();
137
-
138
- this._fallback = this.innerHTML;
139
-
140
- document.addEventListener('pb-i18n-update', this._translate.bind(this));
141
-
142
- this._translate();
103
+ static get properties() {
104
+ return {
105
+ ...super.properties,
106
+ /**
107
+ * The i18n key to use for looking up the translation.
108
+ */
109
+ key: {
110
+ type: String,
111
+ },
112
+ /**
113
+ * Optional interpolation parameters to be passed to the
114
+ * translation function
115
+ */
116
+ options: {
117
+ type: Object,
118
+ },
119
+ _translated: {
120
+ type: String,
121
+ },
122
+ };
123
+ }
124
+
125
+ constructor() {
126
+ super();
127
+ this.key = 'missing-key';
128
+ this._options = null;
129
+ this._translated = null;
130
+ }
131
+
132
+ connectedCallback() {
133
+ super.connectedCallback();
134
+
135
+ this._fallback = this.innerHTML;
136
+
137
+ document.addEventListener('pb-i18n-update', this._translate.bind(this));
138
+
139
+ this._translate();
140
+ }
141
+
142
+ set options(value) {
143
+ this._options = value;
144
+ this._translate();
145
+ }
146
+
147
+ _translate() {
148
+ const transl = get(this.key, this._options);
149
+ if (transl && transl !== this.key) {
150
+ this._translated = transl;
151
+ } else {
152
+ this._translated = null;
143
153
  }
154
+ }
144
155
 
145
- set options(value) {
146
- this._options = value;
147
- this._translate();
148
- }
156
+ render() {
157
+ return this._translated ? this._translated : this._fallback;
158
+ }
149
159
 
150
- _translate() {
151
- const transl = get(this.key, this._options);
152
- if (transl && transl !== this.key) {
153
- this._translated = transl;
154
- } else {
155
- this._translated = null;
156
- }
157
- }
158
-
159
- render() {
160
- return this._translated ? this._translated : this._fallback;
161
- }
162
-
163
- createRenderRoot() {
164
- return this;
165
- }
160
+ createRenderRoot() {
161
+ return this;
162
+ }
166
163
  }
167
- customElements.define('pb-i18n', PbI18n);
164
+ customElements.define('pb-i18n', PbI18n);