UNPKG

maplibre-gl

Version:

BSD licensed community fork of mapbox-gl, a WebGL interactive maps library

25 lines (20 loc) 1 kB
import {rtlWorkerPlugin} from '../source/rtl_text_plugin_worker.ts'; import {applyArabicShaping} from './arabic_shaping.ts'; import type {SymbolStyleLayer} from '../style/style_layer/symbol_style_layer.ts'; import type {Feature} from '@maplibre/maplibre-gl-style-spec'; import {type Formatted} from '@maplibre/maplibre-gl-style-spec'; function transformTextInternal(text: string, layer: SymbolStyleLayer, feature: Feature) { const transform = layer.layout.get('text-transform').evaluate(feature, {}); if (transform === 'uppercase') { text = text.toLocaleUpperCase(); } else if (transform === 'lowercase') { text = text.toLocaleLowerCase(); } return (rtlWorkerPlugin.applyArabicShaping ?? applyArabicShaping)(text); } export function transformText(text: Formatted, layer: SymbolStyleLayer, feature: Feature): Formatted { for (const section of text.sections) { section.text = transformTextInternal(section.text, layer, feature); } return text; }