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

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 (262) hide show
  1. package/.github/workflows/docker-cypress.yml +54 -0
  2. package/.github/workflows/main.yml +6 -4
  3. package/.github/workflows/node.js.yml +56 -21
  4. package/.github/workflows/release.js.yml +19 -17
  5. package/.releaserc.json +1 -1
  6. package/CHANGELOG.md +351 -9
  7. package/Dockerfile +78 -70
  8. package/README.md +112 -4
  9. package/css/components.css +5 -5
  10. package/css/gridjs/mermaid.min.css +1 -1
  11. package/css/leaflet/Control.Geocoder.css +1 -126
  12. package/css/leaflet/images/layers.png +0 -0
  13. package/css/tify/tify.css +6 -5
  14. package/css/tom-select/tom-select.bootstrap4.min.css +1 -1
  15. package/css/tom-select/tom-select.bootstrap5.min.css +1 -1
  16. package/css/tom-select/tom-select.default.min.css +1 -1
  17. package/css/tom-select/tom-select.default.min.css.map +1 -0
  18. package/css/tom-select/tom-select.min.css +1 -1
  19. package/cypress.config.js +84 -0
  20. package/dist/api.html +1 -1
  21. package/dist/css/design-system.css +607 -0
  22. package/dist/demo/bundle-test.html +4 -3
  23. package/dist/demo/components.css +46 -1
  24. package/dist/demo/design-system.html +710 -0
  25. package/dist/demo/dts-client.html +2 -2
  26. package/dist/demo/pb-autocomplete.html +23 -11
  27. package/dist/demo/pb-autocomplete2.html +66 -55
  28. package/dist/demo/pb-autocomplete3.html +17 -8
  29. package/dist/demo/pb-blacklab-highlight.html +28 -11
  30. package/dist/demo/pb-blacklab-results.html +3 -2
  31. package/dist/demo/pb-browse-docs.html +24 -24
  32. package/dist/demo/pb-browse-docs2.html +3 -3
  33. package/dist/demo/pb-clipboard.html +32 -28
  34. package/dist/demo/pb-code-editor.html +6 -6
  35. package/dist/demo/pb-code-highlight.html +63 -63
  36. package/dist/demo/pb-codepen.html +1 -1
  37. package/dist/demo/pb-collapse.html +1 -1
  38. package/dist/demo/pb-collapse2.html +2 -2
  39. package/dist/demo/pb-combo-box.html +135 -130
  40. package/dist/demo/pb-custom-form.html +64 -55
  41. package/dist/demo/pb-dialog.html +12 -6
  42. package/dist/demo/pb-document.html +1 -1
  43. package/dist/demo/pb-download.html +68 -59
  44. package/dist/demo/pb-drawer.html +67 -46
  45. package/dist/demo/pb-drawer2.html +65 -58
  46. package/dist/demo/pb-edit-app.html +2 -2
  47. package/dist/demo/pb-edit-xml.html +1 -1
  48. package/dist/demo/pb-facsimile-2.html +26 -11
  49. package/dist/demo/pb-facsimile-3.html +25 -10
  50. package/dist/demo/pb-facsimile-dedup-test-2.html +48 -0
  51. package/dist/demo/pb-facsimile-dedup-test.html +48 -0
  52. package/dist/demo/pb-facsimile.html +4 -4
  53. package/dist/demo/pb-formula.html +1 -1
  54. package/dist/demo/pb-grid.html +22 -8
  55. package/dist/demo/pb-highlight.html +2 -2
  56. package/dist/demo/pb-i18n-simple.html +1 -0
  57. package/dist/demo/pb-i18n.html +15 -5
  58. package/dist/demo/pb-image-strip-standalone.html +2 -2
  59. package/dist/demo/pb-image-strip-view.html +2 -2
  60. package/dist/demo/pb-leaflet-map.html +3 -3
  61. package/dist/demo/pb-leaflet-map2.html +2 -2
  62. package/dist/demo/pb-leaflet-map3.html +3 -3
  63. package/dist/demo/pb-link.html +1 -1
  64. package/dist/demo/pb-load.html +2 -6
  65. package/dist/demo/pb-login.html +1 -3
  66. package/dist/demo/pb-manage-odds.html +9 -4
  67. package/dist/demo/pb-markdown.html +1 -1
  68. package/dist/demo/pb-media-query.html +2 -2
  69. package/dist/demo/pb-mei.html +2 -2
  70. package/dist/demo/pb-mei2.html +2 -2
  71. package/dist/demo/pb-message.html +2 -3
  72. package/dist/demo/pb-odd-editor.html +54 -52
  73. package/dist/demo/pb-page-header.html +27 -0
  74. package/dist/demo/pb-popover.html +1 -1
  75. package/dist/demo/pb-print-preview.html +2 -2
  76. package/dist/demo/pb-progress.html +4 -4
  77. package/dist/demo/pb-repeat.html +32 -36
  78. package/dist/demo/pb-search.html +16 -5
  79. package/dist/demo/pb-search2.html +4 -4
  80. package/dist/demo/pb-search3.html +3 -3
  81. package/dist/demo/pb-search4.html +3 -3
  82. package/dist/demo/pb-select-feature.html +4 -4
  83. package/dist/demo/pb-select-feature2.html +4 -4
  84. package/dist/demo/pb-select-feature3.html +2 -2
  85. package/dist/demo/pb-select-i18n.html +58 -53
  86. package/dist/demo/pb-select-odd.html +1 -1
  87. package/dist/demo/pb-select.html +190 -75
  88. package/dist/demo/pb-select2.html +91 -37
  89. package/dist/demo/pb-select3.html +109 -41
  90. package/dist/demo/pb-svg.html +1 -1
  91. package/dist/demo/pb-table-grid.html +26 -15
  92. package/dist/demo/pb-tabs.html +15 -7
  93. package/dist/demo/pb-tify.html +7 -7
  94. package/dist/demo/pb-timeline.html +1 -1
  95. package/dist/demo/pb-timeline2.html +1 -1
  96. package/dist/demo/pb-toggle-feature.html +26 -23
  97. package/dist/demo/pb-toggle-feature2.html +4 -4
  98. package/dist/demo/pb-toggle-feature3.html +2 -2
  99. package/dist/demo/pb-toggle-feature4.html +56 -54
  100. package/dist/demo/pb-version.html +2 -2
  101. package/dist/demo/pb-view.html +78 -40
  102. package/dist/demo/pb-view2.html +69 -46
  103. package/dist/demo/pb-view3.html +53 -48
  104. package/dist/demo/pb-view4.html +70 -49
  105. package/dist/demo/pb-zoom.html +2 -2
  106. package/dist/{es-global-bridge-d8ce175d.js → es-global-bridge-D8ZcUcx_.js} +0 -4
  107. package/dist/focus-mixin-VCsFap6b.js +768 -0
  108. package/dist/images/icons.svg +217 -0
  109. package/dist/jinn-codemirror-DETLdm08.js +1 -0
  110. package/dist/lib/openseadragon.min.js +80 -0
  111. package/dist/lib/openseadragon.min.js.map +1 -0
  112. package/dist/pb-code-editor.js +25 -20
  113. package/dist/pb-component-docs.js +414 -3225
  114. package/dist/pb-components-bundle.js +3046 -4402
  115. package/dist/pb-dialog-tklYGWfc.js +121 -0
  116. package/dist/pb-edit-app.js +208 -107
  117. package/dist/pb-elements.json +716 -249
  118. package/dist/pb-facsimile.js +46 -0
  119. package/dist/pb-i18n-C0NDma4h.js +1 -0
  120. package/dist/pb-leaflet-map.js +23 -23
  121. package/dist/pb-mei.js +152 -134
  122. package/dist/pb-mixin-DHoWQheB.js +1 -0
  123. package/dist/pb-odd-editor.js +1671 -1231
  124. package/dist/pb-tify.js +1 -27
  125. package/dist/unsafe-html-D5VGo9Oq.js +1 -0
  126. package/dist/urls-BEONu_g4.js +1 -0
  127. package/eslint.config.mjs +92 -0
  128. package/gh-pages.js +5 -3
  129. package/i18n/common/en.json +6 -0
  130. package/i18n/common/pl.json +2 -2
  131. package/images/icons.svg +217 -0
  132. package/index.html +0 -5
  133. package/lib/leaflet-src.js.map +1 -0
  134. package/lib/leaflet.markercluster-src.js.map +1 -0
  135. package/lib/openseadragon.min.js +6 -6
  136. package/package.json +56 -81
  137. package/pb-elements.json +716 -249
  138. package/rollup.config.mjs +312 -0
  139. package/src/assets/components.css +5 -5
  140. package/src/assets/design-system.css +607 -0
  141. package/src/authority/airtable.js +20 -21
  142. package/src/authority/anton.js +129 -129
  143. package/src/authority/custom.js +70 -27
  144. package/src/authority/geonames.js +38 -32
  145. package/src/authority/gnd.js +50 -42
  146. package/src/authority/kbga.js +136 -134
  147. package/src/authority/metagrid.js +44 -46
  148. package/src/authority/reconciliation.js +66 -68
  149. package/src/authority/registry.js +4 -4
  150. package/src/docs/demo-utils.js +91 -0
  151. package/src/docs/pb-component-docs.js +287 -147
  152. package/src/docs/pb-component-view.js +380 -273
  153. package/src/docs/pb-components-list.js +115 -51
  154. package/src/docs/pb-demo-snippet.js +199 -174
  155. package/src/dts-client.js +306 -303
  156. package/src/dts-select-endpoint.js +125 -85
  157. package/src/parse-date-service.js +184 -135
  158. package/src/pb-ajax.js +175 -173
  159. package/src/pb-authority-lookup.js +198 -158
  160. package/src/pb-autocomplete.js +731 -313
  161. package/src/pb-blacklab-highlight.js +266 -260
  162. package/src/pb-blacklab-results.js +230 -225
  163. package/src/pb-browse-docs.js +601 -484
  164. package/src/pb-browse.js +68 -65
  165. package/src/pb-clipboard.js +97 -76
  166. package/src/pb-code-editor.js +111 -103
  167. package/src/pb-code-highlight.js +234 -204
  168. package/src/pb-codepen.js +81 -73
  169. package/src/pb-collapse.js +265 -152
  170. package/src/pb-combo-box.js +191 -191
  171. package/src/pb-components-bundle.js +1 -7
  172. package/src/pb-components.js +2 -6
  173. package/src/pb-custom-form.js +230 -141
  174. package/src/pb-dialog.js +99 -63
  175. package/src/pb-document.js +118 -91
  176. package/src/pb-download.js +214 -198
  177. package/src/pb-drawer.js +146 -149
  178. package/src/pb-edit-app.js +471 -240
  179. package/src/pb-edit-xml.js +101 -98
  180. package/src/pb-events.js +126 -107
  181. package/src/pb-facs-link.js +130 -101
  182. package/src/pb-facsimile.js +494 -410
  183. package/src/pb-fetch.js +389 -0
  184. package/src/pb-formula.js +152 -154
  185. package/src/pb-geolocation.js +130 -132
  186. package/src/pb-grid-action.js +59 -56
  187. package/src/pb-grid.js +388 -228
  188. package/src/pb-highlight.js +142 -142
  189. package/src/pb-hotkeys.js +40 -42
  190. package/src/pb-i18n.js +115 -127
  191. package/src/pb-icon-button.js +108 -0
  192. package/src/pb-icon.js +283 -0
  193. package/src/pb-image-strip.js +85 -79
  194. package/src/pb-lang.js +142 -57
  195. package/src/pb-leaflet-map.js +551 -483
  196. package/src/pb-link.js +132 -126
  197. package/src/pb-load.js +495 -428
  198. package/src/pb-login.js +303 -248
  199. package/src/pb-manage-odds.js +384 -338
  200. package/src/pb-map-icon.js +90 -90
  201. package/src/pb-map-layer.js +86 -86
  202. package/src/pb-markdown.js +107 -110
  203. package/src/pb-media-query.js +75 -73
  204. package/src/pb-mei.js +523 -303
  205. package/src/pb-message.js +144 -98
  206. package/src/pb-mixin.js +268 -265
  207. package/src/pb-navigation.js +83 -96
  208. package/src/pb-observable.js +39 -39
  209. package/src/pb-odd-editor.js +1209 -948
  210. package/src/pb-odd-elementspec-editor.js +375 -310
  211. package/src/pb-odd-model-editor.js +1189 -941
  212. package/src/pb-odd-parameter-editor.js +269 -170
  213. package/src/pb-odd-rendition-editor.js +184 -131
  214. package/src/pb-page.js +451 -422
  215. package/src/pb-paginate.js +260 -178
  216. package/src/pb-panel.js +217 -183
  217. package/src/pb-popover-themes.js +16 -9
  218. package/src/pb-popover.js +297 -288
  219. package/src/pb-print-preview.js +128 -128
  220. package/src/pb-progress.js +52 -52
  221. package/src/pb-repeat.js +141 -108
  222. package/src/pb-restricted.js +85 -78
  223. package/src/pb-search.js +258 -230
  224. package/src/pb-select-feature.js +210 -126
  225. package/src/pb-select-odd.js +184 -118
  226. package/src/pb-select-template.js +113 -78
  227. package/src/pb-select.js +330 -229
  228. package/src/pb-split-list.js +181 -176
  229. package/src/pb-svg.js +81 -80
  230. package/src/pb-table-column.js +55 -55
  231. package/src/pb-table-grid.js +334 -205
  232. package/src/pb-tabs.js +238 -61
  233. package/src/pb-tify.js +3331 -126
  234. package/src/pb-timeline.js +394 -255
  235. package/src/pb-toggle-feature.js +196 -188
  236. package/src/pb-upload.js +201 -176
  237. package/src/pb-version.js +22 -34
  238. package/src/pb-view-annotate.js +138 -102
  239. package/src/pb-view.js +1722 -1272
  240. package/src/pb-zoom.js +144 -46
  241. package/src/search-result-service.js +256 -223
  242. package/src/seed-element.js +14 -22
  243. package/src/settings.js +4 -4
  244. package/src/theming.js +98 -91
  245. package/src/urls.js +403 -289
  246. package/src/utils.js +53 -51
  247. package/vite.config.js +86 -0
  248. package/css/pb-styles.css +0 -51
  249. package/dist/iron-form-3b8dcaa7.js +0 -210
  250. package/dist/jinn-codemirror-da0e2d1f.js +0 -1
  251. package/dist/paper-checkbox-515a5284.js +0 -1597
  252. package/dist/paper-icon-button-b1d31571.js +0 -398
  253. package/dist/paper-listbox-a3b7175c.js +0 -1265
  254. package/dist/pb-i18n-0611135a.js +0 -1
  255. package/dist/pb-mixin-b1caa22e.js +0 -158
  256. package/dist/polymer-hack.js +0 -1
  257. package/dist/vaadin-element-mixin-6e4cee3a.js +0 -527
  258. package/lib/Control.Geocoder.min.js +0 -2
  259. package/lib/Control.Geocoder.min.js.map +0 -1
  260. package/src/assets/pb-styles.css +0 -51
  261. package/src/pb-light-dom.js +0 -40
  262. package/src/polymer-hack.js +0 -6
package/src/pb-formula.js CHANGED
@@ -1,118 +1,116 @@
1
- import { LitElement, html, css } from 'lit-element';
2
- import "@lrnwebcomponents/es-global-bridge";
3
- import { translate } from "./pb-i18n.js";
1
+ import { LitElement, html, css } from 'lit';
2
+ import '@lrnwebcomponents/es-global-bridge';
3
+ import { translate } from './pb-i18n.js';
4
4
 
5
5
  /** Import external script dynamically */
6
6
  function _import(name, location) {
7
- window.ESGlobalBridge.requestAvailability();
8
- return new Promise(resolve => {
9
- window.ESGlobalBridge.instance.load(name, location);
10
- window.addEventListener(
11
- `es-bridge-${name}-loaded`,
12
- () => resolve(),
13
- { once: true }
14
- );
15
- });
7
+ window.ESGlobalBridge.requestAvailability();
8
+ return new Promise(resolve => {
9
+ window.ESGlobalBridge.instance.load(name, location);
10
+ window.addEventListener(`es-bridge-${name}-loaded`, () => resolve(), { once: true });
11
+ });
16
12
  }
17
13
 
18
14
  /**
19
15
  * Update the stylesheet required by MathJax.
20
16
  * Needs to be done after typesetting has completed.
21
- *
22
- * @param {Element} context
23
- * @param {Element} styles
17
+ *
18
+ * @param {Element} context
19
+ * @param {Element} styles
24
20
  */
25
21
  function _updateStyles(context, styles) {
26
- let root = context.getRootNode();
27
- if (root.nodeType === Node.DOCUMENT_NODE) {
28
- root = root.head;
29
- } else {
30
- // fonts need to be declared outside shadow root, so extract
31
- // all font-faces and put them into a style in the header
32
- const elem = document.querySelector(`style#${styles.id}`);
33
- if (elem) {
34
- elem.parentNode.removeChild(elem);
35
- }
36
- const fonts = styles.innerHTML.match(/@font-face[^{]+{.*?}/gs);
37
- if (fonts) {
38
- const style = document.createElement('style');
39
- style.id = styles.id;
40
- style.appendChild(document.createTextNode(fonts.join('\n')));
41
- document.head.appendChild(style);
42
- }
22
+ let root = context.getRootNode();
23
+ if (root.nodeType === Node.DOCUMENT_NODE) {
24
+ root = root.head;
25
+ } else {
26
+ // fonts need to be declared outside shadow root, so extract
27
+ // all font-faces and put them into a style in the header
28
+ const elem = document.querySelector(`style#${styles.id}`);
29
+ if (elem) {
30
+ elem.parentNode.removeChild(elem);
43
31
  }
44
- const oldStyles = root.querySelector(`#${styles.id}`);
45
- if (oldStyles) {
46
- oldStyles.parentNode.removeChild(oldStyles);
32
+ const fonts = styles.innerHTML.match(/@font-face[^{]+{.*?}/gs);
33
+ if (fonts) {
34
+ const style = document.createElement('style');
35
+ style.id = styles.id;
36
+ style.appendChild(document.createTextNode(fonts.join('\n')));
37
+ document.head.appendChild(style);
47
38
  }
48
- root.appendChild(styles);
39
+ }
40
+ const oldStyles = root.querySelector(`#${styles.id}`);
41
+ if (oldStyles) {
42
+ oldStyles.parentNode.removeChild(oldStyles);
43
+ }
44
+ root.appendChild(styles);
49
45
  }
50
46
 
51
47
  /**
52
48
  * Iterate through the given `pb-formula` elements and typeset the math.
53
49
  */
54
50
  function _initMath(context, formulas) {
55
- formulas.forEach((formula) => {
56
- if (formula.hasChildNodes()) {
57
- const display = formula.hasAttribute('display') || false;
58
- const mathml = formula.querySelector('math');
59
- const options = window.MathJax.getMetricsFor(formula.parentNode, display);
60
- options.display = display;
61
- let chtml;
62
- let source;
63
- if (mathml) {
64
- source = mathml.outerHTML;
65
- chtml = window.MathJax.mathml2chtml(source, options);
66
- } else {
67
- window.MathJax.texReset();
68
- source = formula.innerHTML.replaceAll(/&\w+;/g, function (m) {
69
- return {
70
- '&': '&',
71
- '&lt;' : '<'
72
- }[m];
73
- });
74
- chtml = window.MathJax.tex2chtml(source, options);
75
- }
76
- formula.innerHTML = '';
77
- formula.appendChild(chtml);
78
- formula.setAttribute('loaded', 'loaded');
79
- formula.setAttribute('source', source);
80
- }
81
- });
82
- _updateStyles(context, window.MathJax.chtmlStylesheet());
51
+ formulas.forEach(formula => {
52
+ if (formula.hasChildNodes()) {
53
+ const display = formula.hasAttribute('display') || false;
54
+ const mathml = formula.querySelector('math');
55
+ const options = window.MathJax.getMetricsFor(formula.parentNode, display);
56
+ options.display = display;
57
+ let chtml;
58
+ let source;
59
+ if (mathml) {
60
+ source = mathml.outerHTML;
61
+ chtml = window.MathJax.mathml2chtml(source, options);
62
+ } else {
63
+ window.MathJax.texReset();
64
+ source = formula.innerHTML.replaceAll(
65
+ /&\w+;/g,
66
+ m =>
67
+ ({
68
+ '&amp;': '&',
69
+ '&lt;': '<',
70
+ }[m]),
71
+ );
72
+ chtml = window.MathJax.tex2chtml(source, options);
73
+ }
74
+ formula.innerHTML = '';
75
+ formula.appendChild(chtml);
76
+ formula.setAttribute('loaded', 'loaded');
77
+ formula.setAttribute('source', source);
78
+ }
79
+ });
80
+ _updateStyles(context, window.MathJax.chtmlStylesheet());
83
81
  }
84
82
 
85
83
  /**
86
84
  * Search the passed in element for `pb-formula` elements and
87
85
  * render them via MathJax.
88
- *
86
+ *
89
87
  * Formulas need to be processed sequentially or the output will
90
88
  * be screwed up. Therefore we cannot call MathJax asynchronously
91
89
  * but need to do it from this central controller.
92
- *
90
+ *
93
91
  * @param {Element} elem the root element to process
94
92
  */
95
93
  export function typesetMath(elem) {
96
- const formulas = elem.querySelectorAll('pb-formula');
97
- console.log(`<pb-formula> Found ${formulas.length} elements to typeset ...`);
98
- if (formulas.length > 0) {
99
- if (window.MathJax) {
100
- _initMath(elem, formulas);
101
- return;
102
- }
103
- const showMenu = elem.querySelector('pb-formula[menu]');
104
- window.MathJax = {
105
- startup: {
106
- typeset: false, // Perform initial typeset?
107
- pageReady: () => _initMath(elem, formulas) // Called when MathJax and page are ready
108
- },
109
- options: {
110
- enableMenu: showMenu !== null
111
- }
112
- };
113
-
114
- _import('MathJax', 'https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js');
94
+ const formulas = elem.querySelectorAll('pb-formula');
95
+ console.log(`<pb-formula> Found ${formulas.length} elements to typeset ...`);
96
+ if (formulas.length > 0) {
97
+ if (window.MathJax) {
98
+ _initMath(elem, formulas);
99
+ return;
115
100
  }
101
+ const showMenu = elem.querySelector('pb-formula[menu]');
102
+ window.MathJax = {
103
+ startup: {
104
+ typeset: false, // Perform initial typeset?
105
+ pageReady: () => _initMath(elem, formulas), // Called when MathJax and page are ready
106
+ },
107
+ options: {
108
+ enableMenu: showMenu !== null,
109
+ },
110
+ };
111
+
112
+ _import('MathJax', 'https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js');
113
+ }
116
114
  }
117
115
 
118
116
  /**
@@ -121,84 +119,84 @@ export function typesetMath(elem) {
121
119
  * pass it the root context which should be searched for `pb-notation` elements. The function will
122
120
  * then do the actual typesetting. The reason for this is that formulas need to be typeset synchronously, i.e. one
123
121
  * after the other.
124
- *
122
+ *
125
123
  * The component detects automatically if the formula to typeset is in TeX notation or MathML.
126
- *
124
+ *
127
125
  * @slot - should contain math in TeX notation or MathML
128
126
  */
129
127
  export class PbFormula extends LitElement {
130
- static get properties() {
131
- return {
132
- /**
133
- * TeX notation only: render the formula in display mode, i.e. as block level element.
134
- */
135
- display: {
136
- type: Boolean
137
- },
138
- /**
139
- * Option: if set, enable the MathJax context menu. This affects **all** formulas
140
- * in the context (the page or pb-view), not just the current component!
141
- */
142
- menu: {
143
- type: Boolean
144
- },
145
- /**
146
- * Will be set once the element has been typeset.
147
- */
148
- loaded: {
149
- type: Boolean
150
- },
151
- /**
152
- * Will contain the source notation once the element has been typeset.
153
- */
154
- source: {
155
- type: String
156
- },
157
- ...super.properties
158
- };
159
- }
128
+ static get properties() {
129
+ return {
130
+ /**
131
+ * TeX notation only: render the formula in display mode, i.e. as block level element.
132
+ */
133
+ display: {
134
+ type: Boolean,
135
+ },
136
+ /**
137
+ * Option: if set, enable the MathJax context menu. This affects **all** formulas
138
+ * in the context (the page or pb-view), not just the current component!
139
+ */
140
+ menu: {
141
+ type: Boolean,
142
+ },
143
+ /**
144
+ * Will be set once the element has been typeset.
145
+ */
146
+ loaded: {
147
+ type: Boolean,
148
+ },
149
+ /**
150
+ * Will contain the source notation once the element has been typeset.
151
+ */
152
+ source: {
153
+ type: String,
154
+ },
155
+ ...super.properties,
156
+ };
157
+ }
160
158
 
161
- constructor() {
162
- super();
163
- this.display = false;
164
- }
159
+ constructor() {
160
+ super();
161
+ this.display = false;
162
+ }
165
163
 
166
- attributeChangedCallback(name, oldVal, newVal) {
167
- super.attributeChangedCallback(name, oldVal, newVal);
168
- switch(name) {
169
- case 'loaded':
170
- this.loaded = true;
171
- break;
172
- case 'source':
173
- this.source = newVal;
174
- break;
175
- default:
176
- break;
177
- }
164
+ attributeChangedCallback(name, oldVal, newVal) {
165
+ super.attributeChangedCallback(name, oldVal, newVal);
166
+ switch (name) {
167
+ case 'loaded':
168
+ this.loaded = true;
169
+ break;
170
+ case 'source':
171
+ this.source = newVal;
172
+ break;
173
+ default:
174
+ break;
178
175
  }
176
+ }
179
177
 
180
- render() {
181
- if (!this.hasChildNodes()) {
182
- return null;
183
- }
184
- if (!this.loaded) {
185
- return html`<span class="loading">${translate('dialogs.loading')}</span>`;
186
- }
187
- return html`<div id="content" class="${this.display ? 'block' : ''}"><slot></slot></div>`;
178
+ render() {
179
+ if (!this.hasChildNodes()) {
180
+ return null;
188
181
  }
189
-
190
- static get styles() {
191
- return css`
192
- :host {
193
- display: inline-block;
194
- }
195
- .block {
196
- display: block;
197
- }
198
- .loading {
199
- color: #808080;
200
- }
201
- `;
182
+ if (!this.loaded) {
183
+ return html`<span class="loading">${translate('dialogs.loading')}</span>`;
202
184
  }
185
+ return html`<div id="content" class="${this.display ? 'block' : ''}"><slot></slot></div>`;
186
+ }
187
+
188
+ static get styles() {
189
+ return css`
190
+ :host {
191
+ display: inline-block;
192
+ }
193
+ .block {
194
+ display: block;
195
+ }
196
+ .loading {
197
+ color: #808080;
198
+ }
199
+ `;
200
+ }
203
201
  }
204
202
  customElements.define('pb-formula', PbFormula);
@@ -1,13 +1,12 @@
1
- import { html, css } from 'lit-element';
2
- import { PbHighlight } from "./pb-highlight.js";
3
-
1
+ import { html, css } from 'lit';
2
+ import { PbHighlight } from './pb-highlight.js';
4
3
 
5
4
  /**
6
5
  * Represents a geo location. Extends `pb-highlight`, but sends an additional `pb-geolocation` event
7
6
  * on mouseover.
8
- *
7
+ *
9
8
  * For `pb-leaflet-map` to show markers for `pb-geolocation` elements, make sure that map subscribes to the channel
10
- * into which `pb-geolocation`s emit and that map is loaded before the emitting component, e.g. `pb-view`, by specifying
9
+ * into which `pb-geolocation`s emit and that map is loaded before the emitting component, e.g. `pb-view`, by specifying
11
10
  * `wait-for` property.
12
11
  *
13
12
  * @slot - default unnamed slot for content. May also contain an option `<template>` element for content to be shown in a popup
@@ -15,145 +14,144 @@ import { PbHighlight } from "./pb-highlight.js";
15
14
  * @cssprop --pb-highlight-color - Background color to highlight an element
16
15
  */
17
16
  export class PbGeolocation extends PbHighlight {
18
- static get properties() {
19
- return {
20
- ...super.properties,
21
- longitude: {
22
- type: Number
23
- },
24
- latitude: {
25
- type: Number
26
- },
27
- /**
28
- * Optional label for the place, e.g. to display a marker
29
- */
30
- label: {
31
- type: String
32
- },
33
- /**
34
- * Name of the event which triggers a pb-geolocation event, e.g. 'click'.
35
- * Default is 'mouseover'.
36
- */
37
- event: {
38
- type: String
39
- },
40
- /**
41
- * Zoom level to use for the map if it centers on the location.
42
- */
43
- zoom: {
44
- type: Number
45
- },
46
- /**
47
- * If set, add location to a map automatically upon load by
48
- * emitting an event. If not set, locations are only added when
49
- * the configured event is triggered.
50
- */
51
- auto: {
52
- type: Boolean
53
- }
54
- };
55
- }
17
+ static get properties() {
18
+ return {
19
+ ...super.properties,
20
+ longitude: {
21
+ type: Number,
22
+ },
23
+ latitude: {
24
+ type: Number,
25
+ },
26
+ /**
27
+ * Optional label for the place, e.g. to display a marker
28
+ */
29
+ label: {
30
+ type: String,
31
+ },
32
+ /**
33
+ * Name of the event which triggers a pb-geolocation event, e.g. 'click'.
34
+ * Default is 'mouseover'.
35
+ */
36
+ event: {
37
+ type: String,
38
+ },
39
+ /**
40
+ * Zoom level to use for the map if it centers on the location.
41
+ */
42
+ zoom: {
43
+ type: Number,
44
+ },
45
+ /**
46
+ * If set, add location to a map automatically upon load by
47
+ * emitting an event. If not set, locations are only added when
48
+ * the configured event is triggered.
49
+ */
50
+ auto: {
51
+ type: Boolean,
52
+ },
53
+ };
54
+ }
56
55
 
57
- constructor() {
58
- super();
59
- this.event = 'mouseover';
60
- this.auto = false;
61
- this.zoom = null;
62
- }
56
+ constructor() {
57
+ super();
58
+ this.event = 'mouseover';
59
+ this.auto = false;
60
+ this.zoom = null;
61
+ }
63
62
 
64
- connectedCallback() {
65
- super.connectedCallback();
63
+ connectedCallback() {
64
+ super.connectedCallback();
66
65
 
67
- if (this.event) {
68
- this.addEventListener(this.event, () =>
69
- this.emitTo('pb-geolocation', {
70
- coordinates: {
71
- latitude: this.latitude,
72
- longitude: this.longitude
73
- },
74
- label: this.label,
75
- zoom: this.zoom,
76
- popup: this.popup,
77
- element: this,
78
- event: this.event
79
- })
80
- );
81
- }
82
- if (this.auto) {
83
- this.waitForChannel(() => {
84
- this.emitTo('pb-geolocation', {
85
- coordinates: {
86
- latitude: this.latitude,
87
- longitude: this.longitude
88
- },
89
- label: this.label,
90
- popup: this.popup,
91
- fitBounds: true,
92
- element: this
93
- });
94
- });
95
- }
66
+ if (this.event) {
67
+ this.addEventListener(this.event, () =>
68
+ this.emitTo('pb-geolocation', {
69
+ coordinates: {
70
+ latitude: this.latitude,
71
+ longitude: this.longitude,
72
+ },
73
+ label: this.label,
74
+ zoom: this.zoom,
75
+ popup: this.popup,
76
+ element: this,
77
+ event: this.event,
78
+ }),
79
+ );
96
80
  }
97
-
98
- render() {
99
- return html`<span id="content"><slot></slot></span>`;
81
+ if (this.auto) {
82
+ this.waitForChannel(() => {
83
+ this.emitTo('pb-geolocation', {
84
+ coordinates: {
85
+ latitude: this.latitude,
86
+ longitude: this.longitude,
87
+ },
88
+ label: this.label,
89
+ popup: this.popup,
90
+ fitBounds: true,
91
+ element: this,
92
+ });
93
+ });
100
94
  }
95
+ }
101
96
 
102
- get popup() {
103
- const template = this.querySelector('template');
104
- if (template) {
105
- const wrapper = document.createElement('div');
106
- wrapper.appendChild(template.content.cloneNode(true));
107
- return wrapper;
108
- }
109
- return null;
110
- }
97
+ render() {
98
+ return html`<span id="content"><slot></slot></span>`;
99
+ }
111
100
 
112
- static get styles() {
113
- return css`
114
- :host {
115
- display: inline;
116
- cursor: pointer;
117
- }
101
+ get popup() {
102
+ const template = this.querySelector('template');
103
+ if (template) {
104
+ const wrapper = document.createElement('div');
105
+ wrapper.appendChild(template.content.cloneNode(true));
106
+ return wrapper;
107
+ }
108
+ return null;
109
+ }
118
110
 
119
- [name="popup"] {
120
- display: none;
121
- }
111
+ static get styles() {
112
+ return css`
113
+ :host {
114
+ display: inline;
115
+ cursor: pointer;
116
+ }
122
117
 
123
- @keyframes keyFrameBackgroundColorIn {
124
- 0% {
125
- background-color: inherit;
126
- }
127
- 100% {
128
- background-color: var(--pb-highlight-color, #F9E976);
129
- }
130
- }
118
+ [name='popup'] {
119
+ display: none;
120
+ }
131
121
 
132
- #content {
133
- display: inline;
134
- }
122
+ @keyframes keyFrameBackgroundColorIn {
123
+ 0% {
124
+ background-color: inherit;
125
+ }
126
+ 100% {
127
+ background-color: var(--pb-highlight-color, #f9e976);
128
+ }
129
+ }
135
130
 
136
- .highlight-on {
137
- background-color: var(--pb-highlight-color, #F9E976);
138
- animation-name: keyFrameBackgroundColorIn;
139
- animation-duration: 500ms;
140
- animation-iteration-count: 1;
141
- animation-timing-function: ease-in;
131
+ #content {
132
+ display: inline;
133
+ }
142
134
 
143
- }
135
+ .highlight-on {
136
+ background-color: var(--pb-highlight-color, #f9e976);
137
+ animation-name: keyFrameBackgroundColorIn;
138
+ animation-duration: 500ms;
139
+ animation-iteration-count: 1;
140
+ animation-timing-function: ease-in;
141
+ }
144
142
 
145
- .highlight-off {
146
- background-color: inherit;
147
- }
148
- `;
149
- }
143
+ .highlight-off {
144
+ background-color: inherit;
145
+ }
146
+ `;
147
+ }
150
148
 
151
- /**
152
- * Fired on mouseover
153
- *
154
- * @event pb-geolocation
155
- * @param {Object} coordinates an object with two properties: latitude and longitude
156
- * @param {String} label an optional label for the place
157
- */
149
+ /**
150
+ * Fired on mouseover
151
+ *
152
+ * @event pb-geolocation
153
+ * @param {Object} coordinates an object with two properties: latitude and longitude
154
+ * @param {String} label an optional label for the place
155
+ */
158
156
  }
159
- customElements.define('pb-geolocation', PbGeolocation);
157
+ customElements.define('pb-geolocation', PbGeolocation);