@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.
- package/.github/workflows/docker-cypress.yml +54 -0
- package/.github/workflows/main.yml +6 -4
- package/.github/workflows/node.js.yml +56 -21
- package/.github/workflows/release.js.yml +19 -17
- package/.releaserc.json +1 -1
- package/CHANGELOG.md +351 -9
- package/Dockerfile +78 -70
- package/README.md +112 -4
- package/css/components.css +5 -5
- package/css/gridjs/mermaid.min.css +1 -1
- package/css/leaflet/Control.Geocoder.css +1 -126
- package/css/leaflet/images/layers.png +0 -0
- package/css/tify/tify.css +6 -5
- package/css/tom-select/tom-select.bootstrap4.min.css +1 -1
- package/css/tom-select/tom-select.bootstrap5.min.css +1 -1
- package/css/tom-select/tom-select.default.min.css +1 -1
- package/css/tom-select/tom-select.default.min.css.map +1 -0
- package/css/tom-select/tom-select.min.css +1 -1
- package/cypress.config.js +84 -0
- package/dist/api.html +1 -1
- package/dist/css/design-system.css +607 -0
- package/dist/demo/bundle-test.html +4 -3
- package/dist/demo/components.css +46 -1
- package/dist/demo/design-system.html +710 -0
- package/dist/demo/dts-client.html +2 -2
- package/dist/demo/pb-autocomplete.html +23 -11
- package/dist/demo/pb-autocomplete2.html +66 -55
- package/dist/demo/pb-autocomplete3.html +17 -8
- package/dist/demo/pb-blacklab-highlight.html +28 -11
- package/dist/demo/pb-blacklab-results.html +3 -2
- package/dist/demo/pb-browse-docs.html +24 -24
- package/dist/demo/pb-browse-docs2.html +3 -3
- package/dist/demo/pb-clipboard.html +32 -28
- package/dist/demo/pb-code-editor.html +6 -6
- package/dist/demo/pb-code-highlight.html +63 -63
- package/dist/demo/pb-codepen.html +1 -1
- package/dist/demo/pb-collapse.html +1 -1
- package/dist/demo/pb-collapse2.html +2 -2
- package/dist/demo/pb-combo-box.html +135 -130
- package/dist/demo/pb-custom-form.html +64 -55
- package/dist/demo/pb-dialog.html +12 -6
- package/dist/demo/pb-document.html +1 -1
- package/dist/demo/pb-download.html +68 -59
- package/dist/demo/pb-drawer.html +67 -46
- package/dist/demo/pb-drawer2.html +65 -58
- package/dist/demo/pb-edit-app.html +2 -2
- package/dist/demo/pb-edit-xml.html +1 -1
- package/dist/demo/pb-facsimile-2.html +26 -11
- package/dist/demo/pb-facsimile-3.html +25 -10
- package/dist/demo/pb-facsimile-dedup-test-2.html +48 -0
- package/dist/demo/pb-facsimile-dedup-test.html +48 -0
- package/dist/demo/pb-facsimile.html +4 -4
- package/dist/demo/pb-formula.html +1 -1
- package/dist/demo/pb-grid.html +22 -8
- package/dist/demo/pb-highlight.html +2 -2
- package/dist/demo/pb-i18n-simple.html +1 -0
- package/dist/demo/pb-i18n.html +15 -5
- package/dist/demo/pb-image-strip-standalone.html +2 -2
- package/dist/demo/pb-image-strip-view.html +2 -2
- package/dist/demo/pb-leaflet-map.html +3 -3
- package/dist/demo/pb-leaflet-map2.html +2 -2
- package/dist/demo/pb-leaflet-map3.html +3 -3
- package/dist/demo/pb-link.html +1 -1
- package/dist/demo/pb-load.html +2 -6
- package/dist/demo/pb-login.html +1 -3
- package/dist/demo/pb-manage-odds.html +9 -4
- package/dist/demo/pb-markdown.html +1 -1
- package/dist/demo/pb-media-query.html +2 -2
- package/dist/demo/pb-mei.html +2 -2
- package/dist/demo/pb-mei2.html +2 -2
- package/dist/demo/pb-message.html +2 -3
- package/dist/demo/pb-odd-editor.html +54 -52
- package/dist/demo/pb-page-header.html +27 -0
- package/dist/demo/pb-popover.html +1 -1
- package/dist/demo/pb-print-preview.html +2 -2
- package/dist/demo/pb-progress.html +4 -4
- package/dist/demo/pb-repeat.html +32 -36
- package/dist/demo/pb-search.html +16 -5
- package/dist/demo/pb-search2.html +4 -4
- package/dist/demo/pb-search3.html +3 -3
- package/dist/demo/pb-search4.html +3 -3
- package/dist/demo/pb-select-feature.html +4 -4
- package/dist/demo/pb-select-feature2.html +4 -4
- package/dist/demo/pb-select-feature3.html +2 -2
- package/dist/demo/pb-select-i18n.html +58 -53
- package/dist/demo/pb-select-odd.html +1 -1
- package/dist/demo/pb-select.html +190 -75
- package/dist/demo/pb-select2.html +91 -37
- package/dist/demo/pb-select3.html +109 -41
- package/dist/demo/pb-svg.html +1 -1
- package/dist/demo/pb-table-grid.html +26 -15
- package/dist/demo/pb-tabs.html +15 -7
- package/dist/demo/pb-tify.html +7 -7
- package/dist/demo/pb-timeline.html +1 -1
- package/dist/demo/pb-timeline2.html +1 -1
- package/dist/demo/pb-toggle-feature.html +26 -23
- package/dist/demo/pb-toggle-feature2.html +4 -4
- package/dist/demo/pb-toggle-feature3.html +2 -2
- package/dist/demo/pb-toggle-feature4.html +56 -54
- package/dist/demo/pb-version.html +2 -2
- package/dist/demo/pb-view.html +78 -40
- package/dist/demo/pb-view2.html +69 -46
- package/dist/demo/pb-view3.html +53 -48
- package/dist/demo/pb-view4.html +70 -49
- package/dist/demo/pb-zoom.html +2 -2
- package/dist/{es-global-bridge-d8ce175d.js → es-global-bridge-D8ZcUcx_.js} +0 -4
- package/dist/focus-mixin-VCsFap6b.js +768 -0
- package/dist/images/icons.svg +217 -0
- package/dist/jinn-codemirror-DETLdm08.js +1 -0
- package/dist/lib/openseadragon.min.js +80 -0
- package/dist/lib/openseadragon.min.js.map +1 -0
- package/dist/pb-code-editor.js +25 -20
- package/dist/pb-component-docs.js +414 -3225
- package/dist/pb-components-bundle.js +3046 -4402
- package/dist/pb-dialog-tklYGWfc.js +121 -0
- package/dist/pb-edit-app.js +208 -107
- package/dist/pb-elements.json +716 -249
- package/dist/pb-facsimile.js +46 -0
- package/dist/pb-i18n-C0NDma4h.js +1 -0
- package/dist/pb-leaflet-map.js +23 -23
- package/dist/pb-mei.js +152 -134
- package/dist/pb-mixin-DHoWQheB.js +1 -0
- package/dist/pb-odd-editor.js +1671 -1231
- package/dist/pb-tify.js +1 -27
- package/dist/unsafe-html-D5VGo9Oq.js +1 -0
- package/dist/urls-BEONu_g4.js +1 -0
- package/eslint.config.mjs +92 -0
- package/gh-pages.js +5 -3
- package/i18n/common/en.json +6 -0
- package/i18n/common/pl.json +2 -2
- package/images/icons.svg +217 -0
- package/index.html +0 -5
- package/lib/leaflet-src.js.map +1 -0
- package/lib/leaflet.markercluster-src.js.map +1 -0
- package/lib/openseadragon.min.js +6 -6
- package/package.json +56 -81
- package/pb-elements.json +716 -249
- package/rollup.config.mjs +312 -0
- package/src/assets/components.css +5 -5
- package/src/assets/design-system.css +607 -0
- package/src/authority/airtable.js +20 -21
- package/src/authority/anton.js +129 -129
- package/src/authority/custom.js +70 -27
- package/src/authority/geonames.js +38 -32
- package/src/authority/gnd.js +50 -42
- package/src/authority/kbga.js +136 -134
- package/src/authority/metagrid.js +44 -46
- package/src/authority/reconciliation.js +66 -68
- package/src/authority/registry.js +4 -4
- package/src/docs/demo-utils.js +91 -0
- package/src/docs/pb-component-docs.js +287 -147
- package/src/docs/pb-component-view.js +380 -273
- package/src/docs/pb-components-list.js +115 -51
- package/src/docs/pb-demo-snippet.js +199 -174
- package/src/dts-client.js +306 -303
- package/src/dts-select-endpoint.js +125 -85
- package/src/parse-date-service.js +184 -135
- package/src/pb-ajax.js +175 -173
- package/src/pb-authority-lookup.js +198 -158
- package/src/pb-autocomplete.js +731 -313
- package/src/pb-blacklab-highlight.js +266 -260
- package/src/pb-blacklab-results.js +230 -225
- package/src/pb-browse-docs.js +601 -484
- package/src/pb-browse.js +68 -65
- package/src/pb-clipboard.js +97 -76
- package/src/pb-code-editor.js +111 -103
- package/src/pb-code-highlight.js +234 -204
- package/src/pb-codepen.js +81 -73
- package/src/pb-collapse.js +265 -152
- package/src/pb-combo-box.js +191 -191
- package/src/pb-components-bundle.js +1 -7
- package/src/pb-components.js +2 -6
- package/src/pb-custom-form.js +230 -141
- package/src/pb-dialog.js +99 -63
- package/src/pb-document.js +118 -91
- package/src/pb-download.js +214 -198
- package/src/pb-drawer.js +146 -149
- package/src/pb-edit-app.js +471 -240
- package/src/pb-edit-xml.js +101 -98
- package/src/pb-events.js +126 -107
- package/src/pb-facs-link.js +130 -101
- package/src/pb-facsimile.js +494 -410
- package/src/pb-fetch.js +389 -0
- package/src/pb-formula.js +152 -154
- package/src/pb-geolocation.js +130 -132
- package/src/pb-grid-action.js +59 -56
- package/src/pb-grid.js +388 -228
- package/src/pb-highlight.js +142 -142
- package/src/pb-hotkeys.js +40 -42
- package/src/pb-i18n.js +115 -127
- package/src/pb-icon-button.js +108 -0
- package/src/pb-icon.js +283 -0
- package/src/pb-image-strip.js +85 -79
- package/src/pb-lang.js +142 -57
- package/src/pb-leaflet-map.js +551 -483
- package/src/pb-link.js +132 -126
- package/src/pb-load.js +495 -428
- package/src/pb-login.js +303 -248
- package/src/pb-manage-odds.js +384 -338
- package/src/pb-map-icon.js +90 -90
- package/src/pb-map-layer.js +86 -86
- package/src/pb-markdown.js +107 -110
- package/src/pb-media-query.js +75 -73
- package/src/pb-mei.js +523 -303
- package/src/pb-message.js +144 -98
- package/src/pb-mixin.js +268 -265
- package/src/pb-navigation.js +83 -96
- package/src/pb-observable.js +39 -39
- package/src/pb-odd-editor.js +1209 -948
- package/src/pb-odd-elementspec-editor.js +375 -310
- package/src/pb-odd-model-editor.js +1189 -941
- package/src/pb-odd-parameter-editor.js +269 -170
- package/src/pb-odd-rendition-editor.js +184 -131
- package/src/pb-page.js +451 -422
- package/src/pb-paginate.js +260 -178
- package/src/pb-panel.js +217 -183
- package/src/pb-popover-themes.js +16 -9
- package/src/pb-popover.js +297 -288
- package/src/pb-print-preview.js +128 -128
- package/src/pb-progress.js +52 -52
- package/src/pb-repeat.js +141 -108
- package/src/pb-restricted.js +85 -78
- package/src/pb-search.js +258 -230
- package/src/pb-select-feature.js +210 -126
- package/src/pb-select-odd.js +184 -118
- package/src/pb-select-template.js +113 -78
- package/src/pb-select.js +330 -229
- package/src/pb-split-list.js +181 -176
- package/src/pb-svg.js +81 -80
- package/src/pb-table-column.js +55 -55
- package/src/pb-table-grid.js +334 -205
- package/src/pb-tabs.js +238 -61
- package/src/pb-tify.js +3331 -126
- package/src/pb-timeline.js +394 -255
- package/src/pb-toggle-feature.js +196 -188
- package/src/pb-upload.js +201 -176
- package/src/pb-version.js +22 -34
- package/src/pb-view-annotate.js +138 -102
- package/src/pb-view.js +1722 -1272
- package/src/pb-zoom.js +144 -46
- package/src/search-result-service.js +256 -223
- package/src/seed-element.js +14 -22
- package/src/settings.js +4 -4
- package/src/theming.js +98 -91
- package/src/urls.js +403 -289
- package/src/utils.js +53 -51
- package/vite.config.js +86 -0
- package/css/pb-styles.css +0 -51
- package/dist/iron-form-3b8dcaa7.js +0 -210
- package/dist/jinn-codemirror-da0e2d1f.js +0 -1
- package/dist/paper-checkbox-515a5284.js +0 -1597
- package/dist/paper-icon-button-b1d31571.js +0 -398
- package/dist/paper-listbox-a3b7175c.js +0 -1265
- package/dist/pb-i18n-0611135a.js +0 -1
- package/dist/pb-mixin-b1caa22e.js +0 -158
- package/dist/polymer-hack.js +0 -1
- package/dist/vaadin-element-mixin-6e4cee3a.js +0 -527
- package/lib/Control.Geocoder.min.js +0 -2
- package/lib/Control.Geocoder.min.js.map +0 -1
- package/src/assets/pb-styles.css +0 -51
- package/src/pb-light-dom.js +0 -40
- package/src/polymer-hack.js +0 -6
package/src/pb-map-icon.js
CHANGED
|
@@ -1,101 +1,101 @@
|
|
|
1
|
-
import { LitElement } from 'lit
|
|
1
|
+
import { LitElement } from 'lit';
|
|
2
2
|
|
|
3
3
|
function sizeConverter(value, type) {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
4
|
+
try {
|
|
5
|
+
return value.split(/\s*,\s*/).map(s => parseInt(s, 10));
|
|
6
|
+
} catch (e) {
|
|
7
|
+
console.error(`<pb-map-icon> Invalid size specified: ${value}`);
|
|
8
|
+
return null;
|
|
9
|
+
}
|
|
10
10
|
}
|
|
11
11
|
/**
|
|
12
|
-
* Configure a map icon type to be used for markers.
|
|
12
|
+
* Configure a map icon type to be used for markers.
|
|
13
13
|
* Should be nested inside `pb-leaflet-map`.
|
|
14
14
|
*
|
|
15
15
|
*/
|
|
16
16
|
export class PbMapIcon extends LitElement {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
17
|
+
static get properties() {
|
|
18
|
+
return {
|
|
19
|
+
/**
|
|
20
|
+
* Name of the icon. Set to 'active' to configure the icon used for
|
|
21
|
+
* places which were target of a previous `pb-geolocation` event (i.e. are currently 'active').
|
|
22
|
+
*/
|
|
23
|
+
name: {
|
|
24
|
+
type: String,
|
|
25
|
+
},
|
|
26
|
+
/**
|
|
27
|
+
* The URL to load the icon from. Should be relative to the path set via the `imagesPath` property on `pb-leaflet-map`.
|
|
28
|
+
*/
|
|
29
|
+
iconUrl: {
|
|
30
|
+
type: String,
|
|
31
|
+
attribute: 'icon-url',
|
|
32
|
+
},
|
|
33
|
+
/**
|
|
34
|
+
* Size of the icon as comma-separated string, i.e. 'height, width'.
|
|
35
|
+
*/
|
|
36
|
+
iconSize: {
|
|
37
|
+
type: Array,
|
|
38
|
+
converter: sizeConverter,
|
|
39
|
+
attribute: 'icon-size',
|
|
40
|
+
},
|
|
41
|
+
/**
|
|
42
|
+
* Anchor position of the icon as comma-separated string, i.e. 'height, width'.
|
|
43
|
+
*/
|
|
44
|
+
iconAnchor: {
|
|
45
|
+
type: Array,
|
|
46
|
+
converter: sizeConverter,
|
|
47
|
+
attribute: 'icon-anchor',
|
|
48
|
+
},
|
|
49
|
+
/**
|
|
50
|
+
* The URL to load the shadow icon from. Should be relative to the path set via the `imagesPath` property on `pb-leaflet-map`.
|
|
51
|
+
*/
|
|
52
|
+
shadowUrl: {
|
|
53
|
+
type: String,
|
|
54
|
+
attribute: 'shadow-url',
|
|
55
|
+
},
|
|
56
|
+
/**
|
|
57
|
+
* Size of the shadow icon as comma-separated string, i.e. 'height, width'.
|
|
58
|
+
*/
|
|
59
|
+
shadowSize: {
|
|
60
|
+
type: Array,
|
|
61
|
+
converter: sizeConverter,
|
|
62
|
+
attribute: 'shadow-size',
|
|
63
|
+
},
|
|
64
|
+
/**
|
|
65
|
+
* Anchor position of the shadow icon as comma-separated string, i.e. 'height, width'.
|
|
66
|
+
*/
|
|
67
|
+
shadowAnchor: {
|
|
68
|
+
type: Array,
|
|
69
|
+
converter: sizeConverter,
|
|
70
|
+
attribute: 'shadow-anchor',
|
|
71
|
+
},
|
|
72
|
+
/**
|
|
73
|
+
* Anchor position of the popup as comma-separated string, i.e. 'height, width'.
|
|
74
|
+
*/
|
|
75
|
+
popupAncor: {
|
|
76
|
+
type: Array,
|
|
77
|
+
converter: sizeConverter,
|
|
78
|
+
attribute: 'popup-anchor',
|
|
79
|
+
},
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
82
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
83
|
+
constructor() {
|
|
84
|
+
super();
|
|
85
|
+
this.name = 'default';
|
|
86
|
+
this.type = 'image';
|
|
87
|
+
this.iconUrl = null;
|
|
88
|
+
}
|
|
89
89
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
90
|
+
get options() {
|
|
91
|
+
const options = {};
|
|
92
|
+
Object.keys(PbMapIcon.properties).forEach(key => {
|
|
93
|
+
if (this[key]) {
|
|
94
|
+
options[key] = this[key];
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
console.log('<pb-map-icon> Options: %o', options);
|
|
98
|
+
return options;
|
|
99
|
+
}
|
|
100
100
|
}
|
|
101
|
-
customElements.define('pb-map-icon', PbMapIcon);
|
|
101
|
+
customElements.define('pb-map-icon', PbMapIcon);
|
package/src/pb-map-layer.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { LitElement } from 'lit
|
|
1
|
+
import { LitElement } from 'lit';
|
|
2
2
|
|
|
3
3
|
const ignore = ['type', 'url', 'label', 'base', 'show'];
|
|
4
4
|
|
|
@@ -7,92 +7,92 @@ const ignore = ['type', 'url', 'label', 'base', 'show'];
|
|
|
7
7
|
*
|
|
8
8
|
*/
|
|
9
9
|
export class PbMapLayer extends LitElement {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
10
|
+
static get properties() {
|
|
11
|
+
return {
|
|
12
|
+
/**
|
|
13
|
+
* Type of the layer: either 'tile' or 'geojson'
|
|
14
|
+
*/
|
|
15
|
+
type: {
|
|
16
|
+
type: String,
|
|
17
|
+
},
|
|
18
|
+
/**
|
|
19
|
+
* The URL (or URL template) to load layer data from
|
|
20
|
+
*/
|
|
21
|
+
url: {
|
|
22
|
+
type: String,
|
|
23
|
+
},
|
|
24
|
+
/**
|
|
25
|
+
* Set to indicate that this is a base layer
|
|
26
|
+
*/
|
|
27
|
+
base: {
|
|
28
|
+
type: Boolean,
|
|
29
|
+
},
|
|
30
|
+
/**
|
|
31
|
+
* Display the layer on the map upon initialization
|
|
32
|
+
*/
|
|
33
|
+
show: {
|
|
34
|
+
type: Boolean,
|
|
35
|
+
},
|
|
36
|
+
/**
|
|
37
|
+
* A label for the layer to be shown in the layer control
|
|
38
|
+
*/
|
|
39
|
+
label: {
|
|
40
|
+
type: String,
|
|
41
|
+
},
|
|
42
|
+
attribution: {
|
|
43
|
+
type: String,
|
|
44
|
+
},
|
|
45
|
+
minZoom: {
|
|
46
|
+
type: Number,
|
|
47
|
+
attribute: 'min-zoom',
|
|
48
|
+
},
|
|
49
|
+
maxZoom: {
|
|
50
|
+
type: Number,
|
|
51
|
+
attribute: 'max-zoom',
|
|
52
|
+
},
|
|
53
|
+
zoomOffset: {
|
|
54
|
+
type: Number,
|
|
55
|
+
attribute: 'zoom-offset',
|
|
56
|
+
},
|
|
57
|
+
opacity: {
|
|
58
|
+
type: Number,
|
|
59
|
+
},
|
|
60
|
+
tileSize: {
|
|
61
|
+
type: Number,
|
|
62
|
+
},
|
|
63
|
+
id: {
|
|
64
|
+
type: String,
|
|
65
|
+
},
|
|
66
|
+
accessToken: {
|
|
67
|
+
type: String,
|
|
68
|
+
attribute: 'access-token',
|
|
69
|
+
},
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
72
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
73
|
+
constructor() {
|
|
74
|
+
super();
|
|
75
|
+
this.type = 'tile';
|
|
76
|
+
this.url = null;
|
|
77
|
+
}
|
|
78
78
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
79
|
+
get options() {
|
|
80
|
+
const options = {};
|
|
81
|
+
Object.keys(PbMapLayer.properties).forEach(key => {
|
|
82
|
+
if (ignore.indexOf(key) < 0 && this[key]) {
|
|
83
|
+
options[key] = this[key];
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
console.log('<pb-leaflet-map-layer> Options: %o', options);
|
|
87
|
+
return options;
|
|
88
|
+
}
|
|
89
89
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
90
|
+
async data() {
|
|
91
|
+
return new Promise(resolve => {
|
|
92
|
+
fetch(this.url)
|
|
93
|
+
.then(response => response.json())
|
|
94
|
+
.then(json => resolve(json));
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
97
|
}
|
|
98
|
-
customElements.define('pb-map-layer', PbMapLayer);
|
|
98
|
+
customElements.define('pb-map-layer', PbMapLayer);
|
package/src/pb-markdown.js
CHANGED
|
@@ -1,139 +1,136 @@
|
|
|
1
|
-
import { LitElement, html, css } from 'lit
|
|
2
|
-
import { unsafeHTML } from 'lit
|
|
1
|
+
import { LitElement, html, css } from 'lit';
|
|
2
|
+
import { unsafeHTML } from 'lit/directives/unsafe-html.js';
|
|
3
|
+
import { marked } from 'marked';
|
|
3
4
|
import { pbMixin, waitOnce } from './pb-mixin.js';
|
|
4
|
-
import * as marked from 'marked/lib/marked.js';
|
|
5
5
|
import './pb-code-highlight.js';
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
renderer
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
7
|
+
// Configure marked with custom renderer
|
|
8
|
+
const renderer = {
|
|
9
|
+
code(code, infostring, escaped) {
|
|
10
|
+
const language = code.lang || infostring || 'undefined';
|
|
11
|
+
const content = code.text || code;
|
|
12
|
+
return `<pb-code-highlight language="${language}" line-numbers>
|
|
13
|
+
<template>${content}</template>
|
|
14
|
+
</pb-code-highlight>`;
|
|
15
|
+
},
|
|
12
16
|
};
|
|
13
17
|
|
|
14
|
-
|
|
15
|
-
renderer
|
|
16
|
-
});
|
|
18
|
+
marked.use({ renderer });
|
|
17
19
|
|
|
18
20
|
function removeIndent(input) {
|
|
19
|
-
|
|
21
|
+
const indents = input.match(/^[^\S]*(?=\S)/gm);
|
|
20
22
|
|
|
21
|
-
|
|
22
|
-
return input;
|
|
23
|
+
if (!indents || !indents[0].length) return input;
|
|
23
24
|
|
|
24
|
-
|
|
25
|
+
indents.sort((a, b) => a.length - b.length);
|
|
25
26
|
|
|
26
|
-
|
|
27
|
-
return input;
|
|
27
|
+
if (!indents[0].length) return input;
|
|
28
28
|
|
|
29
|
-
|
|
29
|
+
return input.replace(RegExp(`^${indents[0]}`, 'gm'), '');
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
/**
|
|
33
33
|
* A component to render markdown. Content to render may either
|
|
34
|
-
*
|
|
34
|
+
*
|
|
35
35
|
* 1. be specified via the `content` property
|
|
36
36
|
* 2. included in the body of the element
|
|
37
37
|
* 3. loaded from an external URL
|
|
38
|
-
*
|
|
38
|
+
*
|
|
39
39
|
* Using option 2, if the markdown includes embedded HTML, make sure to wrap
|
|
40
40
|
* the content into an `template` HTML element to prevent the browser from interpreting
|
|
41
41
|
* it.
|
|
42
|
-
*
|
|
42
|
+
*
|
|
43
43
|
* Using option 3, you can either specify an absolute or relative URL. Relative URLs
|
|
44
44
|
* will be interpreted relative to the endpoint set by `pb-page`.
|
|
45
45
|
*/
|
|
46
46
|
export class PbMarkdown extends pbMixin(LitElement) {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
47
|
+
static get properties() {
|
|
48
|
+
return {
|
|
49
|
+
/**
|
|
50
|
+
* The markdown content to be rendered. If undefined,
|
|
51
|
+
* markdown will be taken from the content of the element
|
|
52
|
+
* or loaded from the specified URL.
|
|
53
|
+
*/
|
|
54
|
+
content: {
|
|
55
|
+
type: String,
|
|
56
|
+
},
|
|
57
|
+
/**
|
|
58
|
+
* An absolute or relative URL to load the markdown from.
|
|
59
|
+
*/
|
|
60
|
+
url: {
|
|
61
|
+
type: String,
|
|
62
|
+
},
|
|
63
|
+
...super.properties,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
constructor() {
|
|
68
|
+
super();
|
|
69
|
+
this._url = null;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
set url(value) {
|
|
73
|
+
this._url = value;
|
|
74
|
+
waitOnce('pb-page-ready', options => {
|
|
75
|
+
this._load(options.endpoint);
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
connectedCallback() {
|
|
80
|
+
super.connectedCallback();
|
|
81
|
+
this.style.display = 'block';
|
|
82
|
+
|
|
83
|
+
if (!this.content) {
|
|
84
|
+
const content = document.createElement('div');
|
|
85
|
+
for (let i = 0; i < this.childNodes.length; i++) {
|
|
86
|
+
const node = this.childNodes[i];
|
|
87
|
+
content.appendChild(document.importNode(node.content || node, true));
|
|
88
|
+
}
|
|
89
|
+
this.content = removeIndent(content.innerHTML);
|
|
65
90
|
}
|
|
66
91
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
this.
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
this.subscribeTo("pb-zoom", (ev) => {
|
|
95
|
-
this.zoom(ev.detail.direction);
|
|
96
|
-
});
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
_load(server) {
|
|
100
|
-
const url = this.toAbsoluteURL(this._url, server);
|
|
101
|
-
fetch(url, { credentials: "same-origin" })
|
|
102
|
-
.then((response) => response.text())
|
|
103
|
-
.catch(() => {
|
|
104
|
-
console.error(
|
|
105
|
-
"<pb-markdown> failed to load content from %s",
|
|
106
|
-
url.toString()
|
|
107
|
-
);
|
|
108
|
-
return Promise.resolve(this.content);
|
|
109
|
-
})
|
|
110
|
-
.then((text) => {
|
|
111
|
-
this.content = text;
|
|
112
|
-
});
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
createRenderRoot() {
|
|
116
|
-
return this;
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
render() {
|
|
120
|
-
if (!this.content) {
|
|
121
|
-
return null;
|
|
122
|
-
}
|
|
123
|
-
return html`<div>${unsafeHTML(window.marked(this.content))}</div>`;
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
zoom(direction) {
|
|
127
|
-
const fontSize = window
|
|
128
|
-
.getComputedStyle(this)
|
|
129
|
-
.getPropertyValue("font-size");
|
|
130
|
-
const size = parseInt(fontSize.replace(/^(\d+)px/, "$1"));
|
|
131
|
-
|
|
132
|
-
if (direction === "in") {
|
|
133
|
-
this.style.fontSize = size + 1 + "px";
|
|
134
|
-
} else {
|
|
135
|
-
this.style.fontSize = size - 1 + "px";
|
|
136
|
-
}
|
|
92
|
+
this.subscribeTo('pb-zoom', ev => {
|
|
93
|
+
this.zoom(ev.detail.direction);
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
_load(server) {
|
|
98
|
+
const url = this.toAbsoluteURL(this._url, server);
|
|
99
|
+
fetch(url, { credentials: 'same-origin' })
|
|
100
|
+
.then(response => response.text())
|
|
101
|
+
.catch(() => {
|
|
102
|
+
console.error('<pb-markdown> failed to load content from %s', url.toString());
|
|
103
|
+
return Promise.resolve(this.content);
|
|
104
|
+
})
|
|
105
|
+
.then(text => {
|
|
106
|
+
this.content = text;
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
createRenderRoot() {
|
|
111
|
+
return this;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
render() {
|
|
115
|
+
if (!this.content) {
|
|
116
|
+
return null;
|
|
137
117
|
}
|
|
118
|
+
return html`<div>${unsafeHTML(marked.parse(this.content))}</div>`;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
static get styles() {
|
|
122
|
+
return css`
|
|
123
|
+
:host {
|
|
124
|
+
display: block;
|
|
125
|
+
font-size: calc(var(--pb-content-font-size, 1rem) * var(--pb-zoom-factor, 1));
|
|
126
|
+
}
|
|
127
|
+
`;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
zoom(direction) {
|
|
131
|
+
// Zoom is now handled globally by pb-zoom component using CSS custom properties
|
|
132
|
+
// This method is kept for compatibility but does nothing
|
|
133
|
+
// The component should rely on CSS: font-size: calc(var(--pb-content-font-size, 1rem) * var(--pb-zoom-factor, 1));
|
|
134
|
+
}
|
|
138
135
|
}
|
|
139
|
-
customElements.define('pb-markdown', PbMarkdown);
|
|
136
|
+
customElements.define('pb-markdown', PbMarkdown);
|