ark-demo/webapp/_templates/layer/new/layer.ejs.t (33 lines of code) (raw):
---
to: src/components/layers/<%= h.changeCase.pascalCase(name) -%>.js
---
import { useSelector } from 'react-redux';
import { CartoLayer } from '@deck.gl/carto';
import { selectSourceById } from '@carto/react-redux';
import { useCartoLayerProps } from '@carto/react-api';
import htmlForFeature from 'utils/htmlForFeature';
export const <%= h.changeCase.constantCase(name) %>_ID = '<%= h.changeCase.camelCase(name) %>';
export default function <%= h.changeCase.pascalCase(name) %>() {
const { <%= h.changeCase.camelCase(name) %> } = useSelector((state) => state.carto.layers);
const source = useSelector((state) => selectSourceById(state, <%= h.changeCase.camelCase(name) %>?.source));
const cartoLayerProps = useCartoLayerProps({ source });
if (<%= h.changeCase.camelCase(name) %> && source) {
return new CartoLayer({
...cartoLayerProps,
id: <%= h.changeCase.constantCase(name) %>_ID,
getFillColor: [241, 109, 122],
pointRadiusMinPixels: 2,
getLineColor: [255, 0, 0],
lineWidthMinPixels: 1,
pickable: true,
onHover: (info) => {
if (info?.object) {
info.object = {
html: htmlForFeature({ feature: info.object }),
style: {},
};
}
},
});
}
}