UNPKG

maplibre-gl

Version:

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

50 lines (40 loc) 1.72 kB
import {PluginState, RTLPluginStatus} from './rtl_text_plugin_status'; export interface RTLTextPlugin { applyArabicShaping: (a: string) => string; processBidirectionalText: ((b: string, a: Array<number>) => Array<string>); processStyledBidirectionalText: ((c: string, b: Array<number>, a: Array<number>) => Array<[string, Array<number>]>); } class RTLWorkerPlugin implements RTLTextPlugin { applyArabicShaping: (a: string) => string = null; processBidirectionalText: ((b: string, a: Array<number>) => Array<string>) = null; processStyledBidirectionalText: ((c: string, b: Array<number>, a: Array<number>) => Array<[string, Array<number>]>) = null; pluginStatus: RTLPluginStatus = 'unavailable'; pluginURL: string = null; setState(state: PluginState) { this.pluginStatus = state.pluginStatus; this.pluginURL = state.pluginURL; } getState(): PluginState { return { pluginStatus: this.pluginStatus, pluginURL: this.pluginURL }; } setMethods(rtlTextPlugin: RTLTextPlugin) { this.applyArabicShaping = rtlTextPlugin.applyArabicShaping; this.processBidirectionalText = rtlTextPlugin.processBidirectionalText; this.processStyledBidirectionalText = rtlTextPlugin.processStyledBidirectionalText; } isParsed(): boolean { return this.applyArabicShaping != null && this.processBidirectionalText != null && this.processStyledBidirectionalText != null; } getPluginURL(): string { return this.pluginURL; } getRTLTextPluginStatus() { return this.pluginStatus; } } export const rtlWorkerPlugin = new RTLWorkerPlugin();