@teipublisher/pb-components 2.26.1-next.3 → 3.0.0-next-4.2

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 +53 -0
  2. package/.github/workflows/node.js.yml +70 -21
  3. package/.releaserc.json +7 -2
  4. package/CHANGELOG.md +363 -11
  5. package/Dockerfile +78 -70
  6. package/README.md +112 -4
  7. package/css/components.css +5 -5
  8. package/css/gridjs/mermaid.min.css +1 -1
  9. package/css/leaflet/Control.Geocoder.css +1 -126
  10. package/css/leaflet/images/layers.png +0 -0
  11. package/css/tify/tify.css +6 -5
  12. package/css/tom-select/tom-select.bootstrap4.min.css +1 -1
  13. package/css/tom-select/tom-select.bootstrap5.min.css +1 -1
  14. package/css/tom-select/tom-select.default.min.css +1 -1
  15. package/css/tom-select/tom-select.default.min.css.map +1 -0
  16. package/css/tom-select/tom-select.min.css +1 -1
  17. package/cypress.config.js +84 -0
  18. package/dist/api.html +1 -1
  19. package/dist/css/design-system.css +607 -0
  20. package/dist/demo/bundle-test.html +4 -3
  21. package/dist/demo/components.css +46 -1
  22. package/dist/demo/design-system.html +710 -0
  23. package/dist/demo/dts-client.html +2 -2
  24. package/dist/demo/pb-autocomplete.html +23 -11
  25. package/dist/demo/pb-autocomplete2.html +66 -55
  26. package/dist/demo/pb-autocomplete3.html +17 -8
  27. package/dist/demo/pb-blacklab-highlight.html +28 -11
  28. package/dist/demo/pb-blacklab-results.html +3 -2
  29. package/dist/demo/pb-browse-docs.html +24 -24
  30. package/dist/demo/pb-browse-docs2.html +3 -3
  31. package/dist/demo/pb-clipboard.html +32 -28
  32. package/dist/demo/pb-code-editor.html +6 -6
  33. package/dist/demo/pb-code-highlight.html +63 -63
  34. package/dist/demo/pb-codepen.html +1 -1
  35. package/dist/demo/pb-collapse.html +1 -1
  36. package/dist/demo/pb-collapse2.html +2 -2
  37. package/dist/demo/pb-combo-box.html +135 -130
  38. package/dist/demo/pb-custom-form.html +64 -55
  39. package/dist/demo/pb-dialog.html +12 -6
  40. package/dist/demo/pb-document.html +1 -1
  41. package/dist/demo/pb-download.html +68 -59
  42. package/dist/demo/pb-drawer.html +67 -46
  43. package/dist/demo/pb-drawer2.html +65 -58
  44. package/dist/demo/pb-edit-app.html +2 -2
  45. package/dist/demo/pb-edit-xml.html +1 -1
  46. package/dist/demo/pb-facsimile-2.html +26 -11
  47. package/dist/demo/pb-facsimile-3.html +25 -10
  48. package/dist/demo/pb-facsimile-dedup-test-2.html +48 -0
  49. package/dist/demo/pb-facsimile-dedup-test.html +48 -0
  50. package/dist/demo/pb-facsimile.html +4 -4
  51. package/dist/demo/pb-formula.html +1 -1
  52. package/dist/demo/pb-grid.html +22 -8
  53. package/dist/demo/pb-highlight.html +2 -2
  54. package/dist/demo/pb-i18n-simple.html +1 -0
  55. package/dist/demo/pb-i18n.html +15 -5
  56. package/dist/demo/pb-image-strip-standalone.html +2 -2
  57. package/dist/demo/pb-image-strip-view.html +2 -2
  58. package/dist/demo/pb-leaflet-map.html +3 -3
  59. package/dist/demo/pb-leaflet-map2.html +2 -2
  60. package/dist/demo/pb-leaflet-map3.html +3 -3
  61. package/dist/demo/pb-link.html +1 -1
  62. package/dist/demo/pb-load.html +2 -6
  63. package/dist/demo/pb-login.html +1 -3
  64. package/dist/demo/pb-manage-odds.html +9 -4
  65. package/dist/demo/pb-markdown.html +1 -1
  66. package/dist/demo/pb-media-query.html +2 -2
  67. package/dist/demo/pb-mei.html +2 -2
  68. package/dist/demo/pb-mei2.html +2 -2
  69. package/dist/demo/pb-message.html +2 -3
  70. package/dist/demo/pb-odd-editor.html +54 -52
  71. package/dist/demo/pb-page-header.html +27 -0
  72. package/dist/demo/pb-popover.html +1 -1
  73. package/dist/demo/pb-print-preview.html +2 -2
  74. package/dist/demo/pb-progress.html +4 -4
  75. package/dist/demo/pb-repeat.html +32 -36
  76. package/dist/demo/pb-search.html +16 -5
  77. package/dist/demo/pb-search2.html +4 -4
  78. package/dist/demo/pb-search3.html +3 -3
  79. package/dist/demo/pb-search4.html +3 -3
  80. package/dist/demo/pb-select-feature.html +4 -4
  81. package/dist/demo/pb-select-feature2.html +4 -4
  82. package/dist/demo/pb-select-feature3.html +2 -2
  83. package/dist/demo/pb-select-i18n.html +58 -53
  84. package/dist/demo/pb-select-odd.html +1 -1
  85. package/dist/demo/pb-select.html +190 -75
  86. package/dist/demo/pb-select2.html +91 -37
  87. package/dist/demo/pb-select3.html +109 -41
  88. package/dist/demo/pb-svg.html +1 -1
  89. package/dist/demo/pb-table-grid.html +26 -15
  90. package/dist/demo/pb-tabs.html +15 -7
  91. package/dist/demo/pb-tify.html +7 -7
  92. package/dist/demo/pb-timeline.html +1 -1
  93. package/dist/demo/pb-timeline2.html +1 -1
  94. package/dist/demo/pb-toggle-feature.html +26 -23
  95. package/dist/demo/pb-toggle-feature2.html +4 -4
  96. package/dist/demo/pb-toggle-feature3.html +2 -2
  97. package/dist/demo/pb-toggle-feature4.html +56 -54
  98. package/dist/demo/pb-version.html +2 -2
  99. package/dist/demo/pb-view.html +78 -40
  100. package/dist/demo/pb-view2.html +69 -46
  101. package/dist/demo/pb-view3.html +53 -48
  102. package/dist/demo/pb-view4.html +70 -49
  103. package/dist/demo/pb-zoom.html +2 -2
  104. package/dist/{es-global-bridge-d8ce175d.js → es-global-bridge-D8ZcUcx_.js} +0 -4
  105. package/dist/focus-mixin-VCsFap6b.js +768 -0
  106. package/dist/images/icons.svg +217 -0
  107. package/dist/jinn-codemirror-DETLdm08.js +1 -0
  108. package/dist/lib/openseadragon.min.js +80 -0
  109. package/dist/lib/openseadragon.min.js.map +1 -0
  110. package/dist/pb-code-editor.js +25 -20
  111. package/dist/pb-component-docs.js +414 -3225
  112. package/dist/pb-components-bundle.js +3046 -4402
  113. package/dist/pb-dialog-tklYGWfc.js +121 -0
  114. package/dist/pb-edit-app.js +208 -107
  115. package/dist/pb-elements.json +716 -249
  116. package/dist/pb-facsimile.js +46 -0
  117. package/dist/pb-i18n-C0NDma4h.js +1 -0
  118. package/dist/pb-leaflet-map.js +23 -23
  119. package/dist/pb-mei.js +152 -134
  120. package/dist/pb-mixin-DHoWQheB.js +1 -0
  121. package/dist/pb-odd-editor.js +1671 -1231
  122. package/dist/pb-tify.js +1 -27
  123. package/dist/unsafe-html-D5VGo9Oq.js +1 -0
  124. package/dist/urls-BEONu_g4.js +1 -0
  125. package/eslint.config.mjs +92 -0
  126. package/gh-pages.js +5 -3
  127. package/i18n/common/en.json +6 -0
  128. package/i18n/common/pl.json +2 -2
  129. package/images/icons.svg +217 -0
  130. package/index.html +0 -5
  131. package/lib/leaflet-src.js.map +1 -0
  132. package/lib/leaflet.markercluster-src.js.map +1 -0
  133. package/lib/openseadragon.min.js +6 -6
  134. package/package.json +56 -81
  135. package/pb-elements.json +716 -249
  136. package/rollup.config.mjs +312 -0
  137. package/src/assets/components.css +5 -5
  138. package/src/assets/design-system.css +607 -0
  139. package/src/authority/airtable.js +20 -21
  140. package/src/authority/anton.js +129 -129
  141. package/src/authority/custom.js +70 -27
  142. package/src/authority/geonames.js +38 -32
  143. package/src/authority/gnd.js +50 -42
  144. package/src/authority/kbga.js +136 -134
  145. package/src/authority/metagrid.js +44 -46
  146. package/src/authority/reconciliation.js +66 -68
  147. package/src/authority/registry.js +4 -4
  148. package/src/docs/demo-utils.js +91 -0
  149. package/src/docs/pb-component-docs.js +287 -147
  150. package/src/docs/pb-component-view.js +380 -273
  151. package/src/docs/pb-components-list.js +115 -51
  152. package/src/docs/pb-demo-snippet.js +199 -174
  153. package/src/dts-client.js +306 -303
  154. package/src/dts-select-endpoint.js +125 -85
  155. package/src/parse-date-service.js +184 -135
  156. package/src/pb-ajax.js +175 -173
  157. package/src/pb-authority-lookup.js +198 -158
  158. package/src/pb-autocomplete.js +731 -313
  159. package/src/pb-blacklab-highlight.js +266 -260
  160. package/src/pb-blacklab-results.js +230 -225
  161. package/src/pb-browse-docs.js +601 -484
  162. package/src/pb-browse.js +68 -65
  163. package/src/pb-clipboard.js +97 -76
  164. package/src/pb-code-editor.js +111 -103
  165. package/src/pb-code-highlight.js +234 -204
  166. package/src/pb-codepen.js +81 -73
  167. package/src/pb-collapse.js +265 -152
  168. package/src/pb-combo-box.js +191 -191
  169. package/src/pb-components-bundle.js +1 -7
  170. package/src/pb-components.js +2 -6
  171. package/src/pb-custom-form.js +230 -141
  172. package/src/pb-dialog.js +99 -63
  173. package/src/pb-document.js +118 -91
  174. package/src/pb-download.js +214 -198
  175. package/src/pb-drawer.js +146 -149
  176. package/src/pb-edit-app.js +471 -240
  177. package/src/pb-edit-xml.js +101 -98
  178. package/src/pb-events.js +126 -107
  179. package/src/pb-facs-link.js +130 -101
  180. package/src/pb-facsimile.js +494 -410
  181. package/src/pb-fetch.js +389 -0
  182. package/src/pb-formula.js +152 -154
  183. package/src/pb-geolocation.js +130 -132
  184. package/src/pb-grid-action.js +59 -56
  185. package/src/pb-grid.js +388 -228
  186. package/src/pb-highlight.js +142 -142
  187. package/src/pb-hotkeys.js +40 -42
  188. package/src/pb-i18n.js +115 -127
  189. package/src/pb-icon-button.js +108 -0
  190. package/src/pb-icon.js +283 -0
  191. package/src/pb-image-strip.js +85 -79
  192. package/src/pb-lang.js +142 -57
  193. package/src/pb-leaflet-map.js +551 -483
  194. package/src/pb-link.js +132 -126
  195. package/src/pb-load.js +495 -428
  196. package/src/pb-login.js +303 -248
  197. package/src/pb-manage-odds.js +384 -338
  198. package/src/pb-map-icon.js +90 -90
  199. package/src/pb-map-layer.js +86 -86
  200. package/src/pb-markdown.js +107 -110
  201. package/src/pb-media-query.js +75 -73
  202. package/src/pb-mei.js +523 -303
  203. package/src/pb-message.js +144 -98
  204. package/src/pb-mixin.js +268 -265
  205. package/src/pb-navigation.js +83 -96
  206. package/src/pb-observable.js +39 -39
  207. package/src/pb-odd-editor.js +1209 -948
  208. package/src/pb-odd-elementspec-editor.js +375 -310
  209. package/src/pb-odd-model-editor.js +1189 -941
  210. package/src/pb-odd-parameter-editor.js +269 -170
  211. package/src/pb-odd-rendition-editor.js +184 -131
  212. package/src/pb-page.js +451 -422
  213. package/src/pb-paginate.js +260 -178
  214. package/src/pb-panel.js +217 -183
  215. package/src/pb-popover-themes.js +16 -9
  216. package/src/pb-popover.js +297 -288
  217. package/src/pb-print-preview.js +128 -128
  218. package/src/pb-progress.js +52 -52
  219. package/src/pb-repeat.js +141 -108
  220. package/src/pb-restricted.js +85 -78
  221. package/src/pb-search.js +258 -230
  222. package/src/pb-select-feature.js +210 -126
  223. package/src/pb-select-odd.js +184 -118
  224. package/src/pb-select-template.js +113 -78
  225. package/src/pb-select.js +330 -229
  226. package/src/pb-split-list.js +181 -176
  227. package/src/pb-svg.js +81 -80
  228. package/src/pb-table-column.js +55 -55
  229. package/src/pb-table-grid.js +334 -205
  230. package/src/pb-tabs.js +238 -61
  231. package/src/pb-tify.js +3331 -126
  232. package/src/pb-timeline.js +394 -255
  233. package/src/pb-toggle-feature.js +196 -188
  234. package/src/pb-upload.js +201 -176
  235. package/src/pb-version.js +22 -34
  236. package/src/pb-view-annotate.js +138 -102
  237. package/src/pb-view.js +1722 -1272
  238. package/src/pb-zoom.js +144 -46
  239. package/src/search-result-service.js +256 -223
  240. package/src/seed-element.js +14 -22
  241. package/src/settings.js +4 -4
  242. package/src/theming.js +98 -91
  243. package/src/urls.js +403 -289
  244. package/src/utils.js +53 -51
  245. package/vite.config.js +86 -0
  246. package/.github/workflows/main.yml +0 -24
  247. package/.github/workflows/release.js.yml +0 -34
  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-fe4a4883.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 -41
  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);