ogm-viewer 0.3.0 → 0.5.0
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/dist/cjs/{index-CVTUnaNg.js → index-mu9UK_Fb.js} +66 -3
- package/dist/cjs/{lerc-TQEssgMv.js → lerc-Df0hDWkS.js} +7 -7
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/{ogm-image.ogm-map.ogm-menubar.ogm-metadata.ogm-settings.ogm-sidebar.ogm-viewer-ifPxRNEo.js → ogm-alerts.ogm-attributes.ogm-image.ogm-map.ogm-menubar.ogm-metadata.ogm-preview.ogm-previews.ogm-settings.ogm-sidebar.ogm-viewer-DMEfXquS.js} +13843 -6976
- package/dist/cjs/ogm-alerts_11.cjs.entry.js +18 -0
- package/dist/cjs/ogm-viewer.cjs.js +2 -2
- package/dist/collection/assets/icons/exclamation-triangle-fill.svg +3 -0
- package/dist/collection/assets/webawesome/styles/color/palettes/base.css +44 -0
- package/dist/collection/assets/webawesome/styles/color/palettes/bright.css +145 -0
- package/dist/collection/assets/webawesome/styles/color/palettes/default.css +146 -0
- package/dist/collection/assets/webawesome/styles/color/palettes/shoelace.css +146 -0
- package/dist/collection/assets/webawesome/styles/color/variants/brand.css +162 -0
- package/dist/collection/assets/webawesome/styles/color/variants/danger.css +162 -0
- package/dist/collection/assets/webawesome/styles/color/variants/neutral.css +162 -0
- package/dist/collection/assets/webawesome/styles/color/variants/success.css +162 -0
- package/dist/collection/assets/webawesome/styles/color/variants/warning.css +162 -0
- package/dist/collection/assets/webawesome/styles/color/variants.css +5 -0
- package/dist/collection/assets/webawesome/styles/component/form-control.styles.d.ts +2 -0
- package/dist/collection/assets/webawesome/styles/component/form-control.styles.ts +43 -0
- package/dist/collection/assets/webawesome/styles/component/host.styles.d.ts +2 -0
- package/dist/collection/assets/webawesome/styles/component/host.styles.ts +18 -0
- package/dist/collection/assets/webawesome/styles/component/segmented-field.styles.d.ts +19 -0
- package/dist/collection/assets/webawesome/styles/component/segmented-field.styles.ts +92 -0
- package/dist/collection/assets/webawesome/styles/component/size.styles.d.ts +2 -0
- package/dist/collection/assets/webawesome/styles/component/size.styles.ts +26 -0
- package/dist/collection/assets/webawesome/styles/component/variants.styles.d.ts +2 -0
- package/dist/collection/assets/webawesome/styles/component/variants.styles.ts +69 -0
- package/dist/collection/assets/webawesome/styles/component/visually-hidden.styles.d.ts +2 -0
- package/dist/collection/assets/webawesome/styles/component/visually-hidden.styles.ts +19 -0
- package/dist/collection/assets/webawesome/styles/layers.css +21 -0
- package/dist/collection/assets/webawesome/styles/native.css +1439 -0
- package/dist/collection/assets/webawesome/styles/themes/awesome.css +614 -0
- package/dist/collection/assets/webawesome/styles/themes/default.css +373 -0
- package/dist/collection/assets/webawesome/styles/themes/shoelace.css +648 -0
- package/dist/collection/assets/webawesome/styles/utilities/align-items.css +44 -0
- package/dist/collection/assets/webawesome/styles/utilities/border-radius.css +20 -0
- package/dist/collection/assets/webawesome/styles/utilities/flex-wrap.css +16 -0
- package/dist/collection/assets/webawesome/styles/utilities/fouce.css +17 -0
- package/dist/collection/assets/webawesome/styles/utilities/gap.css +56 -0
- package/dist/collection/assets/webawesome/styles/utilities/justify-content.css +32 -0
- package/dist/collection/assets/webawesome/styles/utilities/layout.css +159 -0
- package/dist/collection/assets/webawesome/styles/utilities/placeholder.css +9 -0
- package/dist/collection/assets/webawesome/styles/utilities/prose.css +161 -0
- package/dist/collection/assets/webawesome/styles/utilities/scroll-lock.css +20 -0
- package/dist/collection/assets/webawesome/styles/utilities/size.css +21 -0
- package/dist/collection/assets/webawesome/styles/utilities/text.css +262 -0
- package/dist/collection/assets/webawesome/styles/utilities/variants.css +62 -0
- package/dist/collection/assets/webawesome/styles/utilities/visually-hidden.css +17 -0
- package/dist/collection/assets/webawesome/styles/utilities.css +17 -0
- package/dist/collection/assets/webawesome/styles/webawesome.css +11 -0
- package/dist/collection/collection-manifest.json +4 -0
- package/dist/collection/components/ogm-alerts/ogm-alerts.css +51 -0
- package/dist/collection/components/ogm-alerts/ogm-alerts.js +71 -0
- package/dist/collection/components/ogm-alerts/ogm-alerts.test.js +26 -0
- package/dist/collection/components/ogm-attributes/ogm-attributes.css +68 -0
- package/dist/collection/components/ogm-attributes/ogm-attributes.js +112 -0
- package/dist/collection/components/ogm-image/ogm-image.css +1 -1
- package/dist/collection/components/ogm-image/ogm-image.js +70 -20
- package/dist/collection/components/ogm-map/ogm-map.css +43 -44
- package/dist/collection/components/ogm-map/ogm-map.js +229 -91
- package/dist/collection/components/ogm-menubar/ogm-menubar.css +16 -14
- package/dist/collection/components/ogm-menubar/ogm-menubar.js +3 -5
- package/dist/collection/components/ogm-menubar/ogm-menubar.test.js +28 -3
- package/dist/collection/components/ogm-metadata/ogm-metadata.css +6 -492
- package/dist/collection/components/ogm-metadata/ogm-metadata.js +3 -5
- package/dist/collection/components/ogm-metadata/ogm-metadata.test.js +1 -1
- package/dist/collection/components/ogm-preview/ogm-preview.css +16 -0
- package/dist/collection/components/ogm-preview/ogm-preview.js +144 -0
- package/dist/collection/components/ogm-preview/ogm-preview.test.js +37 -0
- package/dist/collection/components/ogm-previews/ogm-previews.css +45 -0
- package/dist/collection/components/ogm-previews/ogm-previews.js +162 -0
- package/dist/collection/components/ogm-previews/ogm-previews.test.js +83 -0
- package/dist/collection/components/ogm-settings/ogm-settings.js +7 -9
- package/dist/collection/components/ogm-sidebar/ogm-sidebar.css +50 -503
- package/dist/collection/components/ogm-sidebar/ogm-sidebar.js +8 -12
- package/dist/collection/components/ogm-viewer/ogm-viewer.css +4 -974
- package/dist/collection/components/ogm-viewer/ogm-viewer.js +69 -32
- package/dist/collection/lib/errors.js +137 -0
- package/dist/collection/lib/errors.test.js +96 -0
- package/dist/collection/lib/previewers/cog-deck.js +14 -9
- package/dist/collection/lib/previewers/cog.js +3 -3
- package/dist/collection/lib/previewers/geojson.js +3 -2
- package/dist/collection/lib/previewers/maplibre.js +9 -15
- package/dist/collection/lib/previewers/pmtiles-raster.js +1 -1
- package/dist/collection/lib/previewers/pmtiles-vector.js +7 -1
- package/dist/collection/lib/previewers/raster.js +1 -1
- package/dist/collection/lib/previewers/vector.js +65 -30
- package/dist/collection/lib/previewers/wms.js +1 -1
- package/dist/collection/lib/record.js +1 -1
- package/dist/collection/lib/record.test.js +1 -1
- package/dist/collection/lib/references.js +0 -65
- package/dist/collection/lib/references.test.js +0 -150
- package/dist/collection/lib/sources/cog.js +5 -2
- package/dist/collection/lib/sources/geojson.js +9 -2
- package/dist/collection/lib/sources/iiif-manifest.js +54 -0
- package/dist/collection/lib/sources/iiif-manifest.test.js +110 -0
- package/dist/collection/lib/sources/iiif.js +11 -0
- package/dist/collection/lib/sources/maplibre.js +8 -0
- package/dist/collection/lib/sources/openindexmap.js +3 -0
- package/dist/collection/lib/sources/pmtiles.js +10 -4
- package/dist/collection/lib/sources/raster.js +3 -3
- package/dist/collection/lib/sources/source.js +26 -7
- package/dist/collection/lib/sources/tilejson.js +7 -1
- package/dist/collection/lib/sources/tms.js +3 -0
- package/dist/collection/lib/sources/vector.js +3 -3
- package/dist/collection/lib/sources/wms.js +6 -11
- package/dist/collection/lib/sources/xyz.js +3 -0
- package/dist/collection/lib/themes/maplibre.js +46 -0
- package/dist/collection/lib/themes/theme.js +23 -0
- package/dist/esm/{index-BdFT_kJa.js → index-DTLAlWKQ.js} +66 -3
- package/dist/esm/{lerc-DFDScDrO.js → lerc-CB_Jcu33.js} +2 -2
- package/dist/esm/loader.js +3 -3
- package/dist/esm/{ogm-image.ogm-map.ogm-menubar.ogm-metadata.ogm-settings.ogm-sidebar.ogm-viewer-r5w_49n3.js → ogm-alerts.ogm-attributes.ogm-image.ogm-map.ogm-menubar.ogm-metadata.ogm-preview.ogm-previews.ogm-settings.ogm-sidebar.ogm-viewer-Dlc6USWB.js} +13840 -6977
- package/dist/esm/ogm-alerts_11.entry.js +2 -0
- package/dist/esm/ogm-viewer.js +3 -3
- package/dist/ogm-viewer/assets/icons/exclamation-triangle-fill.svg +3 -0
- package/dist/ogm-viewer/assets/webawesome/styles/color/palettes/base.css +44 -0
- package/dist/ogm-viewer/assets/webawesome/styles/color/palettes/bright.css +145 -0
- package/dist/ogm-viewer/assets/webawesome/styles/color/palettes/default.css +146 -0
- package/dist/ogm-viewer/assets/webawesome/styles/color/palettes/shoelace.css +146 -0
- package/dist/ogm-viewer/assets/webawesome/styles/color/variants/brand.css +162 -0
- package/dist/ogm-viewer/assets/webawesome/styles/color/variants/danger.css +162 -0
- package/dist/ogm-viewer/assets/webawesome/styles/color/variants/neutral.css +162 -0
- package/dist/ogm-viewer/assets/webawesome/styles/color/variants/success.css +162 -0
- package/dist/ogm-viewer/assets/webawesome/styles/color/variants/warning.css +162 -0
- package/dist/ogm-viewer/assets/webawesome/styles/color/variants.css +5 -0
- package/dist/ogm-viewer/assets/webawesome/styles/component/form-control.styles.d.ts +2 -0
- package/dist/ogm-viewer/assets/webawesome/styles/component/form-control.styles.ts +43 -0
- package/dist/ogm-viewer/assets/webawesome/styles/component/host.styles.d.ts +2 -0
- package/dist/ogm-viewer/assets/webawesome/styles/component/host.styles.ts +18 -0
- package/dist/ogm-viewer/assets/webawesome/styles/component/segmented-field.styles.d.ts +19 -0
- package/dist/ogm-viewer/assets/webawesome/styles/component/segmented-field.styles.ts +92 -0
- package/dist/ogm-viewer/assets/webawesome/styles/component/size.styles.d.ts +2 -0
- package/dist/ogm-viewer/assets/webawesome/styles/component/size.styles.ts +26 -0
- package/dist/ogm-viewer/assets/webawesome/styles/component/variants.styles.d.ts +2 -0
- package/dist/ogm-viewer/assets/webawesome/styles/component/variants.styles.ts +69 -0
- package/dist/ogm-viewer/assets/webawesome/styles/component/visually-hidden.styles.d.ts +2 -0
- package/dist/ogm-viewer/assets/webawesome/styles/component/visually-hidden.styles.ts +19 -0
- package/dist/ogm-viewer/assets/webawesome/styles/layers.css +21 -0
- package/dist/ogm-viewer/assets/webawesome/styles/native.css +1439 -0
- package/dist/ogm-viewer/assets/webawesome/styles/themes/awesome.css +614 -0
- package/dist/ogm-viewer/assets/webawesome/styles/themes/default.css +373 -0
- package/dist/ogm-viewer/assets/webawesome/styles/themes/shoelace.css +648 -0
- package/dist/ogm-viewer/assets/webawesome/styles/utilities/align-items.css +44 -0
- package/dist/ogm-viewer/assets/webawesome/styles/utilities/border-radius.css +20 -0
- package/dist/ogm-viewer/assets/webawesome/styles/utilities/flex-wrap.css +16 -0
- package/dist/ogm-viewer/assets/webawesome/styles/utilities/fouce.css +17 -0
- package/dist/ogm-viewer/assets/webawesome/styles/utilities/gap.css +56 -0
- package/dist/ogm-viewer/assets/webawesome/styles/utilities/justify-content.css +32 -0
- package/dist/ogm-viewer/assets/webawesome/styles/utilities/layout.css +159 -0
- package/dist/ogm-viewer/assets/webawesome/styles/utilities/placeholder.css +9 -0
- package/dist/ogm-viewer/assets/webawesome/styles/utilities/prose.css +161 -0
- package/dist/ogm-viewer/assets/webawesome/styles/utilities/scroll-lock.css +20 -0
- package/dist/ogm-viewer/assets/webawesome/styles/utilities/size.css +21 -0
- package/dist/ogm-viewer/assets/webawesome/styles/utilities/text.css +262 -0
- package/dist/ogm-viewer/assets/webawesome/styles/utilities/variants.css +62 -0
- package/dist/ogm-viewer/assets/webawesome/styles/utilities/visually-hidden.css +17 -0
- package/dist/ogm-viewer/assets/webawesome/styles/utilities.css +17 -0
- package/dist/ogm-viewer/assets/webawesome/styles/webawesome.css +11 -0
- package/dist/ogm-viewer/ogm-viewer.esm.js +1 -1
- package/dist/ogm-viewer/p-7936ccc9.entry.js +1 -0
- package/dist/ogm-viewer/p-CWtUrqsM.js +2822 -0
- package/dist/ogm-viewer/p-DTLAlWKQ.js +2 -0
- package/dist/ogm-viewer/{p-BeA3REDA.js → p-DqRDI3AC.js} +1 -1
- package/dist/types/components/ogm-alerts/ogm-alerts.d.ts +6 -0
- package/dist/types/components/ogm-alerts/ogm-alerts.test.d.ts +1 -0
- package/dist/types/components/ogm-attributes/ogm-attributes.d.ts +10 -0
- package/dist/types/components/ogm-image/ogm-image.d.ts +8 -3
- package/dist/types/components/ogm-map/ogm-map.d.ts +38 -14
- package/dist/types/components/ogm-menubar/ogm-menubar.d.ts +1 -1
- package/dist/types/components/ogm-metadata/ogm-metadata.d.ts +1 -1
- package/dist/types/components/ogm-preview/ogm-preview.d.ts +13 -0
- package/dist/types/components/ogm-preview/ogm-preview.test.d.ts +1 -0
- package/dist/types/components/ogm-previews/ogm-previews.d.ts +12 -0
- package/dist/types/components/ogm-previews/ogm-previews.test.d.ts +1 -0
- package/dist/types/components/ogm-settings/ogm-settings.d.ts +2 -2
- package/dist/types/components/ogm-sidebar/ogm-sidebar.d.ts +1 -1
- package/dist/types/components/ogm-viewer/ogm-viewer.d.ts +17 -14
- package/dist/types/components.d.ts +122 -18
- package/dist/types/lib/errors.d.ts +13 -0
- package/dist/types/lib/errors.test.d.ts +1 -0
- package/dist/types/lib/previewers/cog-deck.d.ts +7 -3
- package/dist/types/lib/previewers/cog.d.ts +2 -2
- package/dist/types/lib/previewers/maplibre.d.ts +7 -9
- package/dist/types/lib/previewers/pmtiles-vector.d.ts +1 -0
- package/dist/types/lib/previewers/vector.d.ts +3 -15
- package/dist/types/lib/record.d.ts +1 -1
- package/dist/types/lib/references.d.ts +0 -8
- package/dist/types/lib/sources/cog.d.ts +3 -2
- package/dist/types/lib/sources/geojson.d.ts +3 -2
- package/dist/types/lib/sources/iiif-manifest.d.ts +12 -0
- package/dist/types/lib/sources/iiif-manifest.test.d.ts +1 -0
- package/dist/types/lib/sources/iiif.d.ts +5 -0
- package/dist/types/lib/sources/maplibre.d.ts +7 -0
- package/dist/types/lib/sources/openindexmap.d.ts +1 -0
- package/dist/types/lib/sources/pmtiles.d.ts +6 -4
- package/dist/types/lib/sources/raster.d.ts +3 -3
- package/dist/types/lib/sources/source.d.ts +7 -7
- package/dist/types/lib/sources/tilejson.d.ts +3 -2
- package/dist/types/lib/sources/tms.d.ts +1 -0
- package/dist/types/lib/sources/vector.d.ts +4 -5
- package/dist/types/lib/sources/wms.d.ts +4 -3
- package/dist/types/lib/sources/xyz.d.ts +1 -0
- package/dist/types/lib/themes/maplibre.d.ts +27 -0
- package/dist/types/lib/themes/theme.d.ts +7 -0
- package/package.json +3 -2
- package/dist/cjs/ogm-image_7.cjs.entry.js +0 -14
- package/dist/collection/lib/previewers/index.js +0 -36
- package/dist/collection/lib/sources/index.js +0 -29
- package/dist/esm/ogm-image_7.entry.js +0 -2
- package/dist/ogm-viewer/p-0b81e024.entry.js +0 -1
- package/dist/ogm-viewer/p-33R3d9fV.js +0 -1950
- package/dist/ogm-viewer/p-BdFT_kJa.js +0 -2
- package/dist/types/lib/previewers/index.d.ts +0 -3
- package/dist/types/lib/sources/index.d.ts +0 -3
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { h } from "@stencil/core";
|
|
2
|
+
import Autolinker from "autolinker";
|
|
3
|
+
const LABEL_KEYS = ['name', 'title', 'label', 'id'];
|
|
4
|
+
const getFeatureLabel = (feature) => {
|
|
5
|
+
const originalKeys = Object.keys(feature.properties || {});
|
|
6
|
+
if (originalKeys.length === 0)
|
|
7
|
+
return;
|
|
8
|
+
const key = LABEL_KEYS.map(k => originalKeys.find(ok => ok.toLowerCase() === k)).find(Boolean);
|
|
9
|
+
if (key)
|
|
10
|
+
return feature.properties?.[key];
|
|
11
|
+
};
|
|
12
|
+
export class OgmAttributes {
|
|
13
|
+
features = [];
|
|
14
|
+
featureSelected;
|
|
15
|
+
currentIndex = 0;
|
|
16
|
+
onFeaturesChange() {
|
|
17
|
+
this.currentIndex = 0;
|
|
18
|
+
}
|
|
19
|
+
onCurrentIndexChange() {
|
|
20
|
+
const feature = this.features[this.currentIndex];
|
|
21
|
+
if (feature)
|
|
22
|
+
this.featureSelected.emit(feature);
|
|
23
|
+
}
|
|
24
|
+
render() {
|
|
25
|
+
if (this.features.length === 0)
|
|
26
|
+
return null;
|
|
27
|
+
const feature = this.features[this.currentIndex];
|
|
28
|
+
const multiple = this.features.length > 1;
|
|
29
|
+
const label = getFeatureLabel(feature);
|
|
30
|
+
return (h("wa-scroller", { orientation: "vertical" }, h("table", { class: "attribute-table" }, multiple && label ? (h("thead", null, h("tr", { class: "header" }, h("td", { colSpan: 2 }, h("div", { class: "pagination" }, h("wa-button", { appearance: "plain", disabled: this.currentIndex === 0, onClick: () => this.currentIndex-- }, h("wa-icon", { name: "arrow-left", label: "Previous feature", canvas: "auto" })), label && (h("div", { class: "label" }, h("div", null, label))), h("div", { class: "count" }, ' ', "(", this.currentIndex + 1, "/", this.features.length, ")"), h("wa-button", { appearance: "plain", disabled: this.currentIndex === this.features.length - 1, onClick: () => this.currentIndex++ }, h("wa-icon", { name: "arrow-right", label: "Next feature", canvas: "auto" }))))))) : (label && (h("thead", null, h("tr", { class: "header" }, h("td", { colSpan: 2 }, h("div", { class: "label" }, h("div", null, label))))))), h("tbody", null, Object.entries(feature.properties || {}).map(([key, value]) => (h("tr", { key: key }, h("td", { class: "key" }, key), h("td", { class: "value", innerHTML: Autolinker.link(value.toString(), { hashtag: false, mention: false, phone: false }) }))))))));
|
|
31
|
+
}
|
|
32
|
+
static get is() { return "ogm-attributes"; }
|
|
33
|
+
static get encapsulation() { return "shadow"; }
|
|
34
|
+
static get originalStyleUrls() {
|
|
35
|
+
return {
|
|
36
|
+
"$": ["ogm-attributes.css"]
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
static get styleUrls() {
|
|
40
|
+
return {
|
|
41
|
+
"$": ["ogm-attributes.css"]
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
static get properties() {
|
|
45
|
+
return {
|
|
46
|
+
"features": {
|
|
47
|
+
"type": "unknown",
|
|
48
|
+
"mutable": false,
|
|
49
|
+
"complexType": {
|
|
50
|
+
"original": "MapGeoJSONFeature[]",
|
|
51
|
+
"resolved": "MapGeoJSONFeature[]",
|
|
52
|
+
"references": {
|
|
53
|
+
"MapGeoJSONFeature": {
|
|
54
|
+
"location": "import",
|
|
55
|
+
"path": "maplibre-gl",
|
|
56
|
+
"id": "node_modules::MapGeoJSONFeature",
|
|
57
|
+
"referenceLocation": "MapGeoJSONFeature"
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
"required": false,
|
|
62
|
+
"optional": false,
|
|
63
|
+
"docs": {
|
|
64
|
+
"tags": [],
|
|
65
|
+
"text": ""
|
|
66
|
+
},
|
|
67
|
+
"getter": false,
|
|
68
|
+
"setter": false,
|
|
69
|
+
"defaultValue": "[]"
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
static get states() {
|
|
74
|
+
return {
|
|
75
|
+
"currentIndex": {}
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
static get events() {
|
|
79
|
+
return [{
|
|
80
|
+
"method": "featureSelected",
|
|
81
|
+
"name": "featureSelected",
|
|
82
|
+
"bubbles": true,
|
|
83
|
+
"cancelable": true,
|
|
84
|
+
"composed": true,
|
|
85
|
+
"docs": {
|
|
86
|
+
"tags": [],
|
|
87
|
+
"text": ""
|
|
88
|
+
},
|
|
89
|
+
"complexType": {
|
|
90
|
+
"original": "MapGeoJSONFeature",
|
|
91
|
+
"resolved": "GeoJSONFeature & { layer: (Omit<FillLayerSpecification, \"source\"> | Omit<LineLayerSpecification, \"source\"> | Omit<SymbolLayerSpecification, \"source\"> | Omit<CircleLayerSpecification, \"source\"> | Omit<HeatmapLayerSpecification, \"source\"> | Omit<FillExtrusionLayerSpecification, \"source\"> | Omit<RasterLayerSpecification, \"source\"> | Omit<HillshadeLayerSpecification, \"source\"> | Omit<ColorReliefLayerSpecification, \"source\"> | Omit<BackgroundLayerSpecification, \"source\">) & { source: string; }; source: string; sourceLayer?: string; state: { [key: string]: any; }; }",
|
|
92
|
+
"references": {
|
|
93
|
+
"MapGeoJSONFeature": {
|
|
94
|
+
"location": "import",
|
|
95
|
+
"path": "maplibre-gl",
|
|
96
|
+
"id": "node_modules::MapGeoJSONFeature",
|
|
97
|
+
"referenceLocation": "MapGeoJSONFeature"
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}];
|
|
102
|
+
}
|
|
103
|
+
static get watchers() {
|
|
104
|
+
return [{
|
|
105
|
+
"propName": "features",
|
|
106
|
+
"methodName": "onFeaturesChange"
|
|
107
|
+
}, {
|
|
108
|
+
"propName": "currentIndex",
|
|
109
|
+
"methodName": "onCurrentIndexChange"
|
|
110
|
+
}];
|
|
111
|
+
}
|
|
112
|
+
}
|
|
@@ -1,15 +1,19 @@
|
|
|
1
1
|
import { h, Host } from "@stencil/core";
|
|
2
2
|
import { Viewer } from "openseadragon";
|
|
3
3
|
import { getElement, findElement } from "../../lib/elements";
|
|
4
|
+
import { referenceError } from "../../lib/errors";
|
|
4
5
|
export class OgmImage {
|
|
5
6
|
el;
|
|
6
|
-
|
|
7
|
+
source;
|
|
7
8
|
theme;
|
|
8
9
|
padding = 0;
|
|
9
10
|
imageLoaded;
|
|
10
11
|
imageLoading;
|
|
12
|
+
previewError;
|
|
11
13
|
// OpenSeadragon viewer instance
|
|
12
14
|
viewer;
|
|
15
|
+
// Guards against reporting more than one error per load attempt
|
|
16
|
+
errorReported = false;
|
|
13
17
|
// Set up OpenSeadragon viewer on load
|
|
14
18
|
async componentDidLoad() {
|
|
15
19
|
this.viewer = new Viewer({
|
|
@@ -26,13 +30,24 @@ export class OgmImage {
|
|
|
26
30
|
nextButton: getElement(this.el, '.next'),
|
|
27
31
|
previousButton: getElement(this.el, '.prev'),
|
|
28
32
|
});
|
|
33
|
+
// Clear loading state whether we succeeded or failed
|
|
29
34
|
this.viewer.addHandler('open', () => this.imageLoaded.emit());
|
|
30
|
-
|
|
35
|
+
// Surface OpenSeaDragon decode errors here
|
|
36
|
+
this.viewer.addHandler('open-failed', event => {
|
|
37
|
+
this.imageLoaded.emit();
|
|
38
|
+
this.reportError(new Error(event.message));
|
|
39
|
+
});
|
|
40
|
+
// If we do have a source, load the images
|
|
41
|
+
if (this.source)
|
|
31
42
|
await this.loadImages();
|
|
32
43
|
}
|
|
33
|
-
//
|
|
34
|
-
|
|
35
|
-
|
|
44
|
+
// Destroy the viewer when we are removed from the DOM
|
|
45
|
+
disconnectedCallback() {
|
|
46
|
+
this.viewer?.destroy();
|
|
47
|
+
}
|
|
48
|
+
// Update preview when source changes
|
|
49
|
+
async onSourceChange() {
|
|
50
|
+
if (this.source)
|
|
36
51
|
await this.loadImages();
|
|
37
52
|
}
|
|
38
53
|
async onPaddingChange() {
|
|
@@ -46,14 +61,29 @@ export class OgmImage {
|
|
|
46
61
|
// Get all of the IIIF image URLs and send them to OpenSeadragon
|
|
47
62
|
// This makes a request to fetch and cache the manifest
|
|
48
63
|
async loadImages() {
|
|
64
|
+
this.errorReported = false;
|
|
49
65
|
this.imageLoading.emit();
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
66
|
+
try {
|
|
67
|
+
const images = await this.source.getIIIFImageUrls();
|
|
68
|
+
if (!images)
|
|
69
|
+
throw new Error('No IIIF images found for source');
|
|
70
|
+
this.viewer.open(images);
|
|
71
|
+
}
|
|
72
|
+
catch (error) {
|
|
73
|
+
console.error(`Error loading IIIF images for ${this.source.url}:`, error);
|
|
74
|
+
this.imageLoaded.emit();
|
|
75
|
+
this.reportError(error);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
// Emit a single preview error per load attempt
|
|
79
|
+
reportError(error) {
|
|
80
|
+
if (this.errorReported || !this.source)
|
|
81
|
+
return;
|
|
82
|
+
this.errorReported = true;
|
|
83
|
+
this.previewError.emit(referenceError(error, this.source.label(), this.source.url));
|
|
54
84
|
}
|
|
55
85
|
render() {
|
|
56
|
-
return (h(Host, { key: '
|
|
86
|
+
return (h(Host, { key: 'ebbebaddac72024a3b311e0e0e501267a83d1e95' }, h("div", { key: '4f171256535cfd11430e2269fda389ffae3cedae', id: "openseadragon" }, h("div", { key: 'c308186a13fd6b8e0b1fadbf1fd1e6924631f9d6', class: "controls" }, h("wa-button", { key: '1f9e0c4c6d881bf09d7ceb160f470992d71ebe07', class: "zoom-in", size: "s", appearance: "filled-outlined", pill: true }, h("wa-icon", { key: 'cbacb0a388de2c7f349e25172027874a0224a678', name: "zoom-in", label: "Zoom In", canvas: "auto" })), h("wa-button", { key: 'dd8d7e9c5584b124ae105b2187100964f5e3a02a', class: "zoom-out", size: "s", appearance: "filled-outlined", pill: true }, h("wa-icon", { key: '2b5acf2e07c99df9556692bf534bb3847506e4d4', name: "zoom-out", label: "Zoom Out", canvas: "auto" })), h("wa-button", { key: '5534a5c77ea20a1f77544e5acd99d4247dd3d287', class: "home", size: "s", appearance: "filled-outlined", pill: true }, h("wa-icon", { key: 'faadb8ea57bf1b831b292eaf66bcea39b7e215d1', name: "house", label: "Reset View", canvas: "auto" })), h("wa-button", { key: '8979cf58a94da89e0e2d132a92fe45323f07de01', class: "full-page", size: "s", appearance: "filled-outlined", pill: true }, h("wa-icon", { key: '12cb3224e7f14258376c1c0bf6ffc5abda5c2252', name: "arrows-fullscreen", label: "Full Screen", canvas: "auto" })), h("wa-button", { key: 'e79c37f27ff14d5c4991ff30ff88aada467214ec', class: "next", size: "s", appearance: "filled-outlined", pill: true }, h("wa-icon", { key: 'ee10870ace583257393c53ba12b73ab3b015371b', name: "arrow-right", label: "Next", canvas: "auto" })), h("wa-button", { key: '9d8999e199b7b6338261eb16a655d2199520cf22', class: "prev", size: "s", appearance: "filled-outlined", pill: true }, h("wa-icon", { key: 'fde1a9022b9e5f90e269c75ce87943808031e021', name: "arrow-left", label: "Previous", canvas: "auto" }))))));
|
|
57
87
|
}
|
|
58
88
|
static get is() { return "ogm-image"; }
|
|
59
89
|
static get encapsulation() { return "shadow"; }
|
|
@@ -69,18 +99,16 @@ export class OgmImage {
|
|
|
69
99
|
}
|
|
70
100
|
static get properties() {
|
|
71
101
|
return {
|
|
72
|
-
"
|
|
102
|
+
"source": {
|
|
73
103
|
"type": "unknown",
|
|
74
104
|
"mutable": false,
|
|
75
105
|
"complexType": {
|
|
76
|
-
"original": "
|
|
77
|
-
"resolved": "
|
|
106
|
+
"original": "IIIFSource",
|
|
107
|
+
"resolved": "IIIFSource",
|
|
78
108
|
"references": {
|
|
79
|
-
"
|
|
80
|
-
"location": "
|
|
81
|
-
"
|
|
82
|
-
"id": "src/lib/record.ts::OgmRecord",
|
|
83
|
-
"referenceLocation": "OgmRecord"
|
|
109
|
+
"IIIFSource": {
|
|
110
|
+
"location": "global",
|
|
111
|
+
"id": "global::IIIFSource"
|
|
84
112
|
}
|
|
85
113
|
}
|
|
86
114
|
},
|
|
@@ -165,13 +193,35 @@ export class OgmImage {
|
|
|
165
193
|
"resolved": "void",
|
|
166
194
|
"references": {}
|
|
167
195
|
}
|
|
196
|
+
}, {
|
|
197
|
+
"method": "previewError",
|
|
198
|
+
"name": "previewError",
|
|
199
|
+
"bubbles": true,
|
|
200
|
+
"cancelable": true,
|
|
201
|
+
"composed": true,
|
|
202
|
+
"docs": {
|
|
203
|
+
"tags": [],
|
|
204
|
+
"text": ""
|
|
205
|
+
},
|
|
206
|
+
"complexType": {
|
|
207
|
+
"original": "PreviewError",
|
|
208
|
+
"resolved": "PreviewError",
|
|
209
|
+
"references": {
|
|
210
|
+
"PreviewError": {
|
|
211
|
+
"location": "import",
|
|
212
|
+
"path": "../../lib/errors",
|
|
213
|
+
"id": "src/lib/errors.ts::PreviewError",
|
|
214
|
+
"referenceLocation": "PreviewError"
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}
|
|
168
218
|
}];
|
|
169
219
|
}
|
|
170
220
|
static get elementRef() { return "el"; }
|
|
171
221
|
static get watchers() {
|
|
172
222
|
return [{
|
|
173
|
-
"propName": "
|
|
174
|
-
"methodName": "
|
|
223
|
+
"propName": "source",
|
|
224
|
+
"methodName": "onSourceChange"
|
|
175
225
|
}, {
|
|
176
226
|
"propName": "padding",
|
|
177
227
|
"methodName": "onPaddingChange"
|
|
@@ -6,22 +6,55 @@
|
|
|
6
6
|
position: relative;
|
|
7
7
|
}
|
|
8
8
|
|
|
9
|
-
/*
|
|
10
|
-
canvas {
|
|
11
|
-
|
|
9
|
+
/* Color of the map background ("space" around the globe) */
|
|
10
|
+
.maplibregl-canvas {
|
|
11
|
+
background-color: var(--wa-color-surface-default);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/* Inspection popups. Vertical scrolling (when content is too tall) is handled by the
|
|
15
|
+
<wa-scroller> inside ogm-attributes, not here - that's what gives it the fading shadow cue. */
|
|
16
|
+
.maplibregl-popup-content {
|
|
17
|
+
max-width: 400px;
|
|
18
|
+
overflow: hidden;
|
|
19
|
+
padding: 0;
|
|
20
|
+
box-shadow: var(--wa-shadow-l);
|
|
21
|
+
border: var(--wa-panel-border-width) solid var(--wa-color-surface-border);
|
|
22
|
+
color: var(--wa-color-text-normal);
|
|
23
|
+
background-color: var(--wa-color-surface-default);
|
|
24
|
+
|
|
25
|
+
.maplibregl-popup-close-button {
|
|
26
|
+
background-color: var(--wa-color-surface-default);
|
|
27
|
+
border-radius: 10px;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/* Popup tip (the little triangle) */
|
|
32
|
+
.maplibregl-popup-anchor-right .maplibregl-popup-tip {
|
|
33
|
+
border-left-color: var(--wa-color-surface-border);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.maplibregl-popup-anchor-left .maplibregl-popup-tip {
|
|
37
|
+
border-right-color: var(--wa-color-surface-border);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.maplibregl-popup-anchor-bottom .maplibregl-popup-tip,
|
|
41
|
+
.maplibregl-popup-anchor-bottom-right .maplibregl-popup-tip,
|
|
42
|
+
.maplibregl-popup-anchor-bottom-left .maplibregl-popup-tip {
|
|
43
|
+
border-top-color: var(--wa-color-surface-border);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.maplibregl-popup-anchor-top .maplibregl-popup-tip,
|
|
47
|
+
.maplibregl-popup-anchor-top-right .maplibregl-popup-tip,
|
|
48
|
+
.maplibregl-popup-anchor-top-left .maplibregl-popup-tip {
|
|
49
|
+
border-bottom-color: var(--wa-color-surface-border);
|
|
12
50
|
}
|
|
13
|
-
*/
|
|
14
51
|
|
|
15
52
|
/* Dark mode map adjustments */
|
|
16
|
-
.
|
|
53
|
+
.wa-dark {
|
|
17
54
|
.tile-border {
|
|
18
55
|
stroke: white;
|
|
19
56
|
}
|
|
20
57
|
|
|
21
|
-
.maplibregl-canvas {
|
|
22
|
-
background-color: black;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
58
|
.maplibregl-ctrl.maplibregl-ctrl-group {
|
|
26
59
|
filter: invert(1);
|
|
27
60
|
}
|
|
@@ -30,42 +63,8 @@ canvas {
|
|
|
30
63
|
.maplibregl-ctrl-group button:focus:focus-visible {
|
|
31
64
|
box-shadow: 0 0 2px 2px #ff6900;
|
|
32
65
|
}
|
|
66
|
+
|
|
33
67
|
.maplibregl-ctrl button.maplibregl-ctrl-globe-enabled .maplibregl-ctrl-icon {
|
|
34
68
|
filter: invert(1);
|
|
35
69
|
}
|
|
36
|
-
|
|
37
|
-
details.maplibregl-ctrl.maplibregl-ctrl-attrib {
|
|
38
|
-
background-color: black;
|
|
39
|
-
color: #999;
|
|
40
|
-
}
|
|
41
|
-
details.maplibregl-ctrl.maplibregl-ctrl-attrib a {
|
|
42
|
-
color: #999;
|
|
43
|
-
}
|
|
44
|
-
details.maplibregl-ctrl.maplibregl-ctrl-attrib.maplibregl-compact-show .maplibregl-ctrl-attrib-button {
|
|
45
|
-
background-color: #999;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
div.maplibregl-popup-content {
|
|
49
|
-
background-color: black;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
div.maplibregl-popup-anchor-right div.maplibregl-popup-tip {
|
|
53
|
-
border-left-color: black;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
div.maplibregl-popup-anchor-left div.maplibregl-popup-tip {
|
|
57
|
-
border-right-color: black;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
div.maplibregl-popup-anchor-bottom div.maplibregl-popup-tip,
|
|
61
|
-
div.maplibregl-popup-anchor-bottom-right div.maplibregl-popup-tip,
|
|
62
|
-
div.maplibregl-popup-anchor-bottom-left div.maplibregl-popup-tip {
|
|
63
|
-
border-top-color: black;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
div.maplibregl-popup-anchor-top div.maplibregl-popup-tip,
|
|
67
|
-
div.maplibregl-popup-anchor-top-right div.maplibregl-popup-tip,
|
|
68
|
-
div.maplibregl-popup-anchor-top-left div.maplibregl-popup-tip {
|
|
69
|
-
border-bottom-color: black;
|
|
70
|
-
}
|
|
71
70
|
}
|