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: {}, }; } }, }); } }