@bpd-library/components 1.3.2-beta.8 → 1.3.2-beta.9
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/atoms/form-elements/utilities/range-slider.d.ts +1 -0
- package/dist/atoms/form-elements/utilities/range-slider.js +17 -0
- package/dist/atoms/form-elements/utilities/range-slider.js.map +1 -1
- package/dist/molecules/map/store/map/store.d.ts +1 -7
- package/dist/molecules/map/store/map/store.js +0 -32
- package/dist/molecules/map/store/map/store.js.map +1 -1
- package/package.json +4 -4
- package/dist/esm/atoms/button/button.js +0 -33
- package/dist/esm/atoms/button/button.js.map +0 -1
- package/dist/esm/atoms/col/col.js +0 -22
- package/dist/esm/atoms/col/col.js.map +0 -1
- package/dist/esm/atoms/container/container.js +0 -6
- package/dist/esm/atoms/container/container.js.map +0 -1
- package/dist/esm/atoms/form-elements/range-slider/range-slider.js +0 -21
- package/dist/esm/atoms/form-elements/range-slider/range-slider.js.map +0 -1
- package/dist/esm/atoms/form-elements/utilities/range-slider.js +0 -100
- package/dist/esm/atoms/form-elements/utilities/range-slider.js.map +0 -1
- package/dist/esm/atoms/image/image.js +0 -18
- package/dist/esm/atoms/image/image.js.map +0 -1
- package/dist/esm/atoms/image/utilities/create-image-url.js +0 -15
- package/dist/esm/atoms/image/utilities/create-image-url.js.map +0 -1
- package/dist/esm/atoms/row/row.js +0 -6
- package/dist/esm/atoms/row/row.js.map +0 -1
- package/dist/esm/atoms/svg/svg.js +0 -25
- package/dist/esm/atoms/svg/svg.js.map +0 -1
- package/dist/esm/index.js +0 -14
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/molecules/infobox/infobox.js +0 -20
- package/dist/esm/molecules/infobox/infobox.js.map +0 -1
- package/dist/esm/molecules/map/map.js +0 -256
- package/dist/esm/molecules/map/map.js.map +0 -1
- package/dist/esm/molecules/map/store/map/store.js +0 -150
- package/dist/esm/molecules/map/store/map/store.js.map +0 -1
- package/dist/esm/molecules/map/utilities/fit-bounds.js +0 -4
- package/dist/esm/molecules/map/utilities/fit-bounds.js.map +0 -1
- package/dist/esm/molecules/map/utilities/mapbox/add-data.js +0 -54
- package/dist/esm/molecules/map/utilities/mapbox/add-data.js.map +0 -1
- package/dist/esm/molecules/map/utilities/mapbox/center.js +0 -15
- package/dist/esm/molecules/map/utilities/mapbox/center.js.map +0 -1
- package/dist/esm/molecules/map/utilities/mapbox/constants.js +0 -5
- package/dist/esm/molecules/map/utilities/mapbox/constants.js.map +0 -1
- package/dist/esm/molecules/map/utilities/mapbox/index.js +0 -3
- package/dist/esm/molecules/map/utilities/mapbox/index.js.map +0 -1
- package/dist/esm/molecules/map/utilities/mapbox/mapbox.js +0 -27
- package/dist/esm/molecules/map/utilities/mapbox/mapbox.js.map +0 -1
- package/dist/esm/molecules/map/utilities/mapbox/parse-feature-properties.js +0 -18
- package/dist/esm/molecules/map/utilities/mapbox/parse-feature-properties.js.map +0 -1
- package/dist/esm/molecules/map/utilities/mapbox/pointers/setup-pointers.js +0 -151
- package/dist/esm/molecules/map/utilities/mapbox/pointers/setup-pointers.js.map +0 -1
- package/dist/esm/molecules/map/utilities/mapbox/polygons/feature-state.js +0 -11
- package/dist/esm/molecules/map/utilities/mapbox/polygons/feature-state.js.map +0 -1
- package/dist/esm/molecules/map/utilities/mapbox/polygons/geojson.js +0 -10
- package/dist/esm/molecules/map/utilities/mapbox/polygons/geojson.js.map +0 -1
- package/dist/esm/molecules/map/utilities/mapbox/polygons/interaction.js +0 -34
- package/dist/esm/molecules/map/utilities/mapbox/polygons/interaction.js.map +0 -1
- package/dist/esm/molecules/map/utilities/mapbox/polygons/layer.js +0 -110
- package/dist/esm/molecules/map/utilities/mapbox/polygons/layer.js.map +0 -1
- package/dist/esm/molecules/map/utilities/mapbox/raster.js +0 -43
- package/dist/esm/molecules/map/utilities/mapbox/raster.js.map +0 -1
- package/dist/esm/molecules/map/utilities/mapbox/search/alternative-city-suggestions.js +0 -27
- package/dist/esm/molecules/map/utilities/mapbox/search/alternative-city-suggestions.js.map +0 -1
- package/dist/esm/molecules/map/utilities/mapbox/search/search.js +0 -174
- package/dist/esm/molecules/map/utilities/mapbox/search/search.js.map +0 -1
- package/dist/esm/molecules/map/utilities/mapbox/tooltip.js +0 -26
- package/dist/esm/molecules/map/utilities/mapbox/tooltip.js.map +0 -1
- package/dist/esm/molecules/tooltip/tooltip.js +0 -14
- package/dist/esm/molecules/tooltip/tooltip.js.map +0 -1
- package/dist/esm/node_modules/tslib/tslib.es6.js +0 -24
- package/dist/esm/node_modules/tslib/tslib.es6.js.map +0 -1
- package/dist/lib/atoms/button/button.js +0 -31
- package/dist/lib/atoms/button/button.js.map +0 -1
- package/dist/lib/atoms/button/index.js +0 -2
- package/dist/lib/atoms/button/index.js.map +0 -1
- package/dist/lib/atoms/col/col.js +0 -19
- package/dist/lib/atoms/col/col.js.map +0 -1
- package/dist/lib/atoms/container/container.js +0 -3
- package/dist/lib/atoms/container/container.js.map +0 -1
- package/dist/lib/atoms/form-elements/range-slider/range-slider.js +0 -18
- package/dist/lib/atoms/form-elements/range-slider/range-slider.js.map +0 -1
- package/dist/lib/atoms/form-elements/utilities/range-slider.js +0 -97
- package/dist/lib/atoms/form-elements/utilities/range-slider.js.map +0 -1
- package/dist/lib/atoms/image/image.js +0 -15
- package/dist/lib/atoms/image/image.js.map +0 -1
- package/dist/lib/atoms/image/index.js +0 -2
- package/dist/lib/atoms/image/index.js.map +0 -1
- package/dist/lib/atoms/image/utilities/create-image-url.js +0 -14
- package/dist/lib/atoms/image/utilities/create-image-url.js.map +0 -1
- package/dist/lib/atoms/image/utilities/detect-responsive-images.js +0 -24
- package/dist/lib/atoms/image/utilities/detect-responsive-images.js.map +0 -1
- package/dist/lib/atoms/image/utilities/image.js +0 -86
- package/dist/lib/atoms/image/utilities/image.js.map +0 -1
- package/dist/lib/atoms/image/utilities/object-fit.js +0 -35
- package/dist/lib/atoms/image/utilities/object-fit.js.map +0 -1
- package/dist/lib/atoms/row/row.js +0 -3
- package/dist/lib/atoms/row/row.js.map +0 -1
- package/dist/lib/atoms/svg/svg.js +0 -23
- package/dist/lib/atoms/svg/svg.js.map +0 -1
- package/dist/lib/index.js +0 -12
- package/dist/lib/index.js.map +0 -1
- package/dist/lib/molecules/infobox/index.js +0 -2
- package/dist/lib/molecules/infobox/index.js.map +0 -1
- package/dist/lib/molecules/infobox/infobox.js +0 -17
- package/dist/lib/molecules/infobox/infobox.js.map +0 -1
- package/dist/lib/molecules/map/hooks/use-style-loaded.js +0 -14
- package/dist/lib/molecules/map/hooks/use-style-loaded.js.map +0 -1
- package/dist/lib/molecules/map/index.js +0 -4
- package/dist/lib/molecules/map/index.js.map +0 -1
- package/dist/lib/molecules/map/map.js +0 -256
- package/dist/lib/molecules/map/map.js.map +0 -1
- package/dist/lib/molecules/map/store/map/index.js +0 -2
- package/dist/lib/molecules/map/store/map/index.js.map +0 -1
- package/dist/lib/molecules/map/store/map/store.js +0 -147
- package/dist/lib/molecules/map/store/map/store.js.map +0 -1
- package/dist/lib/molecules/map/storybook/themes.js +0 -54
- package/dist/lib/molecules/map/storybook/themes.js.map +0 -1
- package/dist/lib/molecules/map/utilities/fit-bounds.js +0 -2
- package/dist/lib/molecules/map/utilities/fit-bounds.js.map +0 -1
- package/dist/lib/molecules/map/utilities/mapbox/add-data.js +0 -52
- package/dist/lib/molecules/map/utilities/mapbox/add-data.js.map +0 -1
- package/dist/lib/molecules/map/utilities/mapbox/center.js +0 -13
- package/dist/lib/molecules/map/utilities/mapbox/center.js.map +0 -1
- package/dist/lib/molecules/map/utilities/mapbox/constants.js +0 -3
- package/dist/lib/molecules/map/utilities/mapbox/constants.js.map +0 -1
- package/dist/lib/molecules/map/utilities/mapbox/index.js +0 -3
- package/dist/lib/molecules/map/utilities/mapbox/index.js.map +0 -1
- package/dist/lib/molecules/map/utilities/mapbox/mapbox.js +0 -25
- package/dist/lib/molecules/map/utilities/mapbox/mapbox.js.map +0 -1
- package/dist/lib/molecules/map/utilities/mapbox/parse-feature-properties.js +0 -16
- package/dist/lib/molecules/map/utilities/mapbox/parse-feature-properties.js.map +0 -1
- package/dist/lib/molecules/map/utilities/mapbox/pointers/setup-pointers.js +0 -151
- package/dist/lib/molecules/map/utilities/mapbox/pointers/setup-pointers.js.map +0 -1
- package/dist/lib/molecules/map/utilities/mapbox/polygons/feature-state.js +0 -10
- package/dist/lib/molecules/map/utilities/mapbox/polygons/feature-state.js.map +0 -1
- package/dist/lib/molecules/map/utilities/mapbox/polygons/geojson.js +0 -9
- package/dist/lib/molecules/map/utilities/mapbox/polygons/geojson.js.map +0 -1
- package/dist/lib/molecules/map/utilities/mapbox/polygons/interaction.js +0 -32
- package/dist/lib/molecules/map/utilities/mapbox/polygons/interaction.js.map +0 -1
- package/dist/lib/molecules/map/utilities/mapbox/polygons/layer.js +0 -109
- package/dist/lib/molecules/map/utilities/mapbox/polygons/layer.js.map +0 -1
- package/dist/lib/molecules/map/utilities/mapbox/raster.js +0 -42
- package/dist/lib/molecules/map/utilities/mapbox/raster.js.map +0 -1
- package/dist/lib/molecules/map/utilities/mapbox/search/alternative-city-suggestions.js +0 -26
- package/dist/lib/molecules/map/utilities/mapbox/search/alternative-city-suggestions.js.map +0 -1
- package/dist/lib/molecules/map/utilities/mapbox/search/search.js +0 -172
- package/dist/lib/molecules/map/utilities/mapbox/search/search.js.map +0 -1
- package/dist/lib/molecules/map/utilities/mapbox/tooltip.js +0 -24
- package/dist/lib/molecules/map/utilities/mapbox/tooltip.js.map +0 -1
- package/dist/lib/molecules/tooltip/index.js +0 -2
- package/dist/lib/molecules/tooltip/index.js.map +0 -1
- package/dist/lib/molecules/tooltip/tooltip.js +0 -11
- package/dist/lib/molecules/tooltip/tooltip.js.map +0 -1
- package/dist/types/atoms/button/button.d.ts +0 -17
- package/dist/types/atoms/button/index.d.ts +0 -1
- package/dist/types/atoms/col/col.d.ts +0 -11
- package/dist/types/atoms/container/container.d.ts +0 -6
- package/dist/types/atoms/form-elements/range-slider/range-slider.d.ts +0 -11
- package/dist/types/atoms/form-elements/utilities/range-slider.d.ts +0 -7
- package/dist/types/atoms/image/image.d.ts +0 -14
- package/dist/types/atoms/image/index.d.ts +0 -1
- package/dist/types/atoms/image/utilities/create-image-url.d.ts +0 -6
- package/dist/types/atoms/image/utilities/detect-responsive-images.d.ts +0 -7
- package/dist/types/atoms/image/utilities/image.d.ts +0 -18
- package/dist/types/atoms/image/utilities/object-fit.d.ts +0 -7
- package/dist/types/atoms/row/row.d.ts +0 -6
- package/dist/types/atoms/svg/svg.d.ts +0 -4
- package/dist/types/index.d.ts +0 -11
- package/dist/types/molecules/infobox/index.d.ts +0 -1
- package/dist/types/molecules/infobox/infobox.d.ts +0 -7
- package/dist/types/molecules/map/hooks/use-style-loaded.d.ts +0 -2
- package/dist/types/molecules/map/index.d.ts +0 -3
- package/dist/types/molecules/map/map.d.ts +0 -2
- package/dist/types/molecules/map/store/map/index.d.ts +0 -1
- package/dist/types/molecules/map/store/map/store.d.ts +0 -60
- package/dist/types/molecules/map/storybook/themes.d.ts +0 -3
- package/dist/types/molecules/map/utilities/fit-bounds.d.ts +0 -3
- package/dist/types/molecules/map/utilities/mapbox/add-data.d.ts +0 -3
- package/dist/types/molecules/map/utilities/mapbox/center.d.ts +0 -3
- package/dist/types/molecules/map/utilities/mapbox/constants.d.ts +0 -2
- package/dist/types/molecules/map/utilities/mapbox/index.d.ts +0 -2
- package/dist/types/molecules/map/utilities/mapbox/mapbox.d.ts +0 -16
- package/dist/types/molecules/map/utilities/mapbox/parse-feature-properties.d.ts +0 -6
- package/dist/types/molecules/map/utilities/mapbox/pointers/setup-pointers.d.ts +0 -3
- package/dist/types/molecules/map/utilities/mapbox/polygons/feature-state.d.ts +0 -2
- package/dist/types/molecules/map/utilities/mapbox/polygons/geojson.d.ts +0 -3
- package/dist/types/molecules/map/utilities/mapbox/polygons/interaction.d.ts +0 -3
- package/dist/types/molecules/map/utilities/mapbox/polygons/layer.d.ts +0 -3
- package/dist/types/molecules/map/utilities/mapbox/raster.d.ts +0 -3
- package/dist/types/molecules/map/utilities/mapbox/search/alternative-city-suggestions.d.ts +0 -3
- package/dist/types/molecules/map/utilities/mapbox/search/search.d.ts +0 -4
- package/dist/types/molecules/map/utilities/mapbox/tooltip.d.ts +0 -4
- package/dist/types/molecules/tooltip/index.d.ts +0 -1
- package/dist/types/molecules/tooltip/tooltip.d.ts +0 -7
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { clearHover, getHover, updateClick, updateHover } from '../../../store/map';
|
|
2
|
-
import { parseFeatureProperties } from '../parse-feature-properties';
|
|
3
|
-
const getFeatureFromEvent = (e) => {
|
|
4
|
-
const features = e.features;
|
|
5
|
-
const feature = features ? features[0] : undefined;
|
|
6
|
-
return feature || undefined;
|
|
7
|
-
};
|
|
8
|
-
const interaction = (map, setting) => {
|
|
9
|
-
map.on('mousemove', setting.variant + '-fill', (e) => {
|
|
10
|
-
var _a;
|
|
11
|
-
const hover = getHover();
|
|
12
|
-
const feature = getFeatureFromEvent(e);
|
|
13
|
-
if (!feature)
|
|
14
|
-
return;
|
|
15
|
-
if (((_a = hover.current) === null || _a === void 0 ? void 0 : _a.id) !== feature.id) {
|
|
16
|
-
const item = parseFeatureProperties(feature.properties);
|
|
17
|
-
updateHover(item);
|
|
18
|
-
}
|
|
19
|
-
});
|
|
20
|
-
map.on('mouseleave', setting.variant + '-fill', () => {
|
|
21
|
-
clearHover();
|
|
22
|
-
});
|
|
23
|
-
map.on('click', setting.variant + '-fill', (e) => {
|
|
24
|
-
const feature = getFeatureFromEvent(e);
|
|
25
|
-
if (feature) {
|
|
26
|
-
const item = parseFeatureProperties(feature.properties);
|
|
27
|
-
updateClick(item);
|
|
28
|
-
}
|
|
29
|
-
});
|
|
30
|
-
};
|
|
31
|
-
export default interaction;
|
|
32
|
-
//# sourceMappingURL=interaction.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"interaction.js","sourceRoot":"","sources":["../../../../../../../src/molecules/map/utilities/mapbox/polygons/interaction.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACpF,OAAO,EAAqB,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAMxF,MAAM,mBAAmB,GAAG,CAAC,CAAc,EAAE,EAAE;IAC3C,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;IAC5B,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAEnD,OAAO,OAAO,IAAI,SAAS,CAAC;AAChC,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,GAAiB,EAAE,OAA4B,EAAE,EAAE;IACpE,GAAG,CAAC,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,GAAG,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;;QACjD,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC;QAEvC,IAAI,CAAC,OAAO;YAAE,OAAO;QAErB,IAAI,OAAA,KAAK,CAAC,OAAO,0CAAE,EAAE,MAAK,OAAO,CAAC,EAAE,EAAE;YAClC,MAAM,IAAI,GAAG,sBAAsB,CAC/B,OAAO,CAAC,UAA+B,CAC3B,CAAC;YAEjB,WAAW,CAAC,IAAI,CAAC,CAAC;SACrB;IACL,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,EAAE,CAAC,YAAY,EAAE,OAAO,CAAC,OAAO,GAAG,OAAO,EAAE,GAAG,EAAE;QACjD,UAAU,EAAE,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,GAAG,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;QAC7C,MAAM,OAAO,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC;QAEvC,IAAI,OAAO,EAAE;YACT,MAAM,IAAI,GAAG,sBAAsB,CAC/B,OAAO,CAAC,UAA+B,CAC3B,CAAC;YAEjB,WAAW,CAAC,IAAI,CAAC,CAAC;SACrB;IACL,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AAEF,eAAe,WAAW,CAAC","sourcesContent":["import { MapDataItem, PolygonThemeSetting } from '@bpd-library/types';\n\nimport { clearHover, getHover, updateClick, updateHover } from '../../../store/map';\nimport { FeatureProperties, parseFeatureProperties } from '../parse-feature-properties';\n\ntype MapboxEvent = mapboxgl.MapMouseEvent & {\n features?: mapboxgl.MapboxGeoJSONFeature[] | undefined;\n} & mapboxgl.EventData;\n\nconst getFeatureFromEvent = (e: MapboxEvent) => {\n const features = e.features;\n const feature = features ? features[0] : undefined;\n\n return feature || undefined;\n};\n\nconst interaction = (map: mapboxgl.Map, setting: PolygonThemeSetting) => {\n map.on('mousemove', setting.variant + '-fill', (e) => {\n const hover = getHover();\n const feature = getFeatureFromEvent(e);\n\n if (!feature) return;\n\n if (hover.current?.id !== feature.id) {\n const item = parseFeatureProperties(\n feature.properties as FeatureProperties,\n ) as MapDataItem;\n\n updateHover(item);\n }\n });\n\n map.on('mouseleave', setting.variant + '-fill', () => {\n clearHover();\n });\n\n map.on('click', setting.variant + '-fill', (e) => {\n const feature = getFeatureFromEvent(e);\n\n if (feature) {\n const item = parseFeatureProperties(\n feature.properties as FeatureProperties,\n ) as MapDataItem;\n\n updateClick(item);\n }\n });\n};\n\nexport default interaction;\n"]}
|
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
const MIN_ZOOM = 1;
|
|
2
|
-
const MAX_ZOOM = 24;
|
|
3
|
-
const LINE_WIDTH = 2;
|
|
4
|
-
const TRANSITION_ZOOM_MARGIN = 0.75;
|
|
5
|
-
const NORMAL_FEATURE_STATE = [
|
|
6
|
-
'case',
|
|
7
|
-
['boolean', ['feature-state', 'hover'], false],
|
|
8
|
-
0,
|
|
9
|
-
['boolean', ['feature-state', 'focus'], false],
|
|
10
|
-
0,
|
|
11
|
-
1,
|
|
12
|
-
];
|
|
13
|
-
const HOVER_FEATURE_STATE = [
|
|
14
|
-
'case',
|
|
15
|
-
['boolean', ['feature-state', 'hover'], false],
|
|
16
|
-
1,
|
|
17
|
-
['boolean', ['feature-state', 'focus'], false],
|
|
18
|
-
1,
|
|
19
|
-
0,
|
|
20
|
-
];
|
|
21
|
-
const RGBAString = ([r, g, b, a], overwriteAlpha) => {
|
|
22
|
-
a = overwriteAlpha !== undefined ? overwriteAlpha : a;
|
|
23
|
-
return `rgba(${r},${g},${b},${a})`;
|
|
24
|
-
};
|
|
25
|
-
const layer = (map, { variant, normal, hover, minzoom, maxzoom }) => {
|
|
26
|
-
let layerMinzoom = minzoom ? minzoom - TRANSITION_ZOOM_MARGIN : MIN_ZOOM;
|
|
27
|
-
let layerMaxzoom = maxzoom ? maxzoom + TRANSITION_ZOOM_MARGIN : MAX_ZOOM;
|
|
28
|
-
if (layerMinzoom < 1)
|
|
29
|
-
layerMinzoom = 1;
|
|
30
|
-
if (layerMaxzoom > 24)
|
|
31
|
-
layerMaxzoom = 24;
|
|
32
|
-
if (normal.fill) {
|
|
33
|
-
map.addLayer({
|
|
34
|
-
id: `${variant}-fill`,
|
|
35
|
-
type: 'fill',
|
|
36
|
-
source: variant,
|
|
37
|
-
minzoom: layerMinzoom,
|
|
38
|
-
maxzoom: layerMaxzoom,
|
|
39
|
-
paint: {
|
|
40
|
-
'fill-color': RGBAString(normal.fill),
|
|
41
|
-
'fill-opacity': NORMAL_FEATURE_STATE,
|
|
42
|
-
},
|
|
43
|
-
});
|
|
44
|
-
setTransitionPaintProperty(`${variant}-fill`, normal.fill, 'fill-color');
|
|
45
|
-
}
|
|
46
|
-
if (normal.stroke) {
|
|
47
|
-
map.addLayer({
|
|
48
|
-
id: `${variant}-line`,
|
|
49
|
-
type: 'line',
|
|
50
|
-
source: variant,
|
|
51
|
-
minzoom: layerMinzoom,
|
|
52
|
-
maxzoom: layerMaxzoom,
|
|
53
|
-
paint: {
|
|
54
|
-
'line-color': RGBAString(normal.stroke),
|
|
55
|
-
'line-width': LINE_WIDTH,
|
|
56
|
-
'line-opacity': NORMAL_FEATURE_STATE,
|
|
57
|
-
},
|
|
58
|
-
});
|
|
59
|
-
setTransitionPaintProperty(`${variant}-line`, normal.stroke, 'line-color');
|
|
60
|
-
}
|
|
61
|
-
if (hover) {
|
|
62
|
-
map.addLayer({
|
|
63
|
-
id: `${variant}-fill-hover`,
|
|
64
|
-
type: 'fill',
|
|
65
|
-
source: variant,
|
|
66
|
-
minzoom: layerMinzoom,
|
|
67
|
-
maxzoom: layerMaxzoom,
|
|
68
|
-
paint: {
|
|
69
|
-
'fill-color': RGBAString(hover.fill),
|
|
70
|
-
'fill-opacity': HOVER_FEATURE_STATE,
|
|
71
|
-
},
|
|
72
|
-
});
|
|
73
|
-
setTransitionPaintProperty(`${variant}-fill-hover`, hover.fill, 'fill-color');
|
|
74
|
-
if (normal.stroke) {
|
|
75
|
-
map.addLayer({
|
|
76
|
-
id: `${variant}-line-hover`,
|
|
77
|
-
type: 'line',
|
|
78
|
-
source: variant,
|
|
79
|
-
minzoom: layerMinzoom,
|
|
80
|
-
maxzoom: layerMaxzoom,
|
|
81
|
-
paint: {
|
|
82
|
-
'line-color': RGBAString(hover.stroke),
|
|
83
|
-
'line-width': LINE_WIDTH,
|
|
84
|
-
'line-opacity': HOVER_FEATURE_STATE,
|
|
85
|
-
},
|
|
86
|
-
});
|
|
87
|
-
setTransitionPaintProperty(`${variant}-line-hover`, hover.stroke, 'line-color');
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
function setTransitionPaintProperty(layer, color, property) {
|
|
91
|
-
if (!minzoom || !maxzoom)
|
|
92
|
-
return;
|
|
93
|
-
map.setPaintProperty(layer, property, [
|
|
94
|
-
'interpolate',
|
|
95
|
-
['exponential', TRANSITION_ZOOM_MARGIN],
|
|
96
|
-
['zoom'],
|
|
97
|
-
minzoom - TRANSITION_ZOOM_MARGIN,
|
|
98
|
-
RGBAString(color, 0),
|
|
99
|
-
minzoom,
|
|
100
|
-
RGBAString(color),
|
|
101
|
-
maxzoom,
|
|
102
|
-
RGBAString(color),
|
|
103
|
-
maxzoom + TRANSITION_ZOOM_MARGIN,
|
|
104
|
-
RGBAString(color, 0),
|
|
105
|
-
]);
|
|
106
|
-
}
|
|
107
|
-
};
|
|
108
|
-
export default layer;
|
|
109
|
-
//# sourceMappingURL=layer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"layer.js","sourceRoot":"","sources":["../../../../../../../src/molecules/map/utilities/mapbox/polygons/layer.ts"],"names":[],"mappings":"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","sourcesContent":["import { PolygonThemeSetting, RGBA } from '@bpd-library/types';\n\nconst MIN_ZOOM = 1;\nconst MAX_ZOOM = 24;\nconst LINE_WIDTH = 2;\nconst TRANSITION_ZOOM_MARGIN = 0.75;\n\nconst NORMAL_FEATURE_STATE: mapboxgl.Expression = [\n 'case',\n ['boolean', ['feature-state', 'hover'], false],\n 0,\n ['boolean', ['feature-state', 'focus'], false],\n 0,\n 1,\n];\n\nconst HOVER_FEATURE_STATE: mapboxgl.Expression = [\n 'case',\n ['boolean', ['feature-state', 'hover'], false],\n 1,\n ['boolean', ['feature-state', 'focus'], false],\n 1,\n 0,\n];\n\nconst RGBAString = ([r, g, b, a]: RGBA, overwriteAlpha?: number) => {\n a = overwriteAlpha !== undefined ? overwriteAlpha : a;\n\n return `rgba(${r},${g},${b},${a})`;\n};\n\nconst layer = (\n map: mapboxgl.Map,\n { variant, normal, hover, minzoom, maxzoom }: PolygonThemeSetting,\n) => {\n // Calculate the minzoom and maxzoom when it's set. This makes sure the layer gets disabled when it's invisible.\n let layerMinzoom = minzoom ? minzoom - TRANSITION_ZOOM_MARGIN : MIN_ZOOM;\n let layerMaxzoom = maxzoom ? maxzoom + TRANSITION_ZOOM_MARGIN : MAX_ZOOM;\n\n // Limit the minzoom to 1 and the maxzoom to 24.\n if (layerMinzoom < 1) layerMinzoom = 1;\n if (layerMaxzoom > 24) layerMaxzoom = 24;\n\n if (normal.fill) {\n map.addLayer({\n id: `${variant}-fill`,\n type: 'fill',\n source: variant,\n minzoom: layerMinzoom,\n maxzoom: layerMaxzoom,\n paint: {\n 'fill-color': RGBAString(normal.fill),\n 'fill-opacity': NORMAL_FEATURE_STATE,\n },\n });\n\n setTransitionPaintProperty(`${variant}-fill`, normal.fill, 'fill-color');\n }\n\n // Only add stroke layer, if it is set\n if (normal.stroke) {\n map.addLayer({\n id: `${variant}-line`,\n type: 'line',\n source: variant,\n minzoom: layerMinzoom,\n maxzoom: layerMaxzoom,\n paint: {\n 'line-color': RGBAString(normal.stroke),\n 'line-width': LINE_WIDTH,\n 'line-opacity': NORMAL_FEATURE_STATE,\n },\n });\n\n setTransitionPaintProperty(`${variant}-line`, normal.stroke, 'line-color');\n }\n\n if (hover) {\n map.addLayer({\n id: `${variant}-fill-hover`,\n type: 'fill',\n source: variant,\n minzoom: layerMinzoom,\n maxzoom: layerMaxzoom,\n paint: {\n 'fill-color': RGBAString(hover.fill),\n 'fill-opacity': HOVER_FEATURE_STATE,\n },\n });\n\n setTransitionPaintProperty(`${variant}-fill-hover`, hover.fill, 'fill-color');\n\n if (normal.stroke) {\n map.addLayer({\n id: `${variant}-line-hover`,\n type: 'line',\n source: variant,\n minzoom: layerMinzoom,\n maxzoom: layerMaxzoom,\n paint: {\n 'line-color': RGBAString(hover.stroke),\n 'line-width': LINE_WIDTH,\n 'line-opacity': HOVER_FEATURE_STATE,\n },\n });\n\n setTransitionPaintProperty(`${variant}-line-hover`, hover.stroke, 'line-color');\n }\n }\n\n /**\n * @description Creates a fade-in effect when zooming in or out, based on a minzoom and maxzoom\n * @param {string} layer\n * @param {RGBA} color\n * @param {string} property\n * @return {*}\n */\n function setTransitionPaintProperty(layer: string, color: RGBA, property: string) {\n if (!minzoom || !maxzoom) return;\n\n map.setPaintProperty(layer, property, [\n 'interpolate',\n ['exponential', TRANSITION_ZOOM_MARGIN],\n ['zoom'],\n minzoom - TRANSITION_ZOOM_MARGIN,\n RGBAString(color, 0),\n minzoom,\n RGBAString(color),\n maxzoom,\n RGBAString(color),\n maxzoom + TRANSITION_ZOOM_MARGIN,\n RGBAString(color, 0),\n ]);\n }\n};\n\nexport default layer;\n"]}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
const TRANSITION_ZOOM_MARGIN = 0.75;
|
|
2
|
-
const raster = (map, settings) => {
|
|
3
|
-
const accessToken = window.__ENVIRONMENT_DETAILS__.mapbox.accessToken;
|
|
4
|
-
const tile = `${settings.layerRaster}/{z}/{x}/{y}.png?access_token=${accessToken}`;
|
|
5
|
-
if (map.getSource('raster')) {
|
|
6
|
-
console.warn('Adding multiple layerRasters is not possible');
|
|
7
|
-
return;
|
|
8
|
-
}
|
|
9
|
-
map.addSource('raster', {
|
|
10
|
-
type: 'raster',
|
|
11
|
-
tiles: [tile],
|
|
12
|
-
});
|
|
13
|
-
map.addLayer({
|
|
14
|
-
id: 'raster-image',
|
|
15
|
-
type: 'raster',
|
|
16
|
-
source: 'raster',
|
|
17
|
-
minzoom: 10,
|
|
18
|
-
maxzoom: 24,
|
|
19
|
-
}, 'bridge_minor');
|
|
20
|
-
if (settings.minzoom && settings.maxzoom) {
|
|
21
|
-
setTransitionPaintProperty(map, settings.minzoom, settings.maxzoom);
|
|
22
|
-
}
|
|
23
|
-
};
|
|
24
|
-
function setTransitionPaintProperty(map, minzoom, maxzoom) {
|
|
25
|
-
if (!minzoom || !maxzoom)
|
|
26
|
-
return;
|
|
27
|
-
map.setPaintProperty('raster-image', 'raster-opacity', [
|
|
28
|
-
'interpolate',
|
|
29
|
-
['exponential', TRANSITION_ZOOM_MARGIN],
|
|
30
|
-
['zoom'],
|
|
31
|
-
minzoom - TRANSITION_ZOOM_MARGIN,
|
|
32
|
-
0,
|
|
33
|
-
minzoom,
|
|
34
|
-
1,
|
|
35
|
-
maxzoom,
|
|
36
|
-
1,
|
|
37
|
-
maxzoom + TRANSITION_ZOOM_MARGIN,
|
|
38
|
-
0,
|
|
39
|
-
]);
|
|
40
|
-
}
|
|
41
|
-
export default raster;
|
|
42
|
-
//# sourceMappingURL=raster.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"raster.js","sourceRoot":"","sources":["../../../../../../src/molecules/map/utilities/mapbox/raster.ts"],"names":[],"mappings":"AAEA,MAAM,sBAAsB,GAAG,IAAI,CAAC;AAEpC,MAAM,MAAM,GAAG,CAAC,GAAiB,EAAE,QAAgC,EAAE,EAAE;IACnE,MAAM,WAAW,GAAG,MAAM,CAAC,uBAAuB,CAAC,MAAM,CAAC,WAAW,CAAC;IACtE,MAAM,IAAI,GAAG,GAAG,QAAQ,CAAC,WAAW,iCAAiC,WAAW,EAAE,CAAC;IAEnF,IAAI,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;QACzB,OAAO,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;QAC7D,OAAO;KACV;IAED,GAAG,CAAC,SAAS,CAAC,QAAQ,EAAE;QACpB,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,CAAC,IAAI,CAAC;KAChB,CAAC,CAAC;IAEH,GAAG,CAAC,QAAQ,CACR;QACI,EAAE,EAAE,cAAc;QAClB,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,EAAE;QACX,OAAO,EAAE,EAAE;KACd,EACD,cAAc,CACjB,CAAC;IAEF,IAAI,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,EAAE;QACtC,0BAA0B,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;KACvE;AACL,CAAC,CAAC;AASF,SAAS,0BAA0B,CAAC,GAAiB,EAAE,OAAe,EAAE,OAAe;IACnF,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO;QAAE,OAAO;IAEjC,GAAG,CAAC,gBAAgB,CAAC,cAAc,EAAE,gBAAgB,EAAE;QACnD,aAAa;QACb,CAAC,aAAa,EAAE,sBAAsB,CAAC;QACvC,CAAC,MAAM,CAAC;QACR,OAAO,GAAG,sBAAsB;QAChC,CAAC;QACD,OAAO;QACP,CAAC;QACD,OAAO;QACP,CAAC;QACD,OAAO,GAAG,sBAAsB;QAChC,CAAC;KACJ,CAAC,CAAC;AACP,CAAC;AAED,eAAe,MAAM,CAAC","sourcesContent":["import { MapLayerRasterSettings } from '../../store/map';\n\nconst TRANSITION_ZOOM_MARGIN = 0.75;\n\nconst raster = (map: mapboxgl.Map, settings: MapLayerRasterSettings) => {\n const accessToken = window.__ENVIRONMENT_DETAILS__.mapbox.accessToken;\n const tile = `${settings.layerRaster}/{z}/{x}/{y}.png?access_token=${accessToken}`;\n\n if (map.getSource('raster')) {\n console.warn('Adding multiple layerRasters is not possible');\n return;\n }\n\n map.addSource('raster', {\n type: 'raster',\n tiles: [tile],\n });\n\n map.addLayer(\n {\n id: 'raster-image',\n type: 'raster',\n source: 'raster',\n minzoom: 10,\n maxzoom: 24,\n },\n 'bridge_minor',\n );\n\n if (settings.minzoom && settings.maxzoom) {\n setTransitionPaintProperty(map, settings.minzoom, settings.maxzoom);\n }\n};\n\n/**\n * @description Creates a fade-in effect when zooming in or out, based on a minzoom and maxzoom\n * @param {string} layer\n * @param {RGBA} color\n * @param {string} property\n * @return {*}\n */\nfunction setTransitionPaintProperty(map: mapboxgl.Map, minzoom: number, maxzoom: number) {\n if (!minzoom || !maxzoom) return;\n\n map.setPaintProperty('raster-image', 'raster-opacity', [\n 'interpolate',\n ['exponential', TRANSITION_ZOOM_MARGIN],\n ['zoom'],\n minzoom - TRANSITION_ZOOM_MARGIN,\n 0,\n minzoom,\n 1,\n maxzoom,\n 1,\n maxzoom + TRANSITION_ZOOM_MARGIN,\n 0,\n ]);\n}\n\nexport default raster;\n"]}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
const ALTERNATIVES = [
|
|
2
|
-
{
|
|
3
|
-
query: 'Den Bosch',
|
|
4
|
-
title: 'Den Bosch, Noord-Brabant, Nederland',
|
|
5
|
-
bbox: [5.206494, 51.663997, 5.377136, 51.755477],
|
|
6
|
-
},
|
|
7
|
-
{
|
|
8
|
-
query: "'s-Gravenhage",
|
|
9
|
-
title: "'s-Gravenhage, Zuid-Holland, Nederland",
|
|
10
|
-
bbox: [4.1962, 52.014848, 4.42249, 52.128324],
|
|
11
|
-
},
|
|
12
|
-
];
|
|
13
|
-
function getCityAlternativeSuggestions(searchQuery) {
|
|
14
|
-
const suggestions = [];
|
|
15
|
-
ALTERNATIVES.forEach(({ title, query, bbox }) => {
|
|
16
|
-
if (query.toLowerCase().indexOf(searchQuery) > -1) {
|
|
17
|
-
suggestions.push({
|
|
18
|
-
title,
|
|
19
|
-
bbox,
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
});
|
|
23
|
-
return suggestions;
|
|
24
|
-
}
|
|
25
|
-
export default getCityAlternativeSuggestions;
|
|
26
|
-
//# sourceMappingURL=alternative-city-suggestions.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"alternative-city-suggestions.js","sourceRoot":"","sources":["../../../../../../../src/molecules/map/utilities/mapbox/search/alternative-city-suggestions.ts"],"names":[],"mappings":"AAQA,MAAM,YAAY,GAAsB;IACpC;QACI,KAAK,EAAE,WAAW;QAClB,KAAK,EAAE,qCAAqC;QAC5C,IAAI,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC;KACnD;IACD;QACI,KAAK,EAAE,eAAe;QACtB,KAAK,EAAE,wCAAwC;QAC/C,IAAI,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC;KAChD;CACJ,CAAC;AAEF,SAAS,6BAA6B,CAAC,WAAmB;IACtD,MAAM,WAAW,GAA0B,EAAE,CAAC;IAE9C,YAAY,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE;QAC5C,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE;YAC/C,WAAW,CAAC,IAAI,CAAC;gBACb,KAAK;gBACL,IAAI;aACP,CAAC,CAAC;SACN;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,WAAW,CAAC;AACvB,CAAC;AAED,eAAe,6BAA6B,CAAC","sourcesContent":["import { BoundingBox, MapSearchSuggestion } from '@bpd-library/types';\n\ninterface CityAlternative {\n query: string;\n title: string;\n bbox: BoundingBox;\n}\n\nconst ALTERNATIVES: CityAlternative[] = [\n {\n query: 'Den Bosch',\n title: 'Den Bosch, Noord-Brabant, Nederland',\n bbox: [5.206494, 51.663997, 5.377136, 51.755477],\n },\n {\n query: \"'s-Gravenhage\",\n title: \"'s-Gravenhage, Zuid-Holland, Nederland\",\n bbox: [4.1962, 52.014848, 4.42249, 52.128324],\n },\n];\n\nfunction getCityAlternativeSuggestions(searchQuery: string): MapSearchSuggestion[] {\n const suggestions: MapSearchSuggestion[] = [];\n\n ALTERNATIVES.forEach(({ title, query, bbox }) => {\n if (query.toLowerCase().indexOf(searchQuery) > -1) {\n suggestions.push({\n title,\n bbox,\n });\n }\n });\n\n return suggestions;\n}\n\nexport default getCityAlternativeSuggestions;\n"]}
|
|
@@ -1,172 +0,0 @@
|
|
|
1
|
-
import { h } from '@atomify/jsx';
|
|
2
|
-
import { calculateBoundingBoxCenter, debounce, environment, expandBoundingBox, getCountryBoundingBox, useClickOutside, withinBoundingBox, } from '@bpd-library/utilities';
|
|
3
|
-
import mapboxgl from 'mapbox-gl';
|
|
4
|
-
import { clearSearchResult, getMapboxData, mapStore, updateSearchIsMoving, updateSearchResult, } from '../../../store/map';
|
|
5
|
-
import { fitBounds } from '../../fit-bounds';
|
|
6
|
-
import getCityAlternativeSuggestions from './alternative-city-suggestions';
|
|
7
|
-
const MIN_KM_PADDING = 10;
|
|
8
|
-
const search = async (map, { hook, kmPadding = MIN_KM_PADDING, onSearchSuggestion }, { searchCountryIsoCodes = ['nl', 'de'], language = 'nl' }) => {
|
|
9
|
-
const element = document.querySelector(hook);
|
|
10
|
-
const bounds = getCountryBoundingBox(searchCountryIsoCodes);
|
|
11
|
-
if (!element) {
|
|
12
|
-
if (environment.isLocal)
|
|
13
|
-
console.error(`Search element can't be found: ${hook}`);
|
|
14
|
-
return;
|
|
15
|
-
}
|
|
16
|
-
const inputElement = element.querySelector('[js-hook-map-search-input]');
|
|
17
|
-
const form = inputElement.closest('form');
|
|
18
|
-
const suggestionsElement = element.querySelector('[js-hook-map-search-suggestions]');
|
|
19
|
-
const buttonElement = element.querySelector('[js-hook-map-search-button]');
|
|
20
|
-
let geocoder;
|
|
21
|
-
let suggestions;
|
|
22
|
-
init();
|
|
23
|
-
async function init() {
|
|
24
|
-
const { default: MapboxGeocoder } = await import('@mapbox/mapbox-gl-geocoder');
|
|
25
|
-
geocoder = new MapboxGeocoder({
|
|
26
|
-
accessToken: mapboxgl.accessToken,
|
|
27
|
-
mapboxgl,
|
|
28
|
-
countries: searchCountryIsoCodes.join(',').toUpperCase(),
|
|
29
|
-
types: 'region,district,place,neighborhood',
|
|
30
|
-
localGeocoder,
|
|
31
|
-
language,
|
|
32
|
-
enableEventLogging: false,
|
|
33
|
-
marker: false,
|
|
34
|
-
});
|
|
35
|
-
map.addControl(geocoder);
|
|
36
|
-
bindEvents();
|
|
37
|
-
subscribe();
|
|
38
|
-
}
|
|
39
|
-
function bindEvents() {
|
|
40
|
-
const debouncedOnKeyDown = debounce(onKeyDown, 300);
|
|
41
|
-
inputElement.addEventListener('keydown', debouncedOnKeyDown);
|
|
42
|
-
buttonElement.addEventListener('click', handleButtonClick);
|
|
43
|
-
form === null || form === void 0 ? void 0 : form.addEventListener('submit', (e) => e.preventDefault());
|
|
44
|
-
useClickOutside(inputElement, handleClickOutside);
|
|
45
|
-
geocoder.on('results', (results) => {
|
|
46
|
-
suggestions = results;
|
|
47
|
-
renderSuggestions(suggestions);
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
function subscribe() {
|
|
51
|
-
handleManualSearch(mapStore.getState());
|
|
52
|
-
mapStore.subscribe(handleManualSearch, ['manualSearch']);
|
|
53
|
-
}
|
|
54
|
-
function handleManualSearch({ manualSearch }) {
|
|
55
|
-
if (manualSearch) {
|
|
56
|
-
geocoder.setInput(manualSearch).on('results', function handleResults(results) {
|
|
57
|
-
suggestions = results;
|
|
58
|
-
submitFirstSuggestion();
|
|
59
|
-
geocoder.off('results', handleResults);
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
function handleClickOutside() {
|
|
64
|
-
clearSuggestionsContainer();
|
|
65
|
-
}
|
|
66
|
-
function handleFitBounds() {
|
|
67
|
-
return fitBounds(map, bounds);
|
|
68
|
-
}
|
|
69
|
-
function onKeyDown(e) {
|
|
70
|
-
const { value } = inputElement;
|
|
71
|
-
if (e.key === 'Enter') {
|
|
72
|
-
if (!value) {
|
|
73
|
-
clearAll();
|
|
74
|
-
return;
|
|
75
|
-
}
|
|
76
|
-
else {
|
|
77
|
-
geocoder.on('results', function handleEnter() {
|
|
78
|
-
submitFirstSuggestion();
|
|
79
|
-
inputElement === null || inputElement === void 0 ? void 0 : inputElement.blur();
|
|
80
|
-
geocoder.off('results', handleEnter);
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
if (value.length >= 3) {
|
|
85
|
-
geocoder.setInput(value);
|
|
86
|
-
}
|
|
87
|
-
else {
|
|
88
|
-
suggestions = undefined;
|
|
89
|
-
handleFitBounds();
|
|
90
|
-
clearSuggestionsContainer();
|
|
91
|
-
clearSearchResult();
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
function handleButtonClick() {
|
|
95
|
-
const { value } = inputElement;
|
|
96
|
-
if (!value) {
|
|
97
|
-
clearAll();
|
|
98
|
-
}
|
|
99
|
-
else {
|
|
100
|
-
submitFirstSuggestion();
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
function submitFirstSuggestion() {
|
|
104
|
-
const firstSuggestion = suggestions === null || suggestions === void 0 ? void 0 : suggestions.features[0];
|
|
105
|
-
updateStore(firstSuggestion);
|
|
106
|
-
clearSuggestionsContainer();
|
|
107
|
-
}
|
|
108
|
-
function clearSuggestionsContainer() {
|
|
109
|
-
suggestionsElement.innerHTML = '';
|
|
110
|
-
}
|
|
111
|
-
function clearAll() {
|
|
112
|
-
suggestions = undefined;
|
|
113
|
-
handleFitBounds();
|
|
114
|
-
clearSuggestionsContainer();
|
|
115
|
-
clearSearchResult();
|
|
116
|
-
inputElement === null || inputElement === void 0 ? void 0 : inputElement.blur();
|
|
117
|
-
}
|
|
118
|
-
function localGeocoder(query) {
|
|
119
|
-
const createSuggestion = ({ title, bbox, type, id }) => {
|
|
120
|
-
const center = calculateBoundingBoxCenter(bbox);
|
|
121
|
-
return {
|
|
122
|
-
place_name: title,
|
|
123
|
-
bbox,
|
|
124
|
-
center,
|
|
125
|
-
type,
|
|
126
|
-
id,
|
|
127
|
-
};
|
|
128
|
-
};
|
|
129
|
-
const customSuggestions = onSearchSuggestion
|
|
130
|
-
? onSearchSuggestion(query.toLowerCase()).map(createSuggestion)
|
|
131
|
-
: [];
|
|
132
|
-
const cityAlternatives = getCityAlternativeSuggestions(query.toLowerCase()).map(createSuggestion);
|
|
133
|
-
return [...customSuggestions, ...cityAlternatives].slice(0, 4);
|
|
134
|
-
}
|
|
135
|
-
function updateStore(result) {
|
|
136
|
-
if (!result) {
|
|
137
|
-
updateSearchResult({
|
|
138
|
-
items: [],
|
|
139
|
-
result: false,
|
|
140
|
-
});
|
|
141
|
-
handleFitBounds();
|
|
142
|
-
return;
|
|
143
|
-
}
|
|
144
|
-
const expandedBoundingBox = expandBoundingBox(result.bbox, kmPadding);
|
|
145
|
-
const originalBoundingBox = result.bbox;
|
|
146
|
-
const mapData = getMapboxData();
|
|
147
|
-
const filteredData = mapData.filter((item) => withinBoundingBox(item.coordinates, expandedBoundingBox));
|
|
148
|
-
map.fitBounds(expandedBoundingBox);
|
|
149
|
-
updateSearchIsMoving(true);
|
|
150
|
-
map.once('moveend', () => {
|
|
151
|
-
updateSearchIsMoving(false);
|
|
152
|
-
});
|
|
153
|
-
updateSearchResult({
|
|
154
|
-
items: filteredData,
|
|
155
|
-
result,
|
|
156
|
-
originalBoundingBox,
|
|
157
|
-
expandedBoundingBox,
|
|
158
|
-
});
|
|
159
|
-
}
|
|
160
|
-
function handleSuggestionClick(feature) {
|
|
161
|
-
inputElement.value = feature.place_name;
|
|
162
|
-
clearSuggestionsContainer();
|
|
163
|
-
updateStore(feature);
|
|
164
|
-
}
|
|
165
|
-
function renderSuggestions(suggestions) {
|
|
166
|
-
clearSuggestionsContainer();
|
|
167
|
-
suggestionsElement.append(h("ul", { class: "map-search__suggestions" }, suggestions.features.map((feature) => (h("li", { class: "map-search__suggestion" },
|
|
168
|
-
h("button", { onClick: () => handleSuggestionClick(feature) }, feature.place_name))))));
|
|
169
|
-
}
|
|
170
|
-
};
|
|
171
|
-
export default search;
|
|
172
|
-
//# sourceMappingURL=search.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../../../../../../src/molecules/map/utilities/mapbox/search/search.tsx"],"names":[],"mappings":"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","sourcesContent":["import { h } from '@atomify/jsx';\nimport { BoundingBox, MapOptions, MapSearchOptions, MapSearchSuggestion } from '@bpd-library/types';\nimport {\n calculateBoundingBoxCenter,\n debounce,\n environment,\n expandBoundingBox,\n getCountryBoundingBox,\n useClickOutside,\n withinBoundingBox,\n} from '@bpd-library/utilities';\nimport mapboxgl from 'mapbox-gl';\n\nimport {\n clearSearchResult,\n getMapboxData,\n MapState,\n mapStore,\n updateSearchIsMoving,\n updateSearchResult,\n} from '../../../store/map';\nimport { fitBounds } from '../../fit-bounds';\nimport getCityAlternativeSuggestions from './alternative-city-suggestions';\n\nconst MIN_KM_PADDING = 10;\n\nconst search = async (\n map: mapboxgl.Map,\n { hook, kmPadding = MIN_KM_PADDING, onSearchSuggestion }: MapSearchOptions,\n { searchCountryIsoCodes = ['nl', 'de'], language = 'nl' }: MapOptions,\n) => {\n const element = document.querySelector(hook);\n const bounds = getCountryBoundingBox(searchCountryIsoCodes);\n\n if (!element) {\n if (environment.isLocal) console.error(`Search element can't be found: ${hook}`);\n return;\n }\n\n const inputElement = element.querySelector('[js-hook-map-search-input]') as HTMLInputElement;\n const form = inputElement.closest<HTMLFormElement>('form');\n const suggestionsElement = element.querySelector(\n '[js-hook-map-search-suggestions]',\n ) as HTMLElement;\n const buttonElement = element.querySelector('[js-hook-map-search-button]') as HTMLButtonElement;\n\n let geocoder: any | undefined;\n let suggestions: any | undefined;\n\n init();\n\n async function init() {\n // Dynamically import geocoder library\n const { default: MapboxGeocoder } = await import('@mapbox/mapbox-gl-geocoder');\n\n geocoder = new MapboxGeocoder({\n accessToken: mapboxgl.accessToken,\n mapboxgl,\n countries: searchCountryIsoCodes.join(',').toUpperCase(),\n types: 'region,district,place,neighborhood',\n localGeocoder,\n language,\n enableEventLogging: false,\n marker: false,\n });\n\n map.addControl(geocoder);\n\n bindEvents();\n subscribe();\n }\n\n function bindEvents() {\n const debouncedOnKeyDown = debounce(onKeyDown, 300);\n\n inputElement.addEventListener('keydown', debouncedOnKeyDown);\n buttonElement.addEventListener('click', handleButtonClick);\n form?.addEventListener('submit', (e) => e.preventDefault());\n\n useClickOutside(inputElement!, handleClickOutside);\n\n geocoder.on('results', (results: any) => {\n suggestions = results;\n\n renderSuggestions(suggestions);\n });\n }\n\n function subscribe() {\n handleManualSearch(mapStore.getState());\n mapStore.subscribe(handleManualSearch, ['manualSearch']);\n }\n\n function handleManualSearch({ manualSearch }: MapState) {\n if (manualSearch) {\n geocoder.setInput(manualSearch).on('results', function handleResults(results: any) {\n suggestions = results;\n\n submitFirstSuggestion();\n\n geocoder.off('results', handleResults);\n });\n }\n }\n\n function handleClickOutside() {\n clearSuggestionsContainer();\n }\n\n function handleFitBounds() {\n return fitBounds(map, bounds);\n }\n\n function onKeyDown(e: KeyboardEvent) {\n const { value } = inputElement!;\n\n if (e.key === 'Enter') {\n if (!value) {\n clearAll();\n return;\n } else {\n geocoder.on('results', function handleEnter() {\n submitFirstSuggestion();\n inputElement?.blur();\n\n geocoder.off('results', handleEnter);\n });\n }\n }\n\n if (value.length >= 3) {\n geocoder.setInput(value);\n } else {\n suggestions = undefined;\n handleFitBounds();\n clearSuggestionsContainer();\n clearSearchResult();\n }\n }\n\n function handleButtonClick() {\n const { value } = inputElement!;\n\n if (!value) {\n clearAll();\n } else {\n submitFirstSuggestion();\n }\n }\n\n function submitFirstSuggestion() {\n const firstSuggestion = suggestions?.features[0];\n\n updateStore(firstSuggestion);\n clearSuggestionsContainer();\n }\n\n function clearSuggestionsContainer() {\n suggestionsElement.innerHTML = '';\n }\n\n function clearAll() {\n suggestions = undefined;\n handleFitBounds();\n clearSuggestionsContainer();\n clearSearchResult();\n inputElement?.blur();\n }\n\n function localGeocoder(query: string) {\n const createSuggestion = ({ title, bbox, type, id }: MapSearchSuggestion) => {\n const center = calculateBoundingBoxCenter(bbox);\n\n return {\n place_name: title,\n bbox,\n center,\n type,\n id,\n };\n };\n\n const customSuggestions = onSearchSuggestion\n ? onSearchSuggestion(query.toLowerCase()).map(createSuggestion)\n : [];\n const cityAlternatives = getCityAlternativeSuggestions(query.toLowerCase()).map(\n createSuggestion,\n );\n\n return [...customSuggestions, ...cityAlternatives].slice(0, 4);\n }\n\n function updateStore(result: any) {\n if (!result) {\n updateSearchResult({\n items: [],\n result: false,\n });\n\n handleFitBounds();\n\n return;\n }\n\n const expandedBoundingBox = expandBoundingBox(result.bbox as BoundingBox, kmPadding);\n const originalBoundingBox = result.bbox as BoundingBox;\n\n const mapData = getMapboxData();\n const filteredData = mapData.filter((item) =>\n withinBoundingBox(item.coordinates, expandedBoundingBox),\n );\n\n map.fitBounds(expandedBoundingBox);\n\n // Update searchIsMoving boolean in store. Is used to block other focus interactions when searched.\n updateSearchIsMoving(true);\n\n map.once('moveend', () => {\n updateSearchIsMoving(false);\n });\n\n updateSearchResult({\n items: filteredData,\n result,\n originalBoundingBox,\n expandedBoundingBox,\n });\n }\n\n function handleSuggestionClick(feature: any) {\n inputElement.value = feature.place_name;\n\n clearSuggestionsContainer();\n updateStore(feature);\n }\n\n function renderSuggestions(suggestions: any) {\n clearSuggestionsContainer();\n\n suggestionsElement.append(\n <ul class=\"map-search__suggestions\">\n {suggestions.features.map((feature: any) => (\n <li class=\"map-search__suggestion\">\n <button onClick={() => handleSuggestionClick(feature)}>\n {feature.place_name}\n </button>\n </li>\n ))}\n </ul>,\n );\n }\n};\n\nexport default search;\n"]}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { h } from '@atomify/jsx';
|
|
2
|
-
import { calculateCenter } from '@bpd-library/utilities';
|
|
3
|
-
import { Popup } from 'mapbox-gl';
|
|
4
|
-
import { Tooltip } from '../../../tooltip';
|
|
5
|
-
let currentTooltip;
|
|
6
|
-
const addTooltip = (map, coordinates, mapDataItem, openInTab) => {
|
|
7
|
-
removeTooltip();
|
|
8
|
-
const { tooltip, url } = mapDataItem;
|
|
9
|
-
if (!tooltip)
|
|
10
|
-
return;
|
|
11
|
-
const center = calculateCenter(coordinates);
|
|
12
|
-
currentTooltip = new Popup({
|
|
13
|
-
closeButton: false,
|
|
14
|
-
offset: 20,
|
|
15
|
-
})
|
|
16
|
-
.setLngLat(center)
|
|
17
|
-
.setDOMContent(h(Tooltip, Object.assign({}, tooltip, { url: url, openInTab: openInTab })))
|
|
18
|
-
.addTo(map);
|
|
19
|
-
};
|
|
20
|
-
const removeTooltip = () => {
|
|
21
|
-
currentTooltip === null || currentTooltip === void 0 ? void 0 : currentTooltip.remove();
|
|
22
|
-
};
|
|
23
|
-
export { addTooltip, removeTooltip };
|
|
24
|
-
//# sourceMappingURL=tooltip.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tooltip.js","sourceRoot":"","sources":["../../../../../../src/molecules/map/utilities/mapbox/tooltip.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AAEjC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,IAAI,cAA0C,CAAC;AAE/C,MAAM,UAAU,GAAG,CACf,GAAiB,EACjB,WAAwB,EACxB,WAAwB,EACxB,SAAmB,EACrB,EAAE;IACA,aAAa,EAAE,CAAC;IAEhB,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,WAAW,CAAC;IAErC,IAAI,CAAC,OAAO;QAAE,OAAO;IAErB,MAAM,MAAM,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;IAE5C,cAAc,GAAG,IAAI,KAAK,CAAC;QACvB,WAAW,EAAE,KAAK;QAClB,MAAM,EAAE,EAAE;KACb,CAAC;SACG,SAAS,CAAC,MAAM,CAAC;SACjB,aAAa,CAAC,EAAC,OAAO,oBAAK,OAAO,IAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,IAAI,CAAC;SACvE,KAAK,CAAC,GAAG,CAAC,CAAC;AACpB,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,GAAG,EAAE;IACvB,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,MAAM,GAAG;AAC7B,CAAC,CAAC;AAEF,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC","sourcesContent":["import { h } from '@atomify/jsx';\nimport { Coordinates, MapDataItem } from '@bpd-library/types';\nimport { calculateCenter } from '@bpd-library/utilities';\nimport { Popup } from 'mapbox-gl';\n\nimport { Tooltip } from '../../../tooltip';\n\nlet currentTooltip: mapboxgl.Popup | undefined;\n\nconst addTooltip = (\n map: mapboxgl.Map,\n coordinates: Coordinates,\n mapDataItem: MapDataItem,\n openInTab?: boolean,\n) => {\n removeTooltip();\n\n const { tooltip, url } = mapDataItem;\n\n if (!tooltip) return;\n\n const center = calculateCenter(coordinates);\n\n currentTooltip = new Popup({\n closeButton: false,\n offset: 20,\n })\n .setLngLat(center)\n .setDOMContent(<Tooltip {...tooltip} url={url} openInTab={openInTab} />)\n .addTo(map);\n};\n\nconst removeTooltip = () => {\n currentTooltip?.remove();\n};\n\nexport { addTooltip, removeTooltip };\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/molecules/tooltip/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC","sourcesContent":["export * from './tooltip';\n"]}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { h } from '@atomify/jsx';
|
|
2
|
-
import { ButtonA } from '../../atoms/button';
|
|
3
|
-
import { Image } from '../../atoms/image';
|
|
4
|
-
export const Tooltip = ({ title, image, tags, buttonLabel, url, openInTab }) => (h("div", { class: "c-tooltip" },
|
|
5
|
-
image && (h("div", { class: "tooltip__image" },
|
|
6
|
-
h(Image, { image: image, preload: { width: 180, height: 100 }, alt: title }))),
|
|
7
|
-
h("div", { class: "tooltip__wrapper" },
|
|
8
|
-
h("h3", { class: "tooltip__title" }, title), tags === null || tags === void 0 ? void 0 :
|
|
9
|
-
tags.map((tag) => (h("span", { class: "tooltip__meta" }, tag))),
|
|
10
|
-
url && buttonLabel && (h(ButtonA, { classes: "tooltip__button", url: url, target: openInTab ? '_blank' : '_self', label: buttonLabel, size: "small" })))));
|
|
11
|
-
//# sourceMappingURL=tooltip.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tooltip.js","sourceRoot":"","sources":["../../../../src/molecules/tooltip/tooltip.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AAGjC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAO1C,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,SAAS,EAAW,EAAE,EAAE,CAAC,CACrF,WAAK,KAAK,EAAC,WAAW;IACjB,KAAK,IAAI,CACN,WAAK,KAAK,EAAC,gBAAgB;QACvB,EAAC,KAAK,IAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,KAAK,GAAI,CACvE,CACT;IACD,WAAK,KAAK,EAAC,kBAAkB;QACzB,UAAI,KAAK,EAAC,gBAAgB,IAAE,KAAK,CAAM,EACtC,IAAI,aAAJ,IAAI;QAAJ,IAAI,CAAE,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAChB,YAAM,KAAK,EAAC,eAAe,IAAE,GAAG,CAAQ,CAC3C;QAEA,GAAG,IAAI,WAAW,IAAI,CACnB,EAAC,OAAO,IACJ,OAAO,EAAC,iBAAiB,EACzB,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,EACtC,KAAK,EAAE,WAAW,EAClB,IAAI,EAAC,OAAO,GACd,CACL,CACC,CACJ,CACT,CAAC","sourcesContent":["import { h } from '@atomify/jsx';\nimport { MapTooltip } from '@bpd-library/types';\n\nimport { ButtonA } from '../../atoms/button';\nimport { Image } from '../../atoms/image';\n\ninterface Tooltip extends MapTooltip {\n url?: string | null;\n openInTab?: boolean;\n}\n\nexport const Tooltip = ({ title, image, tags, buttonLabel, url, openInTab }: Tooltip) => (\n <div class=\"c-tooltip\">\n {image && (\n <div class=\"tooltip__image\">\n <Image image={image} preload={{ width: 180, height: 100 }} alt={title} />\n </div>\n )}\n <div class=\"tooltip__wrapper\">\n <h3 class=\"tooltip__title\">{title}</h3>\n {tags?.map((tag) => (\n <span class=\"tooltip__meta\">{tag}</span>\n ))}\n\n {url && buttonLabel && (\n <ButtonA\n classes=\"tooltip__button\"\n url={url}\n target={openInTab ? '_blank' : '_self'}\n label={buttonLabel}\n size=\"small\"\n />\n )}\n </div>\n </div>\n);\n"]}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
interface ButtonInterface {
|
|
2
|
-
label: string | Text;
|
|
3
|
-
variant?: string;
|
|
4
|
-
icon?: string;
|
|
5
|
-
size?: string;
|
|
6
|
-
classes?: string;
|
|
7
|
-
type?: string;
|
|
8
|
-
url?: string;
|
|
9
|
-
hook?: string;
|
|
10
|
-
controls?: string;
|
|
11
|
-
onClick?: Function;
|
|
12
|
-
target?: string;
|
|
13
|
-
attr?: {};
|
|
14
|
-
}
|
|
15
|
-
declare const Button: (data: ButtonInterface) => any;
|
|
16
|
-
declare const ButtonA: (data: ButtonInterface) => any;
|
|
17
|
-
export { Button, ButtonA };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './button';
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
interface ColInterface {
|
|
2
|
-
extraClass?: string;
|
|
3
|
-
children?: NodeList;
|
|
4
|
-
cols?: (number | undefined)[];
|
|
5
|
-
push?: (number | undefined)[];
|
|
6
|
-
pull?: (number | undefined)[];
|
|
7
|
-
pre?: (number | undefined)[];
|
|
8
|
-
post?: (number | undefined)[];
|
|
9
|
-
}
|
|
10
|
-
export declare const Col: ({ extraClass, children, cols, push, pull, pre, post, }: ColInterface) => any;
|
|
11
|
-
export {};
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
export interface RangeSliderProps {
|
|
2
|
-
min: number;
|
|
3
|
-
max: number;
|
|
4
|
-
increment: number;
|
|
5
|
-
start: number[];
|
|
6
|
-
onChange: (e: CustomEvent) => void;
|
|
7
|
-
name: string;
|
|
8
|
-
classes?: string;
|
|
9
|
-
disabled?: boolean;
|
|
10
|
-
}
|
|
11
|
-
export declare const RangeSliderElement: ({ classes, disabled, min, max, increment, start, name, onChange, }: RangeSliderProps) => any;
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { Setting, Settings } from './utilities/image';
|
|
2
|
-
export interface ImageInterface {
|
|
3
|
-
image: string;
|
|
4
|
-
alt: string;
|
|
5
|
-
settings?: Settings;
|
|
6
|
-
preload?: Setting;
|
|
7
|
-
srcset?: string;
|
|
8
|
-
classes?: string;
|
|
9
|
-
caption?: string;
|
|
10
|
-
hidden?: boolean;
|
|
11
|
-
objectFit?: boolean | 'contain';
|
|
12
|
-
disableCrossFade?: boolean;
|
|
13
|
-
}
|
|
14
|
-
export declare const Image: (data: ImageInterface) => any;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './image';
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
export interface Setting {
|
|
2
|
-
width?: number;
|
|
3
|
-
height?: number;
|
|
4
|
-
src?: boolean | undefined;
|
|
5
|
-
}
|
|
6
|
-
export interface Settings {
|
|
7
|
-
[key: string]: Setting;
|
|
8
|
-
}
|
|
9
|
-
export declare class BPDImage extends HTMLElement {
|
|
10
|
-
img: HTMLImageElement;
|
|
11
|
-
componentDidLoad(): void;
|
|
12
|
-
disconnectedCallback(): void;
|
|
13
|
-
private parseSettings;
|
|
14
|
-
private generateSrc;
|
|
15
|
-
private generateSrcset;
|
|
16
|
-
private loadImage;
|
|
17
|
-
private renderImage;
|
|
18
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
declare type ImageElement = HTMLImageElement | HTMLImageElement[];
|
|
2
|
-
export default class ObjectFit {
|
|
3
|
-
static polyfillObjectFit(element: ImageElement): void;
|
|
4
|
-
static getObjectfitImages(element: ImageElement): HTMLImageElement[];
|
|
5
|
-
private static polyfillImage;
|
|
6
|
-
}
|
|
7
|
-
export {};
|