@antv/l7-layers 2.8.32 → 2.8.33

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.
Files changed (36) hide show
  1. package/es/Geometry/models/plane.d.ts +13 -11
  2. package/es/Geometry/models/plane.js +134 -110
  3. package/es/Geometry/models/plane.js.map +1 -1
  4. package/es/canvas/models/canvas.js +5 -3
  5. package/es/canvas/models/canvas.js.map +1 -1
  6. package/es/core/BaseLayer.d.ts +5 -1
  7. package/es/core/BaseLayer.js +47 -0
  8. package/es/core/BaseLayer.js.map +1 -1
  9. package/es/line/models/line.js +1 -0
  10. package/es/line/models/line.js.map +1 -1
  11. package/es/point/models/fill.js +1 -0
  12. package/es/point/models/fill.js.map +1 -1
  13. package/es/point/models/simplePoint.js +1 -0
  14. package/es/point/models/simplePoint.js.map +1 -1
  15. package/es/polygon/models/fill.js +1 -0
  16. package/es/polygon/models/fill.js.map +1 -1
  17. package/es/utils/layerData.d.ts +2 -0
  18. package/es/utils/layerData.js +152 -0
  19. package/es/utils/layerData.js.map +1 -0
  20. package/lib/Geometry/models/plane.js +133 -108
  21. package/lib/Geometry/models/plane.js.map +1 -1
  22. package/lib/canvas/models/canvas.js +5 -3
  23. package/lib/canvas/models/canvas.js.map +1 -1
  24. package/lib/core/BaseLayer.js +47 -0
  25. package/lib/core/BaseLayer.js.map +1 -1
  26. package/lib/line/models/line.js +1 -0
  27. package/lib/line/models/line.js.map +1 -1
  28. package/lib/point/models/fill.js +1 -0
  29. package/lib/point/models/fill.js.map +1 -1
  30. package/lib/point/models/simplePoint.js +1 -0
  31. package/lib/point/models/simplePoint.js.map +1 -1
  32. package/lib/polygon/models/fill.js +1 -0
  33. package/lib/polygon/models/fill.js.map +1 -1
  34. package/lib/utils/layerData.js +163 -0
  35. package/lib/utils/layerData.js.map +1 -0
  36. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/core/BaseLayer.ts"],"names":["SyncBailHook","SyncHook","SyncWaterfallHook","BlendType","lazyInject","TYPES","Source","encodePickingColor","EventEmitter","BlendTypes","handleStyleDataMapping","createMultiPassRenderer","normalizePasses","updateShape","layerIdCounter","BaseLayer","IGlobalConfigService","config","dataSourceNeedUpdate","dataMappingNeedUpdate","filterNeedUpdate","featureScaleNeedUpdate","StyleAttrNeedUpdate","init","afterInit","beforeRender","beforeRenderData","afterRender","beforePickingEncode","afterPickingEncode","beforeHighlight","afterHighlight","beforeSelect","afterSelect","beforeDestroy","afterDestroy","enable","dataState","getLayerConfig","autoFit","fitBoundsOptions","fitBounds","reRender","name","id","zIndex","rawConfig","maskLayer","masks","push","layerIndex","indexOf","splice","destroy","configService","configToUpdate","inited","needUpdateConfig","sceneId","container","get","SceneID","setLayerConfig","sceneContainer","color","bottomColor","plugin","plugins","layerType","iconService","IIconService","fontService","IFontService","rendererService","IRendererService","layerService","ILayerService","interactionService","IInteractionService","pickingService","IPickingService","mapService","IMapService","enableMultiPassRenderer","passes","length","on","renderLayers","cameraService","ICameraService","coordinateService","ICoordinateSystemService","shaderModuleService","IShaderModuleService","postProcessingPassFactory","IFactoryPostProcessingPass","normalPassFactory","IFactoryNormalPass","styleAttributeService","IStyleAttributeService","multiPassRenderer","IMultiPassRenderer","setLayer","pendingStyleAttributes","forEach","attributeName","attributeField","attributeValues","updateOptions","updateStyleAttribute","scale","field","splitValuesAndCallbackInAttribute","getAll","ILayerPlugin","apply","hooks","call","emit","target","type","updateLayerConfig","getDefaultConfig","animateOption","startAnimate","aniamateStatus","values","lastShape","getLayerStyleAttribute","currentShape","shapeOption","options","rawAnimate","data","setSource","sourceOption","clusterZoom","layerSource","setData","currentSource","getSource","source","sourceEvent","lastConfig","rest","pass","postProcessingPass","getPostProcessor","getPostProcessingPassByName","styleNeedUpdate","mask","clearModels","models","layerModel","buildModels","cfg","scaleOptions","rendering","getEncodedData","renderModels","getRenderFlag","render","activeOption","enableHighlight","highlightColor","mix","activeMix","x","y","pick","pickedFeatureID","then","setTimeout","option","enableSelect","selectColor","selectMix","blend","layerModelNeedUpdate","visible","index","updateLayerRenderList","currentPickId","selectedFeatureID","zoom","getZoom","minZoom","Infinity","maxZoom","enableMultiPass","currentPasses","setRenderFlag","getViewportSize","width","height","resize","extent","isValid","some","v","Math","abs","isDestroied","layerChildren","map","child","off","clearAllAttributes","cleanRemove","removeAllListeners","model","getLayerStyleAttributes","filter","attribute","needRescale","needRemapping","needRegenerateVertices","cluster","updateClusterData","encodedData","getLayerAttributeScale","invertExtent","items","range","item","value","ticks","domain","triggerHover","box","cb","boxPickLayer","moduleName","vertexShader","fragmentShader","triangulation","segmentNumber","registerModule","vs","fs","getModule","uniforms","createModel","createAttributesAndIndices","attributes","elements","normal","createAttributes","clock","getDelta","animateStartTime","getElapsedTime","stopAnimate","isPick","eventNames","isVisible","Error","isPicking","renderUpdate","draw","getUninforms","getShaderPickStat","time","console","warn","valuesOrCallback","defaultValues","undefined","callback"],"mappings":"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","sourcesContent":["// @ts-ignore\nimport { SyncBailHook, SyncHook, SyncWaterfallHook } from '@antv/async-hook';\nimport {\n BlendType,\n gl,\n IActiveOption,\n IAnimateOption,\n ICameraService,\n ICoordinateSystemService,\n IDataState,\n IEncodeFeature,\n IFontService,\n IGlobalConfigService,\n IIconService,\n IInteractionService,\n ILayer,\n ILayerConfig,\n ILayerModel,\n ILayerModelInitializationOptions,\n ILayerPlugin,\n ILayerService,\n ILegendClassificaItem,\n ILegendSegmentItem,\n IMapService,\n IModel,\n IModelInitializationOptions,\n IMultiPassRenderer,\n IPass,\n IPickingService,\n IPostProcessingPass,\n IRendererService,\n IScale,\n IScaleOptions,\n IShaderModuleService,\n ISource,\n ISourceCFG,\n IStyleAttributeInitializationOptions,\n IStyleAttributeService,\n IStyleAttributeUpdateOptions,\n lazyInject,\n LegendItems,\n ScaleAttributeType,\n ScaleTypeName,\n ScaleTypes,\n StyleAttributeField,\n StyleAttributeOption,\n TYPES,\n} from '@antv/l7-core';\nimport Source from '@antv/l7-source';\nimport { encodePickingColor } from '@antv/l7-utils';\nimport { EventEmitter } from 'eventemitter3';\nimport { Container } from 'inversify';\nimport { isEqual, isFunction, isObject, isUndefined } from 'lodash';\nimport { BlendTypes } from '../utils/blend';\nimport { handleStyleDataMapping } from '../utils/dataMappingStyle';\nimport {\n createMultiPassRenderer,\n normalizePasses,\n} from '../utils/multiPassRender';\nimport { updateShape } from '../utils/updateShape';\n/**\n * 分配 layer id\n */\nlet layerIdCounter = 0;\n\nexport default class BaseLayer<ChildLayerStyleOptions = {}> extends EventEmitter\n implements ILayer {\n public id: string = `${layerIdCounter++}`;\n public name: string = `${layerIdCounter}`;\n public type: string;\n public visible: boolean = true;\n public zIndex: number = 0;\n public minZoom: number;\n public maxZoom: number;\n public inited: boolean = false;\n public layerModelNeedUpdate: boolean = false;\n public pickedFeatureID: number | null = null;\n public selectedFeatureID: number | null = null;\n public styleNeedUpdate: boolean = false;\n public rendering: boolean;\n public clusterZoom: number = 0; // 聚合等级标记\n public layerType?: string | undefined;\n public isLayerGroup: boolean = false;\n\n public dataState: IDataState = {\n dataSourceNeedUpdate: false,\n dataMappingNeedUpdate: false,\n filterNeedUpdate: false,\n featureScaleNeedUpdate: false,\n StyleAttrNeedUpdate: false,\n };\n // 生命周期钩子\n public hooks = {\n init: new SyncBailHook(),\n afterInit: new SyncBailHook(),\n beforeRender: new SyncBailHook(),\n beforeRenderData: new SyncWaterfallHook(),\n afterRender: new SyncHook(),\n beforePickingEncode: new SyncHook(),\n afterPickingEncode: new SyncHook(),\n beforeHighlight: new SyncHook(['pickedColor']),\n afterHighlight: new SyncHook(),\n beforeSelect: new SyncHook(['pickedColor']),\n afterSelect: new SyncHook(),\n beforeDestroy: new SyncHook(),\n afterDestroy: new SyncHook(),\n };\n\n // 待渲染 model 列表\n public models: IModel[] = [];\n\n // 每个 Layer 都有一个\n public multiPassRenderer: IMultiPassRenderer;\n\n // 注入插件集\n public plugins: ILayerPlugin[];\n\n public sourceOption: {\n data: any;\n options?: ISourceCFG;\n };\n\n public layerModel: ILayerModel;\n\n public shapeOption: {\n field: any;\n values: any;\n };\n\n // TODO: 记录 sceneContainer 供创建子图层的时候使用 如 imageTileLayer\n public sceneContainer: Container | undefined;\n // TODO: 用于保存子图层对象\n public layerChildren: ILayer[] = [];\n public masks: ILayer[] = [];\n\n @lazyInject(TYPES.IGlobalConfigService)\n protected readonly configService: IGlobalConfigService;\n\n // @lazyInject(TYPES.IShaderModuleService)\n // protected readonly shaderModuleService: IShaderModuleService;\n\n protected shaderModuleService: IShaderModuleService;\n protected cameraService: ICameraService;\n\n protected coordinateService: ICoordinateSystemService;\n\n protected iconService: IIconService;\n\n protected fontService: IFontService;\n\n protected pickingService: IPickingService;\n\n protected rendererService: IRendererService;\n\n protected layerService: ILayerService;\n\n protected interactionService: IInteractionService;\n\n protected mapService: IMapService;\n\n protected styleAttributeService: IStyleAttributeService;\n\n protected layerSource: Source;\n\n protected postProcessingPassFactory: (\n name: string,\n ) => IPostProcessingPass<unknown>;\n protected normalPassFactory: (name: string) => IPass<unknown>;\n\n protected animateOptions: IAnimateOption = { enable: false };\n\n /**\n * 图层容器\n */\n private container: Container;\n\n private encodedData: IEncodeFeature[];\n\n private configSchema: object;\n\n private currentPickId: number | null = null;\n\n private rawConfig: Partial<ILayerConfig & ChildLayerStyleOptions>;\n\n private needUpdateConfig: Partial<ILayerConfig & ChildLayerStyleOptions>;\n\n /**\n * 待更新样式属性,在初始化阶段完成注册\n */\n private pendingStyleAttributes: Array<{\n attributeName: string;\n attributeField: StyleAttributeField;\n attributeValues?: StyleAttributeOption;\n defaultName?: string;\n updateOptions?: Partial<IStyleAttributeUpdateOptions>;\n }> = [];\n\n private scaleOptions: IScaleOptions = {};\n\n private animateStartTime: number;\n\n private aniamateStatus: boolean = false;\n\n // TODO: layer 保底颜色\n private bottomColor = 'rgba(0, 0, 0, 0)';\n\n private isDestroied: boolean = false;\n\n // private pickingPassRender: IPass<'pixelPicking'>;\n\n constructor(config: Partial<ILayerConfig & ChildLayerStyleOptions> = {}) {\n super();\n this.name = config.name || this.id;\n this.zIndex = config.zIndex || 0;\n this.rawConfig = config;\n }\n\n public addMaskLayer(maskLayer: ILayer) {\n this.masks.push(maskLayer);\n }\n\n public removeMaskLayer(maskLayer: ILayer) {\n const layerIndex = this.masks.indexOf(maskLayer);\n if (layerIndex > -1) {\n this.masks.splice(layerIndex, 1);\n }\n maskLayer.destroy();\n }\n\n public getLayerConfig() {\n return this.configService.getLayerConfig<ChildLayerStyleOptions>(this.id);\n }\n\n public updateLayerConfig(\n configToUpdate: Partial<ILayerConfig | ChildLayerStyleOptions>,\n ) {\n if (!this.inited) {\n this.needUpdateConfig = {\n ...this.needUpdateConfig,\n ...configToUpdate,\n };\n } else {\n const sceneId = this.container.get<string>(TYPES.SceneID);\n\n // @ts-ignore\n handleStyleDataMapping(configToUpdate, this); // 处理 style 中进行数据映射的属性字段\n\n this.configService.setLayerConfig(sceneId, this.id, {\n ...this.configService.getLayerConfig(this.id),\n ...this.needUpdateConfig,\n ...configToUpdate,\n });\n this.needUpdateConfig = {};\n }\n }\n\n /**\n * 注入图层容器,父容器为场景容器\n * RootContainer 1\n * -> SceneContainer 1.*\n * -> LayerContainer 1.*\n */\n public setContainer(container: Container, sceneContainer: Container) {\n this.container = container;\n this.sceneContainer = sceneContainer;\n }\n\n public getContainer() {\n return this.container;\n }\n\n public setBottomColor(color: string) {\n this.bottomColor = color;\n }\n\n public getBottomColor() {\n return this.bottomColor;\n }\n\n public addPlugin(plugin: ILayerPlugin): ILayer {\n // TODO: 控制插件注册顺序\n // @example:\n // pointLayer.addPlugin(new MyCustomPlugin(), {\n // before: 'L7BuiltinPlugin'\n // });\n this.plugins.push(plugin);\n return this;\n }\n\n public init() {\n // 设置配置项\n const sceneId = this.container.get<string>(TYPES.SceneID);\n // 初始化图层配置项\n // const { enableMultiPassRenderer = false } = this.rawConfig;\n // this.configService.setLayerConfig(sceneId, this.id, {\n // enableMultiPassRenderer,\n // });\n this.configService.setLayerConfig(sceneId, this.id, this.rawConfig);\n this.layerType = this.rawConfig.layerType;\n\n // 全局容器服务\n\n // 场景容器服务\n this.iconService = this.container.get<IIconService>(TYPES.IIconService);\n this.fontService = this.container.get<IFontService>(TYPES.IFontService);\n\n this.rendererService = this.container.get<IRendererService>(\n TYPES.IRendererService,\n );\n this.layerService = this.container.get<ILayerService>(TYPES.ILayerService);\n this.interactionService = this.container.get<IInteractionService>(\n TYPES.IInteractionService,\n );\n\n this.pickingService = this.container.get<IPickingService>(\n TYPES.IPickingService,\n );\n this.mapService = this.container.get<IMapService>(TYPES.IMapService);\n const { enableMultiPassRenderer, passes } = this.getLayerConfig();\n if (enableMultiPassRenderer && passes?.length && passes.length > 0) {\n // Tip: 兼容 multiPassRender 在 amap1 时存在的图层不同步问题 zoom\n this.mapService.on('mapAfterFrameChange', () => {\n this.renderLayers();\n });\n }\n\n this.cameraService = this.container.get<ICameraService>(\n TYPES.ICameraService,\n );\n this.coordinateService = this.container.get<ICoordinateSystemService>(\n TYPES.ICoordinateSystemService,\n );\n this.shaderModuleService = this.container.get<IShaderModuleService>(\n TYPES.IShaderModuleService,\n );\n this.postProcessingPassFactory = this.container.get(\n TYPES.IFactoryPostProcessingPass,\n );\n this.normalPassFactory = this.container.get(TYPES.IFactoryNormalPass);\n\n // 图层容器服务\n this.styleAttributeService = this.container.get<IStyleAttributeService>(\n TYPES.IStyleAttributeService,\n );\n this.multiPassRenderer = this.container.get<IMultiPassRenderer>(\n TYPES.IMultiPassRenderer,\n );\n this.multiPassRenderer.setLayer(this);\n\n // 完成样式服务注册完成前添加的属性\n this.pendingStyleAttributes.forEach(\n ({ attributeName, attributeField, attributeValues, updateOptions }) => {\n this.styleAttributeService.updateStyleAttribute(\n attributeName,\n {\n // @ts-ignore\n scale: {\n field: attributeField,\n ...this.splitValuesAndCallbackInAttribute(\n // @ts-ignore\n attributeValues,\n // @ts-ignore\n this.getLayerConfig()[attributeName],\n ),\n },\n },\n // @ts-ignore\n updateOptions,\n );\n },\n );\n this.pendingStyleAttributes = [];\n\n // 获取插件集\n this.plugins = this.container.getAll<ILayerPlugin>(TYPES.ILayerPlugin);\n // 完成插件注册,传入场景和图层容器内的服务\n for (const plugin of this.plugins) {\n plugin.apply(this, {\n rendererService: this.rendererService,\n mapService: this.mapService,\n styleAttributeService: this.styleAttributeService,\n normalPassFactory: this.normalPassFactory,\n postProcessingPassFactory: this.postProcessingPassFactory,\n });\n }\n\n // 触发 init 生命周期插件\n this.hooks.init.call();\n // this.pickingPassRender = this.normalPassFactory('pixelPicking');\n // this.pickingPassRender.init(this);\n this.hooks.afterInit.call();\n\n // 触发初始化完成事件;\n this.emit('inited', {\n target: this,\n type: 'inited',\n });\n this.emit('add', {\n target: this,\n type: 'add',\n });\n return this;\n }\n /**\n * Model初始化前需要更新Model样式\n */\n public prepareBuildModel() {\n this.inited = true;\n this.updateLayerConfig({\n ...(this.getDefaultConfig() as object),\n ...this.rawConfig,\n });\n\n // 启动动画\n const { animateOption } = this.getLayerConfig();\n if (animateOption?.enable) {\n this.layerService.startAnimate();\n this.aniamateStatus = true;\n }\n }\n public color(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n // 设置 color、size、shape、style 时由于场景服务尚未完成(并没有调用 scene.addLayer),因此暂时加入待更新属性列表\n this.updateStyleAttribute('color', field, values, updateOptions);\n\n // this.pendingStyleAttributes.push({\n // attributeName: 'color',\n // attributeField: field,\n // attributeValues: values,\n // defaultName: 'colors',\n // updateOptions,\n // });\n return this;\n }\n\n // 为对应的图层传入纹理的编号名称(point/image 在 shape 方法中传入纹理名称的方法并不通用)\n public texture(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n this.updateStyleAttribute('texture', field, values, updateOptions);\n return this;\n }\n\n public rotate(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n this.updateStyleAttribute('rotate', field, values, updateOptions);\n return this;\n }\n public size(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n this.updateStyleAttribute('size', field, values, updateOptions);\n return this;\n }\n // 对mapping后的数据过滤,scale保持不变\n public filter(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n this.updateStyleAttribute('filter', field, values, updateOptions);\n return this;\n }\n\n public shape(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n const lastShape = this.styleAttributeService?.getLayerStyleAttribute(\n 'shape',\n )?.scale?.field;\n const currentShape = field;\n this.shapeOption = {\n field,\n values,\n };\n this.updateStyleAttribute('shape', field, values, updateOptions);\n // TODO: 根据 shape 判断是否需要更新 model\n updateShape(this, lastShape, currentShape);\n return this;\n }\n public label(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n this.pendingStyleAttributes.push({\n attributeName: 'label',\n attributeField: field,\n attributeValues: values,\n updateOptions,\n });\n return this;\n }\n public animate(options: IAnimateOption | boolean) {\n let rawAnimate: Partial<IAnimateOption> = {};\n if (isObject(options)) {\n rawAnimate.enable = true;\n rawAnimate = {\n ...rawAnimate,\n ...options,\n };\n } else {\n rawAnimate.enable = options;\n }\n this.updateLayerConfig({\n animateOption: rawAnimate,\n });\n // this.animateOptions = options;\n return this;\n }\n\n public source(data: any, options?: ISourceCFG): ILayer {\n if (data?.data) {\n // 判断是否为source\n this.setSource(data);\n return this;\n }\n this.sourceOption = {\n data,\n options,\n };\n this.clusterZoom = 0;\n return this;\n }\n\n public setData(data: any, options?: ISourceCFG) {\n if (this.inited) {\n this.layerSource.setData(data, options);\n } else {\n this.on('inited', () => {\n const currentSource = this.getSource();\n if (!currentSource) {\n // 执行 setData 的时候 source 还不存在(还未执行 addLayer)\n this.source(new Source(data, options));\n this.sourceEvent();\n } else {\n this.layerSource.setData(data, options);\n }\n // this.layerSource.setData(data, options);\n });\n }\n\n return this;\n }\n public style(\n options: Partial<ChildLayerStyleOptions> & Partial<ILayerConfig>,\n ): ILayer {\n const lastConfig = this.getLayerConfig();\n const { passes, ...rest } = options;\n\n // passes 特殊处理\n if (passes) {\n normalizePasses(passes).forEach(\n (pass: [string, { [key: string]: unknown }]) => {\n const postProcessingPass = this.multiPassRenderer\n .getPostProcessor()\n .getPostProcessingPassByName(pass[0]);\n if (postProcessingPass) {\n postProcessingPass.updateOptions(pass[1]);\n }\n },\n );\n }\n\n this.rawConfig = {\n ...this.rawConfig,\n ...rest,\n };\n if (this.container) {\n this.updateLayerConfig(this.rawConfig);\n this.styleNeedUpdate = true;\n }\n\n // @ts-ignore\n if (lastConfig && lastConfig.mask === true && options.mask === false) {\n this.clearModels();\n this.models = this.layerModel.buildModels();\n }\n return this;\n }\n public scale(field: string | number | IScaleOptions, cfg?: IScale) {\n if (isObject(field)) {\n this.scaleOptions = {\n ...this.scaleOptions,\n ...field,\n };\n } else {\n this.scaleOptions[field] = cfg;\n }\n return this;\n }\n\n /**\n * 渲染所有的图层\n */\n public renderLayers(): void {\n this.rendering = true;\n\n this.layerService.renderLayers();\n\n this.rendering = false;\n }\n\n public render(): ILayer {\n // TODO: this.getEncodedData().length !== 0 这个判断是为了解决在 2.5.x 引入数据纹理后产生的 空数据渲染导致 texture 超出上限问题\n if (this.getEncodedData().length !== 0) {\n this.renderModels();\n }\n return this;\n }\n\n /**\n * renderMultiPass 专门用于渲染支持 multipass 的 layer\n */\n public async renderMultiPass() {\n if (this.getEncodedData().length !== 0) {\n if (this.multiPassRenderer && this.multiPassRenderer.getRenderFlag()) {\n // multi render 开始执行 multiPassRender 的渲染流程\n await this.multiPassRenderer.render();\n } else if (this.multiPassRenderer) {\n // renderPass 触发的渲染\n this.renderModels();\n } else {\n this.renderModels();\n }\n }\n }\n\n public active(options: IActiveOption | boolean) {\n const activeOption: Partial<ILayerConfig> = {};\n activeOption.enableHighlight = isObject(options) ? true : options;\n if (isObject(options)) {\n activeOption.enableHighlight = true;\n if (options.color) {\n activeOption.highlightColor = options.color;\n }\n if (options.mix) {\n activeOption.activeMix = options.mix;\n }\n } else {\n activeOption.enableHighlight = !!options;\n }\n this.updateLayerConfig(activeOption);\n return this;\n }\n public setActive(\n id: number | { x: number; y: number },\n options?: IActiveOption,\n ): void {\n if (isObject(id)) {\n const { x = 0, y = 0 } = id;\n this.updateLayerConfig({\n highlightColor: isObject(options)\n ? options.color\n : this.getLayerConfig().highlightColor,\n activeMix: isObject(options)\n ? options.mix\n : this.getLayerConfig().activeMix,\n });\n this.pick({ x, y });\n } else {\n this.updateLayerConfig({\n pickedFeatureID: id,\n highlightColor: isObject(options)\n ? options.color\n : this.getLayerConfig().highlightColor,\n activeMix: isObject(options)\n ? options.mix\n : this.getLayerConfig().activeMix,\n });\n this.hooks.beforeSelect\n .call(encodePickingColor(id as number) as number[])\n // @ts-ignore\n .then(() => {\n setTimeout(() => {\n this.reRender();\n }, 1);\n });\n }\n }\n\n public select(option: IActiveOption | boolean): ILayer {\n const activeOption: Partial<ILayerConfig> = {};\n activeOption.enableSelect = isObject(option) ? true : option;\n if (isObject(option)) {\n activeOption.enableSelect = true;\n if (option.color) {\n activeOption.selectColor = option.color;\n }\n if (option.mix) {\n activeOption.selectMix = option.mix;\n }\n } else {\n activeOption.enableSelect = !!option;\n }\n this.updateLayerConfig(activeOption);\n return this;\n }\n\n public setSelect(\n id: number | { x: number; y: number },\n options?: IActiveOption,\n ): void {\n if (isObject(id)) {\n const { x = 0, y = 0 } = id;\n this.updateLayerConfig({\n selectColor: isObject(options)\n ? options.color\n : this.getLayerConfig().selectColor,\n selectMix: isObject(options)\n ? options.mix\n : this.getLayerConfig().selectMix,\n });\n this.pick({ x, y });\n } else {\n this.updateLayerConfig({\n pickedFeatureID: id,\n selectColor: isObject(options)\n ? options.color\n : this.getLayerConfig().selectColor,\n selectMix: isObject(options)\n ? options.mix\n : this.getLayerConfig().selectMix,\n });\n this.hooks.beforeSelect\n .call(encodePickingColor(id as number) as number[])\n // @ts-ignore\n .then(() => {\n setTimeout(() => {\n this.reRender();\n }, 1);\n });\n }\n }\n public setBlend(type: keyof typeof BlendType): ILayer {\n this.updateLayerConfig({\n blend: type,\n });\n this.layerModelNeedUpdate = true;\n this.reRender();\n return this;\n }\n public show(): ILayer {\n this.updateLayerConfig({\n visible: true,\n });\n this.reRender();\n return this;\n }\n\n public hide(): ILayer {\n this.updateLayerConfig({\n visible: false,\n });\n this.reRender();\n return this;\n }\n public setIndex(index: number): ILayer {\n this.zIndex = index;\n this.layerService.updateLayerRenderList();\n this.layerService.renderLayers();\n return this;\n }\n\n public setCurrentPickId(id: number) {\n this.currentPickId = id;\n }\n\n public getCurrentPickId(): number | null {\n return this.currentPickId;\n }\n\n public setCurrentSelectedId(id: number) {\n this.selectedFeatureID = id;\n }\n\n public getCurrentSelectedId(): number | null {\n return this.selectedFeatureID;\n }\n public isVisible(): boolean {\n const zoom = this.mapService.getZoom();\n const {\n visible,\n minZoom = -Infinity,\n maxZoom = Infinity,\n } = this.getLayerConfig();\n return !!visible && zoom >= minZoom && zoom <= maxZoom;\n }\n\n public setMultiPass(\n enableMultiPass: boolean,\n currentPasses?: Array<string | [string, { [key: string]: unknown }]>,\n ) {\n this.updateLayerConfig({\n enableMultiPassRenderer: enableMultiPass,\n });\n if (currentPasses) {\n this.updateLayerConfig({\n passes: currentPasses,\n });\n }\n\n if (enableMultiPass) {\n const { passes = [] } = this.getLayerConfig();\n this.multiPassRenderer = createMultiPassRenderer(\n this,\n passes,\n this.postProcessingPassFactory,\n this.normalPassFactory,\n );\n this.multiPassRenderer.setRenderFlag(true);\n const { width, height } = this.rendererService.getViewportSize();\n this.multiPassRenderer.resize(width, height);\n }\n\n return this;\n }\n\n public setMinZoom(minZoom: number): ILayer {\n this.updateLayerConfig({\n minZoom,\n });\n return this;\n }\n\n public getMinZoom(): number {\n const { minZoom } = this.getLayerConfig();\n return minZoom as number;\n }\n\n public getMaxZoom(): number {\n const { maxZoom } = this.getLayerConfig();\n return maxZoom as number;\n }\n\n public get(name: string) {\n const cfg = this.getLayerConfig();\n // @ts-ignore\n return cfg[name];\n }\n\n public setMaxZoom(maxZoom: number): ILayer {\n this.updateLayerConfig({\n maxZoom,\n });\n return this;\n }\n\n public setAutoFit(autoFit: boolean): ILayer {\n this.updateLayerConfig({\n autoFit,\n });\n return this;\n }\n\n /**\n * zoom to layer Bounds\n */\n public fitBounds(fitBoundsOptions?: unknown): ILayer {\n if (!this.inited) {\n this.updateLayerConfig({\n autoFit: true,\n });\n return this;\n }\n const source = this.getSource();\n const extent = source.extent;\n const isValid = extent.some((v) => Math.abs(v) === Infinity);\n if (isValid) {\n return this;\n }\n this.mapService.fitBounds(\n [\n [extent[0], extent[1]],\n [extent[2], extent[3]],\n ],\n fitBoundsOptions,\n );\n return this;\n }\n\n public destroy() {\n if (this.isDestroied) {\n return;\n }\n\n // remove child layer\n this.layerChildren.map((child: ILayer) => child.destroy());\n this.layerChildren = [];\n\n // remove mask list\n this.masks.map((mask: ILayer) => mask.destroy());\n this.masks = [];\n\n this.hooks.beforeDestroy.call();\n // 清除sources事件\n this.layerSource.off('update', this.sourceEvent);\n\n this.multiPassRenderer.destroy();\n // console.log(this.styleAttributeService.getAttributes())\n // 清除所有属性以及关联的 vao == 销毁所有 => model this.models.forEach((model) => model.destroy());\n this.styleAttributeService.clearAllAttributes();\n\n // 执行每个图层单独的 clearModels 方法 (清除一些额外的 texture、program、buffer 等)\n\n this.hooks.afterDestroy.call();\n\n // TODO: 清除各个图层自定义的 models 资源\n this.layerModel?.clearModels();\n\n this.models = [];\n\n this.layerService.cleanRemove(this);\n\n this.emit('remove', {\n target: this,\n type: 'remove',\n });\n\n this.emit('destroy', {\n target: this,\n type: 'destroy',\n });\n\n this.removeAllListeners();\n // 解绑图层容器中的服务\n // this.container.unbind(TYPES.IStyleAttributeService);\n\n this.isDestroied = true;\n }\n public clear() {\n this.styleAttributeService.clearAllAttributes();\n // 销毁所有 model\n }\n public clearModels() {\n this.models.forEach((model) => model.destroy());\n this.layerModel.clearModels();\n this.models = [];\n }\n\n public isDirty() {\n return !!(\n this.styleAttributeService.getLayerStyleAttributes() || []\n ).filter(\n (attribute) =>\n attribute.needRescale ||\n attribute.needRemapping ||\n attribute.needRegenerateVertices,\n ).length;\n }\n\n public setSource(source: Source) {\n // 清除旧 sources 事件\n if (this.layerSource) {\n this.layerSource.off('update', this.sourceEvent);\n }\n\n this.layerSource = source;\n this.clusterZoom = 0;\n\n // 已 inited 且启用聚合进行更新聚合数据\n if (this.inited && this.layerSource.cluster) {\n const zoom = this.mapService.getZoom();\n this.layerSource.updateClusterData(zoom);\n }\n // source 可能会复用,会在其它layer被修改\n this.layerSource.on('update', this.sourceEvent);\n }\n public getSource() {\n return this.layerSource;\n }\n\n public getScaleOptions() {\n return this.scaleOptions;\n }\n\n public setEncodedData(encodedData: IEncodeFeature[]) {\n this.encodedData = encodedData;\n }\n public getEncodedData() {\n return this.encodedData;\n }\n\n public getScale(name: string): any {\n return this.styleAttributeService.getLayerAttributeScale(name);\n }\n\n public getLegendItems(name: string): LegendItems {\n const scale = this.styleAttributeService.getLayerAttributeScale(name);\n\n // 函数自定义映射,没有 scale 返回为空数组\n if (!scale) {\n return [];\n }\n\n if (scale.invertExtent) {\n // 分段类型 Quantize、Quantile、Threshold\n const items: ILegendSegmentItem[] = scale.range().map((item: number) => {\n return {\n value: scale.invertExtent(item),\n [name]: item,\n };\n });\n\n return items;\n } else if (scale.ticks) {\n // 连续类型 Continuous (Linear, Power, Log, Identity, Time)\n const items: ILegendClassificaItem[] = scale\n .ticks()\n .map((item: string) => {\n return {\n value: item,\n [name]: scale(item),\n };\n });\n\n return items;\n } else if (scale?.domain) {\n // 枚举类型 Cat\n const items: ILegendClassificaItem[] = scale\n .domain()\n .filter((item: string | number | undefined) => !isUndefined(item))\n .map((item: string | number) => {\n return {\n value: item,\n [name]: scale(item) as string,\n };\n });\n\n return items;\n }\n\n return [];\n }\n\n public pick({ x, y }: { x: number; y: number }) {\n this.interactionService.triggerHover({ x, y });\n }\n\n public boxSelect(\n box: [number, number, number, number],\n cb: (...args: any[]) => void,\n ) {\n this.pickingService.boxPickLayer(this, box, cb);\n }\n\n public buildLayerModel(\n options: ILayerModelInitializationOptions &\n Partial<IModelInitializationOptions>,\n ): IModel {\n const {\n moduleName,\n vertexShader,\n fragmentShader,\n triangulation,\n segmentNumber,\n ...rest\n } = options;\n this.shaderModuleService.registerModule(moduleName, {\n vs: vertexShader,\n fs: fragmentShader,\n });\n const { vs, fs, uniforms } = this.shaderModuleService.getModule(moduleName);\n const { createModel } = this.rendererService;\n const {\n attributes,\n elements,\n } = this.styleAttributeService.createAttributesAndIndices(\n this.encodedData,\n triangulation,\n segmentNumber,\n );\n return createModel({\n attributes,\n uniforms,\n fs,\n vs,\n elements,\n blend: BlendTypes[BlendType.normal],\n ...rest,\n });\n }\n\n public createAttrubutes(\n options: ILayerModelInitializationOptions &\n Partial<IModelInitializationOptions>,\n ) {\n const { triangulation } = options;\n // @ts-ignore\n const { attributes } = this.styleAttributeService.createAttributes(\n this.encodedData,\n triangulation,\n );\n return attributes;\n }\n\n public getTime() {\n return this.layerService.clock.getDelta();\n }\n public setAnimateStartTime() {\n this.animateStartTime = this.layerService.clock.getElapsedTime();\n }\n public stopAnimate() {\n if (this.aniamateStatus) {\n this.layerService.stopAnimate();\n this.aniamateStatus = false;\n this.updateLayerConfig({\n animateOption: {\n enable: false,\n },\n });\n }\n }\n public getLayerAnimateTime(): number {\n return this.layerService.clock.getElapsedTime() - this.animateStartTime;\n }\n\n public needPick(type: string): boolean {\n const {\n enableHighlight = true,\n enableSelect = true,\n } = this.getLayerConfig();\n // 判断layer是否监听事件;\n let isPick =\n this.eventNames().indexOf(type) !== -1 ||\n this.eventNames().indexOf('un' + type) !== -1;\n if ((type === 'click' || type === 'dblclick') && enableSelect) {\n isPick = true;\n }\n if (\n type === 'mousemove' &&\n (enableHighlight ||\n this.eventNames().indexOf('mouseenter') !== -1 ||\n this.eventNames().indexOf('unmousemove') !== -1 ||\n this.eventNames().indexOf('mouseout') !== -1)\n ) {\n isPick = true;\n }\n return this.isVisible() && isPick;\n }\n\n public buildModels() {\n throw new Error('Method not implemented.');\n }\n public rebuildModels() {\n throw new Error('Method not implemented.');\n }\n\n public async renderMulPass(multiPassRenderer: IMultiPassRenderer) {\n await multiPassRenderer.render();\n }\n\n public renderModels(isPicking?: boolean) {\n // TODO: this.getEncodedData().length > 0 这个判断是为了解决在 2.5.x 引入数据纹理后产生的 空数据渲染导致 texture 超出上限问题\n if (this.getEncodedData().length > 0) {\n if (this.layerModelNeedUpdate && this.layerModel) {\n this.models = this.layerModel.buildModels();\n this.hooks.beforeRender.call();\n this.layerModelNeedUpdate = false;\n }\n\n if (this.layerModel.renderUpdate) {\n this.layerModel.renderUpdate();\n }\n this.models.forEach((model) => {\n model.draw(\n {\n uniforms: this.layerModel.getUninforms(),\n },\n isPicking,\n );\n });\n }\n return this;\n }\n\n public updateStyleAttribute(\n type: string,\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n if (!this.inited) {\n this.pendingStyleAttributes.push({\n attributeName: type,\n attributeField: field,\n attributeValues: values,\n updateOptions,\n });\n } else {\n this.styleAttributeService.updateStyleAttribute(\n type,\n {\n // @ts-ignore\n scale: {\n field,\n ...this.splitValuesAndCallbackInAttribute(\n // @ts-ignore\n values,\n // @ts-ignore\n this.getLayerConfig()[field],\n ),\n },\n },\n // @ts-ignore\n updateOptions,\n );\n }\n }\n\n public getShaderPickStat() {\n return this.layerService.getShaderPickStat();\n }\n\n /**\n * 继承空方法\n * @param time\n */\n public setEarthTime(time: number) {\n console.warn('empty fn');\n }\n\n protected getConfigSchema() {\n throw new Error('Method not implemented.');\n }\n\n protected getModelType(): unknown {\n throw new Error('Method not implemented.');\n }\n protected getDefaultConfig() {\n return {};\n }\n\n private sourceEvent = () => {\n this.dataState.dataSourceNeedUpdate = true;\n const { autoFit, fitBoundsOptions } = this.getLayerConfig();\n if (autoFit) {\n this.fitBounds(fitBoundsOptions);\n }\n // 对外暴露事件 迁移到 DataMappingPlugin generateMapping,保证在重新重新映射后触发\n // this.emit('dataUpdate');\n this.reRender();\n };\n\n private reRender() {\n if (this.inited) {\n this.layerService.updateLayerRenderList();\n this.layerService.renderLayers();\n }\n }\n private splitValuesAndCallbackInAttribute(\n valuesOrCallback?: unknown[],\n defaultValues?: unknown[],\n ) {\n return {\n values: isFunction(valuesOrCallback)\n ? undefined\n : valuesOrCallback || defaultValues,\n callback: isFunction(valuesOrCallback) ? valuesOrCallback : undefined,\n };\n }\n}\n"],"file":"BaseLayer.js"}
1
+ {"version":3,"sources":["../../src/core/BaseLayer.ts"],"names":["SyncBailHook","SyncHook","SyncWaterfallHook","BlendType","lazyInject","TYPES","Source","encodePickingColor","EventEmitter","BlendTypes","handleStyleDataMapping","calculateData","createMultiPassRenderer","normalizePasses","updateShape","layerIdCounter","BaseLayer","IGlobalConfigService","config","dataSourceNeedUpdate","dataMappingNeedUpdate","filterNeedUpdate","featureScaleNeedUpdate","StyleAttrNeedUpdate","init","afterInit","beforeRender","beforeRenderData","afterRender","beforePickingEncode","afterPickingEncode","beforeHighlight","afterHighlight","beforeSelect","afterSelect","beforeDestroy","afterDestroy","enable","dataState","getLayerConfig","autoFit","fitBoundsOptions","fitBounds","reRender","name","id","zIndex","rawConfig","maskLayer","masks","push","layerIndex","indexOf","splice","destroy","configService","configToUpdate","inited","needUpdateConfig","sceneId","container","get","SceneID","setLayerConfig","sceneContainer","color","bottomColor","plugin","plugins","layerType","iconService","IIconService","fontService","IFontService","rendererService","IRendererService","layerService","ILayerService","interactionService","IInteractionService","pickingService","IPickingService","mapService","IMapService","enableMultiPassRenderer","passes","length","on","renderLayers","cameraService","ICameraService","coordinateService","ICoordinateSystemService","shaderModuleService","IShaderModuleService","postProcessingPassFactory","IFactoryPostProcessingPass","normalPassFactory","IFactoryNormalPass","styleAttributeService","IStyleAttributeService","multiPassRenderer","IMultiPassRenderer","setLayer","pendingStyleAttributes","forEach","attributeName","attributeField","attributeValues","updateOptions","updateStyleAttribute","scale","field","splitValuesAndCallbackInAttribute","getAll","ILayerPlugin","apply","hooks","call","emit","target","type","data","attributes","elements","models","map","m","updateAttributesAndElements","console","warn","option","layerModel","createModelData","calEncodeData","calculateEncodeData","triangulation","createAttributesAndIndices","undefined","updateLayerConfig","getDefaultConfig","animateOption","startAnimate","aniamateStatus","values","lastShape","getLayerStyleAttribute","currentShape","shapeOption","options","rawAnimate","setSource","sourceOption","clusterZoom","layerSource","setData","currentSource","getSource","source","sourceEvent","lastConfig","rest","pass","postProcessingPass","getPostProcessor","getPostProcessingPassByName","styleNeedUpdate","mask","clearModels","buildModels","cfg","scaleOptions","rendering","getEncodedData","renderModels","getRenderFlag","render","activeOption","enableHighlight","highlightColor","mix","activeMix","x","y","pick","pickedFeatureID","then","setTimeout","enableSelect","selectColor","selectMix","blend","layerModelNeedUpdate","visible","clearCanvas","index","updateLayerRenderList","currentPickId","selectedFeatureID","zoom","getZoom","minZoom","Infinity","maxZoom","enableMultiPass","currentPasses","setRenderFlag","getViewportSize","width","height","resize","extent","isValid","some","v","Math","abs","isDestroied","layerChildren","child","off","clearAllAttributes","cleanRemove","removeAllListeners","model","getLayerStyleAttributes","filter","attribute","needRescale","needRemapping","needRegenerateVertices","cluster","updateClusterData","encodedData","getLayerAttributeScale","invertExtent","items","range","item","value","ticks","domain","triggerHover","box","cb","boxPickLayer","moduleName","vertexShader","fragmentShader","segmentNumber","registerModule","vs","fs","getModule","uniforms","createModel","normal","createAttributes","clock","getDelta","animateStartTime","getElapsedTime","stopAnimate","isPick","eventNames","isVisible","Error","isPicking","renderUpdate","draw","getUninforms","getShaderPickStat","time","valuesOrCallback","defaultValues","callback"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,SAASA,YAAT,EAAuBC,QAAvB,EAAiCC,iBAAjC,QAA0D,kBAA1D;AACA,SACEC,SADF,EAsCEC,UAtCF,EA8CEC,KA9CF,QA+CO,eA/CP;AAgDA,OAAOC,MAAP,MAAmB,iBAAnB;AACA,SAASC,kBAAT,QAAmC,gBAAnC;AACA,SAASC,YAAT,QAA6B,eAA7B;AAGA,SAASC,UAAT,QAA2B,gBAA3B;AACA,SAASC,sBAAT,QAAuC,2BAAvC;AACA,SAASC,aAAT,QAA8B,oBAA9B;AACA,SACEC,uBADF,EAEEC,eAFF,QAGO,0BAHP;AAIA,SAASC,WAAT,QAA4B,sBAA5B;AAIA,IAAIC,cAAc,GAAG,CAArB;IAEqBC,S,WAuElBZ,UAAU,CAACC,KAAK,CAACY,oBAAP,C;;;;;AA2EX,uBAAyE;AAAA;;AAAA,QAA7DC,MAA6D,uEAAJ,EAAI;;AAAA;;AACvE;;AADuE,mEAhJlDH,cAAc,EAgJoC;;AAAA,qEA/IhDA,cA+IgD;;AAAA;;AAAA,8DA7I/C,IA6I+C;;AAAA,6DA5IjD,CA4IiD;;AAAA;;AAAA;;AAAA,6DAzIhD,KAyIgD;;AAAA,2EAxIlC,KAwIkC;;AAAA,sEAvIjC,IAuIiC;;AAAA,wEAtI/B,IAsI+B;;AAAA,sEArIvC,KAqIuC;;AAAA;;AAAA,kEAnI5C,CAmI4C;;AAAA;;AAAA,mEAjI1C,KAiI0C;;AAAA;;AAAA,gEA9H1C;AAC7BI,MAAAA,oBAAoB,EAAE,KADO;AAE7BC,MAAAA,qBAAqB,EAAE,KAFM;AAG7BC,MAAAA,gBAAgB,EAAE,KAHW;AAI7BC,MAAAA,sBAAsB,EAAE,KAJK;AAK7BC,MAAAA,mBAAmB,EAAE;AALQ,KA8H0C;;AAAA,4DAtH1D;AACbC,MAAAA,IAAI,EAAE,IAAIxB,YAAJ,EADO;AAEbyB,MAAAA,SAAS,EAAE,IAAIzB,YAAJ,EAFE;AAGb0B,MAAAA,YAAY,EAAE,IAAI1B,YAAJ,EAHD;AAIb2B,MAAAA,gBAAgB,EAAE,IAAIzB,iBAAJ,EAJL;AAKb0B,MAAAA,WAAW,EAAE,IAAI3B,QAAJ,EALA;AAMb4B,MAAAA,mBAAmB,EAAE,IAAI5B,QAAJ,EANR;AAOb6B,MAAAA,kBAAkB,EAAE,IAAI7B,QAAJ,EAPP;AAQb8B,MAAAA,eAAe,EAAE,IAAI9B,QAAJ,CAAa,CAAC,aAAD,CAAb,CARJ;AASb+B,MAAAA,cAAc,EAAE,IAAI/B,QAAJ,EATH;AAUbgC,MAAAA,YAAY,EAAE,IAAIhC,QAAJ,CAAa,CAAC,aAAD,CAAb,CAVD;AAWbiC,MAAAA,WAAW,EAAE,IAAIjC,QAAJ,EAXA;AAYbkC,MAAAA,aAAa,EAAE,IAAIlC,QAAJ,EAZF;AAabmC,MAAAA,YAAY,EAAE,IAAInC,QAAJ;AAbD,KAsH0D;;AAAA,6DArG/C,EAqG+C;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA,oEA9ExC,EA8EwC;;AAAA,4DA7EhD,EA6EgD;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA,qEAzC9B;AAAEoC,MAAAA,MAAM,EAAE;AAAV,KAyC8B;;AAAA;;AAAA;;AAAA;;AAAA,oEA9BlC,IA8BkC;;AAAA;;AAAA;;AAAA,6EAfpE,EAeoE;;AAAA,mEAbnC,EAamC;;AAAA;;AAAA,qEATvC,KASuC;;AAAA,kEANnD,kBAMmD;;AAAA,kEAJ1C,KAI0C;;AAAA,kEA6jCnD,YAAM;AAC1B,YAAKC,SAAL,CAAenB,oBAAf,GAAsC,IAAtC;;AACA,iCAAsC,MAAKoB,cAAL,EAAtC;AAAA,UAAQC,OAAR,wBAAQA,OAAR;AAAA,UAAiBC,gBAAjB,wBAAiBA,gBAAjB;;AACA,UAAID,OAAJ,EAAa;AACX,cAAKE,SAAL,CAAeD,gBAAf;AACD;;AAGD,YAAKE,QAAL;AACD,KAtkCwE;;AAEvE,UAAKC,IAAL,GAAY1B,MAAM,CAAC0B,IAAP,IAAe,MAAKC,EAAhC;AACA,UAAKC,MAAL,GAAc5B,MAAM,CAAC4B,MAAP,IAAiB,CAA/B;AACA,UAAKC,SAAL,GAAiB7B,MAAjB;AAJuE;AAKxE;;;;WAED,sBAAoB8B,SAApB,EAAuC;AACrC,WAAKC,KAAL,CAAWC,IAAX,CAAgBF,SAAhB;AACD;;;WAED,yBAAuBA,SAAvB,EAA0C;AACxC,UAAMG,UAAU,GAAG,KAAKF,KAAL,CAAWG,OAAX,CAAmBJ,SAAnB,CAAnB;;AACA,UAAIG,UAAU,GAAG,CAAC,CAAlB,EAAqB;AACnB,aAAKF,KAAL,CAAWI,MAAX,CAAkBF,UAAlB,EAA8B,CAA9B;AACD;;AACDH,MAAAA,SAAS,CAACM,OAAV;AACD;;;WAED,0BAAwB;AACtB,aAAO,KAAKC,aAAL,CAAmBhB,cAAnB,CAA0D,KAAKM,EAA/D,CAAP;AACD;;;WAED,2BACEW,cADF,EAEE;AACA,UAAI,CAAC,KAAKC,MAAV,EAAkB;AAChB,aAAKC,gBAAL,mCACK,KAAKA,gBADV,GAEKF,cAFL;AAID,OALD,MAKO;AACL,YAAMG,OAAO,GAAG,KAAKC,SAAL,CAAeC,GAAf,CAA2BxD,KAAK,CAACyD,OAAjC,CAAhB;AAGApD,QAAAA,sBAAsB,CAAC8C,cAAD,EAAiB,IAAjB,CAAtB;AAEA,aAAKD,aAAL,CAAmBQ,cAAnB,CAAkCJ,OAAlC,EAA2C,KAAKd,EAAhD,gDACK,KAAKU,aAAL,CAAmBhB,cAAnB,CAAkC,KAAKM,EAAvC,CADL,GAEK,KAAKa,gBAFV,GAGKF,cAHL;AAKA,aAAKE,gBAAL,GAAwB,EAAxB;AACD;AACF;;;WAQD,sBAAoBE,SAApB,EAA0CI,cAA1C,EAAqE;AACnE,WAAKJ,SAAL,GAAiBA,SAAjB;AACA,WAAKI,cAAL,GAAsBA,cAAtB;AACD;;;WAED,wBAAsB;AACpB,aAAO,KAAKJ,SAAZ;AACD;;;WAED,wBAAsBK,KAAtB,EAAqC;AACnC,WAAKC,WAAL,GAAmBD,KAAnB;AACD;;;WAED,0BAAwB;AACtB,aAAO,KAAKC,WAAZ;AACD;;;WAED,mBAAiBC,MAAjB,EAA+C;AAM7C,WAAKC,OAAL,CAAalB,IAAb,CAAkBiB,MAAlB;AACA,aAAO,IAAP;AACD;;;WAED,gBAAc;AAAA;;AAEZ,UAAMR,OAAO,GAAG,KAAKC,SAAL,CAAeC,GAAf,CAA2BxD,KAAK,CAACyD,OAAjC,CAAhB;AAMA,WAAKP,aAAL,CAAmBQ,cAAnB,CAAkCJ,OAAlC,EAA2C,KAAKd,EAAhD,EAAoD,KAAKE,SAAzD;AACA,WAAKsB,SAAL,GAAiB,KAAKtB,SAAL,CAAesB,SAAhC;AAKA,WAAKC,WAAL,GAAmB,KAAKV,SAAL,CAAeC,GAAf,CAAiCxD,KAAK,CAACkE,YAAvC,CAAnB;AACA,WAAKC,WAAL,GAAmB,KAAKZ,SAAL,CAAeC,GAAf,CAAiCxD,KAAK,CAACoE,YAAvC,CAAnB;AAEA,WAAKC,eAAL,GAAuB,KAAKd,SAAL,CAAeC,GAAf,CACrBxD,KAAK,CAACsE,gBADe,CAAvB;AAGA,WAAKC,YAAL,GAAoB,KAAKhB,SAAL,CAAeC,GAAf,CAAkCxD,KAAK,CAACwE,aAAxC,CAApB;AACA,WAAKC,kBAAL,GAA0B,KAAKlB,SAAL,CAAeC,GAAf,CACxBxD,KAAK,CAAC0E,mBADkB,CAA1B;AAIA,WAAKC,cAAL,GAAsB,KAAKpB,SAAL,CAAeC,GAAf,CACpBxD,KAAK,CAAC4E,eADc,CAAtB;AAGA,WAAKC,UAAL,GAAkB,KAAKtB,SAAL,CAAeC,GAAf,CAAgCxD,KAAK,CAAC8E,WAAtC,CAAlB;;AACA,kCAA4C,KAAK5C,cAAL,EAA5C;AAAA,UAAQ6C,uBAAR,yBAAQA,uBAAR;AAAA,UAAiCC,MAAjC,yBAAiCA,MAAjC;;AACA,UAAID,uBAAuB,IAAIC,MAAJ,aAAIA,MAAJ,eAAIA,MAAM,CAAEC,MAAnC,IAA6CD,MAAM,CAACC,MAAP,GAAgB,CAAjE,EAAoE;AAElE,aAAKJ,UAAL,CAAgBK,EAAhB,CAAmB,qBAAnB,EAA0C,YAAM;AAC9C,UAAA,MAAI,CAACC,YAAL;AACD,SAFD;AAGD;;AAED,WAAKC,aAAL,GAAqB,KAAK7B,SAAL,CAAeC,GAAf,CACnBxD,KAAK,CAACqF,cADa,CAArB;AAGA,WAAKC,iBAAL,GAAyB,KAAK/B,SAAL,CAAeC,GAAf,CACvBxD,KAAK,CAACuF,wBADiB,CAAzB;AAGA,WAAKC,mBAAL,GAA2B,KAAKjC,SAAL,CAAeC,GAAf,CACzBxD,KAAK,CAACyF,oBADmB,CAA3B;AAGA,WAAKC,yBAAL,GAAiC,KAAKnC,SAAL,CAAeC,GAAf,CAC/BxD,KAAK,CAAC2F,0BADyB,CAAjC;AAGA,WAAKC,iBAAL,GAAyB,KAAKrC,SAAL,CAAeC,GAAf,CAAmBxD,KAAK,CAAC6F,kBAAzB,CAAzB;AAGA,WAAKC,qBAAL,GAA6B,KAAKvC,SAAL,CAAeC,GAAf,CAC3BxD,KAAK,CAAC+F,sBADqB,CAA7B;AAGA,WAAKC,iBAAL,GAAyB,KAAKzC,SAAL,CAAeC,GAAf,CACvBxD,KAAK,CAACiG,kBADiB,CAAzB;AAGA,WAAKD,iBAAL,CAAuBE,QAAvB,CAAgC,IAAhC;AAGA,WAAKC,sBAAL,CAA4BC,OAA5B,CACE,gBAAuE;AAAA,YAApEC,aAAoE,QAApEA,aAAoE;AAAA,YAArDC,cAAqD,QAArDA,cAAqD;AAAA,YAArCC,eAAqC,QAArCA,eAAqC;AAAA,YAApBC,aAAoB,QAApBA,aAAoB;;AACrE,QAAA,MAAI,CAACV,qBAAL,CAA2BW,oBAA3B,CACEJ,aADF,EAEE;AAEEK,UAAAA,KAAK;AACHC,YAAAA,KAAK,EAAEL;AADJ,aAEA,MAAI,CAACM,iCAAL,CAEDL,eAFC,EAID,MAAI,CAACrE,cAAL,GAAsBmE,aAAtB,CAJC,CAFA;AAFP,SAFF,EAeEG,aAfF;AAiBD,OAnBH;AAqBA,WAAKL,sBAAL,GAA8B,EAA9B;AAGA,WAAKpC,OAAL,GAAe,KAAKR,SAAL,CAAesD,MAAf,CAAoC7G,KAAK,CAAC8G,YAA1C,CAAf;;AArFY,iDAuFS,KAAK/C,OAvFd;AAAA;;AAAA;AAuFZ,4DAAmC;AAAA,cAAxBD,MAAwB;AACjCA,UAAAA,MAAM,CAACiD,KAAP,CAAa,IAAb,EAAmB;AACjB1C,YAAAA,eAAe,EAAE,KAAKA,eADL;AAEjBQ,YAAAA,UAAU,EAAE,KAAKA,UAFA;AAGjBiB,YAAAA,qBAAqB,EAAE,KAAKA,qBAHX;AAIjBF,YAAAA,iBAAiB,EAAE,KAAKA,iBAJP;AAKjBF,YAAAA,yBAAyB,EAAE,KAAKA;AALf,WAAnB;AAOD;AA/FW;AAAA;AAAA;AAAA;AAAA;;AAkGZ,WAAKsB,KAAL,CAAW7F,IAAX,CAAgB8F,IAAhB;AAGA,WAAKD,KAAL,CAAW5F,SAAX,CAAqB6F,IAArB;AAGA,WAAKC,IAAL,CAAU,QAAV,EAAoB;AAClBC,QAAAA,MAAM,EAAE,IADU;AAElBC,QAAAA,IAAI,EAAE;AAFY,OAApB;AAIA,WAAKF,IAAL,CAAU,KAAV,EAAiB;AACfC,QAAAA,MAAM,EAAE,IADO;AAEfC,QAAAA,IAAI,EAAE;AAFS,OAAjB;AAKA,aAAO,IAAP;AACD;;;WAED,yBAAuBC,IAAvB,EAAoD;AAClD,UAAIA,IAAI,CAACC,UAAL,IAAmBD,IAAI,CAACE,QAA5B,EAAsC;AACpC,aAAKC,MAAL,CAAYC,GAAZ,CAAgB,UAACC,CAAD,EAAO;AACrBA,UAAAA,CAAC,CAACC,2BAAF,CAA8BN,IAAI,CAACC,UAAnC,EAA+CD,IAAI,CAACE,QAApD;AACD,SAFD;AAGD,OAJD,MAIO;AACLK,QAAAA,OAAO,CAACC,IAAR,CAAa,YAAb;AACD;AACF;;;WAED,yBAAuBR,IAAvB,EAAkCS,MAAlC,EAAuD;AACrD,UAAI,KAAKC,UAAL,CAAgBC,eAApB,EAAqC;AAEnC,eAAO,KAAKD,UAAL,CAAgBC,eAAhB,CAAgCF,MAAhC,CAAP;AACD;;AACD,UAAMG,aAAa,GAAG,KAAKC,mBAAL,CAAyBb,IAAzB,EAA+BS,MAA/B,CAAtB;AACA,UAAMK,aAAa,GAAG,KAAKA,aAA3B;;AACA,UAAIF,aAAa,IAAIE,aAArB,EAAoC;AAClC,eAAO,KAAKrC,qBAAL,CAA2BsC,0BAA3B,CACLH,aADK,EAELE,aAFK,CAAP;AAID,OALD,MAKO;AACL,eAAO;AACLb,UAAAA,UAAU,EAAEe,SADP;AAELd,UAAAA,QAAQ,EAAEc;AAFL,SAAP;AAID;AACF;;;WAED,6BAA2BhB,IAA3B,EAAsCS,MAAtC,EAA2D;AACzD,UAAI,KAAK1E,MAAT,EAAiB;AACf,eAAO9C,aAAa,CAClB,IADkB,EAElB,KAAK6D,WAFa,EAGlB,KAAKU,UAHa,EAIlB,KAAKiB,qBAJa,EAKlBuB,IALkB,EAMlBS,MANkB,CAApB;AAQD,OATD,MASO;AACLF,QAAAA,OAAO,CAACC,IAAR,CAAa,mBAAb;AACA,eAAO,IAAP;AACD;AACF;;;WAID,6BAA2B;AACzB,WAAKzE,MAAL,GAAc,IAAd;AACA,WAAKkF,iBAAL,iCACM,KAAKC,gBAAL,EADN,GAEK,KAAK7F,SAFV;;AAMA,kCAA0B,KAAKR,cAAL,EAA1B;AAAA,UAAQsG,aAAR,yBAAQA,aAAR;;AACA,UAAIA,aAAJ,aAAIA,aAAJ,eAAIA,aAAa,CAAExG,MAAnB,EAA2B;AACzB,aAAKuC,YAAL,CAAkBkE,YAAlB;AACA,aAAKC,cAAL,GAAsB,IAAtB;AACD;AACF;;;WACD,eACE/B,KADF,EAEEgC,MAFF,EAGEnC,aAHF,EAIE;AAEA,WAAKC,oBAAL,CAA0B,OAA1B,EAAmCE,KAAnC,EAA0CgC,MAA1C,EAAkDnC,aAAlD;AASA,aAAO,IAAP;AACD;;;WAGD,iBACEG,KADF,EAEEgC,MAFF,EAGEnC,aAHF,EAIE;AACA,WAAKC,oBAAL,CAA0B,SAA1B,EAAqCE,KAArC,EAA4CgC,MAA5C,EAAoDnC,aAApD;AACA,aAAO,IAAP;AACD;;;WAED,gBACEG,KADF,EAEEgC,MAFF,EAGEnC,aAHF,EAIE;AACA,WAAKC,oBAAL,CAA0B,QAA1B,EAAoCE,KAApC,EAA2CgC,MAA3C,EAAmDnC,aAAnD;AACA,aAAO,IAAP;AACD;;;WACD,cACEG,KADF,EAEEgC,MAFF,EAGEnC,aAHF,EAIE;AACA,WAAKC,oBAAL,CAA0B,MAA1B,EAAkCE,KAAlC,EAAyCgC,MAAzC,EAAiDnC,aAAjD;AACA,aAAO,IAAP;AACD;;;WAED,gBACEG,KADF,EAEEgC,MAFF,EAGEnC,aAHF,EAIE;AACA,WAAKC,oBAAL,CAA0B,QAA1B,EAAoCE,KAApC,EAA2CgC,MAA3C,EAAmDnC,aAAnD;AACA,aAAO,IAAP;AACD;;;WAED,eACEG,KADF,EAEEgC,MAFF,EAGEnC,aAHF,EAIE;AAAA;;AACA,UAAMoC,SAAS,4BAAG,KAAK9C,qBAAR,oFAAG,sBAA4B+C,sBAA5B,CAChB,OADgB,CAAH,qFAAG,uBAEfnC,KAFY,2DAAG,uBAERC,KAFV;AAGA,UAAMmC,YAAY,GAAGnC,KAArB;AACA,WAAKoC,WAAL,GAAmB;AACjBpC,QAAAA,KAAK,EAALA,KADiB;AAEjBgC,QAAAA,MAAM,EAANA;AAFiB,OAAnB;AAIA,WAAKlC,oBAAL,CAA0B,OAA1B,EAAmCE,KAAnC,EAA0CgC,MAA1C,EAAkDnC,aAAlD;AAEA/F,MAAAA,WAAW,CAAC,IAAD,EAAOmI,SAAP,EAAkBE,YAAlB,CAAX;AACA,aAAO,IAAP;AACD;;;WACD,eACEnC,KADF,EAEEgC,MAFF,EAGEnC,aAHF,EAIE;AACA,WAAKL,sBAAL,CAA4BtD,IAA5B,CAAiC;AAC/BwD,QAAAA,aAAa,EAAE,OADgB;AAE/BC,QAAAA,cAAc,EAAEK,KAFe;AAG/BJ,QAAAA,eAAe,EAAEoC,MAHc;AAI/BnC,QAAAA,aAAa,EAAbA;AAJ+B,OAAjC;AAMA,aAAO,IAAP;AACD;;;WACD,iBAAewC,OAAf,EAAkD;AAChD,UAAIC,UAAmC,GAAG,EAA1C;;AACA,UAAI,UAASD,OAAT,CAAJ,EAAuB;AACrBC,QAAAA,UAAU,CAACjH,MAAX,GAAoB,IAApB;AACAiH,QAAAA,UAAU,mCACLA,UADK,GAELD,OAFK,CAAV;AAID,OAND,MAMO;AACLC,QAAAA,UAAU,CAACjH,MAAX,GAAoBgH,OAApB;AACD;;AACD,WAAKV,iBAAL,CAAuB;AACrBE,QAAAA,aAAa,EAAES;AADM,OAAvB;AAIA,aAAO,IAAP;AACD;;;WAED,gBAAc5B,IAAd,EAAyB2B,OAAzB,EAAuD;AACrD,UAAI3B,IAAJ,aAAIA,IAAJ,eAAIA,IAAI,CAAEA,IAAV,EAAgB;AAEd,aAAK6B,SAAL,CAAe7B,IAAf;AACA,eAAO,IAAP;AACD;;AACD,WAAK8B,YAAL,GAAoB;AAClB9B,QAAAA,IAAI,EAAJA,IADkB;AAElB2B,QAAAA,OAAO,EAAPA;AAFkB,OAApB;AAIA,WAAKI,WAAL,GAAmB,CAAnB;AACA,aAAO,IAAP;AACD;;;WAED,iBAAe/B,IAAf,EAA0B2B,OAA1B,EAAgD;AAAA;;AAC9C,UAAI,KAAK5F,MAAT,EAAiB;AACf,aAAKiG,WAAL,CAAiBC,OAAjB,CAAyBjC,IAAzB,EAA+B2B,OAA/B;AACD,OAFD,MAEO;AACL,aAAK9D,EAAL,CAAQ,QAAR,EAAkB,YAAM;AACtB,cAAMqE,aAAa,GAAG,MAAI,CAACC,SAAL,EAAtB;;AACA,cAAI,CAACD,aAAL,EAAoB;AAElB,YAAA,MAAI,CAACE,MAAL,CAAY,IAAIxJ,MAAJ,CAAWoH,IAAX,EAAiB2B,OAAjB,CAAZ;;AACA,YAAA,MAAI,CAACU,WAAL;AACD,WAJD,MAIO;AACL,YAAA,MAAI,CAACL,WAAL,CAAiBC,OAAjB,CAAyBjC,IAAzB,EAA+B2B,OAA/B;AACD;AAEF,SAVD;AAWD;;AAED,aAAO,IAAP;AACD;;;WACD,eACEA,OADF,EAEU;AAAA;;AACR,UAAMW,UAAU,GAAG,KAAKzH,cAAL,EAAnB;;AACA,UAAQ8C,MAAR,GAA4BgE,OAA5B,CAAQhE,MAAR;AAAA,UAAmB4E,IAAnB,4BAA4BZ,OAA5B;;AAGA,UAAIhE,MAAJ,EAAY;AACVxE,QAAAA,eAAe,CAACwE,MAAD,CAAf,CAAwBoB,OAAxB,CACE,UAACyD,IAAD,EAAgD;AAC9C,cAAMC,kBAAkB,GAAG,MAAI,CAAC9D,iBAAL,CACxB+D,gBADwB,GAExBC,2BAFwB,CAEIH,IAAI,CAAC,CAAD,CAFR,CAA3B;;AAGA,cAAIC,kBAAJ,EAAwB;AACtBA,YAAAA,kBAAkB,CAACtD,aAAnB,CAAiCqD,IAAI,CAAC,CAAD,CAArC;AACD;AACF,SARH;AAUD;;AAED,WAAKnH,SAAL,mCACK,KAAKA,SADV,GAEKkH,IAFL;;AAIA,UAAI,KAAKrG,SAAT,EAAoB;AAClB,aAAK+E,iBAAL,CAAuB,KAAK5F,SAA5B;AACA,aAAKuH,eAAL,GAAuB,IAAvB;AACD;;AAGD,UAAIN,UAAU,IAAIA,UAAU,CAACO,IAAX,KAAoB,IAAlC,IAA0ClB,OAAO,CAACkB,IAAR,KAAiB,KAA/D,EAAsE;AACpE,aAAKC,WAAL;AACA,aAAK3C,MAAL,GAAc,KAAKO,UAAL,CAAgBqC,WAAhB,EAAd;AACD;;AACD,aAAO,IAAP;AACD;;;WACD,eAAazD,KAAb,EAAqD0D,GAArD,EAAmE;AACjE,UAAI,UAAS1D,KAAT,CAAJ,EAAqB;AACnB,aAAK2D,YAAL,mCACK,KAAKA,YADV,GAEK3D,KAFL;AAID,OALD,MAKO;AACL,aAAK2D,YAAL,CAAkB3D,KAAlB,IAA2B0D,GAA3B;AACD;;AACD,aAAO,IAAP;AACD;;;WAKD,wBAA4B;AAC1B,WAAKE,SAAL,GAAiB,IAAjB;AAEA,WAAKhG,YAAL,CAAkBY,YAAlB;AAEA,WAAKoF,SAAL,GAAiB,KAAjB;AACD;;;WAED,kBAAwB;AAEtB,UAAI,KAAKC,cAAL,GAAsBvF,MAAtB,KAAiC,CAArC,EAAwC;AACtC,aAAKwF,YAAL;AACD;;AACD,aAAO,IAAP;AACD;;;;wEAKD;AAAA;AAAA;AAAA;AAAA;AAAA,sBACM,KAAKD,cAAL,GAAsBvF,MAAtB,KAAiC,CADvC;AAAA;AAAA;AAAA;;AAAA,sBAEQ,KAAKe,iBAAL,IAA0B,KAAKA,iBAAL,CAAuB0E,aAAvB,EAFlC;AAAA;AAAA;AAAA;;AAAA;AAAA,uBAIY,KAAK1E,iBAAL,CAAuB2E,MAAvB,EAJZ;;AAAA;AAAA;AAAA;;AAAA;AAKW,oBAAI,KAAK3E,iBAAT,EAA4B;AAEjC,uBAAKyE,YAAL;AACD,iBAHM,MAGA;AACL,uBAAKA,YAAL;AACD;;AAVL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;WAcA,gBAAczB,OAAd,EAAgD;AAC9C,UAAM4B,YAAmC,GAAG,EAA5C;AACAA,MAAAA,YAAY,CAACC,eAAb,GAA+B,UAAS7B,OAAT,IAAoB,IAApB,GAA2BA,OAA1D;;AACA,UAAI,UAASA,OAAT,CAAJ,EAAuB;AACrB4B,QAAAA,YAAY,CAACC,eAAb,GAA+B,IAA/B;;AACA,YAAI7B,OAAO,CAACpF,KAAZ,EAAmB;AACjBgH,UAAAA,YAAY,CAACE,cAAb,GAA8B9B,OAAO,CAACpF,KAAtC;AACD;;AACD,YAAIoF,OAAO,CAAC+B,GAAZ,EAAiB;AACfH,UAAAA,YAAY,CAACI,SAAb,GAAyBhC,OAAO,CAAC+B,GAAjC;AACD;AACF,OARD,MAQO;AACLH,QAAAA,YAAY,CAACC,eAAb,GAA+B,CAAC,CAAC7B,OAAjC;AACD;;AACD,WAAKV,iBAAL,CAAuBsC,YAAvB;AACA,aAAO,IAAP;AACD;;;WACD,mBACEpI,EADF,EAEEwG,OAFF,EAGQ;AAAA;;AACN,UAAI,UAASxG,EAAT,CAAJ,EAAkB;AAChB,oBAAyBA,EAAzB,CAAQyI,CAAR;AAAA,YAAQA,CAAR,sBAAY,CAAZ;AAAA,oBAAyBzI,EAAzB,CAAe0I,CAAf;AAAA,YAAeA,CAAf,sBAAmB,CAAnB;AACA,aAAK5C,iBAAL,CAAuB;AACrBwC,UAAAA,cAAc,EAAE,UAAS9B,OAAT,IACZA,OAAO,CAACpF,KADI,GAEZ,KAAK1B,cAAL,GAAsB4I,cAHL;AAIrBE,UAAAA,SAAS,EAAE,UAAShC,OAAT,IACPA,OAAO,CAAC+B,GADD,GAEP,KAAK7I,cAAL,GAAsB8I;AANL,SAAvB;AAQA,aAAKG,IAAL,CAAU;AAAEF,UAAAA,CAAC,EAADA,CAAF;AAAKC,UAAAA,CAAC,EAADA;AAAL,SAAV;AACD,OAXD,MAWO;AACL,aAAK5C,iBAAL,CAAuB;AACrB8C,UAAAA,eAAe,EAAE5I,EADI;AAErBsI,UAAAA,cAAc,EAAE,UAAS9B,OAAT,IACZA,OAAO,CAACpF,KADI,GAEZ,KAAK1B,cAAL,GAAsB4I,cAJL;AAKrBE,UAAAA,SAAS,EAAE,UAAShC,OAAT,IACPA,OAAO,CAAC+B,GADD,GAEP,KAAK7I,cAAL,GAAsB8I;AAPL,SAAvB;AASA,aAAKhE,KAAL,CAAWpF,YAAX,CACGqF,IADH,CACQ/G,kBAAkB,CAACsC,EAAD,CAD1B,EAGG6I,IAHH,CAGQ,YAAM;AACVC,UAAAA,UAAU,CAAC,YAAM;AACf,YAAA,MAAI,CAAChJ,QAAL;AACD,WAFS,EAEP,CAFO,CAAV;AAGD,SAPH;AAQD;AACF;;;WAED,gBAAcwF,MAAd,EAAuD;AACrD,UAAM8C,YAAmC,GAAG,EAA5C;AACAA,MAAAA,YAAY,CAACW,YAAb,GAA4B,UAASzD,MAAT,IAAmB,IAAnB,GAA0BA,MAAtD;;AACA,UAAI,UAASA,MAAT,CAAJ,EAAsB;AACpB8C,QAAAA,YAAY,CAACW,YAAb,GAA4B,IAA5B;;AACA,YAAIzD,MAAM,CAAClE,KAAX,EAAkB;AAChBgH,UAAAA,YAAY,CAACY,WAAb,GAA2B1D,MAAM,CAAClE,KAAlC;AACD;;AACD,YAAIkE,MAAM,CAACiD,GAAX,EAAgB;AACdH,UAAAA,YAAY,CAACa,SAAb,GAAyB3D,MAAM,CAACiD,GAAhC;AACD;AACF,OARD,MAQO;AACLH,QAAAA,YAAY,CAACW,YAAb,GAA4B,CAAC,CAACzD,MAA9B;AACD;;AACD,WAAKQ,iBAAL,CAAuBsC,YAAvB;AACA,aAAO,IAAP;AACD;;;WAED,mBACEpI,EADF,EAEEwG,OAFF,EAGQ;AAAA;;AACN,UAAI,UAASxG,EAAT,CAAJ,EAAkB;AAChB,qBAAyBA,EAAzB,CAAQyI,CAAR;AAAA,YAAQA,CAAR,uBAAY,CAAZ;AAAA,qBAAyBzI,EAAzB,CAAe0I,CAAf;AAAA,YAAeA,CAAf,uBAAmB,CAAnB;AACA,aAAK5C,iBAAL,CAAuB;AACrBkD,UAAAA,WAAW,EAAE,UAASxC,OAAT,IACTA,OAAO,CAACpF,KADC,GAET,KAAK1B,cAAL,GAAsBsJ,WAHL;AAIrBC,UAAAA,SAAS,EAAE,UAASzC,OAAT,IACPA,OAAO,CAAC+B,GADD,GAEP,KAAK7I,cAAL,GAAsBuJ;AANL,SAAvB;AAQA,aAAKN,IAAL,CAAU;AAAEF,UAAAA,CAAC,EAADA,CAAF;AAAKC,UAAAA,CAAC,EAADA;AAAL,SAAV;AACD,OAXD,MAWO;AACL,aAAK5C,iBAAL,CAAuB;AACrB8C,UAAAA,eAAe,EAAE5I,EADI;AAErBgJ,UAAAA,WAAW,EAAE,UAASxC,OAAT,IACTA,OAAO,CAACpF,KADC,GAET,KAAK1B,cAAL,GAAsBsJ,WAJL;AAKrBC,UAAAA,SAAS,EAAE,UAASzC,OAAT,IACPA,OAAO,CAAC+B,GADD,GAEP,KAAK7I,cAAL,GAAsBuJ;AAPL,SAAvB;AASA,aAAKzE,KAAL,CAAWpF,YAAX,CACGqF,IADH,CACQ/G,kBAAkB,CAACsC,EAAD,CAD1B,EAGG6I,IAHH,CAGQ,YAAM;AACVC,UAAAA,UAAU,CAAC,YAAM;AACf,YAAA,MAAI,CAAChJ,QAAL;AACD,WAFS,EAEP,CAFO,CAAV;AAGD,SAPH;AAQD;AACF;;;WACD,kBAAgB8E,IAAhB,EAAsD;AACpD,WAAKkB,iBAAL,CAAuB;AACrBoD,QAAAA,KAAK,EAAEtE;AADc,OAAvB;AAGA,WAAKuE,oBAAL,GAA4B,IAA5B;AACA,WAAKrJ,QAAL;AACA,aAAO,IAAP;AACD;;;WACD,gBAAsB;AACpB,WAAKgG,iBAAL,CAAuB;AACrBsD,QAAAA,OAAO,EAAE;AADY,OAAvB;AAGA,WAAKtJ,QAAL;AACA,aAAO,IAAP;AACD;;;WAED,gBAAsB;AACpB,UAAI,KAAK8E,IAAL,KAAc,aAAd,IAA+B,KAAKW,UAAL,CAAgB8D,WAAnD,EAAgE;AAE9D,aAAK9D,UAAL,CAAgB8D,WAAhB;AACD;;AACD,WAAKvD,iBAAL,CAAuB;AACrBsD,QAAAA,OAAO,EAAE;AADY,OAAvB;AAGA,WAAKtJ,QAAL;AACA,aAAO,IAAP;AACD;;;WACD,kBAAgBwJ,KAAhB,EAAuC;AACrC,WAAKrJ,MAAL,GAAcqJ,KAAd;AACA,WAAKvH,YAAL,CAAkBwH,qBAAlB;AACA,WAAKxH,YAAL,CAAkBY,YAAlB;AACA,aAAO,IAAP;AACD;;;WAED,0BAAwB3C,EAAxB,EAAoC;AAClC,WAAKwJ,aAAL,GAAqBxJ,EAArB;AACD;;;WAED,4BAAyC;AACvC,aAAO,KAAKwJ,aAAZ;AACD;;;WAED,8BAA4BxJ,EAA5B,EAAwC;AACtC,WAAKyJ,iBAAL,GAAyBzJ,EAAzB;AACD;;;WAED,gCAA6C;AAC3C,aAAO,KAAKyJ,iBAAZ;AACD;;;WACD,qBAA4B;AAC1B,UAAMC,IAAI,GAAG,KAAKrH,UAAL,CAAgBsH,OAAhB,EAAb;;AACA,kCAII,KAAKjK,cAAL,EAJJ;AAAA,UACE0J,OADF,yBACEA,OADF;AAAA,wDAEEQ,OAFF;AAAA,UAEEA,OAFF,sCAEY,CAACC,QAFb;AAAA,wDAGEC,OAHF;AAAA,UAGEA,OAHF,sCAGYD,QAHZ;;AAKA,aAAO,CAAC,CAACT,OAAF,IAAaM,IAAI,IAAIE,OAArB,IAAgCF,IAAI,IAAII,OAA/C;AACD;;;WAED,sBACEC,eADF,EAEEC,aAFF,EAGE;AACA,WAAKlE,iBAAL,CAAuB;AACrBvD,QAAAA,uBAAuB,EAAEwH;AADJ,OAAvB;;AAGA,UAAIC,aAAJ,EAAmB;AACjB,aAAKlE,iBAAL,CAAuB;AACrBtD,UAAAA,MAAM,EAAEwH;AADa,SAAvB;AAGD;;AAED,UAAID,eAAJ,EAAqB;AACnB,oCAAwB,KAAKrK,cAAL,EAAxB;AAAA,0DAAQ8C,MAAR;AAAA,YAAQA,MAAR,sCAAiB,EAAjB;;AACA,aAAKgB,iBAAL,GAAyBzF,uBAAuB,CAC9C,IAD8C,EAE9CyE,MAF8C,EAG9C,KAAKU,yBAHyC,EAI9C,KAAKE,iBAJyC,CAAhD;AAMA,aAAKI,iBAAL,CAAuByG,aAAvB,CAAqC,IAArC;;AACA,oCAA0B,KAAKpI,eAAL,CAAqBqI,eAArB,EAA1B;AAAA,YAAQC,KAAR,yBAAQA,KAAR;AAAA,YAAeC,MAAf,yBAAeA,MAAf;;AACA,aAAK5G,iBAAL,CAAuB6G,MAAvB,CAA8BF,KAA9B,EAAqCC,MAArC;AACD;;AAED,aAAO,IAAP;AACD;;;WAED,oBAAkBR,OAAlB,EAA2C;AACzC,WAAK9D,iBAAL,CAAuB;AACrB8D,QAAAA,OAAO,EAAPA;AADqB,OAAvB;AAGA,aAAO,IAAP;AACD;;;WAED,sBAA4B;AAC1B,kCAAoB,KAAKlK,cAAL,EAApB;AAAA,UAAQkK,OAAR,yBAAQA,OAAR;;AACA,aAAOA,OAAP;AACD;;;WAED,sBAA4B;AAC1B,mCAAoB,KAAKlK,cAAL,EAApB;AAAA,UAAQoK,OAAR,0BAAQA,OAAR;;AACA,aAAOA,OAAP;AACD;;;WAED,aAAW/J,IAAX,EAAyB;AACvB,UAAM8H,GAAG,GAAG,KAAKnI,cAAL,EAAZ;AAEA,aAAOmI,GAAG,CAAC9H,IAAD,CAAV;AACD;;;WAED,oBAAkB+J,OAAlB,EAA2C;AACzC,WAAKhE,iBAAL,CAAuB;AACrBgE,QAAAA,OAAO,EAAPA;AADqB,OAAvB;AAGA,aAAO,IAAP;AACD;;;WAED,oBAAkBnK,OAAlB,EAA4C;AAC1C,WAAKmG,iBAAL,CAAuB;AACrBnG,QAAAA,OAAO,EAAPA;AADqB,OAAvB;AAGA,aAAO,IAAP;AACD;;;WAKD,mBAAiBC,gBAAjB,EAAqD;AACnD,UAAI,CAAC,KAAKgB,MAAV,EAAkB;AAChB,aAAKkF,iBAAL,CAAuB;AACrBnG,UAAAA,OAAO,EAAE;AADY,SAAvB;AAGA,eAAO,IAAP;AACD;;AACD,UAAMsH,MAAM,GAAG,KAAKD,SAAL,EAAf;AACA,UAAMsD,MAAM,GAAGrD,MAAM,CAACqD,MAAtB;AACA,UAAMC,OAAO,GAAGD,MAAM,CAACE,IAAP,CAAY,UAACC,CAAD;AAAA,eAAOC,IAAI,CAACC,GAAL,CAASF,CAAT,MAAgBZ,QAAvB;AAAA,OAAZ,CAAhB;;AACA,UAAIU,OAAJ,EAAa;AACX,eAAO,IAAP;AACD;;AACD,WAAKlI,UAAL,CAAgBxC,SAAhB,CACE,CACE,CAACyK,MAAM,CAAC,CAAD,CAAP,EAAYA,MAAM,CAAC,CAAD,CAAlB,CADF,EAEE,CAACA,MAAM,CAAC,CAAD,CAAP,EAAYA,MAAM,CAAC,CAAD,CAAlB,CAFF,CADF,EAKE1K,gBALF;AAOA,aAAO,IAAP;AACD;;;WAED,mBAAiB;AAAA;;AACf,UAAI,KAAKgL,WAAT,EAAsB;AACpB;AACD;;AAGD,WAAKC,aAAL,CAAmB5F,GAAnB,CAAuB,UAAC6F,KAAD;AAAA,eAAmBA,KAAK,CAACrK,OAAN,EAAnB;AAAA,OAAvB;AACA,WAAKoK,aAAL,GAAqB,EAArB;AAGA,WAAKzK,KAAL,CAAW6E,GAAX,CAAe,UAACyC,IAAD;AAAA,eAAkBA,IAAI,CAACjH,OAAL,EAAlB;AAAA,OAAf;AACA,WAAKL,KAAL,GAAa,EAAb;AAEA,WAAKoE,KAAL,CAAWlF,aAAX,CAAyBmF,IAAzB;AAEA,WAAKoC,WAAL,CAAiBkE,GAAjB,CAAqB,QAArB,EAA+B,KAAK7D,WAApC;AAEA,WAAK1D,iBAAL,CAAuB/C,OAAvB;AAGA,WAAK6C,qBAAL,CAA2B0H,kBAA3B;AAIA,WAAKxG,KAAL,CAAWjF,YAAX,CAAwBkF,IAAxB;AAGA,+BAAKc,UAAL,sEAAiBoC,WAAjB;AAEA,WAAK3C,MAAL,GAAc,EAAd;AAEA,WAAKjD,YAAL,CAAkBkJ,WAAlB,CAA8B,IAA9B;AAEA,WAAKvG,IAAL,CAAU,QAAV,EAAoB;AAClBC,QAAAA,MAAM,EAAE,IADU;AAElBC,QAAAA,IAAI,EAAE;AAFY,OAApB;AAKA,WAAKF,IAAL,CAAU,SAAV,EAAqB;AACnBC,QAAAA,MAAM,EAAE,IADW;AAEnBC,QAAAA,IAAI,EAAE;AAFa,OAArB;AAKA,WAAKsG,kBAAL;AAIA,WAAKN,WAAL,GAAmB,IAAnB;AACD;;;WACD,iBAAe;AACb,WAAKtH,qBAAL,CAA2B0H,kBAA3B;AAED;;;WACD,uBAAqB;AACnB,WAAKhG,MAAL,CAAYpB,OAAZ,CAAoB,UAACuH,KAAD;AAAA,eAAWA,KAAK,CAAC1K,OAAN,EAAX;AAAA,OAApB;AACA,WAAK8E,UAAL,CAAgBoC,WAAhB;AACA,WAAK3C,MAAL,GAAc,EAAd;AACD;;;WAED,mBAAiB;AACf,aAAO,CAAC,CAAC,CACP,KAAK1B,qBAAL,CAA2B8H,uBAA3B,MAAwD,EADjD,EAEPC,MAFO,CAGP,UAACC,SAAD;AAAA,eACEA,SAAS,CAACC,WAAV,IACAD,SAAS,CAACE,aADV,IAEAF,SAAS,CAACG,sBAHZ;AAAA,OAHO,EAOPhJ,MAPF;AAQD;;;WAED,mBAAiBwE,MAAjB,EAAiC;AAE/B,UAAI,KAAKJ,WAAT,EAAsB;AACpB,aAAKA,WAAL,CAAiBkE,GAAjB,CAAqB,QAArB,EAA+B,KAAK7D,WAApC;AACD;;AAED,WAAKL,WAAL,GAAmBI,MAAnB;AACA,WAAKL,WAAL,GAAmB,CAAnB;;AAGA,UAAI,KAAKhG,MAAL,IAAe,KAAKiG,WAAL,CAAiB6E,OAApC,EAA6C;AAC3C,YAAMhC,IAAI,GAAG,KAAKrH,UAAL,CAAgBsH,OAAhB,EAAb;AACA,aAAK9C,WAAL,CAAiB8E,iBAAjB,CAAmCjC,IAAnC;AACD;;AAED,WAAK7C,WAAL,CAAiBnE,EAAjB,CAAoB,QAApB,EAA8B,KAAKwE,WAAnC;AACD;;;WACD,qBAAmB;AACjB,aAAO,KAAKL,WAAZ;AACD;;;WAED,2BAAyB;AACvB,aAAO,KAAKiB,YAAZ;AACD;;;WAED,wBAAsB8D,WAAtB,EAAqD;AACnD,WAAKA,WAAL,GAAmBA,WAAnB;AACD;;;WACD,0BAAwB;AACtB,aAAO,KAAKA,WAAZ;AACD;;;WAED,kBAAgB7L,IAAhB,EAAmC;AACjC,aAAO,KAAKuD,qBAAL,CAA2BuI,sBAA3B,CAAkD9L,IAAlD,CAAP;AACD;;;WAED,wBAAsBA,IAAtB,EAAiD;AAC/C,UAAMmE,KAAK,GAAG,KAAKZ,qBAAL,CAA2BuI,sBAA3B,CAAkD9L,IAAlD,CAAd;;AAGA,UAAI,CAACmE,KAAL,EAAY;AACV,eAAO,EAAP;AACD;;AAED,UAAIA,KAAK,CAAC4H,YAAV,EAAwB;AAEtB,YAAMC,KAA2B,GAAG7H,KAAK,CAAC8H,KAAN,GAAc/G,GAAd,CAAkB,UAACgH,IAAD,EAAkB;AACtE;AACEC,YAAAA,KAAK,EAAEhI,KAAK,CAAC4H,YAAN,CAAmBG,IAAnB;AADT,aAEGlM,IAFH,EAEUkM,IAFV;AAID,SALmC,CAApC;AAOA,eAAOF,KAAP;AACD,OAVD,MAUO,IAAI7H,KAAK,CAACiI,KAAV,EAAiB;AAEtB,YAAMJ,MAA8B,GAAG7H,KAAK,CACzCiI,KADoC,GAEpClH,GAFoC,CAEhC,UAACgH,IAAD,EAAkB;AACrB;AACEC,YAAAA,KAAK,EAAED;AADT,aAEGlM,IAFH,EAEUmE,KAAK,CAAC+H,IAAD,CAFf;AAID,SAPoC,CAAvC;;AASA,eAAOF,MAAP;AACD,OAZM,MAYA,IAAI7H,KAAJ,aAAIA,KAAJ,eAAIA,KAAK,CAAEkI,MAAX,EAAmB;AAExB,YAAML,OAA8B,GAAG7H,KAAK,CACzCkI,MADoC,GAEpCf,MAFoC,CAE7B,UAACY,IAAD;AAAA,iBAAuC,CAAC,aAAYA,IAAZ,CAAxC;AAAA,SAF6B,EAGpChH,GAHoC,CAGhC,UAACgH,IAAD,EAA2B;AAC9B;AACEC,YAAAA,KAAK,EAAED;AADT,aAEGlM,IAFH,EAEUmE,KAAK,CAAC+H,IAAD,CAFf;AAID,SARoC,CAAvC;;AAUA,eAAOF,OAAP;AACD;;AAED,aAAO,EAAP;AACD;;;WAED,qBAAgD;AAAA,UAAlCtD,CAAkC,SAAlCA,CAAkC;AAAA,UAA/BC,CAA+B,SAA/BA,CAA+B;AAC9C,WAAKzG,kBAAL,CAAwBoK,YAAxB,CAAqC;AAAE5D,QAAAA,CAAC,EAADA,CAAF;AAAKC,QAAAA,CAAC,EAADA;AAAL,OAArC;AACD;;;WAED,mBACE4D,GADF,EAEEC,EAFF,EAGE;AACA,WAAKpK,cAAL,CAAoBqK,YAApB,CAAiC,IAAjC,EAAuCF,GAAvC,EAA4CC,EAA5C;AACD;;;WAED,yBACE/F,OADF,EAGU;AACR,UACEiG,UADF,GAOIjG,OAPJ,CACEiG,UADF;AAAA,UAEEC,YAFF,GAOIlG,OAPJ,CAEEkG,YAFF;AAAA,UAGEC,cAHF,GAOInG,OAPJ,CAGEmG,cAHF;AAAA,UAIEhH,aAJF,GAOIa,OAPJ,CAIEb,aAJF;AAAA,UAKEiH,aALF,GAOIpG,OAPJ,CAKEoG,aALF;AAAA,UAMKxF,IANL,4BAOIZ,OAPJ;;AAQA,WAAKxD,mBAAL,CAAyB6J,cAAzB,CAAwCJ,UAAxC,EAAoD;AAClDK,QAAAA,EAAE,EAAEJ,YAD8C;AAElDK,QAAAA,EAAE,EAAEJ;AAF8C,OAApD;;AAIA,kCAA6B,KAAK3J,mBAAL,CAAyBgK,SAAzB,CAAmCP,UAAnC,CAA7B;AAAA,UAAQK,EAAR,yBAAQA,EAAR;AAAA,UAAYC,EAAZ,yBAAYA,EAAZ;AAAA,UAAgBE,QAAhB,yBAAgBA,QAAhB;;AACA,UAAQC,WAAR,GAAwB,KAAKrL,eAA7B,CAAQqL,WAAR;;AACA,mCAGI,KAAK5J,qBAAL,CAA2BsC,0BAA3B,CACF,KAAKgG,WADH,EAEFjG,aAFE,EAGFiH,aAHE,CAHJ;AAAA,UACE9H,UADF,0BACEA,UADF;AAAA,UAEEC,QAFF,0BAEEA,QAFF;;AAQA,aAAOmI,WAAW;AAChBpI,QAAAA,UAAU,EAAVA,UADgB;AAEhBmI,QAAAA,QAAQ,EAARA,QAFgB;AAGhBF,QAAAA,EAAE,EAAFA,EAHgB;AAIhBD,QAAAA,EAAE,EAAFA,EAJgB;AAKhB/H,QAAAA,QAAQ,EAARA,QALgB;AAMhBmE,QAAAA,KAAK,EAAEtL,UAAU,CAACN,SAAS,CAAC6P,MAAX;AAND,SAOb/F,IAPa,EAAlB;AASD;;;WAED,0BACEZ,OADF,EAGE;AACA,UAAQb,aAAR,GAA0Ba,OAA1B,CAAQb,aAAR;;AAEA,mCAAuB,KAAKrC,qBAAL,CAA2B8J,gBAA3B,CACrB,KAAKxB,WADgB,EAErBjG,aAFqB,CAAvB;AAAA,UAAQb,UAAR,0BAAQA,UAAR;;AAIA,aAAOA,UAAP;AACD;;;WAED,mBAAiB;AACf,aAAO,KAAK/C,YAAL,CAAkBsL,KAAlB,CAAwBC,QAAxB,EAAP;AACD;;;WACD,+BAA6B;AAC3B,WAAKC,gBAAL,GAAwB,KAAKxL,YAAL,CAAkBsL,KAAlB,CAAwBG,cAAxB,EAAxB;AACD;;;WACD,uBAAqB;AACnB,UAAI,KAAKtH,cAAT,EAAyB;AACvB,aAAKnE,YAAL,CAAkB0L,WAAlB;AACA,aAAKvH,cAAL,GAAsB,KAAtB;AACA,aAAKJ,iBAAL,CAAuB;AACrBE,UAAAA,aAAa,EAAE;AACbxG,YAAAA,MAAM,EAAE;AADK;AADM,SAAvB;AAKD;AACF;;;WACD,+BAAqC;AACnC,aAAO,KAAKuC,YAAL,CAAkBsL,KAAlB,CAAwBG,cAAxB,KAA2C,KAAKD,gBAAvD;AACD;;;WAED,kBAAgB3I,IAAhB,EAAuC;AACrC,mCAGI,KAAKlF,cAAL,EAHJ;AAAA,0DACE2I,eADF;AAAA,UACEA,eADF,uCACoB,IADpB;AAAA,0DAEEU,YAFF;AAAA,UAEEA,YAFF,uCAEiB,IAFjB;;AAKA,UAAI2E,MAAM,GACR,KAAKC,UAAL,GAAkBpN,OAAlB,CAA0BqE,IAA1B,MAAoC,CAAC,CAArC,IACA,KAAK+I,UAAL,GAAkBpN,OAAlB,CAA0B,OAAOqE,IAAjC,MAA2C,CAAC,CAF9C;;AAGA,UAAI,CAACA,IAAI,KAAK,OAAT,IAAoBA,IAAI,KAAK,UAA9B,KAA6CmE,YAAjD,EAA+D;AAC7D2E,QAAAA,MAAM,GAAG,IAAT;AACD;;AACD,UACE9I,IAAI,KAAK,WAAT,KACCyD,eAAe,IACd,KAAKsF,UAAL,GAAkBpN,OAAlB,CAA0B,YAA1B,MAA4C,CAAC,CAD9C,IAEC,KAAKoN,UAAL,GAAkBpN,OAAlB,CAA0B,aAA1B,MAA6C,CAAC,CAF/C,IAGC,KAAKoN,UAAL,GAAkBpN,OAAlB,CAA0B,UAA1B,MAA0C,CAAC,CAJ7C,CADF,EAME;AACAmN,QAAAA,MAAM,GAAG,IAAT;AACD;;AACD,aAAO,KAAKE,SAAL,MAAoBF,MAA3B;AACD;;;WAED,uBAAqB;AACnB,YAAM,IAAIG,KAAJ,CAAU,yBAAV,CAAN;AACD;;;WACD,yBAAuB;AACrB,YAAM,IAAIA,KAAJ,CAAU,yBAAV,CAAN;AACD;;;;sEAED,kBAA2BrK,iBAA3B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBACQA,iBAAiB,CAAC2E,MAAlB,EADR;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;WAIA,sBAAoB2F,SAApB,EAAyC;AAAA;;AAEvC,UAAI,KAAK9F,cAAL,GAAsBvF,MAAtB,GAA+B,CAAnC,EAAsC;AACpC,YAAI,KAAK0G,oBAAL,IAA6B,KAAK5D,UAAtC,EAAkD;AAChD,eAAKP,MAAL,GAAc,KAAKO,UAAL,CAAgBqC,WAAhB,EAAd;AACA,eAAKpD,KAAL,CAAW3F,YAAX,CAAwB4F,IAAxB;AACA,eAAK0E,oBAAL,GAA4B,KAA5B;AACD;;AACD,YAAI,KAAK5D,UAAL,CAAgBwI,YAApB,EAAkC;AAChC,eAAKxI,UAAL,CAAgBwI,YAAhB;AACD;;AACD,aAAK/I,MAAL,CAAYpB,OAAZ,CAAoB,UAACuH,KAAD,EAAW;AAC7BA,UAAAA,KAAK,CAAC6C,IAAN,CACE;AACEf,YAAAA,QAAQ,EAAE,MAAI,CAAC1H,UAAL,CAAgB0I,YAAhB;AADZ,WADF,EAIEH,SAJF;AAMD,SAPD;AAQD;;AACD,aAAO,IAAP;AACD;;;WAED,8BACElJ,IADF,EAEET,KAFF,EAGEgC,MAHF,EAIEnC,aAJF,EAKE;AACA,UAAI,CAAC,KAAKpD,MAAV,EAAkB;AAChB,aAAK+C,sBAAL,CAA4BtD,IAA5B,CAAiC;AAC/BwD,UAAAA,aAAa,EAAEe,IADgB;AAE/Bd,UAAAA,cAAc,EAAEK,KAFe;AAG/BJ,UAAAA,eAAe,EAAEoC,MAHc;AAI/BnC,UAAAA,aAAa,EAAbA;AAJ+B,SAAjC;AAMD,OAPD,MAOO;AACL,aAAKV,qBAAL,CAA2BW,oBAA3B,CACEW,IADF,EAEE;AAEEV,UAAAA,KAAK;AACHC,YAAAA,KAAK,EAALA;AADG,aAEA,KAAKC,iCAAL,CAED+B,MAFC,EAID,KAAKzG,cAAL,GAAsByE,KAAtB,CAJC,CAFA;AAFP,SAFF,EAeEH,aAfF;AAiBD;AACF;;;WAED,6BAA2B;AACzB,aAAO,KAAKjC,YAAL,CAAkBmM,iBAAlB,EAAP;AACD;;;WAMD,sBAAoBC,IAApB,EAAkC;AAChC/I,MAAAA,OAAO,CAACC,IAAR,CAAa,UAAb;AACD;;;WAED,2BAA4B;AAC1B,YAAM,IAAIwI,KAAJ,CAAU,yBAAV,CAAN;AACD;;;WAED,wBAAkC;AAChC,YAAM,IAAIA,KAAJ,CAAU,yBAAV,CAAN;AACD;;;WACD,4BAA6B;AAC3B,aAAO,EAAP;AACD;;;WAaD,oBAAmB;AACjB,UAAI,KAAKjN,MAAT,EAAiB;AACf,aAAKmB,YAAL,CAAkBwH,qBAAlB;AACA,aAAKxH,YAAL,CAAkBY,YAAlB;AACD;AACF;;;WACD,2CACEyL,gBADF,EAEEC,aAFF,EAGE;AACA,aAAO;AACLlI,QAAAA,MAAM,EAAE,YAAWiI,gBAAX,IACJvI,SADI,GAEJuI,gBAAgB,IAAIC,aAHnB;AAILC,QAAAA,QAAQ,EAAE,YAAWF,gBAAX,IAA+BA,gBAA/B,GAAkDvI;AAJvD,OAAP;AAMD;;;;EA1uCiElI,Y;;;;;;SAA/CQ,S","sourcesContent":["// @ts-ignore\nimport { SyncBailHook, SyncHook, SyncWaterfallHook } from '@antv/async-hook';\nimport {\n BlendType,\n gl,\n IActiveOption,\n IAnimateOption,\n IAttrubuteAndElements,\n ICameraService,\n ICoordinateSystemService,\n IDataState,\n IEncodeFeature,\n IFontService,\n IGlobalConfigService,\n IIconService,\n IInteractionService,\n ILayer,\n ILayerConfig,\n ILayerModel,\n ILayerModelInitializationOptions,\n ILayerPlugin,\n ILayerService,\n ILegendClassificaItem,\n ILegendSegmentItem,\n IMapService,\n IModel,\n IModelInitializationOptions,\n IMultiPassRenderer,\n IPass,\n IPickingService,\n IPostProcessingPass,\n IRendererService,\n IScale,\n IScaleOptions,\n IShaderModuleService,\n ISource,\n ISourceCFG,\n IStyleAttributeInitializationOptions,\n IStyleAttributeService,\n IStyleAttributeUpdateOptions,\n lazyInject,\n LegendItems,\n ScaleAttributeType,\n ScaleTypeName,\n ScaleTypes,\n StyleAttributeField,\n StyleAttributeOption,\n Triangulation,\n TYPES,\n} from '@antv/l7-core';\nimport Source from '@antv/l7-source';\nimport { encodePickingColor } from '@antv/l7-utils';\nimport { EventEmitter } from 'eventemitter3';\nimport { Container } from 'inversify';\nimport { isEqual, isFunction, isObject, isUndefined } from 'lodash';\nimport { BlendTypes } from '../utils/blend';\nimport { handleStyleDataMapping } from '../utils/dataMappingStyle';\nimport { calculateData } from '../utils/layerData';\nimport {\n createMultiPassRenderer,\n normalizePasses,\n} from '../utils/multiPassRender';\nimport { updateShape } from '../utils/updateShape';\n/**\n * 分配 layer id\n */\nlet layerIdCounter = 0;\n\nexport default class BaseLayer<ChildLayerStyleOptions = {}> extends EventEmitter\n implements ILayer {\n public id: string = `${layerIdCounter++}`;\n public name: string = `${layerIdCounter}`;\n public type: string;\n public visible: boolean = true;\n public zIndex: number = 0;\n public minZoom: number;\n public maxZoom: number;\n public inited: boolean = false;\n public layerModelNeedUpdate: boolean = false;\n public pickedFeatureID: number | null = null;\n public selectedFeatureID: number | null = null;\n public styleNeedUpdate: boolean = false;\n public rendering: boolean;\n public clusterZoom: number = 0; // 聚合等级标记\n public layerType?: string | undefined;\n public isLayerGroup: boolean = false;\n public triangulation?: Triangulation | undefined;\n\n public dataState: IDataState = {\n dataSourceNeedUpdate: false,\n dataMappingNeedUpdate: false,\n filterNeedUpdate: false,\n featureScaleNeedUpdate: false,\n StyleAttrNeedUpdate: false,\n };\n // 生命周期钩子\n public hooks = {\n init: new SyncBailHook(),\n afterInit: new SyncBailHook(),\n beforeRender: new SyncBailHook(),\n beforeRenderData: new SyncWaterfallHook(),\n afterRender: new SyncHook(),\n beforePickingEncode: new SyncHook(),\n afterPickingEncode: new SyncHook(),\n beforeHighlight: new SyncHook(['pickedColor']),\n afterHighlight: new SyncHook(),\n beforeSelect: new SyncHook(['pickedColor']),\n afterSelect: new SyncHook(),\n beforeDestroy: new SyncHook(),\n afterDestroy: new SyncHook(),\n };\n\n // 待渲染 model 列表\n public models: IModel[] = [];\n\n // 每个 Layer 都有一个\n public multiPassRenderer: IMultiPassRenderer;\n\n // 注入插件集\n public plugins: ILayerPlugin[];\n\n public sourceOption: {\n data: any;\n options?: ISourceCFG;\n };\n\n public layerModel: ILayerModel;\n\n public shapeOption: {\n field: any;\n values: any;\n };\n\n // TODO: 记录 sceneContainer 供创建子图层的时候使用 如 imageTileLayer\n public sceneContainer: Container | undefined;\n // TODO: 用于保存子图层对象\n public layerChildren: ILayer[] = [];\n public masks: ILayer[] = [];\n\n @lazyInject(TYPES.IGlobalConfigService)\n protected readonly configService: IGlobalConfigService;\n\n // @lazyInject(TYPES.IShaderModuleService)\n // protected readonly shaderModuleService: IShaderModuleService;\n\n protected shaderModuleService: IShaderModuleService;\n protected cameraService: ICameraService;\n\n protected coordinateService: ICoordinateSystemService;\n\n protected iconService: IIconService;\n\n protected fontService: IFontService;\n\n protected pickingService: IPickingService;\n\n protected rendererService: IRendererService;\n\n protected layerService: ILayerService;\n\n protected interactionService: IInteractionService;\n\n protected mapService: IMapService;\n\n protected styleAttributeService: IStyleAttributeService;\n\n protected layerSource: Source;\n\n protected postProcessingPassFactory: (\n name: string,\n ) => IPostProcessingPass<unknown>;\n protected normalPassFactory: (name: string) => IPass<unknown>;\n\n protected animateOptions: IAnimateOption = { enable: false };\n\n /**\n * 图层容器\n */\n private container: Container;\n\n private encodedData: IEncodeFeature[];\n\n private configSchema: object;\n\n private currentPickId: number | null = null;\n\n private rawConfig: Partial<ILayerConfig & ChildLayerStyleOptions>;\n\n private needUpdateConfig: Partial<ILayerConfig & ChildLayerStyleOptions>;\n\n /**\n * 待更新样式属性,在初始化阶段完成注册\n */\n private pendingStyleAttributes: Array<{\n attributeName: string;\n attributeField: StyleAttributeField;\n attributeValues?: StyleAttributeOption;\n defaultName?: string;\n updateOptions?: Partial<IStyleAttributeUpdateOptions>;\n }> = [];\n\n private scaleOptions: IScaleOptions = {};\n\n private animateStartTime: number;\n\n private aniamateStatus: boolean = false;\n\n // TODO: layer 保底颜色\n private bottomColor = 'rgba(0, 0, 0, 0)';\n\n private isDestroied: boolean = false;\n\n // private pickingPassRender: IPass<'pixelPicking'>;\n\n constructor(config: Partial<ILayerConfig & ChildLayerStyleOptions> = {}) {\n super();\n this.name = config.name || this.id;\n this.zIndex = config.zIndex || 0;\n this.rawConfig = config;\n }\n\n public addMaskLayer(maskLayer: ILayer) {\n this.masks.push(maskLayer);\n }\n\n public removeMaskLayer(maskLayer: ILayer) {\n const layerIndex = this.masks.indexOf(maskLayer);\n if (layerIndex > -1) {\n this.masks.splice(layerIndex, 1);\n }\n maskLayer.destroy();\n }\n\n public getLayerConfig() {\n return this.configService.getLayerConfig<ChildLayerStyleOptions>(this.id);\n }\n\n public updateLayerConfig(\n configToUpdate: Partial<ILayerConfig | ChildLayerStyleOptions>,\n ) {\n if (!this.inited) {\n this.needUpdateConfig = {\n ...this.needUpdateConfig,\n ...configToUpdate,\n };\n } else {\n const sceneId = this.container.get<string>(TYPES.SceneID);\n\n // @ts-ignore\n handleStyleDataMapping(configToUpdate, this); // 处理 style 中进行数据映射的属性字段\n\n this.configService.setLayerConfig(sceneId, this.id, {\n ...this.configService.getLayerConfig(this.id),\n ...this.needUpdateConfig,\n ...configToUpdate,\n });\n this.needUpdateConfig = {};\n }\n }\n\n /**\n * 注入图层容器,父容器为场景容器\n * RootContainer 1\n * -> SceneContainer 1.*\n * -> LayerContainer 1.*\n */\n public setContainer(container: Container, sceneContainer: Container) {\n this.container = container;\n this.sceneContainer = sceneContainer;\n }\n\n public getContainer() {\n return this.container;\n }\n\n public setBottomColor(color: string) {\n this.bottomColor = color;\n }\n\n public getBottomColor() {\n return this.bottomColor;\n }\n\n public addPlugin(plugin: ILayerPlugin): ILayer {\n // TODO: 控制插件注册顺序\n // @example:\n // pointLayer.addPlugin(new MyCustomPlugin(), {\n // before: 'L7BuiltinPlugin'\n // });\n this.plugins.push(plugin);\n return this;\n }\n\n public init() {\n // 设置配置项\n const sceneId = this.container.get<string>(TYPES.SceneID);\n // 初始化图层配置项\n // const { enableMultiPassRenderer = false } = this.rawConfig;\n // this.configService.setLayerConfig(sceneId, this.id, {\n // enableMultiPassRenderer,\n // });\n this.configService.setLayerConfig(sceneId, this.id, this.rawConfig);\n this.layerType = this.rawConfig.layerType;\n\n // 全局容器服务\n\n // 场景容器服务\n this.iconService = this.container.get<IIconService>(TYPES.IIconService);\n this.fontService = this.container.get<IFontService>(TYPES.IFontService);\n\n this.rendererService = this.container.get<IRendererService>(\n TYPES.IRendererService,\n );\n this.layerService = this.container.get<ILayerService>(TYPES.ILayerService);\n this.interactionService = this.container.get<IInteractionService>(\n TYPES.IInteractionService,\n );\n\n this.pickingService = this.container.get<IPickingService>(\n TYPES.IPickingService,\n );\n this.mapService = this.container.get<IMapService>(TYPES.IMapService);\n const { enableMultiPassRenderer, passes } = this.getLayerConfig();\n if (enableMultiPassRenderer && passes?.length && passes.length > 0) {\n // Tip: 兼容 multiPassRender 在 amap1 时存在的图层不同步问题 zoom\n this.mapService.on('mapAfterFrameChange', () => {\n this.renderLayers();\n });\n }\n\n this.cameraService = this.container.get<ICameraService>(\n TYPES.ICameraService,\n );\n this.coordinateService = this.container.get<ICoordinateSystemService>(\n TYPES.ICoordinateSystemService,\n );\n this.shaderModuleService = this.container.get<IShaderModuleService>(\n TYPES.IShaderModuleService,\n );\n this.postProcessingPassFactory = this.container.get(\n TYPES.IFactoryPostProcessingPass,\n );\n this.normalPassFactory = this.container.get(TYPES.IFactoryNormalPass);\n\n // 图层容器服务\n this.styleAttributeService = this.container.get<IStyleAttributeService>(\n TYPES.IStyleAttributeService,\n );\n this.multiPassRenderer = this.container.get<IMultiPassRenderer>(\n TYPES.IMultiPassRenderer,\n );\n this.multiPassRenderer.setLayer(this);\n\n // 完成样式服务注册完成前添加的属性\n this.pendingStyleAttributes.forEach(\n ({ attributeName, attributeField, attributeValues, updateOptions }) => {\n this.styleAttributeService.updateStyleAttribute(\n attributeName,\n {\n // @ts-ignore\n scale: {\n field: attributeField,\n ...this.splitValuesAndCallbackInAttribute(\n // @ts-ignore\n attributeValues,\n // @ts-ignore\n this.getLayerConfig()[attributeName],\n ),\n },\n },\n // @ts-ignore\n updateOptions,\n );\n },\n );\n this.pendingStyleAttributes = [];\n\n // 获取插件集\n this.plugins = this.container.getAll<ILayerPlugin>(TYPES.ILayerPlugin);\n // 完成插件注册,传入场景和图层容器内的服务\n for (const plugin of this.plugins) {\n plugin.apply(this, {\n rendererService: this.rendererService,\n mapService: this.mapService,\n styleAttributeService: this.styleAttributeService,\n normalPassFactory: this.normalPassFactory,\n postProcessingPassFactory: this.postProcessingPassFactory,\n });\n }\n\n // 触发 init 生命周期插件\n this.hooks.init.call();\n // this.pickingPassRender = this.normalPassFactory('pixelPicking');\n // this.pickingPassRender.init(this);\n this.hooks.afterInit.call();\n\n // 触发初始化完成事件;\n this.emit('inited', {\n target: this,\n type: 'inited',\n });\n this.emit('add', {\n target: this,\n type: 'add',\n });\n\n return this;\n }\n\n public updateModelData(data: IAttrubuteAndElements) {\n if (data.attributes && data.elements) {\n this.models.map((m) => {\n m.updateAttributesAndElements(data.attributes, data.elements);\n });\n } else {\n console.warn('data error');\n }\n }\n\n public createModelData(data: any, option?: ISourceCFG) {\n if (this.layerModel.createModelData) {\n // 在某些特殊图层中单独构建 attribute & elements\n return this.layerModel.createModelData(option);\n }\n const calEncodeData = this.calculateEncodeData(data, option);\n const triangulation = this.triangulation;\n if (calEncodeData && triangulation) {\n return this.styleAttributeService.createAttributesAndIndices(\n calEncodeData,\n triangulation,\n );\n } else {\n return {\n attributes: undefined,\n elements: undefined,\n };\n }\n }\n\n public calculateEncodeData(data: any, option?: ISourceCFG) {\n if (this.inited) {\n return calculateData(\n this,\n this.fontService,\n this.mapService,\n this.styleAttributeService,\n data,\n option,\n );\n } else {\n console.warn('layer not inited!');\n return null;\n }\n }\n /**\n * Model初始化前需要更新Model样式\n */\n public prepareBuildModel() {\n this.inited = true;\n this.updateLayerConfig({\n ...(this.getDefaultConfig() as object),\n ...this.rawConfig,\n });\n\n // 启动动画\n const { animateOption } = this.getLayerConfig();\n if (animateOption?.enable) {\n this.layerService.startAnimate();\n this.aniamateStatus = true;\n }\n }\n public color(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n // 设置 color、size、shape、style 时由于场景服务尚未完成(并没有调用 scene.addLayer),因此暂时加入待更新属性列表\n this.updateStyleAttribute('color', field, values, updateOptions);\n\n // this.pendingStyleAttributes.push({\n // attributeName: 'color',\n // attributeField: field,\n // attributeValues: values,\n // defaultName: 'colors',\n // updateOptions,\n // });\n return this;\n }\n\n // 为对应的图层传入纹理的编号名称(point/image 在 shape 方法中传入纹理名称的方法并不通用)\n public texture(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n this.updateStyleAttribute('texture', field, values, updateOptions);\n return this;\n }\n\n public rotate(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n this.updateStyleAttribute('rotate', field, values, updateOptions);\n return this;\n }\n public size(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n this.updateStyleAttribute('size', field, values, updateOptions);\n return this;\n }\n // 对mapping后的数据过滤,scale保持不变\n public filter(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n this.updateStyleAttribute('filter', field, values, updateOptions);\n return this;\n }\n\n public shape(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n const lastShape = this.styleAttributeService?.getLayerStyleAttribute(\n 'shape',\n )?.scale?.field;\n const currentShape = field;\n this.shapeOption = {\n field,\n values,\n };\n this.updateStyleAttribute('shape', field, values, updateOptions);\n // TODO: 根据 shape 判断是否需要更新 model\n updateShape(this, lastShape, currentShape);\n return this;\n }\n public label(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n this.pendingStyleAttributes.push({\n attributeName: 'label',\n attributeField: field,\n attributeValues: values,\n updateOptions,\n });\n return this;\n }\n public animate(options: IAnimateOption | boolean) {\n let rawAnimate: Partial<IAnimateOption> = {};\n if (isObject(options)) {\n rawAnimate.enable = true;\n rawAnimate = {\n ...rawAnimate,\n ...options,\n };\n } else {\n rawAnimate.enable = options;\n }\n this.updateLayerConfig({\n animateOption: rawAnimate,\n });\n // this.animateOptions = options;\n return this;\n }\n\n public source(data: any, options?: ISourceCFG): ILayer {\n if (data?.data) {\n // 判断是否为source\n this.setSource(data);\n return this;\n }\n this.sourceOption = {\n data,\n options,\n };\n this.clusterZoom = 0;\n return this;\n }\n\n public setData(data: any, options?: ISourceCFG) {\n if (this.inited) {\n this.layerSource.setData(data, options);\n } else {\n this.on('inited', () => {\n const currentSource = this.getSource();\n if (!currentSource) {\n // 执行 setData 的时候 source 还不存在(还未执行 addLayer)\n this.source(new Source(data, options));\n this.sourceEvent();\n } else {\n this.layerSource.setData(data, options);\n }\n // this.layerSource.setData(data, options);\n });\n }\n\n return this;\n }\n public style(\n options: Partial<ChildLayerStyleOptions> & Partial<ILayerConfig>,\n ): ILayer {\n const lastConfig = this.getLayerConfig();\n const { passes, ...rest } = options;\n\n // passes 特殊处理\n if (passes) {\n normalizePasses(passes).forEach(\n (pass: [string, { [key: string]: unknown }]) => {\n const postProcessingPass = this.multiPassRenderer\n .getPostProcessor()\n .getPostProcessingPassByName(pass[0]);\n if (postProcessingPass) {\n postProcessingPass.updateOptions(pass[1]);\n }\n },\n );\n }\n\n this.rawConfig = {\n ...this.rawConfig,\n ...rest,\n };\n if (this.container) {\n this.updateLayerConfig(this.rawConfig);\n this.styleNeedUpdate = true;\n }\n\n // @ts-ignore\n if (lastConfig && lastConfig.mask === true && options.mask === false) {\n this.clearModels();\n this.models = this.layerModel.buildModels();\n }\n return this;\n }\n public scale(field: string | number | IScaleOptions, cfg?: IScale) {\n if (isObject(field)) {\n this.scaleOptions = {\n ...this.scaleOptions,\n ...field,\n };\n } else {\n this.scaleOptions[field] = cfg;\n }\n return this;\n }\n\n /**\n * 渲染所有的图层\n */\n public renderLayers(): void {\n this.rendering = true;\n\n this.layerService.renderLayers();\n\n this.rendering = false;\n }\n\n public render(): ILayer {\n // TODO: this.getEncodedData().length !== 0 这个判断是为了解决在 2.5.x 引入数据纹理后产生的 空数据渲染导致 texture 超出上限问题\n if (this.getEncodedData().length !== 0) {\n this.renderModels();\n }\n return this;\n }\n\n /**\n * renderMultiPass 专门用于渲染支持 multipass 的 layer\n */\n public async renderMultiPass() {\n if (this.getEncodedData().length !== 0) {\n if (this.multiPassRenderer && this.multiPassRenderer.getRenderFlag()) {\n // multi render 开始执行 multiPassRender 的渲染流程\n await this.multiPassRenderer.render();\n } else if (this.multiPassRenderer) {\n // renderPass 触发的渲染\n this.renderModels();\n } else {\n this.renderModels();\n }\n }\n }\n\n public active(options: IActiveOption | boolean) {\n const activeOption: Partial<ILayerConfig> = {};\n activeOption.enableHighlight = isObject(options) ? true : options;\n if (isObject(options)) {\n activeOption.enableHighlight = true;\n if (options.color) {\n activeOption.highlightColor = options.color;\n }\n if (options.mix) {\n activeOption.activeMix = options.mix;\n }\n } else {\n activeOption.enableHighlight = !!options;\n }\n this.updateLayerConfig(activeOption);\n return this;\n }\n public setActive(\n id: number | { x: number; y: number },\n options?: IActiveOption,\n ): void {\n if (isObject(id)) {\n const { x = 0, y = 0 } = id;\n this.updateLayerConfig({\n highlightColor: isObject(options)\n ? options.color\n : this.getLayerConfig().highlightColor,\n activeMix: isObject(options)\n ? options.mix\n : this.getLayerConfig().activeMix,\n });\n this.pick({ x, y });\n } else {\n this.updateLayerConfig({\n pickedFeatureID: id,\n highlightColor: isObject(options)\n ? options.color\n : this.getLayerConfig().highlightColor,\n activeMix: isObject(options)\n ? options.mix\n : this.getLayerConfig().activeMix,\n });\n this.hooks.beforeSelect\n .call(encodePickingColor(id as number) as number[])\n // @ts-ignore\n .then(() => {\n setTimeout(() => {\n this.reRender();\n }, 1);\n });\n }\n }\n\n public select(option: IActiveOption | boolean): ILayer {\n const activeOption: Partial<ILayerConfig> = {};\n activeOption.enableSelect = isObject(option) ? true : option;\n if (isObject(option)) {\n activeOption.enableSelect = true;\n if (option.color) {\n activeOption.selectColor = option.color;\n }\n if (option.mix) {\n activeOption.selectMix = option.mix;\n }\n } else {\n activeOption.enableSelect = !!option;\n }\n this.updateLayerConfig(activeOption);\n return this;\n }\n\n public setSelect(\n id: number | { x: number; y: number },\n options?: IActiveOption,\n ): void {\n if (isObject(id)) {\n const { x = 0, y = 0 } = id;\n this.updateLayerConfig({\n selectColor: isObject(options)\n ? options.color\n : this.getLayerConfig().selectColor,\n selectMix: isObject(options)\n ? options.mix\n : this.getLayerConfig().selectMix,\n });\n this.pick({ x, y });\n } else {\n this.updateLayerConfig({\n pickedFeatureID: id,\n selectColor: isObject(options)\n ? options.color\n : this.getLayerConfig().selectColor,\n selectMix: isObject(options)\n ? options.mix\n : this.getLayerConfig().selectMix,\n });\n this.hooks.beforeSelect\n .call(encodePickingColor(id as number) as number[])\n // @ts-ignore\n .then(() => {\n setTimeout(() => {\n this.reRender();\n }, 1);\n });\n }\n }\n public setBlend(type: keyof typeof BlendType): ILayer {\n this.updateLayerConfig({\n blend: type,\n });\n this.layerModelNeedUpdate = true;\n this.reRender();\n return this;\n }\n public show(): ILayer {\n this.updateLayerConfig({\n visible: true,\n });\n this.reRender();\n return this;\n }\n\n public hide(): ILayer {\n if (this.type === 'CanvasLayer' && this.layerModel.clearCanvas) {\n // 对 canvasLayer 的 hide 操作做特殊处理\n this.layerModel.clearCanvas();\n }\n this.updateLayerConfig({\n visible: false,\n });\n this.reRender();\n return this;\n }\n public setIndex(index: number): ILayer {\n this.zIndex = index;\n this.layerService.updateLayerRenderList();\n this.layerService.renderLayers();\n return this;\n }\n\n public setCurrentPickId(id: number) {\n this.currentPickId = id;\n }\n\n public getCurrentPickId(): number | null {\n return this.currentPickId;\n }\n\n public setCurrentSelectedId(id: number) {\n this.selectedFeatureID = id;\n }\n\n public getCurrentSelectedId(): number | null {\n return this.selectedFeatureID;\n }\n public isVisible(): boolean {\n const zoom = this.mapService.getZoom();\n const {\n visible,\n minZoom = -Infinity,\n maxZoom = Infinity,\n } = this.getLayerConfig();\n return !!visible && zoom >= minZoom && zoom <= maxZoom;\n }\n\n public setMultiPass(\n enableMultiPass: boolean,\n currentPasses?: Array<string | [string, { [key: string]: unknown }]>,\n ) {\n this.updateLayerConfig({\n enableMultiPassRenderer: enableMultiPass,\n });\n if (currentPasses) {\n this.updateLayerConfig({\n passes: currentPasses,\n });\n }\n\n if (enableMultiPass) {\n const { passes = [] } = this.getLayerConfig();\n this.multiPassRenderer = createMultiPassRenderer(\n this,\n passes,\n this.postProcessingPassFactory,\n this.normalPassFactory,\n );\n this.multiPassRenderer.setRenderFlag(true);\n const { width, height } = this.rendererService.getViewportSize();\n this.multiPassRenderer.resize(width, height);\n }\n\n return this;\n }\n\n public setMinZoom(minZoom: number): ILayer {\n this.updateLayerConfig({\n minZoom,\n });\n return this;\n }\n\n public getMinZoom(): number {\n const { minZoom } = this.getLayerConfig();\n return minZoom as number;\n }\n\n public getMaxZoom(): number {\n const { maxZoom } = this.getLayerConfig();\n return maxZoom as number;\n }\n\n public get(name: string) {\n const cfg = this.getLayerConfig();\n // @ts-ignore\n return cfg[name];\n }\n\n public setMaxZoom(maxZoom: number): ILayer {\n this.updateLayerConfig({\n maxZoom,\n });\n return this;\n }\n\n public setAutoFit(autoFit: boolean): ILayer {\n this.updateLayerConfig({\n autoFit,\n });\n return this;\n }\n\n /**\n * zoom to layer Bounds\n */\n public fitBounds(fitBoundsOptions?: unknown): ILayer {\n if (!this.inited) {\n this.updateLayerConfig({\n autoFit: true,\n });\n return this;\n }\n const source = this.getSource();\n const extent = source.extent;\n const isValid = extent.some((v) => Math.abs(v) === Infinity);\n if (isValid) {\n return this;\n }\n this.mapService.fitBounds(\n [\n [extent[0], extent[1]],\n [extent[2], extent[3]],\n ],\n fitBoundsOptions,\n );\n return this;\n }\n\n public destroy() {\n if (this.isDestroied) {\n return;\n }\n\n // remove child layer\n this.layerChildren.map((child: ILayer) => child.destroy());\n this.layerChildren = [];\n\n // remove mask list\n this.masks.map((mask: ILayer) => mask.destroy());\n this.masks = [];\n\n this.hooks.beforeDestroy.call();\n // 清除sources事件\n this.layerSource.off('update', this.sourceEvent);\n\n this.multiPassRenderer.destroy();\n // console.log(this.styleAttributeService.getAttributes())\n // 清除所有属性以及关联的 vao == 销毁所有 => model this.models.forEach((model) => model.destroy());\n this.styleAttributeService.clearAllAttributes();\n\n // 执行每个图层单独的 clearModels 方法 (清除一些额外的 texture、program、buffer 等)\n\n this.hooks.afterDestroy.call();\n\n // TODO: 清除各个图层自定义的 models 资源\n this.layerModel?.clearModels();\n\n this.models = [];\n\n this.layerService.cleanRemove(this);\n\n this.emit('remove', {\n target: this,\n type: 'remove',\n });\n\n this.emit('destroy', {\n target: this,\n type: 'destroy',\n });\n\n this.removeAllListeners();\n // 解绑图层容器中的服务\n // this.container.unbind(TYPES.IStyleAttributeService);\n\n this.isDestroied = true;\n }\n public clear() {\n this.styleAttributeService.clearAllAttributes();\n // 销毁所有 model\n }\n public clearModels() {\n this.models.forEach((model) => model.destroy());\n this.layerModel.clearModels();\n this.models = [];\n }\n\n public isDirty() {\n return !!(\n this.styleAttributeService.getLayerStyleAttributes() || []\n ).filter(\n (attribute) =>\n attribute.needRescale ||\n attribute.needRemapping ||\n attribute.needRegenerateVertices,\n ).length;\n }\n\n public setSource(source: Source) {\n // 清除旧 sources 事件\n if (this.layerSource) {\n this.layerSource.off('update', this.sourceEvent);\n }\n\n this.layerSource = source;\n this.clusterZoom = 0;\n\n // 已 inited 且启用聚合进行更新聚合数据\n if (this.inited && this.layerSource.cluster) {\n const zoom = this.mapService.getZoom();\n this.layerSource.updateClusterData(zoom);\n }\n // source 可能会复用,会在其它layer被修改\n this.layerSource.on('update', this.sourceEvent);\n }\n public getSource() {\n return this.layerSource;\n }\n\n public getScaleOptions() {\n return this.scaleOptions;\n }\n\n public setEncodedData(encodedData: IEncodeFeature[]) {\n this.encodedData = encodedData;\n }\n public getEncodedData() {\n return this.encodedData;\n }\n\n public getScale(name: string): any {\n return this.styleAttributeService.getLayerAttributeScale(name);\n }\n\n public getLegendItems(name: string): LegendItems {\n const scale = this.styleAttributeService.getLayerAttributeScale(name);\n\n // 函数自定义映射,没有 scale 返回为空数组\n if (!scale) {\n return [];\n }\n\n if (scale.invertExtent) {\n // 分段类型 Quantize、Quantile、Threshold\n const items: ILegendSegmentItem[] = scale.range().map((item: number) => {\n return {\n value: scale.invertExtent(item),\n [name]: item,\n };\n });\n\n return items;\n } else if (scale.ticks) {\n // 连续类型 Continuous (Linear, Power, Log, Identity, Time)\n const items: ILegendClassificaItem[] = scale\n .ticks()\n .map((item: string) => {\n return {\n value: item,\n [name]: scale(item),\n };\n });\n\n return items;\n } else if (scale?.domain) {\n // 枚举类型 Cat\n const items: ILegendClassificaItem[] = scale\n .domain()\n .filter((item: string | number | undefined) => !isUndefined(item))\n .map((item: string | number) => {\n return {\n value: item,\n [name]: scale(item) as string,\n };\n });\n\n return items;\n }\n\n return [];\n }\n\n public pick({ x, y }: { x: number; y: number }) {\n this.interactionService.triggerHover({ x, y });\n }\n\n public boxSelect(\n box: [number, number, number, number],\n cb: (...args: any[]) => void,\n ) {\n this.pickingService.boxPickLayer(this, box, cb);\n }\n\n public buildLayerModel(\n options: ILayerModelInitializationOptions &\n Partial<IModelInitializationOptions>,\n ): IModel {\n const {\n moduleName,\n vertexShader,\n fragmentShader,\n triangulation,\n segmentNumber,\n ...rest\n } = options;\n this.shaderModuleService.registerModule(moduleName, {\n vs: vertexShader,\n fs: fragmentShader,\n });\n const { vs, fs, uniforms } = this.shaderModuleService.getModule(moduleName);\n const { createModel } = this.rendererService;\n const {\n attributes,\n elements,\n } = this.styleAttributeService.createAttributesAndIndices(\n this.encodedData,\n triangulation,\n segmentNumber,\n );\n return createModel({\n attributes,\n uniforms,\n fs,\n vs,\n elements,\n blend: BlendTypes[BlendType.normal],\n ...rest,\n });\n }\n\n public createAttrubutes(\n options: ILayerModelInitializationOptions &\n Partial<IModelInitializationOptions>,\n ) {\n const { triangulation } = options;\n // @ts-ignore\n const { attributes } = this.styleAttributeService.createAttributes(\n this.encodedData,\n triangulation,\n );\n return attributes;\n }\n\n public getTime() {\n return this.layerService.clock.getDelta();\n }\n public setAnimateStartTime() {\n this.animateStartTime = this.layerService.clock.getElapsedTime();\n }\n public stopAnimate() {\n if (this.aniamateStatus) {\n this.layerService.stopAnimate();\n this.aniamateStatus = false;\n this.updateLayerConfig({\n animateOption: {\n enable: false,\n },\n });\n }\n }\n public getLayerAnimateTime(): number {\n return this.layerService.clock.getElapsedTime() - this.animateStartTime;\n }\n\n public needPick(type: string): boolean {\n const {\n enableHighlight = true,\n enableSelect = true,\n } = this.getLayerConfig();\n // 判断layer是否监听事件;\n let isPick =\n this.eventNames().indexOf(type) !== -1 ||\n this.eventNames().indexOf('un' + type) !== -1;\n if ((type === 'click' || type === 'dblclick') && enableSelect) {\n isPick = true;\n }\n if (\n type === 'mousemove' &&\n (enableHighlight ||\n this.eventNames().indexOf('mouseenter') !== -1 ||\n this.eventNames().indexOf('unmousemove') !== -1 ||\n this.eventNames().indexOf('mouseout') !== -1)\n ) {\n isPick = true;\n }\n return this.isVisible() && isPick;\n }\n\n public buildModels() {\n throw new Error('Method not implemented.');\n }\n public rebuildModels() {\n throw new Error('Method not implemented.');\n }\n\n public async renderMulPass(multiPassRenderer: IMultiPassRenderer) {\n await multiPassRenderer.render();\n }\n\n public renderModels(isPicking?: boolean) {\n // TODO: this.getEncodedData().length > 0 这个判断是为了解决在 2.5.x 引入数据纹理后产生的 空数据渲染导致 texture 超出上限问题\n if (this.getEncodedData().length > 0) {\n if (this.layerModelNeedUpdate && this.layerModel) {\n this.models = this.layerModel.buildModels();\n this.hooks.beforeRender.call();\n this.layerModelNeedUpdate = false;\n }\n if (this.layerModel.renderUpdate) {\n this.layerModel.renderUpdate();\n }\n this.models.forEach((model) => {\n model.draw(\n {\n uniforms: this.layerModel.getUninforms(),\n },\n isPicking,\n );\n });\n }\n return this;\n }\n\n public updateStyleAttribute(\n type: string,\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n if (!this.inited) {\n this.pendingStyleAttributes.push({\n attributeName: type,\n attributeField: field,\n attributeValues: values,\n updateOptions,\n });\n } else {\n this.styleAttributeService.updateStyleAttribute(\n type,\n {\n // @ts-ignore\n scale: {\n field,\n ...this.splitValuesAndCallbackInAttribute(\n // @ts-ignore\n values,\n // @ts-ignore\n this.getLayerConfig()[field],\n ),\n },\n },\n // @ts-ignore\n updateOptions,\n );\n }\n }\n\n public getShaderPickStat() {\n return this.layerService.getShaderPickStat();\n }\n\n /**\n * 继承空方法\n * @param time\n */\n public setEarthTime(time: number) {\n console.warn('empty fn');\n }\n\n protected getConfigSchema() {\n throw new Error('Method not implemented.');\n }\n\n protected getModelType(): unknown {\n throw new Error('Method not implemented.');\n }\n protected getDefaultConfig() {\n return {};\n }\n\n private sourceEvent = () => {\n this.dataState.dataSourceNeedUpdate = true;\n const { autoFit, fitBoundsOptions } = this.getLayerConfig();\n if (autoFit) {\n this.fitBounds(fitBoundsOptions);\n }\n // 对外暴露事件 迁移到 DataMappingPlugin generateMapping,保证在重新重新映射后触发\n // this.emit('dataUpdate');\n this.reRender();\n };\n\n private reRender() {\n if (this.inited) {\n this.layerService.updateLayerRenderList();\n this.layerService.renderLayers();\n }\n }\n private splitValuesAndCallbackInAttribute(\n valuesOrCallback?: unknown[],\n defaultValues?: unknown[],\n ) {\n return {\n values: isFunction(valuesOrCallback)\n ? undefined\n : valuesOrCallback || defaultValues,\n callback: isFunction(valuesOrCallback) ? valuesOrCallback : undefined,\n };\n }\n}\n"],"file":"BaseLayer.js"}
@@ -221,6 +221,7 @@ var LineModel = function (_BaseModel) {
221
221
  vert = _this$getShaders.vert,
222
222
  type = _this$getShaders.type;
223
223
 
224
+ this.layer.triangulation = LineTriangulation;
224
225
  return [this.layer.buildLayerModel({
225
226
  moduleName: 'line_' + type,
226
227
  vertexShader: vert,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/line/models/line.ts"],"names":["AttributeType","gl","getMask","rgb2arr","BaseModel","LineTriangulation","lineStyleObj","solid","dash","LineModel","createTexture2D","rendererService","texture","update","data","iconService","getCanvas","layer","render","mag","NEAREST","min","premultiplyAlpha","width","height","canvasHeight","getLayerConfig","opacity","sourceColor","targetColor","textureBlend","lineType","dashArray","lineTexture","iconStep","vertexHeightScale","borderWidth","borderColor","raisingHeight","heightfixed","arrow","enable","arrowWidth","arrowHeight","tailWidth","length","push","getDirty","bind","useLinearColor","sourceColorArr","targetColorArr","dataTextureTest","dataTextureNeedUpdate","judgeStyleAttributes","encodeData","getEncodedData","calDataFrame","cellLength","cellProperties","rowCount","dataTexture","flipY","format","LUMINANCE","type","FLOAT","u_dataTexture","u_cellTypeLayout","getCellTypeLayout","u_opacity","u_textureBlend","u_line_type","u_dash_array","u_texture","u_line_texture","u_icon_step","u_textSize","u_borderWidth","u_borderColor","u_linearColor","u_sourceColor","u_targetColor","u_heightfixed","Number","u_vertexScale","u_raisingHeight","u_arrow","u_arrowHeight","u_arrowWidth","u_tailWidth","undefined","animateOption","u_aimate","animateOption2Array","u_time","getLayerAnimateTime","updateTexture","on","buildModels","destroy","off","mask","maskInside","depth","getShaders","frag","vert","buildLayerModel","moduleName","vertexShader","fragmentShader","triangulation","primitive","TRIANGLES","blend","getBlend","stencil","line_dash_frag","line_dash_vert","linear_line_frag","line_vert","line_frag","styleAttributeService","registerStyleAttribute","name","Attribute","descriptor","buffer","usage","STATIC_DRAW","size","feature","featureIdx","vertex","attributeIdx","normal","vertexIndex","DYNAMIC_DRAW","Array","isArray","iconMap","getIconMap","x","y"],"mappings":"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","sourcesContent":["import {\n AttributeType,\n gl,\n IAnimateOption,\n IEncodeFeature,\n IImage,\n ILayerConfig,\n IModel,\n IModelUniform,\n ITexture2D,\n} from '@antv/l7-core';\n\nimport { getMask, rgb2arr } from '@antv/l7-utils';\nimport { isNumber } from 'lodash';\nimport BaseModel from '../../core/BaseModel';\nimport { ILineLayerStyleOptions, lineStyleType } from '../../core/interface';\nimport { LineTriangulation } from '../../core/triangulation';\n// dash line shader\nimport line_dash_frag from '../shaders/dash/line_dash_frag.glsl';\nimport line_dash_vert from '../shaders/dash/line_dash_vert.glsl';\n// basic line shader\nimport line_frag from '../shaders/line_frag.glsl';\nimport line_vert from '../shaders/line_vert.glsl';\n// other function shaders\nimport linear_line_frag from '../shaders/linear/line_linear_frag.glsl';\n\nconst lineStyleObj: { [key: string]: number } = {\n solid: 0.0,\n dash: 1.0,\n};\nexport default class LineModel extends BaseModel {\n protected texture: ITexture2D;\n public getUninforms(): IModelUniform {\n const {\n opacity,\n sourceColor,\n targetColor,\n textureBlend = 'normal',\n lineType = 'solid',\n dashArray = [10, 5, 0, 0],\n lineTexture = false,\n iconStep = 100,\n vertexHeightScale = 20.0,\n borderWidth = 0.0,\n borderColor = '#ccc',\n raisingHeight = 0,\n heightfixed = false,\n arrow = {\n enable: false,\n arrowWidth: 2,\n arrowHeight: 3,\n tailWidth: 1,\n },\n } = this.layer.getLayerConfig() as ILineLayerStyleOptions;\n if (dashArray.length === 2) {\n dashArray.push(0, 0);\n }\n\n if (this.rendererService.getDirty()) {\n this.texture.bind();\n }\n\n // 转化渐变色\n let useLinearColor = 0; // 默认不生效\n let sourceColorArr = [0, 0, 0, 0];\n let targetColorArr = [0, 0, 0, 0];\n if (sourceColor && targetColor) {\n sourceColorArr = rgb2arr(sourceColor);\n targetColorArr = rgb2arr(targetColor);\n useLinearColor = 1;\n }\n\n if (this.dataTextureTest && this.dataTextureNeedUpdate({ opacity })) {\n this.judgeStyleAttributes({ opacity });\n const encodeData = this.layer.getEncodedData();\n const { data, width, height } = this.calDataFrame(\n this.cellLength,\n encodeData,\n this.cellProperties,\n );\n this.rowCount = height; // 当前数据纹理有多少行\n\n this.dataTexture =\n this.cellLength > 0 && data.length > 0\n ? this.createTexture2D({\n flipY: true,\n data,\n format: gl.LUMINANCE,\n type: gl.FLOAT,\n width,\n height,\n })\n : this.createTexture2D({\n flipY: true,\n data: [1],\n format: gl.LUMINANCE,\n type: gl.FLOAT,\n width: 1,\n height: 1,\n });\n }\n return {\n u_dataTexture: this.dataTexture, // 数据纹理 - 有数据映射的时候纹理中带数据,若没有任何数据映射时纹理是 [1]\n u_cellTypeLayout: this.getCellTypeLayout(),\n // u_opacity: opacity === undefined ? 1 : opacity,\n u_opacity: isNumber(opacity) ? opacity : 1.0,\n u_textureBlend: textureBlend === 'normal' ? 0.0 : 1.0,\n u_line_type: lineStyleObj[lineType],\n u_dash_array: dashArray,\n\n // 纹理支持参数\n u_texture: this.texture, // 贴图\n u_line_texture: lineTexture ? 1.0 : 0.0, // 传入线的标识\n u_icon_step: iconStep,\n u_textSize: [1024, this.iconService.canvasHeight || 128],\n\n // line border 参数\n u_borderWidth: borderWidth,\n u_borderColor: rgb2arr(borderColor),\n\n // 渐变色支持参数\n u_linearColor: useLinearColor,\n u_sourceColor: sourceColorArr,\n u_targetColor: targetColorArr,\n\n // 是否固定高度\n u_heightfixed: Number(heightfixed),\n\n // 顶点高度 scale\n u_vertexScale: vertexHeightScale,\n u_raisingHeight: Number(raisingHeight),\n\n // arrow\n u_arrow: Number(arrow.enable),\n u_arrowHeight: arrow.arrowHeight || 3,\n u_arrowWidth: arrow.arrowWidth || 2,\n u_tailWidth: arrow.tailWidth === undefined ? 1 : arrow.tailWidth,\n };\n }\n public getAnimateUniforms(): IModelUniform {\n const { animateOption } = this.layer.getLayerConfig() as ILayerConfig;\n return {\n u_aimate: this.animateOption2Array(animateOption as IAnimateOption),\n u_time: this.layer.getLayerAnimateTime(),\n };\n }\n\n public initModels(): IModel[] {\n this.updateTexture();\n this.iconService.on('imageUpdate', this.updateTexture);\n\n return this.buildModels();\n }\n\n public clearModels() {\n this.texture?.destroy();\n this.dataTexture?.destroy();\n this.iconService.off('imageUpdate', this.updateTexture);\n }\n\n public buildModels(): IModel[] {\n const {\n mask = false,\n maskInside = true,\n depth = false,\n } = this.layer.getLayerConfig() as ILineLayerStyleOptions;\n const { frag, vert, type } = this.getShaders();\n return [\n this.layer.buildLayerModel({\n moduleName: 'line_' + type,\n vertexShader: vert,\n fragmentShader: frag,\n triangulation: LineTriangulation,\n primitive: gl.TRIANGLES,\n blend: this.getBlend(),\n depth: { enable: depth },\n // depth: { enable: true },\n stencil: getMask(mask, maskInside),\n }),\n ];\n }\n\n /**\n * 根据参数获取不同的 shader 代码\n * @returns\n */\n public getShaders(): { frag: string; vert: string; type: string } {\n const {\n sourceColor,\n targetColor,\n lineType,\n } = this.layer.getLayerConfig() as ILineLayerStyleOptions;\n\n if (lineType === 'dash') {\n return {\n frag: line_dash_frag,\n vert: line_dash_vert,\n type: 'dash',\n };\n }\n\n if (sourceColor && targetColor) {\n // 分离 linear 功能\n return {\n frag: linear_line_frag,\n vert: line_vert,\n type: 'linear',\n };\n } else {\n return {\n frag: line_frag,\n vert: line_vert,\n type: 'normal',\n };\n }\n }\n\n protected registerBuiltinAttributes() {\n this.styleAttributeService.registerStyleAttribute({\n name: 'distanceAndIndex',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_DistanceAndIndex',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.STATIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 2,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n normal: number[],\n vertexIndex?: number,\n ) => {\n return vertexIndex === undefined\n ? [vertex[3], 10]\n : [vertex[3], vertexIndex];\n },\n },\n });\n this.styleAttributeService.registerStyleAttribute({\n name: 'total_distance',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Total_Distance',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.STATIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 1,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n return [vertex[5]];\n },\n },\n });\n\n this.styleAttributeService.registerStyleAttribute({\n name: 'size',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Size',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 2,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const { size = 1 } = feature;\n return Array.isArray(size) ? [size[0], size[1]] : [size as number, 0];\n },\n },\n });\n\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'normal',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Normal',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.STATIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 3,\n // @ts-ignore\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n normal: number[],\n ) => {\n return normal;\n },\n },\n });\n\n this.styleAttributeService.registerStyleAttribute({\n name: 'miter',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Miter',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.STATIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 1,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n return [vertex[4]];\n },\n },\n });\n\n this.styleAttributeService.registerStyleAttribute({\n name: 'uv',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_iconMapUV',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 2,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const iconMap = this.iconService.getIconMap();\n const { texture } = feature;\n const { x, y } = iconMap[texture as string] || { x: 0, y: 0 };\n return [x, y];\n },\n },\n });\n }\n\n private updateTexture = () => {\n const { createTexture2D } = this.rendererService;\n if (this.texture) {\n this.texture.update({\n data: this.iconService.getCanvas(),\n });\n this.layer.render();\n return;\n }\n this.texture = createTexture2D({\n data: this.iconService.getCanvas(),\n mag: gl.NEAREST,\n min: gl.NEAREST,\n premultiplyAlpha: false,\n width: 1024,\n height: this.iconService.canvasHeight || 128,\n });\n };\n}\n"],"file":"line.js"}
1
+ {"version":3,"sources":["../../../src/line/models/line.ts"],"names":["AttributeType","gl","getMask","rgb2arr","BaseModel","LineTriangulation","lineStyleObj","solid","dash","LineModel","createTexture2D","rendererService","texture","update","data","iconService","getCanvas","layer","render","mag","NEAREST","min","premultiplyAlpha","width","height","canvasHeight","getLayerConfig","opacity","sourceColor","targetColor","textureBlend","lineType","dashArray","lineTexture","iconStep","vertexHeightScale","borderWidth","borderColor","raisingHeight","heightfixed","arrow","enable","arrowWidth","arrowHeight","tailWidth","length","push","getDirty","bind","useLinearColor","sourceColorArr","targetColorArr","dataTextureTest","dataTextureNeedUpdate","judgeStyleAttributes","encodeData","getEncodedData","calDataFrame","cellLength","cellProperties","rowCount","dataTexture","flipY","format","LUMINANCE","type","FLOAT","u_dataTexture","u_cellTypeLayout","getCellTypeLayout","u_opacity","u_textureBlend","u_line_type","u_dash_array","u_texture","u_line_texture","u_icon_step","u_textSize","u_borderWidth","u_borderColor","u_linearColor","u_sourceColor","u_targetColor","u_heightfixed","Number","u_vertexScale","u_raisingHeight","u_arrow","u_arrowHeight","u_arrowWidth","u_tailWidth","undefined","animateOption","u_aimate","animateOption2Array","u_time","getLayerAnimateTime","updateTexture","on","buildModels","destroy","off","mask","maskInside","depth","getShaders","frag","vert","triangulation","buildLayerModel","moduleName","vertexShader","fragmentShader","primitive","TRIANGLES","blend","getBlend","stencil","line_dash_frag","line_dash_vert","linear_line_frag","line_vert","line_frag","styleAttributeService","registerStyleAttribute","name","Attribute","descriptor","buffer","usage","STATIC_DRAW","size","feature","featureIdx","vertex","attributeIdx","normal","vertexIndex","DYNAMIC_DRAW","Array","isArray","iconMap","getIconMap","x","y"],"mappings":"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","sourcesContent":["import {\n AttributeType,\n gl,\n IAnimateOption,\n IEncodeFeature,\n IImage,\n ILayerConfig,\n IModel,\n IModelUniform,\n ITexture2D,\n} from '@antv/l7-core';\n\nimport { getMask, rgb2arr } from '@antv/l7-utils';\nimport { isNumber } from 'lodash';\nimport BaseModel from '../../core/BaseModel';\nimport { ILineLayerStyleOptions, lineStyleType } from '../../core/interface';\nimport { LineTriangulation } from '../../core/triangulation';\n// dash line shader\nimport line_dash_frag from '../shaders/dash/line_dash_frag.glsl';\nimport line_dash_vert from '../shaders/dash/line_dash_vert.glsl';\n// basic line shader\nimport line_frag from '../shaders/line_frag.glsl';\nimport line_vert from '../shaders/line_vert.glsl';\n// other function shaders\nimport linear_line_frag from '../shaders/linear/line_linear_frag.glsl';\n\nconst lineStyleObj: { [key: string]: number } = {\n solid: 0.0,\n dash: 1.0,\n};\nexport default class LineModel extends BaseModel {\n protected texture: ITexture2D;\n public getUninforms(): IModelUniform {\n const {\n opacity,\n sourceColor,\n targetColor,\n textureBlend = 'normal',\n lineType = 'solid',\n dashArray = [10, 5, 0, 0],\n lineTexture = false,\n iconStep = 100,\n vertexHeightScale = 20.0,\n borderWidth = 0.0,\n borderColor = '#ccc',\n raisingHeight = 0,\n heightfixed = false,\n arrow = {\n enable: false,\n arrowWidth: 2,\n arrowHeight: 3,\n tailWidth: 1,\n },\n } = this.layer.getLayerConfig() as ILineLayerStyleOptions;\n if (dashArray.length === 2) {\n dashArray.push(0, 0);\n }\n\n if (this.rendererService.getDirty()) {\n this.texture.bind();\n }\n\n // 转化渐变色\n let useLinearColor = 0; // 默认不生效\n let sourceColorArr = [0, 0, 0, 0];\n let targetColorArr = [0, 0, 0, 0];\n if (sourceColor && targetColor) {\n sourceColorArr = rgb2arr(sourceColor);\n targetColorArr = rgb2arr(targetColor);\n useLinearColor = 1;\n }\n\n if (this.dataTextureTest && this.dataTextureNeedUpdate({ opacity })) {\n this.judgeStyleAttributes({ opacity });\n const encodeData = this.layer.getEncodedData();\n const { data, width, height } = this.calDataFrame(\n this.cellLength,\n encodeData,\n this.cellProperties,\n );\n this.rowCount = height; // 当前数据纹理有多少行\n\n this.dataTexture =\n this.cellLength > 0 && data.length > 0\n ? this.createTexture2D({\n flipY: true,\n data,\n format: gl.LUMINANCE,\n type: gl.FLOAT,\n width,\n height,\n })\n : this.createTexture2D({\n flipY: true,\n data: [1],\n format: gl.LUMINANCE,\n type: gl.FLOAT,\n width: 1,\n height: 1,\n });\n }\n return {\n u_dataTexture: this.dataTexture, // 数据纹理 - 有数据映射的时候纹理中带数据,若没有任何数据映射时纹理是 [1]\n u_cellTypeLayout: this.getCellTypeLayout(),\n // u_opacity: opacity === undefined ? 1 : opacity,\n u_opacity: isNumber(opacity) ? opacity : 1.0,\n u_textureBlend: textureBlend === 'normal' ? 0.0 : 1.0,\n u_line_type: lineStyleObj[lineType],\n u_dash_array: dashArray,\n\n // 纹理支持参数\n u_texture: this.texture, // 贴图\n u_line_texture: lineTexture ? 1.0 : 0.0, // 传入线的标识\n u_icon_step: iconStep,\n u_textSize: [1024, this.iconService.canvasHeight || 128],\n\n // line border 参数\n u_borderWidth: borderWidth,\n u_borderColor: rgb2arr(borderColor),\n\n // 渐变色支持参数\n u_linearColor: useLinearColor,\n u_sourceColor: sourceColorArr,\n u_targetColor: targetColorArr,\n\n // 是否固定高度\n u_heightfixed: Number(heightfixed),\n\n // 顶点高度 scale\n u_vertexScale: vertexHeightScale,\n u_raisingHeight: Number(raisingHeight),\n\n // arrow\n u_arrow: Number(arrow.enable),\n u_arrowHeight: arrow.arrowHeight || 3,\n u_arrowWidth: arrow.arrowWidth || 2,\n u_tailWidth: arrow.tailWidth === undefined ? 1 : arrow.tailWidth,\n };\n }\n public getAnimateUniforms(): IModelUniform {\n const { animateOption } = this.layer.getLayerConfig() as ILayerConfig;\n return {\n u_aimate: this.animateOption2Array(animateOption as IAnimateOption),\n u_time: this.layer.getLayerAnimateTime(),\n };\n }\n\n public initModels(): IModel[] {\n this.updateTexture();\n this.iconService.on('imageUpdate', this.updateTexture);\n\n return this.buildModels();\n }\n\n public clearModels() {\n this.texture?.destroy();\n this.dataTexture?.destroy();\n this.iconService.off('imageUpdate', this.updateTexture);\n }\n\n public buildModels(): IModel[] {\n const {\n mask = false,\n maskInside = true,\n depth = false,\n } = this.layer.getLayerConfig() as ILineLayerStyleOptions;\n const { frag, vert, type } = this.getShaders();\n this.layer.triangulation = LineTriangulation;\n return [\n this.layer.buildLayerModel({\n moduleName: 'line_' + type,\n vertexShader: vert,\n fragmentShader: frag,\n triangulation: LineTriangulation,\n primitive: gl.TRIANGLES,\n blend: this.getBlend(),\n depth: { enable: depth },\n // depth: { enable: true },\n stencil: getMask(mask, maskInside),\n }),\n ];\n }\n\n /**\n * 根据参数获取不同的 shader 代码\n * @returns\n */\n public getShaders(): { frag: string; vert: string; type: string } {\n const {\n sourceColor,\n targetColor,\n lineType,\n } = this.layer.getLayerConfig() as ILineLayerStyleOptions;\n\n if (lineType === 'dash') {\n return {\n frag: line_dash_frag,\n vert: line_dash_vert,\n type: 'dash',\n };\n }\n\n if (sourceColor && targetColor) {\n // 分离 linear 功能\n return {\n frag: linear_line_frag,\n vert: line_vert,\n type: 'linear',\n };\n } else {\n return {\n frag: line_frag,\n vert: line_vert,\n type: 'normal',\n };\n }\n }\n\n protected registerBuiltinAttributes() {\n this.styleAttributeService.registerStyleAttribute({\n name: 'distanceAndIndex',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_DistanceAndIndex',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.STATIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 2,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n normal: number[],\n vertexIndex?: number,\n ) => {\n return vertexIndex === undefined\n ? [vertex[3], 10]\n : [vertex[3], vertexIndex];\n },\n },\n });\n this.styleAttributeService.registerStyleAttribute({\n name: 'total_distance',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Total_Distance',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.STATIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 1,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n return [vertex[5]];\n },\n },\n });\n\n this.styleAttributeService.registerStyleAttribute({\n name: 'size',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Size',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 2,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const { size = 1 } = feature;\n return Array.isArray(size) ? [size[0], size[1]] : [size as number, 0];\n },\n },\n });\n\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'normal',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Normal',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.STATIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 3,\n // @ts-ignore\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n normal: number[],\n ) => {\n return normal;\n },\n },\n });\n\n this.styleAttributeService.registerStyleAttribute({\n name: 'miter',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Miter',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.STATIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 1,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n return [vertex[4]];\n },\n },\n });\n\n this.styleAttributeService.registerStyleAttribute({\n name: 'uv',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_iconMapUV',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 2,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const iconMap = this.iconService.getIconMap();\n const { texture } = feature;\n const { x, y } = iconMap[texture as string] || { x: 0, y: 0 };\n return [x, y];\n },\n },\n });\n }\n\n private updateTexture = () => {\n const { createTexture2D } = this.rendererService;\n if (this.texture) {\n this.texture.update({\n data: this.iconService.getCanvas(),\n });\n this.layer.render();\n return;\n }\n this.texture = createTexture2D({\n data: this.iconService.getCanvas(),\n mag: gl.NEAREST,\n min: gl.NEAREST,\n premultiplyAlpha: false,\n width: 1024,\n height: this.iconService.canvasHeight || 128,\n });\n };\n}\n"],"file":"line.js"}
@@ -207,6 +207,7 @@ var FillModel = function (_BaseModel) {
207
207
  type = _this$getShaders.type;
208
208
 
209
209
  var isGlobel = this.mapService.version === 'GLOBEL';
210
+ this.layer.triangulation = isGlobel ? GlobelPointFillTriangulation : PointFillTriangulation;
210
211
  return [this.layer.buildLayerModel({
211
212
  moduleName: 'pointfill_' + type,
212
213
  vertexShader: vert,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/point/models/fill.ts"],"names":["AttributeType","gl","getCullFace","getMask","BaseModel","GlobelPointFillTriangulation","PointFillTriangulation","Version","mat4","vec3","FillModel","layer","getLayerConfig","opacity","strokeOpacity","strokeWidth","stroke","offsets","blend","blur","raisingHeight","dataTextureTest","dataTextureNeedUpdate","judgeStyleAttributes","encodeData","getEncodedData","calDataFrame","cellLength","cellProperties","data","width","height","rowCount","dataTexture","length","createTexture2D","flipY","format","LUMINANCE","type","FLOAT","u_raisingHeight","Number","u_isMeter","isMeter","u_blur","u_additive","u_globel","mapService","version","GLOBEL","u_dataTexture","u_cellTypeLayout","getCellTypeLayout","u_opacity","u_stroke_opacity","u_stroke_width","u_stroke_color","getStrokeColor","u_offsets","isOffsetStatic","animateOption","enable","u_aimate","animateOption2Array","u_time","getLayerAnimateTime","styleAttributeService","createAttributesAndIndices","unit","L7MAP","calMeter2Coord","buildModels","getSource","extent","minLng","minLat","maxLng","maxLat","center","MAPBOX","window","mapboxgl","MercatorCoordinate","coord","fromLngLat","lng","lat","offsetInMeters","offsetInMercatorCoordinateUnits","meterInMercatorCoordinateUnits","westCoord","x","y","z","westLnglat","toLngLat","meter2coord","m1","meterToCoord","m2","Boolean","mask","maskInside","getShaders","frag","vert","isGlobel","buildLayerModel","moduleName","vertexShader","fragmentShader","triangulation","depth","getBlend","stencil","cull","face","waveFillFrag","pointFillVert","pointFillFrag","destroy","option","speed","rings","registerStyleAttribute","name","Attribute","descriptor","buffer","usage","DYNAMIC_DRAW","size","update","feature","featureIdx","vertex","attributeIdx","extrude","n1","fromValues","n2","xzReg","angle","Math","PI","yReg","asin","m","create","rotateY","rotateX","v1","transformMat4","normalize","v2","v3","v4","extrudeIndex","Array","isArray","shape","shape2d","shapeIndex","indexOf"],"mappings":"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","sourcesContent":["import {\n AttributeType,\n gl,\n IAnimateOption,\n IAttribute,\n IElements,\n IEncodeFeature,\n ILayerConfig,\n IModel,\n IModelUniform,\n} from '@antv/l7-core';\nimport { getCullFace, getMask } from '@antv/l7-utils';\nimport BaseModel from '../../core/BaseModel';\nimport { IPointLayerStyleOptions } from '../../core/interface';\nimport {\n GlobelPointFillTriangulation,\n PointFillTriangulation,\n} from '../../core/triangulation';\n// animate pointLayer shader - support animate\nimport waveFillFrag from '../shaders/animate/wave_frag.glsl';\n// static pointLayer shader - not support animate\nimport pointFillFrag from '../shaders/fill_frag.glsl';\nimport pointFillVert from '../shaders/fill_vert.glsl';\n\nimport { isNumber } from 'lodash';\n\nimport { Version } from '@antv/l7-maps';\nimport { mat4, vec3 } from 'gl-matrix';\nexport default class FillModel extends BaseModel {\n public meter2coord: number = 1;\n private isMeter: boolean = false;\n public getUninforms(): IModelUniform {\n const {\n opacity = 1,\n strokeOpacity = 1,\n strokeWidth = 0,\n stroke = 'rgba(0,0,0,0)',\n offsets = [0, 0],\n blend,\n blur = 0,\n raisingHeight = 0,\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n\n if (\n this.dataTextureTest &&\n this.dataTextureNeedUpdate({\n opacity,\n strokeOpacity,\n strokeWidth,\n stroke,\n offsets,\n })\n ) {\n // 判断当前的样式中哪些是需要进行数据映射的,哪些是常量,同时计算用于构建数据纹理的一些中间变量\n this.judgeStyleAttributes({\n opacity,\n strokeOpacity,\n strokeWidth,\n stroke,\n offsets,\n });\n\n const encodeData = this.layer.getEncodedData();\n const { data, width, height } = this.calDataFrame(\n this.cellLength,\n encodeData,\n this.cellProperties,\n );\n this.rowCount = height; // 当前数据纹理有多少行\n\n this.dataTexture =\n this.cellLength > 0 && data.length > 0\n ? this.createTexture2D({\n flipY: true,\n data,\n format: gl.LUMINANCE,\n type: gl.FLOAT,\n width,\n height,\n })\n : this.createTexture2D({\n flipY: true,\n data: [1],\n format: gl.LUMINANCE,\n type: gl.FLOAT,\n width: 1,\n height: 1,\n });\n }\n return {\n u_raisingHeight: Number(raisingHeight),\n\n u_isMeter: Number(this.isMeter),\n u_blur: blur,\n\n u_additive: blend === 'additive' ? 1.0 : 0.0,\n u_globel: this.mapService.version === Version.GLOBEL ? 1 : 0,\n u_dataTexture: this.dataTexture, // 数据纹理 - 有数据映射的时候纹理中带数据,若没有任何数据映射时纹理是 [1]\n u_cellTypeLayout: this.getCellTypeLayout(),\n\n u_opacity: isNumber(opacity) ? opacity : 1.0,\n u_stroke_opacity: isNumber(strokeOpacity) ? strokeOpacity : 1.0,\n u_stroke_width: isNumber(strokeWidth) ? strokeWidth : 0.0,\n u_stroke_color: this.getStrokeColor(stroke),\n u_offsets: this.isOffsetStatic(offsets)\n ? (offsets as [number, number])\n : [0, 0],\n };\n }\n public getAnimateUniforms(): IModelUniform {\n const {\n animateOption = { enable: false },\n } = this.layer.getLayerConfig() as ILayerConfig;\n return {\n u_aimate: this.animateOption2Array(animateOption),\n u_time: this.layer.getLayerAnimateTime(),\n };\n }\n\n public getAttribute(): {\n attributes: {\n [attributeName: string]: IAttribute;\n };\n elements: IElements;\n } {\n return this.styleAttributeService.createAttributesAndIndices(\n this.layer.getEncodedData(),\n PointFillTriangulation,\n );\n }\n\n public initModels(): IModel[] {\n const {\n unit = 'l7size',\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n const { version } = this.mapService;\n if (\n unit === 'meter' &&\n version !== Version.L7MAP &&\n version !== Version.GLOBEL\n ) {\n this.isMeter = true;\n this.calMeter2Coord();\n }\n\n return this.buildModels();\n }\n\n /**\n * 计算等面积点图层(unit meter)笛卡尔坐标标度与世界坐标标度的比例\n * @returns\n */\n public calMeter2Coord() {\n // @ts-ignore\n const [minLng, minLat, maxLng, maxLat] = this.layer.getSource().extent;\n const center = [(minLng + maxLng) / 2, (minLat + maxLat) / 2];\n\n const { version } = this.mapService;\n if (version === Version.MAPBOX && window.mapboxgl.MercatorCoordinate) {\n const coord = window.mapboxgl.MercatorCoordinate.fromLngLat(\n { lng: center[0], lat: center[1] },\n 0,\n );\n const offsetInMeters = 1;\n const offsetInMercatorCoordinateUnits =\n offsetInMeters * coord.meterInMercatorCoordinateUnits();\n const westCoord = new window.mapboxgl.MercatorCoordinate(\n coord.x - offsetInMercatorCoordinateUnits,\n coord.y,\n coord.z,\n );\n const westLnglat = westCoord.toLngLat();\n\n this.meter2coord = center[0] - westLnglat.lng;\n return;\n }\n\n // @ts-ignore\n const m1 = this.mapService.meterToCoord(center, [minLng, minLat]);\n // @ts-ignore\n const m2 = this.mapService.meterToCoord(center, [\n maxLng === minLng ? maxLng + 0.1 : maxLng,\n maxLat === minLat ? minLat + 0.1 : maxLat,\n ]);\n this.meter2coord = (m1 + m2) / 2;\n if (!Boolean(this.meter2coord)) {\n // Tip: 兼容单个数据导致的 m1、m2 为 NaN\n this.meter2coord = 7.70681090738883;\n }\n }\n\n public buildModels(): IModel[] {\n const {\n mask = false,\n maskInside = true,\n animateOption = { enable: false },\n } = this.layer.getLayerConfig() as Partial<\n ILayerConfig & IPointLayerStyleOptions\n >;\n const { frag, vert, type } = this.getShaders(animateOption);\n\n // TODO: 判断当前的点图层的模型是普通地图模式还是地球模式\n const isGlobel = this.mapService.version === 'GLOBEL';\n return [\n this.layer.buildLayerModel({\n moduleName: 'pointfill_' + type,\n vertexShader: vert,\n fragmentShader: frag,\n triangulation: isGlobel\n ? GlobelPointFillTriangulation\n : PointFillTriangulation,\n // depth: { enable: false },\n depth: { enable: isGlobel },\n blend: this.getBlend(),\n stencil: getMask(mask, maskInside),\n cull: {\n enable: true,\n face: getCullFace(this.mapService.version),\n },\n }),\n ];\n }\n\n /**\n * 根据 animateOption 的值返回对应的 shader 代码\n * @returns\n */\n public getShaders(\n animateOption: Partial<IAnimateOption>,\n ): { frag: string; vert: string; type: string } {\n if (animateOption.enable) {\n switch (animateOption.type) {\n case 'wave':\n return {\n frag: waveFillFrag,\n vert: pointFillVert,\n type: 'wave',\n };\n default:\n return {\n frag: waveFillFrag,\n vert: pointFillVert,\n type: 'wave',\n };\n }\n } else {\n return {\n frag: pointFillFrag,\n vert: pointFillVert,\n type: 'normal',\n };\n }\n }\n\n public clearModels() {\n this.dataTexture?.destroy();\n }\n\n // overwrite baseModel func\n protected animateOption2Array(option: Partial<IAnimateOption>): number[] {\n return [option.enable ? 0 : 1.0, option.speed || 1, option.rings || 3, 0];\n }\n protected registerBuiltinAttributes() {\n // TODO: 判断当前的点图层的模型是普通地图模式还是地球模式\n const isGlobel = this.mapService.version === 'GLOBEL';\n\n this.styleAttributeService.registerStyleAttribute({\n name: 'extrude',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Extrude',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 3,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n let extrude;\n // 地球模式\n if (isGlobel) {\n const [x, y, z] = vertex;\n const n1 = vec3.fromValues(0, 0, 1);\n const n2 = vec3.fromValues(x, 0, z);\n\n const xzReg =\n x >= 0 ? vec3.angle(n1, n2) : Math.PI * 2 - vec3.angle(n1, n2);\n\n const yReg = Math.PI * 2 - Math.asin(y / 100);\n\n const m = mat4.create();\n mat4.rotateY(m, m, xzReg);\n mat4.rotateX(m, m, yReg);\n\n const v1 = vec3.fromValues(1, 1, 0);\n vec3.transformMat4(v1, v1, m);\n vec3.normalize(v1, v1);\n\n const v2 = vec3.fromValues(-1, 1, 0);\n vec3.transformMat4(v2, v2, m);\n vec3.normalize(v2, v2);\n\n const v3 = vec3.fromValues(-1, -1, 0);\n vec3.transformMat4(v3, v3, m);\n vec3.normalize(v3, v3);\n\n const v4 = vec3.fromValues(1, -1, 0);\n vec3.transformMat4(v4, v4, m);\n vec3.normalize(v4, v4);\n\n extrude = [...v1, ...v2, ...v3, ...v4];\n } else {\n // 平面模式\n extrude = [1, 1, 0, -1, 1, 0, -1, -1, 0, 1, -1, 0];\n }\n\n const extrudeIndex = (attributeIdx % 4) * 3;\n return [\n extrude[extrudeIndex],\n extrude[extrudeIndex + 1],\n extrude[extrudeIndex + 2],\n ];\n },\n },\n });\n\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'size',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Size',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 1,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const { size = 5 } = feature;\n // console.log('featureIdx', featureIdx, feature)\n return Array.isArray(size)\n ? [size[0] * this.meter2coord]\n : [(size as number) * this.meter2coord];\n },\n },\n });\n\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'shape',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Shape',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 1,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const { shape = 2 } = feature;\n const shape2d = this.layer.getLayerConfig().shape2d as string[];\n const shapeIndex = shape2d.indexOf(shape as string);\n return [shapeIndex];\n },\n },\n });\n }\n}\n"],"file":"fill.js"}
1
+ {"version":3,"sources":["../../../src/point/models/fill.ts"],"names":["AttributeType","gl","getCullFace","getMask","BaseModel","GlobelPointFillTriangulation","PointFillTriangulation","Version","mat4","vec3","FillModel","layer","getLayerConfig","opacity","strokeOpacity","strokeWidth","stroke","offsets","blend","blur","raisingHeight","dataTextureTest","dataTextureNeedUpdate","judgeStyleAttributes","encodeData","getEncodedData","calDataFrame","cellLength","cellProperties","data","width","height","rowCount","dataTexture","length","createTexture2D","flipY","format","LUMINANCE","type","FLOAT","u_raisingHeight","Number","u_isMeter","isMeter","u_blur","u_additive","u_globel","mapService","version","GLOBEL","u_dataTexture","u_cellTypeLayout","getCellTypeLayout","u_opacity","u_stroke_opacity","u_stroke_width","u_stroke_color","getStrokeColor","u_offsets","isOffsetStatic","animateOption","enable","u_aimate","animateOption2Array","u_time","getLayerAnimateTime","styleAttributeService","createAttributesAndIndices","unit","L7MAP","calMeter2Coord","buildModels","getSource","extent","minLng","minLat","maxLng","maxLat","center","MAPBOX","window","mapboxgl","MercatorCoordinate","coord","fromLngLat","lng","lat","offsetInMeters","offsetInMercatorCoordinateUnits","meterInMercatorCoordinateUnits","westCoord","x","y","z","westLnglat","toLngLat","meter2coord","m1","meterToCoord","m2","Boolean","mask","maskInside","getShaders","frag","vert","isGlobel","triangulation","buildLayerModel","moduleName","vertexShader","fragmentShader","depth","getBlend","stencil","cull","face","waveFillFrag","pointFillVert","pointFillFrag","destroy","option","speed","rings","registerStyleAttribute","name","Attribute","descriptor","buffer","usage","DYNAMIC_DRAW","size","update","feature","featureIdx","vertex","attributeIdx","extrude","n1","fromValues","n2","xzReg","angle","Math","PI","yReg","asin","m","create","rotateY","rotateX","v1","transformMat4","normalize","v2","v3","v4","extrudeIndex","Array","isArray","shape","shape2d","shapeIndex","indexOf"],"mappings":"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","sourcesContent":["import {\n AttributeType,\n gl,\n IAnimateOption,\n IAttribute,\n IElements,\n IEncodeFeature,\n ILayerConfig,\n IModel,\n IModelUniform,\n} from '@antv/l7-core';\nimport { getCullFace, getMask } from '@antv/l7-utils';\nimport BaseModel from '../../core/BaseModel';\nimport { IPointLayerStyleOptions } from '../../core/interface';\nimport {\n GlobelPointFillTriangulation,\n PointFillTriangulation,\n} from '../../core/triangulation';\n// animate pointLayer shader - support animate\nimport waveFillFrag from '../shaders/animate/wave_frag.glsl';\n// static pointLayer shader - not support animate\nimport pointFillFrag from '../shaders/fill_frag.glsl';\nimport pointFillVert from '../shaders/fill_vert.glsl';\n\nimport { isNumber } from 'lodash';\n\nimport { Version } from '@antv/l7-maps';\nimport { mat4, vec3 } from 'gl-matrix';\nexport default class FillModel extends BaseModel {\n public meter2coord: number = 1;\n private isMeter: boolean = false;\n public getUninforms(): IModelUniform {\n const {\n opacity = 1,\n strokeOpacity = 1,\n strokeWidth = 0,\n stroke = 'rgba(0,0,0,0)',\n offsets = [0, 0],\n blend,\n blur = 0,\n raisingHeight = 0,\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n\n if (\n this.dataTextureTest &&\n this.dataTextureNeedUpdate({\n opacity,\n strokeOpacity,\n strokeWidth,\n stroke,\n offsets,\n })\n ) {\n // 判断当前的样式中哪些是需要进行数据映射的,哪些是常量,同时计算用于构建数据纹理的一些中间变量\n this.judgeStyleAttributes({\n opacity,\n strokeOpacity,\n strokeWidth,\n stroke,\n offsets,\n });\n\n const encodeData = this.layer.getEncodedData();\n const { data, width, height } = this.calDataFrame(\n this.cellLength,\n encodeData,\n this.cellProperties,\n );\n this.rowCount = height; // 当前数据纹理有多少行\n\n this.dataTexture =\n this.cellLength > 0 && data.length > 0\n ? this.createTexture2D({\n flipY: true,\n data,\n format: gl.LUMINANCE,\n type: gl.FLOAT,\n width,\n height,\n })\n : this.createTexture2D({\n flipY: true,\n data: [1],\n format: gl.LUMINANCE,\n type: gl.FLOAT,\n width: 1,\n height: 1,\n });\n }\n return {\n u_raisingHeight: Number(raisingHeight),\n\n u_isMeter: Number(this.isMeter),\n u_blur: blur,\n\n u_additive: blend === 'additive' ? 1.0 : 0.0,\n u_globel: this.mapService.version === Version.GLOBEL ? 1 : 0,\n u_dataTexture: this.dataTexture, // 数据纹理 - 有数据映射的时候纹理中带数据,若没有任何数据映射时纹理是 [1]\n u_cellTypeLayout: this.getCellTypeLayout(),\n\n u_opacity: isNumber(opacity) ? opacity : 1.0,\n u_stroke_opacity: isNumber(strokeOpacity) ? strokeOpacity : 1.0,\n u_stroke_width: isNumber(strokeWidth) ? strokeWidth : 0.0,\n u_stroke_color: this.getStrokeColor(stroke),\n u_offsets: this.isOffsetStatic(offsets)\n ? (offsets as [number, number])\n : [0, 0],\n };\n }\n public getAnimateUniforms(): IModelUniform {\n const {\n animateOption = { enable: false },\n } = this.layer.getLayerConfig() as ILayerConfig;\n return {\n u_aimate: this.animateOption2Array(animateOption),\n u_time: this.layer.getLayerAnimateTime(),\n };\n }\n\n public getAttribute(): {\n attributes: {\n [attributeName: string]: IAttribute;\n };\n elements: IElements;\n } {\n return this.styleAttributeService.createAttributesAndIndices(\n this.layer.getEncodedData(),\n PointFillTriangulation,\n );\n }\n\n public initModels(): IModel[] {\n const {\n unit = 'l7size',\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n const { version } = this.mapService;\n if (\n unit === 'meter' &&\n version !== Version.L7MAP &&\n version !== Version.GLOBEL\n ) {\n this.isMeter = true;\n this.calMeter2Coord();\n }\n\n return this.buildModels();\n }\n\n /**\n * 计算等面积点图层(unit meter)笛卡尔坐标标度与世界坐标标度的比例\n * @returns\n */\n public calMeter2Coord() {\n // @ts-ignore\n const [minLng, minLat, maxLng, maxLat] = this.layer.getSource().extent;\n const center = [(minLng + maxLng) / 2, (minLat + maxLat) / 2];\n\n const { version } = this.mapService;\n if (version === Version.MAPBOX && window.mapboxgl.MercatorCoordinate) {\n const coord = window.mapboxgl.MercatorCoordinate.fromLngLat(\n { lng: center[0], lat: center[1] },\n 0,\n );\n const offsetInMeters = 1;\n const offsetInMercatorCoordinateUnits =\n offsetInMeters * coord.meterInMercatorCoordinateUnits();\n const westCoord = new window.mapboxgl.MercatorCoordinate(\n coord.x - offsetInMercatorCoordinateUnits,\n coord.y,\n coord.z,\n );\n const westLnglat = westCoord.toLngLat();\n\n this.meter2coord = center[0] - westLnglat.lng;\n return;\n }\n\n // @ts-ignore\n const m1 = this.mapService.meterToCoord(center, [minLng, minLat]);\n // @ts-ignore\n const m2 = this.mapService.meterToCoord(center, [\n maxLng === minLng ? maxLng + 0.1 : maxLng,\n maxLat === minLat ? minLat + 0.1 : maxLat,\n ]);\n this.meter2coord = (m1 + m2) / 2;\n if (!Boolean(this.meter2coord)) {\n // Tip: 兼容单个数据导致的 m1、m2 为 NaN\n this.meter2coord = 7.70681090738883;\n }\n }\n\n public buildModels(): IModel[] {\n const {\n mask = false,\n maskInside = true,\n animateOption = { enable: false },\n } = this.layer.getLayerConfig() as Partial<\n ILayerConfig & IPointLayerStyleOptions\n >;\n const { frag, vert, type } = this.getShaders(animateOption);\n\n // TODO: 判断当前的点图层的模型是普通地图模式还是地球模式\n const isGlobel = this.mapService.version === 'GLOBEL';\n this.layer.triangulation = isGlobel\n ? GlobelPointFillTriangulation\n : PointFillTriangulation;\n return [\n this.layer.buildLayerModel({\n moduleName: 'pointfill_' + type,\n vertexShader: vert,\n fragmentShader: frag,\n triangulation: isGlobel\n ? GlobelPointFillTriangulation\n : PointFillTriangulation,\n // depth: { enable: false },\n depth: { enable: isGlobel },\n blend: this.getBlend(),\n stencil: getMask(mask, maskInside),\n cull: {\n enable: true,\n face: getCullFace(this.mapService.version),\n },\n }),\n ];\n }\n\n /**\n * 根据 animateOption 的值返回对应的 shader 代码\n * @returns\n */\n public getShaders(\n animateOption: Partial<IAnimateOption>,\n ): { frag: string; vert: string; type: string } {\n if (animateOption.enable) {\n switch (animateOption.type) {\n case 'wave':\n return {\n frag: waveFillFrag,\n vert: pointFillVert,\n type: 'wave',\n };\n default:\n return {\n frag: waveFillFrag,\n vert: pointFillVert,\n type: 'wave',\n };\n }\n } else {\n return {\n frag: pointFillFrag,\n vert: pointFillVert,\n type: 'normal',\n };\n }\n }\n\n public clearModels() {\n this.dataTexture?.destroy();\n }\n\n // overwrite baseModel func\n protected animateOption2Array(option: Partial<IAnimateOption>): number[] {\n return [option.enable ? 0 : 1.0, option.speed || 1, option.rings || 3, 0];\n }\n protected registerBuiltinAttributes() {\n // TODO: 判断当前的点图层的模型是普通地图模式还是地球模式\n const isGlobel = this.mapService.version === 'GLOBEL';\n\n this.styleAttributeService.registerStyleAttribute({\n name: 'extrude',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Extrude',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 3,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n let extrude;\n // 地球模式\n if (isGlobel) {\n const [x, y, z] = vertex;\n const n1 = vec3.fromValues(0, 0, 1);\n const n2 = vec3.fromValues(x, 0, z);\n\n const xzReg =\n x >= 0 ? vec3.angle(n1, n2) : Math.PI * 2 - vec3.angle(n1, n2);\n\n const yReg = Math.PI * 2 - Math.asin(y / 100);\n\n const m = mat4.create();\n mat4.rotateY(m, m, xzReg);\n mat4.rotateX(m, m, yReg);\n\n const v1 = vec3.fromValues(1, 1, 0);\n vec3.transformMat4(v1, v1, m);\n vec3.normalize(v1, v1);\n\n const v2 = vec3.fromValues(-1, 1, 0);\n vec3.transformMat4(v2, v2, m);\n vec3.normalize(v2, v2);\n\n const v3 = vec3.fromValues(-1, -1, 0);\n vec3.transformMat4(v3, v3, m);\n vec3.normalize(v3, v3);\n\n const v4 = vec3.fromValues(1, -1, 0);\n vec3.transformMat4(v4, v4, m);\n vec3.normalize(v4, v4);\n\n extrude = [...v1, ...v2, ...v3, ...v4];\n } else {\n // 平面模式\n extrude = [1, 1, 0, -1, 1, 0, -1, -1, 0, 1, -1, 0];\n }\n\n const extrudeIndex = (attributeIdx % 4) * 3;\n return [\n extrude[extrudeIndex],\n extrude[extrudeIndex + 1],\n extrude[extrudeIndex + 2],\n ];\n },\n },\n });\n\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'size',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Size',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 1,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const { size = 5 } = feature;\n // console.log('featureIdx', featureIdx, feature)\n return Array.isArray(size)\n ? [size[0] * this.meter2coord]\n : [(size as number) * this.meter2coord];\n },\n },\n });\n\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'shape',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Shape',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 1,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const { shape = 2 } = feature;\n const shape2d = this.layer.getLayerConfig().shape2d as string[];\n const shapeIndex = shape2d.indexOf(shape as string);\n return [shapeIndex];\n },\n },\n });\n }\n}\n"],"file":"fill.js"}
@@ -116,6 +116,7 @@ var SimplePointModel = function (_BaseModel) {
116
116
  _ref2$maskInside = _ref2.maskInside,
117
117
  maskInside = _ref2$maskInside === void 0 ? true : _ref2$maskInside;
118
118
 
119
+ this.layer.triangulation = PointTriangulation;
119
120
  return [this.layer.buildLayerModel({
120
121
  moduleName: 'simplepoint',
121
122
  vertexShader: simplePointVert,