@deck.gl/extensions 8.8.19 → 8.8.21

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.
package/dist/dist.dev.js CHANGED
@@ -13610,6 +13610,11 @@ const inject = {
13610
13610
  dataFilter_setValue(DATAFILTER_ATTRIB, DATAFILTER_ATTRIB);
13611
13611
  #endif
13612
13612
  `,
13613
+ 'vs:#main-end': `
13614
+ if (dataFilter_value == 0.0) {
13615
+ gl_Position = vec4(0.);
13616
+ }
13617
+ `,
13613
13618
  'vs:DECKGL_FILTER_SIZE': `
13614
13619
  if (filter_transformSize) {
13615
13620
  size = size * dataFilter_value;
@@ -99,6 +99,7 @@ function getUniforms64(opts) {
99
99
 
100
100
  var inject = {
101
101
  'vs:#main-start': "\n #ifdef DATAFILTER_DOUBLE\n dataFilter_setValue(\n DATAFILTER_ATTRIB - filter_min64High + DATAFILTER_ATTRIB_64LOW,\n DATAFILTER_ATTRIB - filter_max64High + DATAFILTER_ATTRIB_64LOW\n );\n #else\n dataFilter_setValue(DATAFILTER_ATTRIB, DATAFILTER_ATTRIB);\n #endif\n ",
102
+ 'vs:#main-end': "\n if (dataFilter_value == 0.0) {\n gl_Position = vec4(0.);\n }\n ",
102
103
  'vs:DECKGL_FILTER_SIZE': "\n if (filter_transformSize) {\n size = size * dataFilter_value;\n }\n ",
103
104
  'fs:DECKGL_FILTER_COLOR': "\n if (dataFilter_value == 0.0) discard;\n if (filter_transformColor) {\n color.a *= dataFilter_value;\n }\n "
104
105
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/data-filter/shader-module.ts"],"names":["vs","fs","getUniforms","opts","filterRange","filterEnabled","filterTransformSize","filterTransformColor","filterSoftRange","Number","isFinite","filter_min","filter_softMin","filter_softMax","filter_max","map","r","filter_enabled","filter_useSoftMargin","Boolean","filter_transformSize","filter_transformColor","getUniforms64","uniforms","min64High","Math","fround","filter_min64High","max64High","filter_max64High","x","i","inject","shaderModule","name","shaderModule64"],"mappings":"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","sourcesContent":["import {_ShaderModule as ShaderModule} from '@deck.gl/core/typed';\n\nimport type {DataFilterExtensionProps} from './data-filter';\n\n/*\n * data filter shader module\n */\nconst vs = `\nuniform DATAFILTER_TYPE filter_min;\nuniform DATAFILTER_TYPE filter_softMin;\nuniform DATAFILTER_TYPE filter_softMax;\nuniform DATAFILTER_TYPE filter_max;\nuniform bool filter_useSoftMargin;\nuniform bool filter_enabled;\nuniform bool filter_transformSize;\n\n#ifdef NON_INSTANCED_MODEL\n #define DATAFILTER_ATTRIB filterValues\n #define DATAFILTER_ATTRIB_64LOW filterValues64Low\n#else\n #define DATAFILTER_ATTRIB instanceFilterValues\n #define DATAFILTER_ATTRIB_64LOW instanceFilterValues64Low\n#endif\n\nattribute DATAFILTER_TYPE DATAFILTER_ATTRIB;\n#ifdef DATAFILTER_DOUBLE\n attribute DATAFILTER_TYPE DATAFILTER_ATTRIB_64LOW;\n\n uniform DATAFILTER_TYPE filter_min64High;\n uniform DATAFILTER_TYPE filter_max64High;\n#endif\n\nvarying float dataFilter_value;\n\nfloat dataFilter_reduceValue(float value) {\n return value;\n}\nfloat dataFilter_reduceValue(vec2 value) {\n return min(value.x, value.y);\n}\nfloat dataFilter_reduceValue(vec3 value) {\n return min(min(value.x, value.y), value.z);\n}\nfloat dataFilter_reduceValue(vec4 value) {\n return min(min(value.x, value.y), min(value.z, value.w));\n}\nvoid dataFilter_setValue(DATAFILTER_TYPE valueFromMin, DATAFILTER_TYPE valueFromMax) {\n if (filter_enabled) {\n if (filter_useSoftMargin) {\n dataFilter_value = dataFilter_reduceValue(\n smoothstep(filter_min, filter_softMin, valueFromMin) *\n (1.0 - smoothstep(filter_softMax, filter_max, valueFromMax))\n );\n } else {\n dataFilter_value = dataFilter_reduceValue(\n step(filter_min, valueFromMin) * step(valueFromMax, filter_max)\n );\n }\n } else {\n dataFilter_value = 1.0;\n }\n}\n`;\n\nconst fs = `\nuniform bool filter_transformColor;\nvarying float dataFilter_value;\n`;\n\ntype DataFilterModuleSettings = {\n extensions: any[]; // used to detect if layer props are present\n} & DataFilterExtensionProps;\n\n/* eslint-disable camelcase */\nfunction getUniforms(opts?: DataFilterModuleSettings | {}): Record<string, any> {\n if (!opts || !('extensions' in opts)) {\n return {};\n }\n const {\n filterRange = [-1, 1],\n filterEnabled = true,\n filterTransformSize = true,\n filterTransformColor = true\n } = opts;\n const filterSoftRange = opts.filterSoftRange || filterRange;\n\n return {\n ...(Number.isFinite(filterRange[0])\n ? {\n filter_min: filterRange[0],\n filter_softMin: filterSoftRange[0],\n filter_softMax: filterSoftRange[1],\n filter_max: filterRange[1]\n }\n : {\n filter_min: filterRange.map(r => r[0]),\n filter_softMin: filterSoftRange.map(r => r[0]),\n filter_softMax: filterSoftRange.map(r => r[1]),\n filter_max: filterRange.map(r => r[1])\n }),\n filter_enabled: filterEnabled,\n filter_useSoftMargin: Boolean(opts.filterSoftRange),\n filter_transformSize: filterEnabled && filterTransformSize,\n filter_transformColor: filterEnabled && filterTransformColor\n };\n}\n\nfunction getUniforms64(opts?: DataFilterModuleSettings | {}): Record<string, any> {\n if (!opts || !('extensions' in opts)) {\n return {};\n }\n const uniforms = getUniforms(opts);\n if (Number.isFinite(uniforms.filter_min)) {\n const min64High = Math.fround(uniforms.filter_min);\n uniforms.filter_min -= min64High;\n uniforms.filter_softMin -= min64High;\n uniforms.filter_min64High = min64High;\n\n const max64High = Math.fround(uniforms.filter_max);\n uniforms.filter_max -= max64High;\n uniforms.filter_softMax -= max64High;\n uniforms.filter_max64High = max64High;\n } else {\n const min64High = uniforms.filter_min.map(Math.fround);\n uniforms.filter_min = uniforms.filter_min.map((x, i) => x - min64High[i]);\n uniforms.filter_softMin = uniforms.filter_softMin.map((x, i) => x - min64High[i]);\n uniforms.filter_min64High = min64High;\n\n const max64High = uniforms.filter_max.map(Math.fround);\n uniforms.filter_max = uniforms.filter_max.map((x, i) => x - max64High[i]);\n uniforms.filter_softMax = uniforms.filter_softMax.map((x, i) => x - max64High[i]);\n uniforms.filter_max64High = max64High;\n }\n return uniforms;\n}\n\nconst inject = {\n 'vs:#main-start': `\n #ifdef DATAFILTER_DOUBLE\n dataFilter_setValue(\n DATAFILTER_ATTRIB - filter_min64High + DATAFILTER_ATTRIB_64LOW,\n DATAFILTER_ATTRIB - filter_max64High + DATAFILTER_ATTRIB_64LOW\n );\n #else\n dataFilter_setValue(DATAFILTER_ATTRIB, DATAFILTER_ATTRIB);\n #endif\n `,\n\n 'vs:DECKGL_FILTER_SIZE': `\n if (filter_transformSize) {\n size = size * dataFilter_value;\n }\n `,\n\n 'fs:DECKGL_FILTER_COLOR': `\n if (dataFilter_value == 0.0) discard;\n if (filter_transformColor) {\n color.a *= dataFilter_value;\n }\n `\n};\n\nexport const shaderModule: ShaderModule<DataFilterModuleSettings> = {\n name: 'data-filter',\n vs,\n fs,\n inject,\n getUniforms\n};\n\nexport const shaderModule64: ShaderModule<DataFilterModuleSettings> = {\n name: 'data-filter-fp64',\n vs,\n fs,\n inject,\n getUniforms: getUniforms64\n};\n"],"file":"shader-module.js"}
1
+ {"version":3,"sources":["../../../src/data-filter/shader-module.ts"],"names":["vs","fs","getUniforms","opts","filterRange","filterEnabled","filterTransformSize","filterTransformColor","filterSoftRange","Number","isFinite","filter_min","filter_softMin","filter_softMax","filter_max","map","r","filter_enabled","filter_useSoftMargin","Boolean","filter_transformSize","filter_transformColor","getUniforms64","uniforms","min64High","Math","fround","filter_min64High","max64High","filter_max64High","x","i","inject","shaderModule","name","shaderModule64"],"mappings":"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","sourcesContent":["import {_ShaderModule as ShaderModule} from '@deck.gl/core/typed';\n\nimport type {DataFilterExtensionProps} from './data-filter';\n\n/*\n * data filter shader module\n */\nconst vs = `\nuniform DATAFILTER_TYPE filter_min;\nuniform DATAFILTER_TYPE filter_softMin;\nuniform DATAFILTER_TYPE filter_softMax;\nuniform DATAFILTER_TYPE filter_max;\nuniform bool filter_useSoftMargin;\nuniform bool filter_enabled;\nuniform bool filter_transformSize;\n\n#ifdef NON_INSTANCED_MODEL\n #define DATAFILTER_ATTRIB filterValues\n #define DATAFILTER_ATTRIB_64LOW filterValues64Low\n#else\n #define DATAFILTER_ATTRIB instanceFilterValues\n #define DATAFILTER_ATTRIB_64LOW instanceFilterValues64Low\n#endif\n\nattribute DATAFILTER_TYPE DATAFILTER_ATTRIB;\n#ifdef DATAFILTER_DOUBLE\n attribute DATAFILTER_TYPE DATAFILTER_ATTRIB_64LOW;\n\n uniform DATAFILTER_TYPE filter_min64High;\n uniform DATAFILTER_TYPE filter_max64High;\n#endif\n\nvarying float dataFilter_value;\n\nfloat dataFilter_reduceValue(float value) {\n return value;\n}\nfloat dataFilter_reduceValue(vec2 value) {\n return min(value.x, value.y);\n}\nfloat dataFilter_reduceValue(vec3 value) {\n return min(min(value.x, value.y), value.z);\n}\nfloat dataFilter_reduceValue(vec4 value) {\n return min(min(value.x, value.y), min(value.z, value.w));\n}\nvoid dataFilter_setValue(DATAFILTER_TYPE valueFromMin, DATAFILTER_TYPE valueFromMax) {\n if (filter_enabled) {\n if (filter_useSoftMargin) {\n dataFilter_value = dataFilter_reduceValue(\n smoothstep(filter_min, filter_softMin, valueFromMin) *\n (1.0 - smoothstep(filter_softMax, filter_max, valueFromMax))\n );\n } else {\n dataFilter_value = dataFilter_reduceValue(\n step(filter_min, valueFromMin) * step(valueFromMax, filter_max)\n );\n }\n } else {\n dataFilter_value = 1.0;\n }\n}\n`;\n\nconst fs = `\nuniform bool filter_transformColor;\nvarying float dataFilter_value;\n`;\n\ntype DataFilterModuleSettings = {\n extensions: any[]; // used to detect if layer props are present\n} & DataFilterExtensionProps;\n\n/* eslint-disable camelcase */\nfunction getUniforms(opts?: DataFilterModuleSettings | {}): Record<string, any> {\n if (!opts || !('extensions' in opts)) {\n return {};\n }\n const {\n filterRange = [-1, 1],\n filterEnabled = true,\n filterTransformSize = true,\n filterTransformColor = true\n } = opts;\n const filterSoftRange = opts.filterSoftRange || filterRange;\n\n return {\n ...(Number.isFinite(filterRange[0])\n ? {\n filter_min: filterRange[0],\n filter_softMin: filterSoftRange[0],\n filter_softMax: filterSoftRange[1],\n filter_max: filterRange[1]\n }\n : {\n filter_min: filterRange.map(r => r[0]),\n filter_softMin: filterSoftRange.map(r => r[0]),\n filter_softMax: filterSoftRange.map(r => r[1]),\n filter_max: filterRange.map(r => r[1])\n }),\n filter_enabled: filterEnabled,\n filter_useSoftMargin: Boolean(opts.filterSoftRange),\n filter_transformSize: filterEnabled && filterTransformSize,\n filter_transformColor: filterEnabled && filterTransformColor\n };\n}\n\nfunction getUniforms64(opts?: DataFilterModuleSettings | {}): Record<string, any> {\n if (!opts || !('extensions' in opts)) {\n return {};\n }\n const uniforms = getUniforms(opts);\n if (Number.isFinite(uniforms.filter_min)) {\n const min64High = Math.fround(uniforms.filter_min);\n uniforms.filter_min -= min64High;\n uniforms.filter_softMin -= min64High;\n uniforms.filter_min64High = min64High;\n\n const max64High = Math.fround(uniforms.filter_max);\n uniforms.filter_max -= max64High;\n uniforms.filter_softMax -= max64High;\n uniforms.filter_max64High = max64High;\n } else {\n const min64High = uniforms.filter_min.map(Math.fround);\n uniforms.filter_min = uniforms.filter_min.map((x, i) => x - min64High[i]);\n uniforms.filter_softMin = uniforms.filter_softMin.map((x, i) => x - min64High[i]);\n uniforms.filter_min64High = min64High;\n\n const max64High = uniforms.filter_max.map(Math.fround);\n uniforms.filter_max = uniforms.filter_max.map((x, i) => x - max64High[i]);\n uniforms.filter_softMax = uniforms.filter_softMax.map((x, i) => x - max64High[i]);\n uniforms.filter_max64High = max64High;\n }\n return uniforms;\n}\n\nconst inject = {\n 'vs:#main-start': `\n #ifdef DATAFILTER_DOUBLE\n dataFilter_setValue(\n DATAFILTER_ATTRIB - filter_min64High + DATAFILTER_ATTRIB_64LOW,\n DATAFILTER_ATTRIB - filter_max64High + DATAFILTER_ATTRIB_64LOW\n );\n #else\n dataFilter_setValue(DATAFILTER_ATTRIB, DATAFILTER_ATTRIB);\n #endif\n `,\n\n 'vs:#main-end': `\n if (dataFilter_value == 0.0) {\n gl_Position = vec4(0.);\n }\n `,\n\n 'vs:DECKGL_FILTER_SIZE': `\n if (filter_transformSize) {\n size = size * dataFilter_value;\n }\n `,\n\n 'fs:DECKGL_FILTER_COLOR': `\n if (dataFilter_value == 0.0) discard;\n if (filter_transformColor) {\n color.a *= dataFilter_value;\n }\n `\n};\n\nexport const shaderModule: ShaderModule<DataFilterModuleSettings> = {\n name: 'data-filter',\n vs,\n fs,\n inject,\n getUniforms\n};\n\nexport const shaderModule64: ShaderModule<DataFilterModuleSettings> = {\n name: 'data-filter-fp64',\n vs,\n fs,\n inject,\n getUniforms: getUniforms64\n};\n"],"file":"shader-module.js"}
@@ -63,6 +63,7 @@ function getUniforms64(opts) {
63
63
 
64
64
  const inject = {
65
65
  'vs:#main-start': "\n #ifdef DATAFILTER_DOUBLE\n dataFilter_setValue(\n DATAFILTER_ATTRIB - filter_min64High + DATAFILTER_ATTRIB_64LOW,\n DATAFILTER_ATTRIB - filter_max64High + DATAFILTER_ATTRIB_64LOW\n );\n #else\n dataFilter_setValue(DATAFILTER_ATTRIB, DATAFILTER_ATTRIB);\n #endif\n ",
66
+ 'vs:#main-end': "\n if (dataFilter_value == 0.0) {\n gl_Position = vec4(0.);\n }\n ",
66
67
  'vs:DECKGL_FILTER_SIZE': "\n if (filter_transformSize) {\n size = size * dataFilter_value;\n }\n ",
67
68
  'fs:DECKGL_FILTER_COLOR': "\n if (dataFilter_value == 0.0) discard;\n if (filter_transformColor) {\n color.a *= dataFilter_value;\n }\n "
68
69
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/data-filter/shader-module.ts"],"names":["vs","fs","getUniforms","opts","filterRange","filterEnabled","filterTransformSize","filterTransformColor","filterSoftRange","Number","isFinite","filter_min","filter_softMin","filter_softMax","filter_max","map","r","filter_enabled","filter_useSoftMargin","Boolean","filter_transformSize","filter_transformColor","getUniforms64","uniforms","min64High","Math","fround","filter_min64High","max64High","filter_max64High","x","i","inject","shaderModule","name","shaderModule64"],"mappings":"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","sourcesContent":["import {_ShaderModule as ShaderModule} from '@deck.gl/core/typed';\n\nimport type {DataFilterExtensionProps} from './data-filter';\n\n/*\n * data filter shader module\n */\nconst vs = `\nuniform DATAFILTER_TYPE filter_min;\nuniform DATAFILTER_TYPE filter_softMin;\nuniform DATAFILTER_TYPE filter_softMax;\nuniform DATAFILTER_TYPE filter_max;\nuniform bool filter_useSoftMargin;\nuniform bool filter_enabled;\nuniform bool filter_transformSize;\n\n#ifdef NON_INSTANCED_MODEL\n #define DATAFILTER_ATTRIB filterValues\n #define DATAFILTER_ATTRIB_64LOW filterValues64Low\n#else\n #define DATAFILTER_ATTRIB instanceFilterValues\n #define DATAFILTER_ATTRIB_64LOW instanceFilterValues64Low\n#endif\n\nattribute DATAFILTER_TYPE DATAFILTER_ATTRIB;\n#ifdef DATAFILTER_DOUBLE\n attribute DATAFILTER_TYPE DATAFILTER_ATTRIB_64LOW;\n\n uniform DATAFILTER_TYPE filter_min64High;\n uniform DATAFILTER_TYPE filter_max64High;\n#endif\n\nvarying float dataFilter_value;\n\nfloat dataFilter_reduceValue(float value) {\n return value;\n}\nfloat dataFilter_reduceValue(vec2 value) {\n return min(value.x, value.y);\n}\nfloat dataFilter_reduceValue(vec3 value) {\n return min(min(value.x, value.y), value.z);\n}\nfloat dataFilter_reduceValue(vec4 value) {\n return min(min(value.x, value.y), min(value.z, value.w));\n}\nvoid dataFilter_setValue(DATAFILTER_TYPE valueFromMin, DATAFILTER_TYPE valueFromMax) {\n if (filter_enabled) {\n if (filter_useSoftMargin) {\n dataFilter_value = dataFilter_reduceValue(\n smoothstep(filter_min, filter_softMin, valueFromMin) *\n (1.0 - smoothstep(filter_softMax, filter_max, valueFromMax))\n );\n } else {\n dataFilter_value = dataFilter_reduceValue(\n step(filter_min, valueFromMin) * step(valueFromMax, filter_max)\n );\n }\n } else {\n dataFilter_value = 1.0;\n }\n}\n`;\n\nconst fs = `\nuniform bool filter_transformColor;\nvarying float dataFilter_value;\n`;\n\ntype DataFilterModuleSettings = {\n extensions: any[]; // used to detect if layer props are present\n} & DataFilterExtensionProps;\n\n/* eslint-disable camelcase */\nfunction getUniforms(opts?: DataFilterModuleSettings | {}): Record<string, any> {\n if (!opts || !('extensions' in opts)) {\n return {};\n }\n const {\n filterRange = [-1, 1],\n filterEnabled = true,\n filterTransformSize = true,\n filterTransformColor = true\n } = opts;\n const filterSoftRange = opts.filterSoftRange || filterRange;\n\n return {\n ...(Number.isFinite(filterRange[0])\n ? {\n filter_min: filterRange[0],\n filter_softMin: filterSoftRange[0],\n filter_softMax: filterSoftRange[1],\n filter_max: filterRange[1]\n }\n : {\n filter_min: filterRange.map(r => r[0]),\n filter_softMin: filterSoftRange.map(r => r[0]),\n filter_softMax: filterSoftRange.map(r => r[1]),\n filter_max: filterRange.map(r => r[1])\n }),\n filter_enabled: filterEnabled,\n filter_useSoftMargin: Boolean(opts.filterSoftRange),\n filter_transformSize: filterEnabled && filterTransformSize,\n filter_transformColor: filterEnabled && filterTransformColor\n };\n}\n\nfunction getUniforms64(opts?: DataFilterModuleSettings | {}): Record<string, any> {\n if (!opts || !('extensions' in opts)) {\n return {};\n }\n const uniforms = getUniforms(opts);\n if (Number.isFinite(uniforms.filter_min)) {\n const min64High = Math.fround(uniforms.filter_min);\n uniforms.filter_min -= min64High;\n uniforms.filter_softMin -= min64High;\n uniforms.filter_min64High = min64High;\n\n const max64High = Math.fround(uniforms.filter_max);\n uniforms.filter_max -= max64High;\n uniforms.filter_softMax -= max64High;\n uniforms.filter_max64High = max64High;\n } else {\n const min64High = uniforms.filter_min.map(Math.fround);\n uniforms.filter_min = uniforms.filter_min.map((x, i) => x - min64High[i]);\n uniforms.filter_softMin = uniforms.filter_softMin.map((x, i) => x - min64High[i]);\n uniforms.filter_min64High = min64High;\n\n const max64High = uniforms.filter_max.map(Math.fround);\n uniforms.filter_max = uniforms.filter_max.map((x, i) => x - max64High[i]);\n uniforms.filter_softMax = uniforms.filter_softMax.map((x, i) => x - max64High[i]);\n uniforms.filter_max64High = max64High;\n }\n return uniforms;\n}\n\nconst inject = {\n 'vs:#main-start': `\n #ifdef DATAFILTER_DOUBLE\n dataFilter_setValue(\n DATAFILTER_ATTRIB - filter_min64High + DATAFILTER_ATTRIB_64LOW,\n DATAFILTER_ATTRIB - filter_max64High + DATAFILTER_ATTRIB_64LOW\n );\n #else\n dataFilter_setValue(DATAFILTER_ATTRIB, DATAFILTER_ATTRIB);\n #endif\n `,\n\n 'vs:DECKGL_FILTER_SIZE': `\n if (filter_transformSize) {\n size = size * dataFilter_value;\n }\n `,\n\n 'fs:DECKGL_FILTER_COLOR': `\n if (dataFilter_value == 0.0) discard;\n if (filter_transformColor) {\n color.a *= dataFilter_value;\n }\n `\n};\n\nexport const shaderModule: ShaderModule<DataFilterModuleSettings> = {\n name: 'data-filter',\n vs,\n fs,\n inject,\n getUniforms\n};\n\nexport const shaderModule64: ShaderModule<DataFilterModuleSettings> = {\n name: 'data-filter-fp64',\n vs,\n fs,\n inject,\n getUniforms: getUniforms64\n};\n"],"file":"shader-module.js"}
1
+ {"version":3,"sources":["../../../src/data-filter/shader-module.ts"],"names":["vs","fs","getUniforms","opts","filterRange","filterEnabled","filterTransformSize","filterTransformColor","filterSoftRange","Number","isFinite","filter_min","filter_softMin","filter_softMax","filter_max","map","r","filter_enabled","filter_useSoftMargin","Boolean","filter_transformSize","filter_transformColor","getUniforms64","uniforms","min64High","Math","fround","filter_min64High","max64High","filter_max64High","x","i","inject","shaderModule","name","shaderModule64"],"mappings":"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","sourcesContent":["import {_ShaderModule as ShaderModule} from '@deck.gl/core/typed';\n\nimport type {DataFilterExtensionProps} from './data-filter';\n\n/*\n * data filter shader module\n */\nconst vs = `\nuniform DATAFILTER_TYPE filter_min;\nuniform DATAFILTER_TYPE filter_softMin;\nuniform DATAFILTER_TYPE filter_softMax;\nuniform DATAFILTER_TYPE filter_max;\nuniform bool filter_useSoftMargin;\nuniform bool filter_enabled;\nuniform bool filter_transformSize;\n\n#ifdef NON_INSTANCED_MODEL\n #define DATAFILTER_ATTRIB filterValues\n #define DATAFILTER_ATTRIB_64LOW filterValues64Low\n#else\n #define DATAFILTER_ATTRIB instanceFilterValues\n #define DATAFILTER_ATTRIB_64LOW instanceFilterValues64Low\n#endif\n\nattribute DATAFILTER_TYPE DATAFILTER_ATTRIB;\n#ifdef DATAFILTER_DOUBLE\n attribute DATAFILTER_TYPE DATAFILTER_ATTRIB_64LOW;\n\n uniform DATAFILTER_TYPE filter_min64High;\n uniform DATAFILTER_TYPE filter_max64High;\n#endif\n\nvarying float dataFilter_value;\n\nfloat dataFilter_reduceValue(float value) {\n return value;\n}\nfloat dataFilter_reduceValue(vec2 value) {\n return min(value.x, value.y);\n}\nfloat dataFilter_reduceValue(vec3 value) {\n return min(min(value.x, value.y), value.z);\n}\nfloat dataFilter_reduceValue(vec4 value) {\n return min(min(value.x, value.y), min(value.z, value.w));\n}\nvoid dataFilter_setValue(DATAFILTER_TYPE valueFromMin, DATAFILTER_TYPE valueFromMax) {\n if (filter_enabled) {\n if (filter_useSoftMargin) {\n dataFilter_value = dataFilter_reduceValue(\n smoothstep(filter_min, filter_softMin, valueFromMin) *\n (1.0 - smoothstep(filter_softMax, filter_max, valueFromMax))\n );\n } else {\n dataFilter_value = dataFilter_reduceValue(\n step(filter_min, valueFromMin) * step(valueFromMax, filter_max)\n );\n }\n } else {\n dataFilter_value = 1.0;\n }\n}\n`;\n\nconst fs = `\nuniform bool filter_transformColor;\nvarying float dataFilter_value;\n`;\n\ntype DataFilterModuleSettings = {\n extensions: any[]; // used to detect if layer props are present\n} & DataFilterExtensionProps;\n\n/* eslint-disable camelcase */\nfunction getUniforms(opts?: DataFilterModuleSettings | {}): Record<string, any> {\n if (!opts || !('extensions' in opts)) {\n return {};\n }\n const {\n filterRange = [-1, 1],\n filterEnabled = true,\n filterTransformSize = true,\n filterTransformColor = true\n } = opts;\n const filterSoftRange = opts.filterSoftRange || filterRange;\n\n return {\n ...(Number.isFinite(filterRange[0])\n ? {\n filter_min: filterRange[0],\n filter_softMin: filterSoftRange[0],\n filter_softMax: filterSoftRange[1],\n filter_max: filterRange[1]\n }\n : {\n filter_min: filterRange.map(r => r[0]),\n filter_softMin: filterSoftRange.map(r => r[0]),\n filter_softMax: filterSoftRange.map(r => r[1]),\n filter_max: filterRange.map(r => r[1])\n }),\n filter_enabled: filterEnabled,\n filter_useSoftMargin: Boolean(opts.filterSoftRange),\n filter_transformSize: filterEnabled && filterTransformSize,\n filter_transformColor: filterEnabled && filterTransformColor\n };\n}\n\nfunction getUniforms64(opts?: DataFilterModuleSettings | {}): Record<string, any> {\n if (!opts || !('extensions' in opts)) {\n return {};\n }\n const uniforms = getUniforms(opts);\n if (Number.isFinite(uniforms.filter_min)) {\n const min64High = Math.fround(uniforms.filter_min);\n uniforms.filter_min -= min64High;\n uniforms.filter_softMin -= min64High;\n uniforms.filter_min64High = min64High;\n\n const max64High = Math.fround(uniforms.filter_max);\n uniforms.filter_max -= max64High;\n uniforms.filter_softMax -= max64High;\n uniforms.filter_max64High = max64High;\n } else {\n const min64High = uniforms.filter_min.map(Math.fround);\n uniforms.filter_min = uniforms.filter_min.map((x, i) => x - min64High[i]);\n uniforms.filter_softMin = uniforms.filter_softMin.map((x, i) => x - min64High[i]);\n uniforms.filter_min64High = min64High;\n\n const max64High = uniforms.filter_max.map(Math.fround);\n uniforms.filter_max = uniforms.filter_max.map((x, i) => x - max64High[i]);\n uniforms.filter_softMax = uniforms.filter_softMax.map((x, i) => x - max64High[i]);\n uniforms.filter_max64High = max64High;\n }\n return uniforms;\n}\n\nconst inject = {\n 'vs:#main-start': `\n #ifdef DATAFILTER_DOUBLE\n dataFilter_setValue(\n DATAFILTER_ATTRIB - filter_min64High + DATAFILTER_ATTRIB_64LOW,\n DATAFILTER_ATTRIB - filter_max64High + DATAFILTER_ATTRIB_64LOW\n );\n #else\n dataFilter_setValue(DATAFILTER_ATTRIB, DATAFILTER_ATTRIB);\n #endif\n `,\n\n 'vs:#main-end': `\n if (dataFilter_value == 0.0) {\n gl_Position = vec4(0.);\n }\n `,\n\n 'vs:DECKGL_FILTER_SIZE': `\n if (filter_transformSize) {\n size = size * dataFilter_value;\n }\n `,\n\n 'fs:DECKGL_FILTER_COLOR': `\n if (dataFilter_value == 0.0) discard;\n if (filter_transformColor) {\n color.a *= dataFilter_value;\n }\n `\n};\n\nexport const shaderModule: ShaderModule<DataFilterModuleSettings> = {\n name: 'data-filter',\n vs,\n fs,\n inject,\n getUniforms\n};\n\nexport const shaderModule64: ShaderModule<DataFilterModuleSettings> = {\n name: 'data-filter-fp64',\n vs,\n fs,\n inject,\n getUniforms: getUniforms64\n};\n"],"file":"shader-module.js"}
package/dist.min.js CHANGED
@@ -1 +1 @@
1
- !function(n,e){"object"==typeof exports&&"object"==typeof module?module.exports=e(require("deck"),require("luma")):"function"==typeof define&&define.amd?define(["deck","luma"],e):"object"==typeof exports?exports.deck=e(require("deck"),require("luma")):n.deck=e(n.deck,n.luma)}(window,(function(n,e){return function(n){var e={};function t(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return n[r].call(i.exports,i,i.exports,t),i.l=!0,i.exports}return t.m=n,t.c=e,t.d=function(n,e,r){t.o(n,e)||Object.defineProperty(n,e,{enumerable:!0,get:r})},t.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},t.t=function(n,e){if(1&e&&(n=t(n)),8&e)return n;if(4&e&&"object"==typeof n&&n&&n.__esModule)return n;var r=Object.create(null);if(t.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:n}),2&e&&"string"!=typeof n)for(var i in n)t.d(r,i,function(e){return n[e]}.bind(null,i));return r},t.n=function(n){var e=n&&n.__esModule?function(){return n.default}:function(){return n};return t.d(e,"a",e),e},t.o=function(n,e){return Object.prototype.hasOwnProperty.call(n,e)},t.p="",t(t.s=10)}([function(e,t){e.exports=n},function(n,e){n.exports=function(n,e,t){return e in n?Object.defineProperty(n,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):n[e]=t,n}},function(n,e){function t(e){return n.exports=t=Object.setPrototypeOf?Object.getPrototypeOf:function(n){return n.__proto__||Object.getPrototypeOf(n)},t(e)}n.exports=t},function(n,e){n.exports=function(n,e){if(!(n instanceof e))throw new TypeError("Cannot call a class as a function")}},function(n,e){function t(n,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,r.key,r)}}n.exports=function(n,e,r){return e&&t(n.prototype,e),r&&t(n,r),n}},function(n,e,t){var r=t(11);n.exports=function(n,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");n.prototype=Object.create(e&&e.prototype,{constructor:{value:n,writable:!0,configurable:!0}}),e&&r(n,e)}},function(n,e,t){var r=t(12),i=t(13);n.exports=function(n,e){return!e||"object"!==r(e)&&"function"!=typeof e?i(n):e}},function(n,t){n.exports=e},function(n,e,t){n.exports=t(14)},function(n,e){function t(n,e,t,r,i,o,a){try{var s=n[o](a),f=s.value}catch(n){return void t(n)}s.done?e(f):Promise.resolve(f).then(r,i)}n.exports=function(n){return function(){var e=this,r=arguments;return new Promise((function(i,o){var a=n.apply(e,r);function s(n){t(a,i,o,s,f,"next",n)}function f(n){t(a,i,o,s,f,"throw",n)}s(void 0)}))}}},function(n,e,t){var r=t(15),i=globalThis.deck||{};if(!i.Layer)throw new Error("@deck.gl/core is not found");n.exports=Object.assign(i,r)},function(n,e){function t(e,r){return n.exports=t=Object.setPrototypeOf||function(n,e){return n.__proto__=e,n},t(e,r)}n.exports=t},function(n,e){function t(e){return"function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?n.exports=t=function(n){return typeof n}:n.exports=t=function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},t(e)}n.exports=t},function(n,e){n.exports=function(n){if(void 0===n)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return n}},function(n,e,t){var r=function(n){"use strict";var e=Object.prototype,t=e.hasOwnProperty,r="function"==typeof Symbol?Symbol:{},i=r.iterator||"@@iterator",o=r.asyncIterator||"@@asyncIterator",a=r.toStringTag||"@@toStringTag";function s(n,e,t,r){var i=e&&e.prototype instanceof c?e:c,o=Object.create(i.prototype),a=new x(r||[]);return o._invoke=function(n,e,t){var r="suspendedStart";return function(i,o){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===i)throw o;return E()}for(t.method=i,t.arg=o;;){var a=t.delegate;if(a){var s=b(a,t);if(s){if(s===l)continue;return s}}if("next"===t.method)t.sent=t._sent=t.arg;else if("throw"===t.method){if("suspendedStart"===r)throw r="completed",t.arg;t.dispatchException(t.arg)}else"return"===t.method&&t.abrupt("return",t.arg);r="executing";var c=f(n,e,t);if("normal"===c.type){if(r=t.done?"completed":"suspendedYield",c.arg===l)continue;return{value:c.arg,done:t.done}}"throw"===c.type&&(r="completed",t.method="throw",t.arg=c.arg)}}}(n,t,a),o}function f(n,e,t){try{return{type:"normal",arg:n.call(e,t)}}catch(n){return{type:"throw",arg:n}}}n.wrap=s;var l={};function c(){}function u(){}function _(){}var p={};p[i]=function(){return this};var v=Object.getPrototypeOf,d=v&&v(v(T([])));d&&d!==e&&t.call(d,i)&&(p=d);var m=_.prototype=c.prototype=Object.create(p);function h(n){["next","throw","return"].forEach((function(e){n[e]=function(n){return this._invoke(e,n)}}))}function y(n){var e;this._invoke=function(r,i){function o(){return new Promise((function(e,o){!function e(r,i,o,a){var s=f(n[r],n,i);if("throw"!==s.type){var l=s.arg,c=l.value;return c&&"object"==typeof c&&t.call(c,"__await")?Promise.resolve(c.__await).then((function(n){e("next",n,o,a)}),(function(n){e("throw",n,o,a)})):Promise.resolve(c).then((function(n){l.value=n,o(l)}),(function(n){return e("throw",n,o,a)}))}a(s.arg)}(r,i,e,o)}))}return e=e?e.then(o,o):o()}}function b(n,e){var t=n.iterator[e.method];if(void 0===t){if(e.delegate=null,"throw"===e.method){if(n.iterator.return&&(e.method="return",e.arg=void 0,b(n,e),"throw"===e.method))return l;e.method="throw",e.arg=new TypeError("The iterator does not provide a 'throw' method")}return l}var r=f(t,n.iterator,e.arg);if("throw"===r.type)return e.method="throw",e.arg=r.arg,e.delegate=null,l;var i=r.arg;return i?i.done?(e[n.resultName]=i.value,e.next=n.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,l):i:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,l)}function g(n){var e={tryLoc:n[0]};1 in n&&(e.catchLoc=n[1]),2 in n&&(e.finallyLoc=n[2],e.afterLoc=n[3]),this.tryEntries.push(e)}function P(n){var e=n.completion||{};e.type="normal",delete e.arg,n.completion=e}function x(n){this.tryEntries=[{tryLoc:"root"}],n.forEach(g,this),this.reset(!0)}function T(n){if(n){var e=n[i];if(e)return e.call(n);if("function"==typeof n.next)return n;if(!isNaN(n.length)){var r=-1,o=function e(){for(;++r<n.length;)if(t.call(n,r))return e.value=n[r],e.done=!1,e;return e.value=void 0,e.done=!0,e};return o.next=o}}return{next:E}}function E(){return{value:void 0,done:!0}}return u.prototype=m.constructor=_,_.constructor=u,_[a]=u.displayName="GeneratorFunction",n.isGeneratorFunction=function(n){var e="function"==typeof n&&n.constructor;return!!e&&(e===u||"GeneratorFunction"===(e.displayName||e.name))},n.mark=function(n){return Object.setPrototypeOf?Object.setPrototypeOf(n,_):(n.__proto__=_,a in n||(n[a]="GeneratorFunction")),n.prototype=Object.create(m),n},n.awrap=function(n){return{__await:n}},h(y.prototype),y.prototype[o]=function(){return this},n.AsyncIterator=y,n.async=function(e,t,r,i){var o=new y(s(e,t,r,i));return n.isGeneratorFunction(t)?o:o.next().then((function(n){return n.done?n.value:o.next()}))},h(m),m[a]="Generator",m[i]=function(){return this},m.toString=function(){return"[object Generator]"},n.keys=function(n){var e=[];for(var t in n)e.push(t);return e.reverse(),function t(){for(;e.length;){var r=e.pop();if(r in n)return t.value=r,t.done=!1,t}return t.done=!0,t}},n.values=T,x.prototype={constructor:x,reset:function(n){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(P),!n)for(var e in this)"t"===e.charAt(0)&&t.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=void 0)},stop:function(){this.done=!0;var n=this.tryEntries[0].completion;if("throw"===n.type)throw n.arg;return this.rval},dispatchException:function(n){if(this.done)throw n;var e=this;function r(t,r){return a.type="throw",a.arg=n,e.next=t,r&&(e.method="next",e.arg=void 0),!!r}for(var i=this.tryEntries.length-1;i>=0;--i){var o=this.tryEntries[i],a=o.completion;if("root"===o.tryLoc)return r("end");if(o.tryLoc<=this.prev){var s=t.call(o,"catchLoc"),f=t.call(o,"finallyLoc");if(s&&f){if(this.prev<o.catchLoc)return r(o.catchLoc,!0);if(this.prev<o.finallyLoc)return r(o.finallyLoc)}else if(s){if(this.prev<o.catchLoc)return r(o.catchLoc,!0)}else{if(!f)throw new Error("try statement without catch or finally");if(this.prev<o.finallyLoc)return r(o.finallyLoc)}}}},abrupt:function(n,e){for(var r=this.tryEntries.length-1;r>=0;--r){var i=this.tryEntries[r];if(i.tryLoc<=this.prev&&t.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var o=i;break}}o&&("break"===n||"continue"===n)&&o.tryLoc<=e&&e<=o.finallyLoc&&(o=null);var a=o?o.completion:{};return a.type=n,a.arg=e,o?(this.method="next",this.next=o.finallyLoc,l):this.complete(a)},complete:function(n,e){if("throw"===n.type)throw n.arg;return"break"===n.type||"continue"===n.type?this.next=n.arg:"return"===n.type?(this.rval=this.arg=n.arg,this.method="return",this.next="end"):"normal"===n.type&&e&&(this.next=e),l},finish:function(n){for(var e=this.tryEntries.length-1;e>=0;--e){var t=this.tryEntries[e];if(t.finallyLoc===n)return this.complete(t.completion,t.afterLoc),P(t),l}},catch:function(n){for(var e=this.tryEntries.length-1;e>=0;--e){var t=this.tryEntries[e];if(t.tryLoc===n){var r=t.completion;if("throw"===r.type){var i=r.arg;P(t)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(n,e,t){return this.delegate={iterator:T(n),resultName:e,nextLoc:t},"next"===this.method&&(this.arg=void 0),l}},n}(n.exports);try{regeneratorRuntime=r}catch(n){Function("r","regeneratorRuntime = r")(r)}},function(n,e,t){"use strict";t.r(e);var r=t(3),i=t.n(r),o=t(4),a=t.n(o),s=t(5),f=t.n(s),l=t(6),c=t.n(l),u=t(2),_=t.n(u),p=t(1),v=t.n(p),d=t(0),m={source:0,target:1,custom:2,source_target:3},h={name:"brushing",dependencies:[d.project],vs:"\n uniform bool brushing_enabled;\n uniform int brushing_target;\n uniform vec2 brushing_mousePos;\n uniform float brushing_radius;\n\n #ifdef NON_INSTANCED_MODEL\n attribute vec2 brushingTargets;\n #else\n attribute vec2 instanceBrushingTargets;\n #endif\n\n varying float brushing_isVisible;\n\n bool brushing_isPointInRange(vec2 position) {\n if (!brushing_enabled) {\n return true;\n }\n vec2 source_commonspace = project_position(position);\n vec2 target_commonspace = project_position(brushing_mousePos);\n float distance = length((target_commonspace - source_commonspace) / project_uCommonUnitsPerMeter.xy);\n\n return distance <= brushing_radius;\n }\n\n bool brushing_arePointsInRange(vec2 sourcePos, vec2 targetPos) {\n return brushing_isPointInRange(sourcePos) || brushing_isPointInRange(targetPos);\n }\n\n void brushing_setVisible(bool visible) {\n brushing_isVisible = float(visible);\n }\n",fs:"\n uniform bool brushing_enabled;\n varying float brushing_isVisible;\n",inject:{"vs:DECKGL_FILTER_GL_POSITION":"\n vec2 brushingTarget;\n vec2 brushingSource;\n if (brushing_target == 3) {\n brushingTarget = geometry.worldPositionAlt.xy;\n brushingSource = geometry.worldPosition.xy;\n } else if (brushing_target == 0) {\n brushingTarget = geometry.worldPosition.xy;\n } else if (brushing_target == 1) {\n brushingTarget = geometry.worldPositionAlt.xy;\n } else {\n #ifdef NON_INSTANCED_MODEL\n brushingTarget = brushingTargets;\n #else\n brushingTarget = instanceBrushingTargets;\n #endif\n }\n bool visible;\n if (brushing_target == 3) {\n visible = brushing_arePointsInRange(brushingSource, brushingTarget);\n } else {\n visible = brushing_isPointInRange(brushingTarget);\n }\n brushing_setVisible(visible);\n ","fs:DECKGL_FILTER_COLOR":"\n if (brushing_enabled && brushing_isVisible < 0.5) {\n discard;\n }\n "},getUniforms:function(n){if(!(n&&"viewport"in n))return{};var e=n.brushingEnabled,t=void 0===e||e,r=n.brushingRadius,i=void 0===r?1e4:r,o=n.brushingTarget,a=void 0===o?"source":o,s=n.mousePosition,f=n.viewport;return{brushing_enabled:Boolean(t&&s&&f.containsPixel(s)),brushing_radius:i,brushing_target:m[a]||0,brushing_mousePos:s?f.unproject([s.x-f.x,s.y-f.y]):[0,0]}}};function y(n){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(n){return!1}}();return function(){var t,r=_()(n);if(e){var i=_()(this).constructor;t=Reflect.construct(r,arguments,i)}else t=r.apply(this,arguments);return c()(this,t)}}var b=function(n){f()(t,n);var e=y(t);function t(){return i()(this,t),e.apply(this,arguments)}return a()(t,[{key:"getShaders",value:function(){return{modules:[h]}}},{key:"initializeState",value:function(n,e){var t=this,r=this.getAttributeManager();r&&r.add({brushingTargets:{size:2,accessor:"getBrushingTarget",update:this.props.getBrushingTarget?void 0:e.useConstantTargetPositions,shaderAttributes:{brushingTargets:{divisor:0},instanceBrushingTargets:{divisor:1}}}}),this.state.onMouseMove=function(){var n;null===(n=t.getCurrentLayer())||void 0===n||n.setNeedsRedraw()},n.deck&&n.deck.eventManager.on({pointermove:this.state.onMouseMove,pointerleave:this.state.onMouseMove})}},{key:"finalizeState",value:function(n,e){n.deck&&n.deck.eventManager.off({pointermove:this.state.onMouseMove,pointerleave:this.state.onMouseMove})}},{key:"useConstantTargetPositions",value:function(n){n.constant=!0,n.value=new Float32Array(2)}}]),t}(d.LayerExtension);function g(n,e){var t=Object.keys(n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(n);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),t.push.apply(t,r)}return t}function P(n){for(var e=1;e<arguments.length;e++){var t=null!=arguments[e]?arguments[e]:{};e%2?g(Object(t),!0).forEach((function(e){v()(n,e,t[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(t)):g(Object(t)).forEach((function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(t,e))}))}return n}v()(b,"defaultProps",{getBrushingTarget:{type:"accessor",value:[0,0]},brushingTarget:"source",brushingEnabled:!0,brushingRadius:1e4}),v()(b,"extensionName","BrushingExtension");var x="\nuniform DATAFILTER_TYPE filter_min;\nuniform DATAFILTER_TYPE filter_softMin;\nuniform DATAFILTER_TYPE filter_softMax;\nuniform DATAFILTER_TYPE filter_max;\nuniform bool filter_useSoftMargin;\nuniform bool filter_enabled;\nuniform bool filter_transformSize;\n\n#ifdef NON_INSTANCED_MODEL\n #define DATAFILTER_ATTRIB filterValues\n #define DATAFILTER_ATTRIB_64LOW filterValues64Low\n#else\n #define DATAFILTER_ATTRIB instanceFilterValues\n #define DATAFILTER_ATTRIB_64LOW instanceFilterValues64Low\n#endif\n\nattribute DATAFILTER_TYPE DATAFILTER_ATTRIB;\n#ifdef DATAFILTER_DOUBLE\n attribute DATAFILTER_TYPE DATAFILTER_ATTRIB_64LOW;\n\n uniform DATAFILTER_TYPE filter_min64High;\n uniform DATAFILTER_TYPE filter_max64High;\n#endif\n\nvarying float dataFilter_value;\n\nfloat dataFilter_reduceValue(float value) {\n return value;\n}\nfloat dataFilter_reduceValue(vec2 value) {\n return min(value.x, value.y);\n}\nfloat dataFilter_reduceValue(vec3 value) {\n return min(min(value.x, value.y), value.z);\n}\nfloat dataFilter_reduceValue(vec4 value) {\n return min(min(value.x, value.y), min(value.z, value.w));\n}\nvoid dataFilter_setValue(DATAFILTER_TYPE valueFromMin, DATAFILTER_TYPE valueFromMax) {\n if (filter_enabled) {\n if (filter_useSoftMargin) {\n dataFilter_value = dataFilter_reduceValue(\n smoothstep(filter_min, filter_softMin, valueFromMin) *\n (1.0 - smoothstep(filter_softMax, filter_max, valueFromMax))\n );\n } else {\n dataFilter_value = dataFilter_reduceValue(\n step(filter_min, valueFromMin) * step(valueFromMax, filter_max)\n );\n }\n } else {\n dataFilter_value = 1.0;\n }\n}\n",T="\nuniform bool filter_transformColor;\nvarying float dataFilter_value;\n";function E(n){if(!(n&&"extensions"in n))return{};var e=n.filterRange,t=void 0===e?[-1,1]:e,r=n.filterEnabled,i=void 0===r||r,o=n.filterTransformSize,a=void 0===o||o,s=n.filterTransformColor,f=void 0===s||s,l=n.filterSoftRange||t;return P(P({},Number.isFinite(t[0])?{filter_min:t[0],filter_softMin:l[0],filter_softMax:l[1],filter_max:t[1]}:{filter_min:t.map((function(n){return n[0]})),filter_softMin:l.map((function(n){return n[0]})),filter_softMax:l.map((function(n){return n[1]})),filter_max:t.map((function(n){return n[1]}))}),{},{filter_enabled:i,filter_useSoftMargin:Boolean(n.filterSoftRange),filter_transformSize:i&&a,filter_transformColor:i&&f})}var O={"vs:#main-start":"\n #ifdef DATAFILTER_DOUBLE\n dataFilter_setValue(\n DATAFILTER_ATTRIB - filter_min64High + DATAFILTER_ATTRIB_64LOW,\n DATAFILTER_ATTRIB - filter_max64High + DATAFILTER_ATTRIB_64LOW\n );\n #else\n dataFilter_setValue(DATAFILTER_ATTRIB, DATAFILTER_ATTRIB);\n #endif\n ","vs:DECKGL_FILTER_SIZE":"\n if (filter_transformSize) {\n size = size * dataFilter_value;\n }\n ","fs:DECKGL_FILTER_COLOR":"\n if (dataFilter_value == 0.0) discard;\n if (filter_transformColor) {\n color.a *= dataFilter_value;\n }\n "},A={name:"data-filter",vs:x,fs:T,inject:O,getUniforms:E},F={name:"data-filter-fp64",vs:x,fs:T,inject:O,getUniforms:function(n){if(!(n&&"extensions"in n))return{};var e=E(n);if(Number.isFinite(e.filter_min)){var t=Math.fround(e.filter_min);e.filter_min-=t,e.filter_softMin-=t,e.filter_min64High=t;var r=Math.fround(e.filter_max);e.filter_max-=r,e.filter_softMax-=r,e.filter_max64High=r}else{var i=e.filter_min.map(Math.fround);e.filter_min=e.filter_min.map((function(n,e){return n-i[e]})),e.filter_softMin=e.filter_softMin.map((function(n,e){return n-i[e]})),e.filter_min64High=i;var o=e.filter_max.map(Math.fround);e.filter_max=e.filter_max.map((function(n,e){return n-o[e]})),e.filter_softMax=e.filter_softMax.map((function(n,e){return n-o[e]})),e.filter_max64High=o}return e}},L=t(7);function I(n,e){var t=Object.keys(n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(n);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),t.push.apply(t,r)}return t}function R(n,e,t){return e.defines.NON_INSTANCED_MODEL=1,t&&(e.defines.FLOAT_TARGET=1),new L.Model(n,function(n){for(var e=1;e<arguments.length;e++){var t=null!=arguments[e]?arguments[e]:{};e%2?I(Object(t),!0).forEach((function(e){v()(n,e,t[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(t)):I(Object(t)).forEach((function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(t,e))}))}return n}({id:"data-filter-aggregation-model",vertexCount:1,isInstanced:!1,drawMode:0,vs:"#define SHADER_NAME data-filter-vertex-shader\n\n#ifdef FLOAT_TARGET\n attribute float filterIndices;\n attribute float filterPrevIndices;\n#else\n attribute vec2 filterIndices;\n attribute vec2 filterPrevIndices;\n#endif\n\nvarying vec4 vColor;\nconst float component = 1.0 / 255.0;\n\nvoid main() {\n #ifdef FLOAT_TARGET\n dataFilter_value *= float(filterIndices != filterPrevIndices);\n gl_Position = vec4(0.0, 0.0, 0.0, 1.0);\n vColor = vec4(0.0, 0.0, 0.0, 1.0);\n #else\n // Float texture is not supported: pack result into 4 channels x 256 px x 64px\n dataFilter_value *= float(filterIndices.x != filterPrevIndices.x);\n float col = filterIndices.x;\n float row = filterIndices.y * 4.0;\n float channel = floor(row);\n row = fract(row);\n vColor = component * vec4(bvec4(channel == 0.0, channel == 1.0, channel == 2.0, channel == 3.0));\n gl_Position = vec4(col * 2.0 - 1.0, row * 2.0 - 1.0, 0.0, 1.0);\n #endif\n gl_PointSize = 1.0;\n}\n",fs:"#define SHADER_NAME data-filter-fragment-shader\nprecision highp float;\n\nvarying vec4 vColor;\n\nvoid main() {\n if (dataFilter_value < 0.5) {\n discard;\n }\n gl_FragColor = vColor;\n}\n"},e))}var S={blend:!0,blendFunc:[1,1,1,1],blendEquation:[32774,32774],depthTest:!1};function k(n,e){var t=Object.keys(n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(n);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),t.push.apply(t,r)}return t}function N(n){for(var e=1;e<arguments.length;e++){var t=null!=arguments[e]?arguments[e]:{};e%2?k(Object(t),!0).forEach((function(e){v()(n,e,t[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(t)):k(Object(t)).forEach((function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(t,e))}))}return n}function w(n){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(n){return!1}}();return function(){var t,r=_()(n);if(e){var i=_()(this).constructor;t=Reflect.construct(r,arguments,i)}else t=r.apply(this,arguments);return c()(this,t)}}var j={1:"float",2:"vec2",3:"vec3",4:"vec4"},C=function(n){f()(t,n);var e=w(t);function t(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=n.filterSize,o=void 0===r?1:r,a=n.fp64,s=void 0!==a&&a,f=n.countItems,l=void 0!==f&&f;if(i()(this,t),!j[o])throw new Error("filterSize out of range");return e.call(this,{filterSize:o,fp64:s,countItems:l})}return a()(t,[{key:"getShaders",value:function(n){var e=n.opts,t=e.filterSize,r=e.fp64;return{modules:[r?F:A],defines:{DATAFILTER_TYPE:j[t],DATAFILTER_DOUBLE:Boolean(r)}}}},{key:"initializeState",value:function(n,e){var t=this.getAttributeManager();t&&t.add({filterValues:{size:e.opts.filterSize,type:e.opts.fp64?5130:5126,accessor:"getFilterValue",shaderAttributes:{filterValues:{divisor:0},instanceFilterValues:{divisor:1}}}});var r=this.context.gl;if(t&&e.opts.countItems){var i=function(n){return Boolean(n.getExtension("EXT_float_blend")&&(n.getExtension("EXT_color_buffer_float")||n.getExtension("WEBGL_color_buffer_float")))}(r);t.add({filterIndices:{size:i?1:2,vertexOffset:1,type:5121,normalized:!0,accessor:function(n,e){var t=e.index,r=n&&n.__source?n.__source.index:t;return i?(r+1)%255:[(r+1)%255,Math.floor(r/255)%255]},shaderAttributes:{filterPrevIndices:{vertexOffset:0},filterIndices:{vertexOffset:1}}}});var o=function(n,e){return e?new L.Framebuffer(n,{width:1,height:1,attachments:v()({},36064,new L.Texture2D(n,{format:Object(L.isWebGL2)(n)?34836:6408,type:5126,mipmaps:!1}))}):new L.Framebuffer(n,{width:256,height:64,depth:!1})}(r,i),a=R(r,e.getShaders.call(this,e),i);this.setState({filterFBO:o,filterModel:a})}}},{key:"updateState",value:function(n){var e=n.props,t=n.oldProps;if(this.state.filterModel){var r=this.getAttributeManager().attributes.filterValues.needsUpdate()||e.filterEnabled!==t.filterEnabled||e.filterRange!==t.filterRange||e.filterSoftRange!==t.filterSoftRange;r&&this.setState({filterNeedsUpdate:r})}}},{key:"draw",value:function(n,e){var t=this.state,r=t.filterFBO,i=t.filterModel,o=t.filterNeedsUpdate,a=this.props.onFilteredItemsChange;if(o&&a&&i){var s=this.getAttributeManager().attributes,f=s.filterValues,l=s.filterIndices;i.setVertexCount(this.getNumInstances());var c=this.context.gl;Object(L.clear)(c,{framebuffer:r,color:[0,0,0,0]}),i.updateModuleSettings(n.moduleParameters).setAttributes(N(N({},f.getShaderAttributes()),l&&l.getShaderAttributes())).draw({framebuffer:r,parameters:N(N({},S),{},{viewport:[0,0,r.width,r.height]})});for(var u=Object(L.readPixelsToArray)(r),_=0,p=0;p<u.length;p++)_+=u[p];a({id:this.id,count:_}),this.state.filterNeedsUpdate=!1}}},{key:"finalizeState",value:function(){var n=this.state,e=n.filterFBO,t=n.filterModel;e&&(e.color.delete(),e.delete(),t.delete())}}]),t}(d.LayerExtension);function B(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,r=Math.fround(n),i=n-r;return e[t]=r,e[t+1]=i,e}function D(n){return n-Math.fround(n)}function M(n){for(var e=new Float32Array(32),t=0;t<4;++t)for(var r=0;r<4;++r){var i=4*t+r;B(n[4*r+t],e,2*i)}return e}v()(C,"defaultProps",{getFilterValue:{type:"accessor",value:0},onFilteredItemsChange:{type:"function",value:null,compare:!1},filterEnabled:!0,filterRange:[-1,1],filterSoftRange:null,filterTransformSize:!0,filterTransformColor:!0}),v()(C,"extensionName","DataFilterExtension");var V={ONE:1};var z={name:"fp64",vs:"const vec2 E_FP64 = vec2(2.7182817459106445e+00, 8.254840366817007e-08);\nconst vec2 LOG2_FP64 = vec2(0.6931471824645996e+00, -1.9046542121259336e-09);\nconst vec2 PI_FP64 = vec2(3.1415927410125732, -8.742278012618954e-8);\nconst vec2 TWO_PI_FP64 = vec2(6.2831854820251465, -1.7484556025237907e-7);\nconst vec2 PI_2_FP64 = vec2(1.5707963705062866, -4.371139006309477e-8);\nconst vec2 PI_4_FP64 = vec2(0.7853981852531433, -2.1855695031547384e-8);\nconst vec2 PI_16_FP64 = vec2(0.19634954631328583, -5.463923757886846e-9);\nconst vec2 PI_16_2_FP64 = vec2(0.39269909262657166, -1.0927847515773692e-8);\nconst vec2 PI_16_3_FP64 = vec2(0.5890486240386963, -1.4906100798128818e-9);\nconst vec2 PI_180_FP64 = vec2(0.01745329238474369, 1.3519960498364902e-10);\n\nconst vec2 SIN_TABLE_0_FP64 = vec2(0.19509032368659973, -1.6704714833615242e-9);\nconst vec2 SIN_TABLE_1_FP64 = vec2(0.3826834261417389, 6.22335089017767e-9);\nconst vec2 SIN_TABLE_2_FP64 = vec2(0.5555702447891235, -1.1769521357507529e-8);\nconst vec2 SIN_TABLE_3_FP64 = vec2(0.7071067690849304, 1.2101617041793133e-8);\n\nconst vec2 COS_TABLE_0_FP64 = vec2(0.9807852506637573, 2.9739473106360492e-8);\nconst vec2 COS_TABLE_1_FP64 = vec2(0.9238795042037964, 2.8307490351764386e-8);\nconst vec2 COS_TABLE_2_FP64 = vec2(0.8314695954322815, 1.6870263741530778e-8);\nconst vec2 COS_TABLE_3_FP64 = vec2(0.7071067690849304, 1.2101617152815436e-8);\n\nconst vec2 INVERSE_FACTORIAL_3_FP64 = vec2(1.666666716337204e-01, -4.967053879312289e-09);\nconst vec2 INVERSE_FACTORIAL_4_FP64 = vec2(4.16666679084301e-02, -1.2417634698280722e-09);\nconst vec2 INVERSE_FACTORIAL_5_FP64 = vec2(8.333333767950535e-03, -4.34617203337595e-10);\nconst vec2 INVERSE_FACTORIAL_6_FP64 = vec2(1.3888889225199819e-03, -3.3631094437103215e-11);\nconst vec2 INVERSE_FACTORIAL_7_FP64 = vec2(1.9841270113829523e-04, -2.725596874933456e-12);\nconst vec2 INVERSE_FACTORIAL_8_FP64 = vec2(2.4801587642286904e-05, -3.406996025904184e-13);\nconst vec2 INVERSE_FACTORIAL_9_FP64 = vec2(2.75573188446287533e-06, 3.7935713937038186e-14);\nconst vec2 INVERSE_FACTORIAL_10_FP64 = vec2(2.755731998149713e-07, -7.575112367869873e-15);\n\nfloat nint(float d) {\n if (d == floor(d)) return d;\n return floor(d + 0.5);\n}\n\nvec2 nint_fp64(vec2 a) {\n float hi = nint(a.x);\n float lo;\n vec2 tmp;\n if (hi == a.x) {\n lo = nint(a.y);\n tmp = quickTwoSum(hi, lo);\n } else {\n lo = 0.0;\n if (abs(hi - a.x) == 0.5 && a.y < 0.0) {\n hi -= 1.0;\n }\n tmp = vec2(hi, lo);\n }\n return tmp;\n}\n\nvec2 exp_fp64(vec2 a) {\n\n const int k_power = 4;\n const float k = 16.0;\n\n const float inv_k = 1.0 / k;\n\n if (a.x <= -88.0) return vec2(0.0, 0.0);\n if (a.x >= 88.0) return vec2(1.0 / 0.0, 1.0 / 0.0);\n if (a.x == 0.0 && a.y == 0.0) return vec2(1.0, 0.0);\n if (a.x == 1.0 && a.y == 0.0) return E_FP64;\n\n float m = floor(a.x / LOG2_FP64.x + 0.5);\n vec2 r = sub_fp64(a, mul_fp64(LOG2_FP64, vec2(m, 0.0))) * inv_k;\n vec2 s, t, p;\n\n p = mul_fp64(r, r);\n s = sum_fp64(r, p * 0.5);\n p = mul_fp64(p, r);\n t = mul_fp64(p, INVERSE_FACTORIAL_3_FP64);\n\n s = sum_fp64(s, t);\n p = mul_fp64(p, r);\n t = mul_fp64(p, INVERSE_FACTORIAL_4_FP64);\n\n s = sum_fp64(s, t);\n p = mul_fp64(p, r);\n t = mul_fp64(p, INVERSE_FACTORIAL_5_FP64);\n\n\n\n\n\n\n s = sum_fp64(s, t);\n for (int i = 0; i < k_power; i++) {\n s = sum_fp64(s * 2.0, mul_fp64(s, s));\n }\n\n#if defined(NVIDIA_FP64_WORKAROUND) || defined(INTEL_FP64_WORKAROUND)\n s = sum_fp64(s, vec2(ONE, 0.0));\n#else\n s = sum_fp64(s, vec2(1.0, 0.0));\n#endif\n\n return s * pow(2.0, m);\n}\n\nvec2 log_fp64(vec2 a)\n{\n if (a.x == 1.0 && a.y == 0.0) return vec2(0.0, 0.0);\n if (a.x <= 0.0) return vec2(0.0 / 0.0, 0.0 / 0.0);\n vec2 x = vec2(log(a.x), 0.0);\n vec2 s;\n#if defined(NVIDIA_FP64_WORKAROUND) || defined(INTEL_FP64_WORKAROUND)\n s = vec2(ONE, 0.0);\n#else\n s = vec2(1.0, 0.0);\n#endif\n\n x = sub_fp64(sum_fp64(x, mul_fp64(a, exp_fp64(-x))), s);\n return x;\n}\n\nvec2 sin_taylor_fp64(vec2 a) {\n vec2 r, s, t, x;\n\n if (a.x == 0.0 && a.y == 0.0) {\n return vec2(0.0, 0.0);\n }\n\n x = -mul_fp64(a, a);\n s = a;\n r = a;\n\n r = mul_fp64(r, x);\n t = mul_fp64(r, INVERSE_FACTORIAL_3_FP64);\n s = sum_fp64(s, t);\n\n r = mul_fp64(r, x);\n t = mul_fp64(r, INVERSE_FACTORIAL_5_FP64);\n s = sum_fp64(s, t);\n\n\n\n\n\n\n return s;\n}\n\nvec2 cos_taylor_fp64(vec2 a) {\n vec2 r, s, t, x;\n\n if (a.x == 0.0 && a.y == 0.0) {\n return vec2(1.0, 0.0);\n }\n\n x = -mul_fp64(a, a);\n r = x;\n s = sum_fp64(vec2(1.0, 0.0), r * 0.5);\n\n r = mul_fp64(r, x);\n t = mul_fp64(r, INVERSE_FACTORIAL_4_FP64);\n s = sum_fp64(s, t);\n\n r = mul_fp64(r, x);\n t = mul_fp64(r, INVERSE_FACTORIAL_6_FP64);\n s = sum_fp64(s, t);\n\n\n\n\n\n\n return s;\n}\n\nvoid sincos_taylor_fp64(vec2 a, out vec2 sin_t, out vec2 cos_t) {\n if (a.x == 0.0 && a.y == 0.0) {\n sin_t = vec2(0.0, 0.0);\n cos_t = vec2(1.0, 0.0);\n }\n\n sin_t = sin_taylor_fp64(a);\n cos_t = sqrt_fp64(sub_fp64(vec2(1.0, 0.0), mul_fp64(sin_t, sin_t)));\n}\n\nvec2 sin_fp64(vec2 a) {\n if (a.x == 0.0 && a.y == 0.0) {\n return vec2(0.0, 0.0);\n }\n vec2 z = nint_fp64(div_fp64(a, TWO_PI_FP64));\n vec2 r = sub_fp64(a, mul_fp64(TWO_PI_FP64, z));\n\n vec2 t;\n float q = floor(r.x / PI_2_FP64.x + 0.5);\n int j = int(q);\n\n if (j < -2 || j > 2) {\n return vec2(0.0 / 0.0, 0.0 / 0.0);\n }\n\n t = sub_fp64(r, mul_fp64(PI_2_FP64, vec2(q, 0.0)));\n\n q = floor(t.x / PI_16_FP64.x + 0.5);\n int k = int(q);\n\n if (k == 0) {\n if (j == 0) {\n return sin_taylor_fp64(t);\n } else if (j == 1) {\n return cos_taylor_fp64(t);\n } else if (j == -1) {\n return -cos_taylor_fp64(t);\n } else {\n return -sin_taylor_fp64(t);\n }\n }\n\n int abs_k = int(abs(float(k)));\n\n if (abs_k > 4) {\n return vec2(0.0 / 0.0, 0.0 / 0.0);\n } else {\n t = sub_fp64(t, mul_fp64(PI_16_FP64, vec2(q, 0.0)));\n }\n\n vec2 u = vec2(0.0, 0.0);\n vec2 v = vec2(0.0, 0.0);\n\n#if defined(NVIDIA_FP64_WORKAROUND) || defined(INTEL_FP64_WORKAROUND)\n if (abs(float(abs_k) - 1.0) < 0.5) {\n u = COS_TABLE_0_FP64;\n v = SIN_TABLE_0_FP64;\n } else if (abs(float(abs_k) - 2.0) < 0.5) {\n u = COS_TABLE_1_FP64;\n v = SIN_TABLE_1_FP64;\n } else if (abs(float(abs_k) - 3.0) < 0.5) {\n u = COS_TABLE_2_FP64;\n v = SIN_TABLE_2_FP64;\n } else if (abs(float(abs_k) - 4.0) < 0.5) {\n u = COS_TABLE_3_FP64;\n v = SIN_TABLE_3_FP64;\n }\n#else\n if (abs_k == 1) {\n u = COS_TABLE_0_FP64;\n v = SIN_TABLE_0_FP64;\n } else if (abs_k == 2) {\n u = COS_TABLE_1_FP64;\n v = SIN_TABLE_1_FP64;\n } else if (abs_k == 3) {\n u = COS_TABLE_2_FP64;\n v = SIN_TABLE_2_FP64;\n } else if (abs_k == 4) {\n u = COS_TABLE_3_FP64;\n v = SIN_TABLE_3_FP64;\n }\n#endif\n\n vec2 sin_t, cos_t;\n sincos_taylor_fp64(t, sin_t, cos_t);\n\n\n\n vec2 result = vec2(0.0, 0.0);\n if (j == 0) {\n if (k > 0) {\n result = sum_fp64(mul_fp64(u, sin_t), mul_fp64(v, cos_t));\n } else {\n result = sub_fp64(mul_fp64(u, sin_t), mul_fp64(v, cos_t));\n }\n } else if (j == 1) {\n if (k > 0) {\n result = sub_fp64(mul_fp64(u, cos_t), mul_fp64(v, sin_t));\n } else {\n result = sum_fp64(mul_fp64(u, cos_t), mul_fp64(v, sin_t));\n }\n } else if (j == -1) {\n if (k > 0) {\n result = sub_fp64(mul_fp64(v, sin_t), mul_fp64(u, cos_t));\n } else {\n result = -sum_fp64(mul_fp64(v, sin_t), mul_fp64(u, cos_t));\n }\n } else {\n if (k > 0) {\n result = -sum_fp64(mul_fp64(u, sin_t), mul_fp64(v, cos_t));\n } else {\n result = sub_fp64(mul_fp64(v, cos_t), mul_fp64(u, sin_t));\n }\n }\n\n return result;\n}\n\nvec2 cos_fp64(vec2 a) {\n if (a.x == 0.0 && a.y == 0.0) {\n return vec2(1.0, 0.0);\n }\n vec2 z = nint_fp64(div_fp64(a, TWO_PI_FP64));\n vec2 r = sub_fp64(a, mul_fp64(TWO_PI_FP64, z));\n\n vec2 t;\n float q = floor(r.x / PI_2_FP64.x + 0.5);\n int j = int(q);\n\n if (j < -2 || j > 2) {\n return vec2(0.0 / 0.0, 0.0 / 0.0);\n }\n\n t = sub_fp64(r, mul_fp64(PI_2_FP64, vec2(q, 0.0)));\n\n q = floor(t.x / PI_16_FP64.x + 0.5);\n int k = int(q);\n\n if (k == 0) {\n if (j == 0) {\n return cos_taylor_fp64(t);\n } else if (j == 1) {\n return -sin_taylor_fp64(t);\n } else if (j == -1) {\n return sin_taylor_fp64(t);\n } else {\n return -cos_taylor_fp64(t);\n }\n }\n\n int abs_k = int(abs(float(k)));\n\n if (abs_k > 4) {\n return vec2(0.0 / 0.0, 0.0 / 0.0);\n } else {\n t = sub_fp64(t, mul_fp64(PI_16_FP64, vec2(q, 0.0)));\n }\n\n vec2 u = vec2(0.0, 0.0);\n vec2 v = vec2(0.0, 0.0);\n\n#if defined(NVIDIA_FP64_WORKAROUND) || defined(INTEL_FP64_WORKAROUND)\n if (abs(float(abs_k) - 1.0) < 0.5) {\n u = COS_TABLE_0_FP64;\n v = SIN_TABLE_0_FP64;\n } else if (abs(float(abs_k) - 2.0) < 0.5) {\n u = COS_TABLE_1_FP64;\n v = SIN_TABLE_1_FP64;\n } else if (abs(float(abs_k) - 3.0) < 0.5) {\n u = COS_TABLE_2_FP64;\n v = SIN_TABLE_2_FP64;\n } else if (abs(float(abs_k) - 4.0) < 0.5) {\n u = COS_TABLE_3_FP64;\n v = SIN_TABLE_3_FP64;\n }\n#else\n if (abs_k == 1) {\n u = COS_TABLE_0_FP64;\n v = SIN_TABLE_0_FP64;\n } else if (abs_k == 2) {\n u = COS_TABLE_1_FP64;\n v = SIN_TABLE_1_FP64;\n } else if (abs_k == 3) {\n u = COS_TABLE_2_FP64;\n v = SIN_TABLE_2_FP64;\n } else if (abs_k == 4) {\n u = COS_TABLE_3_FP64;\n v = SIN_TABLE_3_FP64;\n }\n#endif\n\n vec2 sin_t, cos_t;\n sincos_taylor_fp64(t, sin_t, cos_t);\n\n vec2 result = vec2(0.0, 0.0);\n if (j == 0) {\n if (k > 0) {\n result = sub_fp64(mul_fp64(u, cos_t), mul_fp64(v, sin_t));\n } else {\n result = sum_fp64(mul_fp64(u, cos_t), mul_fp64(v, sin_t));\n }\n } else if (j == 1) {\n if (k > 0) {\n result = -sum_fp64(mul_fp64(u, sin_t), mul_fp64(v, cos_t));\n } else {\n result = sub_fp64(mul_fp64(v, cos_t), mul_fp64(u, sin_t));\n }\n } else if (j == -1) {\n if (k > 0) {\n result = sum_fp64(mul_fp64(u, sin_t), mul_fp64(v, cos_t));\n } else {\n result = sub_fp64(mul_fp64(u, sin_t), mul_fp64(v, cos_t));\n }\n } else {\n if (k > 0) {\n result = sub_fp64(mul_fp64(v, sin_t), mul_fp64(u, cos_t));\n } else {\n result = -sum_fp64(mul_fp64(u, cos_t), mul_fp64(v, sin_t));\n }\n }\n\n return result;\n}\n\nvec2 tan_fp64(vec2 a) {\n vec2 sin_a;\n vec2 cos_a;\n\n if (a.x == 0.0 && a.y == 0.0) {\n return vec2(0.0, 0.0);\n }\n vec2 z = nint_fp64(div_fp64(a, TWO_PI_FP64));\n vec2 r = sub_fp64(a, mul_fp64(TWO_PI_FP64, z));\n\n vec2 t;\n float q = floor(r.x / PI_2_FP64.x + 0.5);\n int j = int(q);\n\n\n if (j < -2 || j > 2) {\n return vec2(0.0 / 0.0, 0.0 / 0.0);\n }\n\n t = sub_fp64(r, mul_fp64(PI_2_FP64, vec2(q, 0.0)));\n\n q = floor(t.x / PI_16_FP64.x + 0.5);\n int k = int(q);\n int abs_k = int(abs(float(k)));\n\n if (abs_k > 4) {\n return vec2(0.0 / 0.0, 0.0 / 0.0);\n } else {\n t = sub_fp64(t, mul_fp64(PI_16_FP64, vec2(q, 0.0)));\n }\n\n\n vec2 u = vec2(0.0, 0.0);\n vec2 v = vec2(0.0, 0.0);\n\n vec2 sin_t, cos_t;\n vec2 s, c;\n sincos_taylor_fp64(t, sin_t, cos_t);\n\n if (k == 0) {\n s = sin_t;\n c = cos_t;\n } else {\n#if defined(NVIDIA_FP64_WORKAROUND) || defined(INTEL_FP64_WORKAROUND)\n if (abs(float(abs_k) - 1.0) < 0.5) {\n u = COS_TABLE_0_FP64;\n v = SIN_TABLE_0_FP64;\n } else if (abs(float(abs_k) - 2.0) < 0.5) {\n u = COS_TABLE_1_FP64;\n v = SIN_TABLE_1_FP64;\n } else if (abs(float(abs_k) - 3.0) < 0.5) {\n u = COS_TABLE_2_FP64;\n v = SIN_TABLE_2_FP64;\n } else if (abs(float(abs_k) - 4.0) < 0.5) {\n u = COS_TABLE_3_FP64;\n v = SIN_TABLE_3_FP64;\n }\n#else\n if (abs_k == 1) {\n u = COS_TABLE_0_FP64;\n v = SIN_TABLE_0_FP64;\n } else if (abs_k == 2) {\n u = COS_TABLE_1_FP64;\n v = SIN_TABLE_1_FP64;\n } else if (abs_k == 3) {\n u = COS_TABLE_2_FP64;\n v = SIN_TABLE_2_FP64;\n } else if (abs_k == 4) {\n u = COS_TABLE_3_FP64;\n v = SIN_TABLE_3_FP64;\n }\n#endif\n if (k > 0) {\n s = sum_fp64(mul_fp64(u, sin_t), mul_fp64(v, cos_t));\n c = sub_fp64(mul_fp64(u, cos_t), mul_fp64(v, sin_t));\n } else {\n s = sub_fp64(mul_fp64(u, sin_t), mul_fp64(v, cos_t));\n c = sum_fp64(mul_fp64(u, cos_t), mul_fp64(v, sin_t));\n }\n }\n\n if (j == 0) {\n sin_a = s;\n cos_a = c;\n } else if (j == 1) {\n sin_a = c;\n cos_a = -s;\n } else if (j == -1) {\n sin_a = -c;\n cos_a = s;\n } else {\n sin_a = -s;\n cos_a = -c;\n }\n return div_fp64(sin_a, cos_a);\n}\n\nvec2 radians_fp64(vec2 degree) {\n return mul_fp64(degree, PI_180_FP64);\n}\n\nvec2 mix_fp64(vec2 a, vec2 b, float x) {\n vec2 range = sub_fp64(b, a);\n return sum_fp64(a, mul_fp64(range, vec2(x, 0.0)));\n}\n\nvoid vec2_sum_fp64(vec2 a[2], vec2 b[2], out vec2 out_val[2]) {\n out_val[0] = sum_fp64(a[0], b[0]);\n out_val[1] = sum_fp64(a[1], b[1]);\n}\n\nvoid vec2_sub_fp64(vec2 a[2], vec2 b[2], out vec2 out_val[2]) {\n out_val[0] = sub_fp64(a[0], b[0]);\n out_val[1] = sub_fp64(a[1], b[1]);\n}\n\nvoid vec2_mul_fp64(vec2 a[2], vec2 b[2], out vec2 out_val[2]) {\n out_val[0] = mul_fp64(a[0], b[0]);\n out_val[1] = mul_fp64(a[1], b[1]);\n}\n\nvoid vec2_div_fp64(vec2 a[2], vec2 b[2], out vec2 out_val[2]) {\n out_val[0] = div_fp64(a[0], b[0]);\n out_val[1] = div_fp64(a[1], b[1]);\n}\n\nvoid vec2_mix_fp64(vec2 x[2], vec2 y[2], float a, out vec2 out_val[2]) {\n vec2 range[2];\n vec2_sub_fp64(y, x, range);\n vec2 portion[2];\n portion[0] = range[0] * a;\n portion[1] = range[1] * a;\n vec2_sum_fp64(x, portion, out_val);\n}\n\nvec2 vec2_length_fp64(vec2 x[2]) {\n return sqrt_fp64(sum_fp64(mul_fp64(x[0], x[0]), mul_fp64(x[1], x[1])));\n}\n\nvoid vec2_normalize_fp64(vec2 x[2], out vec2 out_val[2]) {\n vec2 length = vec2_length_fp64(x);\n vec2 length_vec2[2];\n length_vec2[0] = length;\n length_vec2[1] = length;\n\n vec2_div_fp64(x, length_vec2, out_val);\n}\n\nvec2 vec2_distance_fp64(vec2 x[2], vec2 y[2]) {\n vec2 diff[2];\n vec2_sub_fp64(x, y, diff);\n return vec2_length_fp64(diff);\n}\n\nvec2 vec2_dot_fp64(vec2 a[2], vec2 b[2]) {\n vec2 v[2];\n\n v[0] = mul_fp64(a[0], b[0]);\n v[1] = mul_fp64(a[1], b[1]);\n\n return sum_fp64(v[0], v[1]);\n}\nvoid vec3_sub_fp64(vec2 a[3], vec2 b[3], out vec2 out_val[3]) {\n for (int i = 0; i < 3; i++) {\n out_val[i] = sum_fp64(a[i], b[i]);\n }\n}\n\nvoid vec3_sum_fp64(vec2 a[3], vec2 b[3], out vec2 out_val[3]) {\n for (int i = 0; i < 3; i++) {\n out_val[i] = sum_fp64(a[i], b[i]);\n }\n}\n\nvec2 vec3_length_fp64(vec2 x[3]) {\n return sqrt_fp64(sum_fp64(sum_fp64(mul_fp64(x[0], x[0]), mul_fp64(x[1], x[1])),\n mul_fp64(x[2], x[2])));\n}\n\nvec2 vec3_distance_fp64(vec2 x[3], vec2 y[3]) {\n vec2 diff[3];\n vec3_sub_fp64(x, y, diff);\n return vec3_length_fp64(diff);\n}\nvoid vec4_fp64(vec4 a, out vec2 out_val[4]) {\n out_val[0].x = a[0];\n out_val[0].y = 0.0;\n\n out_val[1].x = a[1];\n out_val[1].y = 0.0;\n\n out_val[2].x = a[2];\n out_val[2].y = 0.0;\n\n out_val[3].x = a[3];\n out_val[3].y = 0.0;\n}\n\nvoid vec4_scalar_mul_fp64(vec2 a[4], vec2 b, out vec2 out_val[4]) {\n out_val[0] = mul_fp64(a[0], b);\n out_val[1] = mul_fp64(a[1], b);\n out_val[2] = mul_fp64(a[2], b);\n out_val[3] = mul_fp64(a[3], b);\n}\n\nvoid vec4_sum_fp64(vec2 a[4], vec2 b[4], out vec2 out_val[4]) {\n for (int i = 0; i < 4; i++) {\n out_val[i] = sum_fp64(a[i], b[i]);\n }\n}\n\nvoid vec4_dot_fp64(vec2 a[4], vec2 b[4], out vec2 out_val) {\n vec2 v[4];\n\n v[0] = mul_fp64(a[0], b[0]);\n v[1] = mul_fp64(a[1], b[1]);\n v[2] = mul_fp64(a[2], b[2]);\n v[3] = mul_fp64(a[3], b[3]);\n\n out_val = sum_fp64(sum_fp64(v[0], v[1]), sum_fp64(v[2], v[3]));\n}\n\nvoid mat4_vec4_mul_fp64(vec2 b[16], vec2 a[4], out vec2 out_val[4]) {\n vec2 tmp[4];\n\n for (int i = 0; i < 4; i++)\n {\n for (int j = 0; j < 4; j++)\n {\n tmp[j] = b[j + i * 4];\n }\n vec4_dot_fp64(a, tmp, out_val[i]);\n }\n}\n",fs:null,dependencies:[{name:"fp64-arithmetic",vs:"uniform float ONE;\nvec2 split(float a) {\n const float SPLIT = 4097.0;\n float t = a * SPLIT;\n#if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)\n float a_hi = t * ONE - (t - a);\n float a_lo = a * ONE - a_hi;\n#else\n float a_hi = t - (t - a);\n float a_lo = a - a_hi;\n#endif\n return vec2(a_hi, a_lo);\n}\nvec2 split2(vec2 a) {\n vec2 b = split(a.x);\n b.y += a.y;\n return b;\n}\nvec2 quickTwoSum(float a, float b) {\n#if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)\n float sum = (a + b) * ONE;\n float err = b - (sum - a) * ONE;\n#else\n float sum = a + b;\n float err = b - (sum - a);\n#endif\n return vec2(sum, err);\n}\nvec2 twoSum(float a, float b) {\n float s = (a + b);\n#if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)\n float v = (s * ONE - a) * ONE;\n float err = (a - (s - v) * ONE) * ONE * ONE * ONE + (b - v);\n#else\n float v = s - a;\n float err = (a - (s - v)) + (b - v);\n#endif\n return vec2(s, err);\n}\n\nvec2 twoSub(float a, float b) {\n float s = (a - b);\n#if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)\n float v = (s * ONE - a) * ONE;\n float err = (a - (s - v) * ONE) * ONE * ONE * ONE - (b + v);\n#else\n float v = s - a;\n float err = (a - (s - v)) - (b + v);\n#endif\n return vec2(s, err);\n}\n\nvec2 twoSqr(float a) {\n float prod = a * a;\n vec2 a_fp64 = split(a);\n#if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)\n float err = ((a_fp64.x * a_fp64.x - prod) * ONE + 2.0 * a_fp64.x *\n a_fp64.y * ONE * ONE) + a_fp64.y * a_fp64.y * ONE * ONE * ONE;\n#else\n float err = ((a_fp64.x * a_fp64.x - prod) + 2.0 * a_fp64.x * a_fp64.y) + a_fp64.y * a_fp64.y;\n#endif\n return vec2(prod, err);\n}\n\nvec2 twoProd(float a, float b) {\n float prod = a * b;\n vec2 a_fp64 = split(a);\n vec2 b_fp64 = split(b);\n float err = ((a_fp64.x * b_fp64.x - prod) + a_fp64.x * b_fp64.y +\n a_fp64.y * b_fp64.x) + a_fp64.y * b_fp64.y;\n return vec2(prod, err);\n}\n\nvec2 sum_fp64(vec2 a, vec2 b) {\n vec2 s, t;\n s = twoSum(a.x, b.x);\n t = twoSum(a.y, b.y);\n s.y += t.x;\n s = quickTwoSum(s.x, s.y);\n s.y += t.y;\n s = quickTwoSum(s.x, s.y);\n return s;\n}\n\nvec2 sub_fp64(vec2 a, vec2 b) {\n vec2 s, t;\n s = twoSub(a.x, b.x);\n t = twoSub(a.y, b.y);\n s.y += t.x;\n s = quickTwoSum(s.x, s.y);\n s.y += t.y;\n s = quickTwoSum(s.x, s.y);\n return s;\n}\n\nvec2 mul_fp64(vec2 a, vec2 b) {\n vec2 prod = twoProd(a.x, b.x);\n prod.y += a.x * b.y;\n#if defined(LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND)\n prod = split2(prod);\n#endif\n prod = quickTwoSum(prod.x, prod.y);\n prod.y += a.y * b.x;\n#if defined(LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND)\n prod = split2(prod);\n#endif\n prod = quickTwoSum(prod.x, prod.y);\n return prod;\n}\n\nvec2 div_fp64(vec2 a, vec2 b) {\n float xn = 1.0 / b.x;\n#if defined(LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND)\n vec2 yn = mul_fp64(a, vec2(xn, 0));\n#else\n vec2 yn = a * xn;\n#endif\n float diff = (sub_fp64(a, mul_fp64(b, yn))).x;\n vec2 prod = twoProd(xn, diff);\n return sum_fp64(yn, prod);\n}\n\nvec2 sqrt_fp64(vec2 a) {\n if (a.x == 0.0 && a.y == 0.0) return vec2(0.0, 0.0);\n if (a.x < 0.0) return vec2(0.0 / 0.0, 0.0 / 0.0);\n\n float x = 1.0 / sqrt(a.x);\n float yn = a.x * x;\n#if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)\n vec2 yn_sqr = twoSqr(yn) * ONE;\n#else\n vec2 yn_sqr = twoSqr(yn);\n#endif\n float diff = sub_fp64(a, yn_sqr).x;\n vec2 prod = twoProd(x * 0.5, diff);\n#if defined(LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND)\n return sum_fp64(split(yn), prod);\n#else\n return sum_fp64(vec2(yn, 0.0), prod);\n#endif\n}\n",fs:null,getUniforms:function(){return V},fp64ify:B,fp64LowPart:D,fp64ifyMatrix4:M}],fp64ify:B,fp64LowPart:D,fp64ifyMatrix4:M},U=z.fp64ify,G=z.fp64ifyMatrix4,W={name:"project64",dependencies:[d.project,z],vs:"\nconst vec2 WORLD_SCALE_FP64 = vec2(81.4873275756836, 0.0000032873668232014097);\n\nuniform vec2 project_uViewProjectionMatrixFP64[16];\n\n// longitude: lnglat_fp64.xy; latitude: lnglat_fp64.zw\nvoid mercatorProject_fp64(vec4 lnglat_fp64, out vec2 out_val[2]) {\n\n#if defined(NVIDIA_FP64_WORKAROUND)\n out_val[0] = sum_fp64(radians_fp64(lnglat_fp64.xy), PI_FP64 * ONE);\n#else\n out_val[0] = sum_fp64(radians_fp64(lnglat_fp64.xy), PI_FP64);\n#endif\n out_val[1] = sum_fp64(PI_FP64,\n log_fp64(tan_fp64(sum_fp64(PI_4_FP64, radians_fp64(lnglat_fp64.zw) / 2.0))));\n return;\n}\n\nvoid project_position_fp64(vec4 position_fp64, out vec2 out_val[2]) {\n vec2 pos_fp64[2];\n mercatorProject_fp64(position_fp64, pos_fp64);\n out_val[0] = mul_fp64(pos_fp64[0], WORLD_SCALE_FP64);\n out_val[1] = mul_fp64(pos_fp64[1], WORLD_SCALE_FP64);\n\n return;\n}\n\nvoid project_position_fp64(vec2 position, vec2 position64xyLow, out vec2 out_val[2]) {\n vec4 position64xy = vec4(\n position.x, position64xyLow.x,\n position.y, position64xyLow.y);\n\n project_position_fp64(position64xy, out_val);\n}\n\nvec4 project_common_position_to_clipspace_fp64(vec2 vertex_pos_modelspace[4]) {\n vec2 vertex_pos_clipspace[4];\n mat4_vec4_mul_fp64(project_uViewProjectionMatrixFP64, vertex_pos_modelspace,\n vertex_pos_clipspace);\n return vec4(\n vertex_pos_clipspace[0].x,\n vertex_pos_clipspace[1].x,\n vertex_pos_clipspace[2].x,\n vertex_pos_clipspace[3].x\n );\n}\n\nvec4 project_position_to_clipspace(\n vec3 position, vec3 position64xyLow, vec3 offset, out vec4 commonPosition\n) {\n // This is the local offset to the instance position\n vec2 offset64[4];\n vec4_fp64(vec4(offset, 0.0), offset64);\n\n float z = project_size(position.z);\n\n // Apply web mercator projection (depends on coordinate system imn use)\n vec2 projectedPosition64xy[2];\n project_position_fp64(position.xy, position64xyLow.xy, projectedPosition64xy);\n\n vec2 commonPosition64[4];\n commonPosition64[0] = sum_fp64(offset64[0], projectedPosition64xy[0]);\n commonPosition64[1] = sum_fp64(offset64[1], projectedPosition64xy[1]);\n commonPosition64[2] = sum_fp64(offset64[2], vec2(z, 0.0));\n commonPosition64[3] = vec2(1.0, 0.0);\n\n commonPosition = vec4(projectedPosition64xy[0].x, projectedPosition64xy[1].x, z, 1.0);\n\n return project_common_position_to_clipspace_fp64(commonPosition64);\n}\n\nvec4 project_position_to_clipspace(\n vec3 position, vec3 position64xyLow, vec3 offset\n) {\n vec4 commonPosition;\n return project_position_to_clipspace(\n position, position64xyLow, offset, commonPosition\n );\n}\n",getUniforms:function(n){if(n&&"viewport"in n){var e=n.viewport,t=e.viewProjectionMatrix,r=e.scale;return q({viewProjectionMatrix:t,scale:r})}return{}}},q=Object(d._memoize)((function(n){var e=n.viewProjectionMatrix,t=n.scale,r=G(e),i=U(t);return{project_uViewProjectionMatrixFP64:r,project64_uViewProjectionMatrix:r,project64_uScale:i}}));function K(n){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(n){return!1}}();return function(){var t,r=_()(n);if(e){var i=_()(this).constructor;t=Reflect.construct(r,arguments,i)}else t=r.apply(this,arguments);return c()(this,t)}}var Y=function(n){f()(t,n);var e=K(t);function t(){return i()(this,t),e.apply(this,arguments)}return a()(t,[{key:"getShaders",value:function(){var n=this.props.coordinateSystem;if(n!==d.COORDINATE_SYSTEM.LNGLAT&&n!==d.COORDINATE_SYSTEM.DEFAULT)throw new Error("fp64: coordinateSystem must be LNGLAT");return{modules:[W]}}}]),t}(d.LayerExtension);v()(Y,"extensionName","Fp64Extension");var H={inject:{"vs:#decl":"\nattribute vec2 instanceDashArrays;\nattribute float instanceDashOffsets;\nvarying vec2 vDashArray;\nvarying float vDashOffset;\n","vs:#main-end":"\nvDashArray = instanceDashArrays;\nvDashOffset = instanceDashOffsets / width.x;\n","fs:#decl":"\nuniform float dashAlignMode;\nuniform float capType;\nuniform bool dashGapPickable;\nvarying vec2 vDashArray;\nvarying float vDashOffset;\n\nfloat round(float x) {\n return floor(x + 0.5);\n}\n","fs:#main-start":"\n float solidLength = vDashArray.x;\n float gapLength = vDashArray.y;\n float unitLength = solidLength + gapLength;\n\n float offset;\n\n if (unitLength > 0.0) {\n if (dashAlignMode == 0.0) {\n offset = vDashOffset;\n } else {\n unitLength = vPathLength / round(vPathLength / unitLength);\n offset = solidLength / 2.0;\n }\n\n float unitOffset = mod(clamp(vPathPosition.y, 0.0, vPathLength) + offset, unitLength);\n\n if (gapLength > 0.0 && unitOffset > solidLength) {\n if (capType <= 0.5) {\n if (!(dashGapPickable && picking_uActive)) {\n discard;\n }\n } else {\n // caps are rounded, test the distance to solid ends\n float distToEnd = length(vec2(\n min(unitOffset - solidLength, unitLength - unitOffset),\n vPathPosition.x\n ));\n if (distToEnd > 1.0) {\n if (!(dashGapPickable && picking_uActive)) {\n discard;\n }\n }\n }\n }\n }\n"}},X={inject:{"vs:#decl":"\nattribute float instanceOffsets;\n","vs:DECKGL_FILTER_SIZE":"\n float offsetWidth = abs(instanceOffsets * 2.0) + 1.0;\n size *= offsetWidth;\n","vCornerOffset = offsetVec;":"\n float offsetWidth = abs(instanceOffsets * 2.0) + 1.0;\n vec2 offsetCenter = -instanceOffsets * (isCap ? perp : miterVec * miterSize) * 2.0;\n vCornerOffset = vCornerOffset * offsetWidth - offsetCenter;\n","fs:#main-start":"\n float isInside;\n isInside = step(-1.0, vPathPosition.x) * step(vPathPosition.x, 1.0);\n if (isInside == 0.0) {\n discard;\n }\n"}},J="undefined"!=typeof Float32Array?Float32Array:Array;Math.random;Math.PI;Math.hypot||(Math.hypot=function(){for(var n=0,e=arguments.length;e--;)n+=arguments[e]*arguments[e];return Math.sqrt(n)});var Z,Q,$=function(n,e){var t=e[0]-n[0],r=e[1]-n[1],i=e[2]-n[2];return Math.hypot(t,r,i)};Z=new J(3),J!=Float32Array&&(Z[0]=0,Z[1]=0,Z[2]=0),Q=Z;function nn(n){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(n){return!1}}();return function(){var t,r=_()(n);if(e){var i=_()(this).constructor;t=Reflect.construct(r,arguments,i)}else t=r.apply(this,arguments);return c()(this,t)}}var en=function(n){f()(t,n);var e=nn(t);function t(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=n.dash,o=void 0!==r&&r,a=n.offset,s=void 0!==a&&a,f=n.highPrecisionDash,l=void 0!==f&&f;return i()(this,t),e.call(this,{dash:o||l,offset:s,highPrecisionDash:l})}return a()(t,[{key:"isEnabled",value:function(n){return"pathTesselator"in n.state}},{key:"getShaders",value:function(n){if(!n.isEnabled(this))return null;var e={};return n.opts.dash&&(e=Object(d._mergeShaders)(e,H)),n.opts.offset&&(e=Object(d._mergeShaders)(e,X)),e}},{key:"initializeState",value:function(n,e){var t=this.getAttributeManager();t&&e.isEnabled(this)&&(e.opts.dash&&t.addInstanced({instanceDashArrays:{size:2,accessor:"getDashArray"}}),e.opts.highPrecisionDash&&t.addInstanced({instanceDashOffsets:{size:1,accessor:"getPath",transform:e.getDashOffsets.bind(this)}}),e.opts.offset&&t.addInstanced({instanceOffsets:{size:1,accessor:"getOffset"}}))}},{key:"updateState",value:function(n,e){if(e.isEnabled(this)){var t={};e.opts.dash&&(t.dashAlignMode=this.props.dashJustified?1:0,t.dashGapPickable=Boolean(this.props.dashGapPickable)),this.state.model.setUniforms(t)}}},{key:"getDashOffsets",value:function(n){for(var e,t,r=[0],i="XY"===this.props.positionFormat?2:3,o=Array.isArray(n[0]),a=o?n.length:n.length/i,s=0;s<a-1;s++)e=o?n[s]:n.slice(s*i,s*i+i),e=this.projectPosition(e),s>0&&(r[s]=r[s-1]+$(t,e)),t=e;return r}}]),t}(d.LayerExtension);v()(en,"defaultProps",{getDashArray:{type:"accessor",value:[0,0]},getOffset:{type:"accessor",value:0},dashJustified:!1,dashGapPickable:!1}),v()(en,"extensionName","PathStyleExtension");var tn=t(9),rn=t.n(tn),on=t(8),an=t.n(on);var sn,fn={name:"fill-pattern",vs:"\n#ifdef NON_INSTANCED_MODEL\n #define FILL_PATTERN_FRAME_ATTRIB fillPatternFrames\n #define FILL_PATTERN_SCALE_ATTRIB fillPatternScales\n #define FILL_PATTERN_OFFSET_ATTRIB fillPatternOffsets\n#else\n #define FILL_PATTERN_FRAME_ATTRIB instanceFillPatternFrames\n #define FILL_PATTERN_SCALE_ATTRIB instanceFillPatternScales\n #define FILL_PATTERN_OFFSET_ATTRIB instanceFillPatternOffsets\n#endif\n\nattribute vec4 FILL_PATTERN_FRAME_ATTRIB;\nattribute float FILL_PATTERN_SCALE_ATTRIB;\nattribute vec2 FILL_PATTERN_OFFSET_ATTRIB;\n\nuniform bool fill_patternEnabled;\nuniform vec2 fill_patternTextureSize;\n\nvarying vec2 fill_uv;\nvarying vec4 fill_patternBounds;\nvarying vec4 fill_patternPlacement;\n",fs:"\nuniform bool fill_patternEnabled;\nuniform bool fill_patternMask;\nuniform sampler2D fill_patternTexture;\nuniform vec2 fill_uvCoordinateOrigin;\nuniform vec2 fill_uvCoordinateOrigin64Low;\n\nvarying vec4 fill_patternBounds;\nvarying vec4 fill_patternPlacement;\nvarying vec2 fill_uv;\n\nconst float FILL_UV_SCALE = 512.0 / 40000000.0;\n",inject:{"vs:DECKGL_FILTER_GL_POSITION":"\n fill_uv = geometry.position.xy;\n ","vs:DECKGL_FILTER_COLOR":"\n if (fill_patternEnabled) {\n fill_patternBounds = FILL_PATTERN_FRAME_ATTRIB / vec4(fill_patternTextureSize, fill_patternTextureSize);\n fill_patternPlacement.xy = FILL_PATTERN_OFFSET_ATTRIB;\n fill_patternPlacement.zw = FILL_PATTERN_SCALE_ATTRIB * FILL_PATTERN_FRAME_ATTRIB.zw;\n }\n ","fs:DECKGL_FILTER_COLOR":"\n if (fill_patternEnabled) {\n vec2 scale = FILL_UV_SCALE * fill_patternPlacement.zw;\n vec2 patternUV = mod(mod(fill_uvCoordinateOrigin, scale) + fill_uvCoordinateOrigin64Low + fill_uv, scale) / scale;\n patternUV = mod(fill_patternPlacement.xy + patternUV, 1.0);\n\n vec2 texCoords = fill_patternBounds.xy + fill_patternBounds.zw * patternUV;\n\n vec4 patternColor = texture2D(fill_patternTexture, texCoords);\n color.a *= patternColor.a;\n if (!fill_patternMask) {\n color.rgb = patternColor.rgb;\n }\n }\n "},dependencies:[d.project],getUniforms:function(n,e){if(!n)return{};if("fillPatternTexture"in n){var t=n.fillPatternTexture;return{fill_patternTexture:t,fill_patternTextureSize:[t.width,t.height]}}if("viewport"in n){var r=n.viewport,i=n.fillPatternMask,o=void 0===i||i,a=n.fillPatternEnabled,s=void 0===a||a,f=e.project_uCoordinateOrigin,l=r.projectPosition(f),c=[Object(d.fp64LowPart)(l[0]),Object(d.fp64LowPart)(l[1])];return{fill_uvCoordinateOrigin:l.slice(0,2),fill_uvCoordinateOrigin64Low:c,fill_patternMask:o,fill_patternEnabled:s}}return{}}};function ln(n){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(n){return!1}}();return function(){var t,r=_()(n);if(e){var i=_()(this).constructor;t=Reflect.construct(r,arguments,i)}else t=r.apply(this,arguments);return c()(this,t)}}var cn=(sn={},v()(sn,10241,9729),v()(sn,10240,9729),v()(sn,10242,33071),v()(sn,10243,33071),sn),un=function(n){f()(o,n);var e,t,r=ln(o);function o(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=n.pattern,t=void 0!==e&&e;return i()(this,o),r.call(this,{pattern:t})}return a()(o,[{key:"isEnabled",value:function(n){return null!==n.getAttributeManager()&&!("pathTesselator"in n.state)}},{key:"getShaders",value:function(n){return n.isEnabled(this)?{modules:[n.opts.pattern&&fn].filter(Boolean)}:null}},{key:"initializeState",value:function(n,e){if(e.isEnabled(this)){var t=this.getAttributeManager();e.opts.pattern&&t.add({fillPatternFrames:{size:4,accessor:"getFillPattern",transform:e.getPatternFrame.bind(this),shaderAttributes:{fillPatternFrames:{divisor:0},instanceFillPatternFrames:{divisor:1}}},fillPatternScales:{size:1,accessor:"getFillPatternScale",defaultValue:1,shaderAttributes:{fillPatternScales:{divisor:0},instanceFillPatternScales:{divisor:1}}},fillPatternOffsets:{size:2,accessor:"getFillPatternOffset",shaderAttributes:{fillPatternOffsets:{divisor:0},instanceFillPatternOffsets:{divisor:1}}}}),this.setState({emptyTexture:new L.Texture2D(this.context.gl,{data:new Uint8Array(4),width:1,height:1})})}}},{key:"updateState",value:function(n,e){var t=n.props,r=n.oldProps;e.isEnabled(this)&&(t.fillPatternAtlas&&t.fillPatternAtlas!==r.fillPatternAtlas&&e.loadPatternAtlas.call(this),t.fillPatternMapping&&t.fillPatternMapping!==r.fillPatternMapping&&e.loadPatternMapping.call(this))}},{key:"draw",value:function(n,e){if(e.isEnabled(this)){var t=this.state.patternTexture;this.setModuleParameters({fillPatternTexture:t||this.state.emptyTexture})}}},{key:"finalizeState",value:function(){var n=this.state,e=n.patternTexture,t=n.emptyTexture;null==e||e.delete(),null==t||t.delete()}},{key:"loadPatternAtlas",value:(t=rn()(an.a.mark((function n(){var e,t,r,i,o,a;return an.a.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(t=this.props,r=t.fillPatternAtlas,i=t.fetch,null===(e=this.state.patternTexture)||void 0===e||e.delete(),this.setState({patternTexture:null}),"string"!=typeof(o=r)){n.next=8;break}return n.next=7,i(o,{propName:"fillPatternAtlas",layer:this});case 7:o=n.sent;case 8:a=o instanceof L.Texture2D?o:new L.Texture2D(this.context.gl,{data:o,parameters:cn}),this.setState({patternTexture:a});case 10:case"end":return n.stop()}}),n,this)}))),function(n){return t.apply(this,arguments)})},{key:"loadPatternMapping",value:(e=rn()(an.a.mark((function n(){var e,t,r,i;return an.a.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(e=this.props,t=e.fillPatternMapping,r=e.fetch,this.setState({patternMapping:null}),"string"!=typeof(i=t)){n.next=7;break}return n.next=6,r(i,{propName:"fillPatternMapping",layer:this});case 6:i=n.sent;case 7:this.setState({patternMapping:i}),this.getAttributeManager().invalidate("getFillPattern"),this.setNeedsUpdate();case 10:case"end":return n.stop()}}),n,this)}))),function(n){return e.apply(this,arguments)})},{key:"getPatternFrame",value:function(n){var e=this.state.patternMapping,t=e&&e[n];return t?[t.x,t.y,t.width,t.height]:[0,0,0,0]}}]),o}(d.LayerExtension);function _n(n){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(n){return!1}}();return function(){var t,r=_()(n);if(e){var i=_()(this).constructor;t=Reflect.construct(r,arguments,i)}else t=r.apply(this,arguments);return c()(this,t)}}v()(un,"defaultProps",{fillPatternEnabled:!0,fillPatternAtlas:null,fillPatternMapping:null,fillPatternMask:!0,getFillPattern:{type:"accessor",value:function(n){return n.pattern}},getFillPatternScale:{type:"accessor",value:1},getFillPatternOffset:{type:"accessor",value:[0,0]}}),v()(un,"extensionName","FillStyleExtension");var pn={clipBounds:[0,0,1,1]},vn="\nuniform vec4 clip_bounds;\n\nbool clip_isInBounds(vec2 position) {\n return position.x >= clip_bounds[0] && position.y >= clip_bounds[1] && position.x < clip_bounds[2] && position.y < clip_bounds[3];\n}\n",dn={name:"clip-vs",vs:vn},mn={"vs:#decl":"\nvarying float clip_isVisible;\n","vs:DECKGL_FILTER_GL_POSITION":"\n clip_isVisible = float(clip_isInBounds(geometry.worldPosition.xy));\n","fs:#decl":"\nvarying float clip_isVisible;\n","fs:DECKGL_FILTER_COLOR":"\n if (clip_isVisible < 0.5) discard;\n"},hn={name:"clip-fs",fs:vn},yn={"vs:#decl":"\nvarying vec2 clip_commonPosition;\n","vs:DECKGL_FILTER_GL_POSITION":"\n clip_commonPosition = geometry.position.xy;\n","fs:#decl":"\nvarying vec2 clip_commonPosition;\n","fs:DECKGL_FILTER_COLOR":"\n if (!clip_isInBounds(clip_commonPosition)) discard;\n"},bn=function(n){f()(t,n);var e=_n(t);function t(){return i()(this,t),e.apply(this,arguments)}return a()(t,[{key:"getShaders",value:function(){var n="instancePositions"in this.getAttributeManager().attributes;return"clipByInstance"in this.props&&(n=this.props.clipByInstance),this.state.clipByInstance=n,n?{modules:[dn],inject:mn}:{modules:[hn],inject:yn}}},{key:"draw",value:function(n){var e=n.uniforms,t=this.props.clipBounds,r=void 0===t?pn.clipBounds:t;if(this.state.clipByInstance)e.clip_bounds=r;else{var i=this.projectPosition([r[0],r[1],0]),o=this.projectPosition([r[2],r[3],0]);e.clip_bounds=[Math.min(i[0],o[0]),Math.min(i[1],o[1]),Math.max(i[0],o[0]),Math.max(i[1],o[1])]}}}]),t}(d.LayerExtension);v()(bn,"defaultProps",pn),v()(bn,"extensionName","ClipExtension");var gn={name:"mask",dependencies:[d.project],vs:"\nuniform vec4 mask_bounds;\nuniform bool mask_maskByInstance;\nvec2 mask_getCoords(vec4 position) {\n return (position.xy - mask_bounds.xy) / (mask_bounds.zw - mask_bounds.xy);\n}\n",fs:"\nuniform sampler2D mask_texture;\nuniform int mask_channel;\nuniform bool mask_enabled;\nbool mask_isInBounds(vec2 texCoords) {\n if (!mask_enabled) {\n return true;\n }\n vec4 maskColor = texture2D(mask_texture, texCoords);\n float maskValue = 1.0;\n if (mask_channel == 0) {\n maskValue = maskColor.r;\n } else if (mask_channel == 1) {\n maskValue = maskColor.g;\n } else if (mask_channel == 2) {\n maskValue = maskColor.b;\n } else if (mask_channel == 3) {\n maskValue = maskColor.a;\n }\n return maskValue < 0.5;\n}\n",inject:{"vs:#decl":"\nvarying vec2 mask_texCoords;\n","vs:#main-end":"\n vec4 mask_common_position;\n if (mask_maskByInstance) {\n mask_common_position = project_position(vec4(geometry.worldPosition, 1.0));\n } else {\n mask_common_position = geometry.position;\n }\n mask_texCoords = mask_getCoords(mask_common_position);\n","fs:#decl":"\nvarying vec2 mask_texCoords;\n","fs:#main-start":"\n if (mask_enabled) {\n bool mask = mask_isInBounds(mask_texCoords);\n\n // Debug: show extent of render target\n // gl_FragColor = vec4(mask_texCoords, 0.0, 1.0);\n gl_FragColor = texture2D(mask_texture, mask_texCoords);\n\n if (!mask) discard;\n }\n"},getUniforms:function(n){return n&&"maskMap"in n?{mask_texture:n.maskMap}:{}}};function Pn(n){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(n){return!1}}();return function(){var t,r=_()(n);if(e){var i=_()(this).constructor;t=Reflect.construct(r,arguments,i)}else t=r.apply(this,arguments);return c()(this,t)}}var xn=function(n){f()(t,n);var e=Pn(t);function t(){return i()(this,t),e.apply(this,arguments)}return a()(t,[{key:"getShaders",value:function(){var n="instancePositions"in this.getAttributeManager().attributes;return"maskByInstance"in this.props&&(n=Boolean(this.props.maskByInstance)),this.state.maskByInstance=n,{modules:[gn]}}},{key:"draw",value:function(n){var e=n.uniforms,t=n.context,r=n.moduleParameters;e.mask_maskByInstance=this.state.maskByInstance;var i=this.props.maskId,o=void 0===i?"":i,a=r.maskChannels,s=t.viewport;if(a&&a[o]){var f=a[o],l=f.index,c=f.bounds,u=f.coordinateOrigin,_=a[o].coordinateSystem;e.mask_enabled=!0,e.mask_channel=l,_===d.COORDINATE_SYSTEM.DEFAULT&&(_=s.isGeospatial?d.COORDINATE_SYSTEM.LNGLAT:d.COORDINATE_SYSTEM.CARTESIAN);var p={modelMatrix:null,fromCoordinateOrigin:u,fromCoordinateSystem:_},v=this.projectPosition([c[0],c[1],0],p),m=this.projectPosition([c[2],c[3],0],p);e.mask_bounds=[v[0],v[1],m[0],m[1]]}else o&&d.log.warn("Could not find a mask layer with id: ".concat(o))(),e.mask_enabled=!1}}]),t}(d.LayerExtension);v()(xn,"defaultProps",{maskId:""}),v()(xn,"extensionName","MaskExtension"),t.d(e,"BrushingExtension",(function(){return b})),t.d(e,"DataFilterExtension",(function(){return C})),t.d(e,"Fp64Extension",(function(){return Y})),t.d(e,"PathStyleExtension",(function(){return en})),t.d(e,"FillStyleExtension",(function(){return un})),t.d(e,"ClipExtension",(function(){return bn})),t.d(e,"MaskExtension",(function(){return xn})),t.d(e,"project64",(function(){return W}))}])}));
1
+ !function(n,e){"object"==typeof exports&&"object"==typeof module?module.exports=e(require("deck"),require("luma")):"function"==typeof define&&define.amd?define(["deck","luma"],e):"object"==typeof exports?exports.deck=e(require("deck"),require("luma")):n.deck=e(n.deck,n.luma)}(window,(function(n,e){return function(n){var e={};function t(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return n[r].call(i.exports,i,i.exports,t),i.l=!0,i.exports}return t.m=n,t.c=e,t.d=function(n,e,r){t.o(n,e)||Object.defineProperty(n,e,{enumerable:!0,get:r})},t.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},t.t=function(n,e){if(1&e&&(n=t(n)),8&e)return n;if(4&e&&"object"==typeof n&&n&&n.__esModule)return n;var r=Object.create(null);if(t.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:n}),2&e&&"string"!=typeof n)for(var i in n)t.d(r,i,function(e){return n[e]}.bind(null,i));return r},t.n=function(n){var e=n&&n.__esModule?function(){return n.default}:function(){return n};return t.d(e,"a",e),e},t.o=function(n,e){return Object.prototype.hasOwnProperty.call(n,e)},t.p="",t(t.s=10)}([function(e,t){e.exports=n},function(n,e){n.exports=function(n,e,t){return e in n?Object.defineProperty(n,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):n[e]=t,n}},function(n,e){function t(e){return n.exports=t=Object.setPrototypeOf?Object.getPrototypeOf:function(n){return n.__proto__||Object.getPrototypeOf(n)},t(e)}n.exports=t},function(n,e){n.exports=function(n,e){if(!(n instanceof e))throw new TypeError("Cannot call a class as a function")}},function(n,e){function t(n,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,r.key,r)}}n.exports=function(n,e,r){return e&&t(n.prototype,e),r&&t(n,r),n}},function(n,e,t){var r=t(11);n.exports=function(n,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");n.prototype=Object.create(e&&e.prototype,{constructor:{value:n,writable:!0,configurable:!0}}),e&&r(n,e)}},function(n,e,t){var r=t(12),i=t(13);n.exports=function(n,e){return!e||"object"!==r(e)&&"function"!=typeof e?i(n):e}},function(n,t){n.exports=e},function(n,e,t){n.exports=t(14)},function(n,e){function t(n,e,t,r,i,o,a){try{var s=n[o](a),f=s.value}catch(n){return void t(n)}s.done?e(f):Promise.resolve(f).then(r,i)}n.exports=function(n){return function(){var e=this,r=arguments;return new Promise((function(i,o){var a=n.apply(e,r);function s(n){t(a,i,o,s,f,"next",n)}function f(n){t(a,i,o,s,f,"throw",n)}s(void 0)}))}}},function(n,e,t){var r=t(15),i=globalThis.deck||{};if(!i.Layer)throw new Error("@deck.gl/core is not found");n.exports=Object.assign(i,r)},function(n,e){function t(e,r){return n.exports=t=Object.setPrototypeOf||function(n,e){return n.__proto__=e,n},t(e,r)}n.exports=t},function(n,e){function t(e){return"function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?n.exports=t=function(n){return typeof n}:n.exports=t=function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},t(e)}n.exports=t},function(n,e){n.exports=function(n){if(void 0===n)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return n}},function(n,e,t){var r=function(n){"use strict";var e=Object.prototype,t=e.hasOwnProperty,r="function"==typeof Symbol?Symbol:{},i=r.iterator||"@@iterator",o=r.asyncIterator||"@@asyncIterator",a=r.toStringTag||"@@toStringTag";function s(n,e,t,r){var i=e&&e.prototype instanceof c?e:c,o=Object.create(i.prototype),a=new x(r||[]);return o._invoke=function(n,e,t){var r="suspendedStart";return function(i,o){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===i)throw o;return E()}for(t.method=i,t.arg=o;;){var a=t.delegate;if(a){var s=b(a,t);if(s){if(s===l)continue;return s}}if("next"===t.method)t.sent=t._sent=t.arg;else if("throw"===t.method){if("suspendedStart"===r)throw r="completed",t.arg;t.dispatchException(t.arg)}else"return"===t.method&&t.abrupt("return",t.arg);r="executing";var c=f(n,e,t);if("normal"===c.type){if(r=t.done?"completed":"suspendedYield",c.arg===l)continue;return{value:c.arg,done:t.done}}"throw"===c.type&&(r="completed",t.method="throw",t.arg=c.arg)}}}(n,t,a),o}function f(n,e,t){try{return{type:"normal",arg:n.call(e,t)}}catch(n){return{type:"throw",arg:n}}}n.wrap=s;var l={};function c(){}function u(){}function _(){}var p={};p[i]=function(){return this};var v=Object.getPrototypeOf,d=v&&v(v(T([])));d&&d!==e&&t.call(d,i)&&(p=d);var m=_.prototype=c.prototype=Object.create(p);function h(n){["next","throw","return"].forEach((function(e){n[e]=function(n){return this._invoke(e,n)}}))}function y(n){var e;this._invoke=function(r,i){function o(){return new Promise((function(e,o){!function e(r,i,o,a){var s=f(n[r],n,i);if("throw"!==s.type){var l=s.arg,c=l.value;return c&&"object"==typeof c&&t.call(c,"__await")?Promise.resolve(c.__await).then((function(n){e("next",n,o,a)}),(function(n){e("throw",n,o,a)})):Promise.resolve(c).then((function(n){l.value=n,o(l)}),(function(n){return e("throw",n,o,a)}))}a(s.arg)}(r,i,e,o)}))}return e=e?e.then(o,o):o()}}function b(n,e){var t=n.iterator[e.method];if(void 0===t){if(e.delegate=null,"throw"===e.method){if(n.iterator.return&&(e.method="return",e.arg=void 0,b(n,e),"throw"===e.method))return l;e.method="throw",e.arg=new TypeError("The iterator does not provide a 'throw' method")}return l}var r=f(t,n.iterator,e.arg);if("throw"===r.type)return e.method="throw",e.arg=r.arg,e.delegate=null,l;var i=r.arg;return i?i.done?(e[n.resultName]=i.value,e.next=n.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,l):i:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,l)}function g(n){var e={tryLoc:n[0]};1 in n&&(e.catchLoc=n[1]),2 in n&&(e.finallyLoc=n[2],e.afterLoc=n[3]),this.tryEntries.push(e)}function P(n){var e=n.completion||{};e.type="normal",delete e.arg,n.completion=e}function x(n){this.tryEntries=[{tryLoc:"root"}],n.forEach(g,this),this.reset(!0)}function T(n){if(n){var e=n[i];if(e)return e.call(n);if("function"==typeof n.next)return n;if(!isNaN(n.length)){var r=-1,o=function e(){for(;++r<n.length;)if(t.call(n,r))return e.value=n[r],e.done=!1,e;return e.value=void 0,e.done=!0,e};return o.next=o}}return{next:E}}function E(){return{value:void 0,done:!0}}return u.prototype=m.constructor=_,_.constructor=u,_[a]=u.displayName="GeneratorFunction",n.isGeneratorFunction=function(n){var e="function"==typeof n&&n.constructor;return!!e&&(e===u||"GeneratorFunction"===(e.displayName||e.name))},n.mark=function(n){return Object.setPrototypeOf?Object.setPrototypeOf(n,_):(n.__proto__=_,a in n||(n[a]="GeneratorFunction")),n.prototype=Object.create(m),n},n.awrap=function(n){return{__await:n}},h(y.prototype),y.prototype[o]=function(){return this},n.AsyncIterator=y,n.async=function(e,t,r,i){var o=new y(s(e,t,r,i));return n.isGeneratorFunction(t)?o:o.next().then((function(n){return n.done?n.value:o.next()}))},h(m),m[a]="Generator",m[i]=function(){return this},m.toString=function(){return"[object Generator]"},n.keys=function(n){var e=[];for(var t in n)e.push(t);return e.reverse(),function t(){for(;e.length;){var r=e.pop();if(r in n)return t.value=r,t.done=!1,t}return t.done=!0,t}},n.values=T,x.prototype={constructor:x,reset:function(n){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(P),!n)for(var e in this)"t"===e.charAt(0)&&t.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=void 0)},stop:function(){this.done=!0;var n=this.tryEntries[0].completion;if("throw"===n.type)throw n.arg;return this.rval},dispatchException:function(n){if(this.done)throw n;var e=this;function r(t,r){return a.type="throw",a.arg=n,e.next=t,r&&(e.method="next",e.arg=void 0),!!r}for(var i=this.tryEntries.length-1;i>=0;--i){var o=this.tryEntries[i],a=o.completion;if("root"===o.tryLoc)return r("end");if(o.tryLoc<=this.prev){var s=t.call(o,"catchLoc"),f=t.call(o,"finallyLoc");if(s&&f){if(this.prev<o.catchLoc)return r(o.catchLoc,!0);if(this.prev<o.finallyLoc)return r(o.finallyLoc)}else if(s){if(this.prev<o.catchLoc)return r(o.catchLoc,!0)}else{if(!f)throw new Error("try statement without catch or finally");if(this.prev<o.finallyLoc)return r(o.finallyLoc)}}}},abrupt:function(n,e){for(var r=this.tryEntries.length-1;r>=0;--r){var i=this.tryEntries[r];if(i.tryLoc<=this.prev&&t.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var o=i;break}}o&&("break"===n||"continue"===n)&&o.tryLoc<=e&&e<=o.finallyLoc&&(o=null);var a=o?o.completion:{};return a.type=n,a.arg=e,o?(this.method="next",this.next=o.finallyLoc,l):this.complete(a)},complete:function(n,e){if("throw"===n.type)throw n.arg;return"break"===n.type||"continue"===n.type?this.next=n.arg:"return"===n.type?(this.rval=this.arg=n.arg,this.method="return",this.next="end"):"normal"===n.type&&e&&(this.next=e),l},finish:function(n){for(var e=this.tryEntries.length-1;e>=0;--e){var t=this.tryEntries[e];if(t.finallyLoc===n)return this.complete(t.completion,t.afterLoc),P(t),l}},catch:function(n){for(var e=this.tryEntries.length-1;e>=0;--e){var t=this.tryEntries[e];if(t.tryLoc===n){var r=t.completion;if("throw"===r.type){var i=r.arg;P(t)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(n,e,t){return this.delegate={iterator:T(n),resultName:e,nextLoc:t},"next"===this.method&&(this.arg=void 0),l}},n}(n.exports);try{regeneratorRuntime=r}catch(n){Function("r","regeneratorRuntime = r")(r)}},function(n,e,t){"use strict";t.r(e);var r=t(3),i=t.n(r),o=t(4),a=t.n(o),s=t(5),f=t.n(s),l=t(6),c=t.n(l),u=t(2),_=t.n(u),p=t(1),v=t.n(p),d=t(0),m={source:0,target:1,custom:2,source_target:3},h={name:"brushing",dependencies:[d.project],vs:"\n uniform bool brushing_enabled;\n uniform int brushing_target;\n uniform vec2 brushing_mousePos;\n uniform float brushing_radius;\n\n #ifdef NON_INSTANCED_MODEL\n attribute vec2 brushingTargets;\n #else\n attribute vec2 instanceBrushingTargets;\n #endif\n\n varying float brushing_isVisible;\n\n bool brushing_isPointInRange(vec2 position) {\n if (!brushing_enabled) {\n return true;\n }\n vec2 source_commonspace = project_position(position);\n vec2 target_commonspace = project_position(brushing_mousePos);\n float distance = length((target_commonspace - source_commonspace) / project_uCommonUnitsPerMeter.xy);\n\n return distance <= brushing_radius;\n }\n\n bool brushing_arePointsInRange(vec2 sourcePos, vec2 targetPos) {\n return brushing_isPointInRange(sourcePos) || brushing_isPointInRange(targetPos);\n }\n\n void brushing_setVisible(bool visible) {\n brushing_isVisible = float(visible);\n }\n",fs:"\n uniform bool brushing_enabled;\n varying float brushing_isVisible;\n",inject:{"vs:DECKGL_FILTER_GL_POSITION":"\n vec2 brushingTarget;\n vec2 brushingSource;\n if (brushing_target == 3) {\n brushingTarget = geometry.worldPositionAlt.xy;\n brushingSource = geometry.worldPosition.xy;\n } else if (brushing_target == 0) {\n brushingTarget = geometry.worldPosition.xy;\n } else if (brushing_target == 1) {\n brushingTarget = geometry.worldPositionAlt.xy;\n } else {\n #ifdef NON_INSTANCED_MODEL\n brushingTarget = brushingTargets;\n #else\n brushingTarget = instanceBrushingTargets;\n #endif\n }\n bool visible;\n if (brushing_target == 3) {\n visible = brushing_arePointsInRange(brushingSource, brushingTarget);\n } else {\n visible = brushing_isPointInRange(brushingTarget);\n }\n brushing_setVisible(visible);\n ","fs:DECKGL_FILTER_COLOR":"\n if (brushing_enabled && brushing_isVisible < 0.5) {\n discard;\n }\n "},getUniforms:function(n){if(!(n&&"viewport"in n))return{};var e=n.brushingEnabled,t=void 0===e||e,r=n.brushingRadius,i=void 0===r?1e4:r,o=n.brushingTarget,a=void 0===o?"source":o,s=n.mousePosition,f=n.viewport;return{brushing_enabled:Boolean(t&&s&&f.containsPixel(s)),brushing_radius:i,brushing_target:m[a]||0,brushing_mousePos:s?f.unproject([s.x-f.x,s.y-f.y]):[0,0]}}};function y(n){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(n){return!1}}();return function(){var t,r=_()(n);if(e){var i=_()(this).constructor;t=Reflect.construct(r,arguments,i)}else t=r.apply(this,arguments);return c()(this,t)}}var b=function(n){f()(t,n);var e=y(t);function t(){return i()(this,t),e.apply(this,arguments)}return a()(t,[{key:"getShaders",value:function(){return{modules:[h]}}},{key:"initializeState",value:function(n,e){var t=this,r=this.getAttributeManager();r&&r.add({brushingTargets:{size:2,accessor:"getBrushingTarget",update:this.props.getBrushingTarget?void 0:e.useConstantTargetPositions,shaderAttributes:{brushingTargets:{divisor:0},instanceBrushingTargets:{divisor:1}}}}),this.state.onMouseMove=function(){var n;null===(n=t.getCurrentLayer())||void 0===n||n.setNeedsRedraw()},n.deck&&n.deck.eventManager.on({pointermove:this.state.onMouseMove,pointerleave:this.state.onMouseMove})}},{key:"finalizeState",value:function(n,e){n.deck&&n.deck.eventManager.off({pointermove:this.state.onMouseMove,pointerleave:this.state.onMouseMove})}},{key:"useConstantTargetPositions",value:function(n){n.constant=!0,n.value=new Float32Array(2)}}]),t}(d.LayerExtension);function g(n,e){var t=Object.keys(n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(n);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),t.push.apply(t,r)}return t}function P(n){for(var e=1;e<arguments.length;e++){var t=null!=arguments[e]?arguments[e]:{};e%2?g(Object(t),!0).forEach((function(e){v()(n,e,t[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(t)):g(Object(t)).forEach((function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(t,e))}))}return n}v()(b,"defaultProps",{getBrushingTarget:{type:"accessor",value:[0,0]},brushingTarget:"source",brushingEnabled:!0,brushingRadius:1e4}),v()(b,"extensionName","BrushingExtension");var x="\nuniform DATAFILTER_TYPE filter_min;\nuniform DATAFILTER_TYPE filter_softMin;\nuniform DATAFILTER_TYPE filter_softMax;\nuniform DATAFILTER_TYPE filter_max;\nuniform bool filter_useSoftMargin;\nuniform bool filter_enabled;\nuniform bool filter_transformSize;\n\n#ifdef NON_INSTANCED_MODEL\n #define DATAFILTER_ATTRIB filterValues\n #define DATAFILTER_ATTRIB_64LOW filterValues64Low\n#else\n #define DATAFILTER_ATTRIB instanceFilterValues\n #define DATAFILTER_ATTRIB_64LOW instanceFilterValues64Low\n#endif\n\nattribute DATAFILTER_TYPE DATAFILTER_ATTRIB;\n#ifdef DATAFILTER_DOUBLE\n attribute DATAFILTER_TYPE DATAFILTER_ATTRIB_64LOW;\n\n uniform DATAFILTER_TYPE filter_min64High;\n uniform DATAFILTER_TYPE filter_max64High;\n#endif\n\nvarying float dataFilter_value;\n\nfloat dataFilter_reduceValue(float value) {\n return value;\n}\nfloat dataFilter_reduceValue(vec2 value) {\n return min(value.x, value.y);\n}\nfloat dataFilter_reduceValue(vec3 value) {\n return min(min(value.x, value.y), value.z);\n}\nfloat dataFilter_reduceValue(vec4 value) {\n return min(min(value.x, value.y), min(value.z, value.w));\n}\nvoid dataFilter_setValue(DATAFILTER_TYPE valueFromMin, DATAFILTER_TYPE valueFromMax) {\n if (filter_enabled) {\n if (filter_useSoftMargin) {\n dataFilter_value = dataFilter_reduceValue(\n smoothstep(filter_min, filter_softMin, valueFromMin) *\n (1.0 - smoothstep(filter_softMax, filter_max, valueFromMax))\n );\n } else {\n dataFilter_value = dataFilter_reduceValue(\n step(filter_min, valueFromMin) * step(valueFromMax, filter_max)\n );\n }\n } else {\n dataFilter_value = 1.0;\n }\n}\n",T="\nuniform bool filter_transformColor;\nvarying float dataFilter_value;\n";function E(n){if(!(n&&"extensions"in n))return{};var e=n.filterRange,t=void 0===e?[-1,1]:e,r=n.filterEnabled,i=void 0===r||r,o=n.filterTransformSize,a=void 0===o||o,s=n.filterTransformColor,f=void 0===s||s,l=n.filterSoftRange||t;return P(P({},Number.isFinite(t[0])?{filter_min:t[0],filter_softMin:l[0],filter_softMax:l[1],filter_max:t[1]}:{filter_min:t.map((function(n){return n[0]})),filter_softMin:l.map((function(n){return n[0]})),filter_softMax:l.map((function(n){return n[1]})),filter_max:t.map((function(n){return n[1]}))}),{},{filter_enabled:i,filter_useSoftMargin:Boolean(n.filterSoftRange),filter_transformSize:i&&a,filter_transformColor:i&&f})}var O={"vs:#main-start":"\n #ifdef DATAFILTER_DOUBLE\n dataFilter_setValue(\n DATAFILTER_ATTRIB - filter_min64High + DATAFILTER_ATTRIB_64LOW,\n DATAFILTER_ATTRIB - filter_max64High + DATAFILTER_ATTRIB_64LOW\n );\n #else\n dataFilter_setValue(DATAFILTER_ATTRIB, DATAFILTER_ATTRIB);\n #endif\n ","vs:#main-end":"\n if (dataFilter_value == 0.0) {\n gl_Position = vec4(0.);\n }\n ","vs:DECKGL_FILTER_SIZE":"\n if (filter_transformSize) {\n size = size * dataFilter_value;\n }\n ","fs:DECKGL_FILTER_COLOR":"\n if (dataFilter_value == 0.0) discard;\n if (filter_transformColor) {\n color.a *= dataFilter_value;\n }\n "},A={name:"data-filter",vs:x,fs:T,inject:O,getUniforms:E},F={name:"data-filter-fp64",vs:x,fs:T,inject:O,getUniforms:function(n){if(!(n&&"extensions"in n))return{};var e=E(n);if(Number.isFinite(e.filter_min)){var t=Math.fround(e.filter_min);e.filter_min-=t,e.filter_softMin-=t,e.filter_min64High=t;var r=Math.fround(e.filter_max);e.filter_max-=r,e.filter_softMax-=r,e.filter_max64High=r}else{var i=e.filter_min.map(Math.fround);e.filter_min=e.filter_min.map((function(n,e){return n-i[e]})),e.filter_softMin=e.filter_softMin.map((function(n,e){return n-i[e]})),e.filter_min64High=i;var o=e.filter_max.map(Math.fround);e.filter_max=e.filter_max.map((function(n,e){return n-o[e]})),e.filter_softMax=e.filter_softMax.map((function(n,e){return n-o[e]})),e.filter_max64High=o}return e}},L=t(7);function I(n,e){var t=Object.keys(n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(n);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),t.push.apply(t,r)}return t}function R(n,e,t){return e.defines.NON_INSTANCED_MODEL=1,t&&(e.defines.FLOAT_TARGET=1),new L.Model(n,function(n){for(var e=1;e<arguments.length;e++){var t=null!=arguments[e]?arguments[e]:{};e%2?I(Object(t),!0).forEach((function(e){v()(n,e,t[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(t)):I(Object(t)).forEach((function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(t,e))}))}return n}({id:"data-filter-aggregation-model",vertexCount:1,isInstanced:!1,drawMode:0,vs:"#define SHADER_NAME data-filter-vertex-shader\n\n#ifdef FLOAT_TARGET\n attribute float filterIndices;\n attribute float filterPrevIndices;\n#else\n attribute vec2 filterIndices;\n attribute vec2 filterPrevIndices;\n#endif\n\nvarying vec4 vColor;\nconst float component = 1.0 / 255.0;\n\nvoid main() {\n #ifdef FLOAT_TARGET\n dataFilter_value *= float(filterIndices != filterPrevIndices);\n gl_Position = vec4(0.0, 0.0, 0.0, 1.0);\n vColor = vec4(0.0, 0.0, 0.0, 1.0);\n #else\n // Float texture is not supported: pack result into 4 channels x 256 px x 64px\n dataFilter_value *= float(filterIndices.x != filterPrevIndices.x);\n float col = filterIndices.x;\n float row = filterIndices.y * 4.0;\n float channel = floor(row);\n row = fract(row);\n vColor = component * vec4(bvec4(channel == 0.0, channel == 1.0, channel == 2.0, channel == 3.0));\n gl_Position = vec4(col * 2.0 - 1.0, row * 2.0 - 1.0, 0.0, 1.0);\n #endif\n gl_PointSize = 1.0;\n}\n",fs:"#define SHADER_NAME data-filter-fragment-shader\nprecision highp float;\n\nvarying vec4 vColor;\n\nvoid main() {\n if (dataFilter_value < 0.5) {\n discard;\n }\n gl_FragColor = vColor;\n}\n"},e))}var S={blend:!0,blendFunc:[1,1,1,1],blendEquation:[32774,32774],depthTest:!1};function k(n,e){var t=Object.keys(n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(n);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),t.push.apply(t,r)}return t}function N(n){for(var e=1;e<arguments.length;e++){var t=null!=arguments[e]?arguments[e]:{};e%2?k(Object(t),!0).forEach((function(e){v()(n,e,t[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(t)):k(Object(t)).forEach((function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(t,e))}))}return n}function w(n){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(n){return!1}}();return function(){var t,r=_()(n);if(e){var i=_()(this).constructor;t=Reflect.construct(r,arguments,i)}else t=r.apply(this,arguments);return c()(this,t)}}var j={1:"float",2:"vec2",3:"vec3",4:"vec4"},C=function(n){f()(t,n);var e=w(t);function t(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=n.filterSize,o=void 0===r?1:r,a=n.fp64,s=void 0!==a&&a,f=n.countItems,l=void 0!==f&&f;if(i()(this,t),!j[o])throw new Error("filterSize out of range");return e.call(this,{filterSize:o,fp64:s,countItems:l})}return a()(t,[{key:"getShaders",value:function(n){var e=n.opts,t=e.filterSize,r=e.fp64;return{modules:[r?F:A],defines:{DATAFILTER_TYPE:j[t],DATAFILTER_DOUBLE:Boolean(r)}}}},{key:"initializeState",value:function(n,e){var t=this.getAttributeManager();t&&t.add({filterValues:{size:e.opts.filterSize,type:e.opts.fp64?5130:5126,accessor:"getFilterValue",shaderAttributes:{filterValues:{divisor:0},instanceFilterValues:{divisor:1}}}});var r=this.context.gl;if(t&&e.opts.countItems){var i=function(n){return Boolean(n.getExtension("EXT_float_blend")&&(n.getExtension("EXT_color_buffer_float")||n.getExtension("WEBGL_color_buffer_float")))}(r);t.add({filterIndices:{size:i?1:2,vertexOffset:1,type:5121,normalized:!0,accessor:function(n,e){var t=e.index,r=n&&n.__source?n.__source.index:t;return i?(r+1)%255:[(r+1)%255,Math.floor(r/255)%255]},shaderAttributes:{filterPrevIndices:{vertexOffset:0},filterIndices:{vertexOffset:1}}}});var o=function(n,e){return e?new L.Framebuffer(n,{width:1,height:1,attachments:v()({},36064,new L.Texture2D(n,{format:Object(L.isWebGL2)(n)?34836:6408,type:5126,mipmaps:!1}))}):new L.Framebuffer(n,{width:256,height:64,depth:!1})}(r,i),a=R(r,e.getShaders.call(this,e),i);this.setState({filterFBO:o,filterModel:a})}}},{key:"updateState",value:function(n){var e=n.props,t=n.oldProps;if(this.state.filterModel){var r=this.getAttributeManager().attributes.filterValues.needsUpdate()||e.filterEnabled!==t.filterEnabled||e.filterRange!==t.filterRange||e.filterSoftRange!==t.filterSoftRange;r&&this.setState({filterNeedsUpdate:r})}}},{key:"draw",value:function(n,e){var t=this.state,r=t.filterFBO,i=t.filterModel,o=t.filterNeedsUpdate,a=this.props.onFilteredItemsChange;if(o&&a&&i){var s=this.getAttributeManager().attributes,f=s.filterValues,l=s.filterIndices;i.setVertexCount(this.getNumInstances());var c=this.context.gl;Object(L.clear)(c,{framebuffer:r,color:[0,0,0,0]}),i.updateModuleSettings(n.moduleParameters).setAttributes(N(N({},f.getShaderAttributes()),l&&l.getShaderAttributes())).draw({framebuffer:r,parameters:N(N({},S),{},{viewport:[0,0,r.width,r.height]})});for(var u=Object(L.readPixelsToArray)(r),_=0,p=0;p<u.length;p++)_+=u[p];a({id:this.id,count:_}),this.state.filterNeedsUpdate=!1}}},{key:"finalizeState",value:function(){var n=this.state,e=n.filterFBO,t=n.filterModel;e&&(e.color.delete(),e.delete(),t.delete())}}]),t}(d.LayerExtension);function B(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,r=Math.fround(n),i=n-r;return e[t]=r,e[t+1]=i,e}function D(n){return n-Math.fround(n)}function M(n){for(var e=new Float32Array(32),t=0;t<4;++t)for(var r=0;r<4;++r){var i=4*t+r;B(n[4*r+t],e,2*i)}return e}v()(C,"defaultProps",{getFilterValue:{type:"accessor",value:0},onFilteredItemsChange:{type:"function",value:null,compare:!1},filterEnabled:!0,filterRange:[-1,1],filterSoftRange:null,filterTransformSize:!0,filterTransformColor:!0}),v()(C,"extensionName","DataFilterExtension");var V={ONE:1};var z={name:"fp64",vs:"const vec2 E_FP64 = vec2(2.7182817459106445e+00, 8.254840366817007e-08);\nconst vec2 LOG2_FP64 = vec2(0.6931471824645996e+00, -1.9046542121259336e-09);\nconst vec2 PI_FP64 = vec2(3.1415927410125732, -8.742278012618954e-8);\nconst vec2 TWO_PI_FP64 = vec2(6.2831854820251465, -1.7484556025237907e-7);\nconst vec2 PI_2_FP64 = vec2(1.5707963705062866, -4.371139006309477e-8);\nconst vec2 PI_4_FP64 = vec2(0.7853981852531433, -2.1855695031547384e-8);\nconst vec2 PI_16_FP64 = vec2(0.19634954631328583, -5.463923757886846e-9);\nconst vec2 PI_16_2_FP64 = vec2(0.39269909262657166, -1.0927847515773692e-8);\nconst vec2 PI_16_3_FP64 = vec2(0.5890486240386963, -1.4906100798128818e-9);\nconst vec2 PI_180_FP64 = vec2(0.01745329238474369, 1.3519960498364902e-10);\n\nconst vec2 SIN_TABLE_0_FP64 = vec2(0.19509032368659973, -1.6704714833615242e-9);\nconst vec2 SIN_TABLE_1_FP64 = vec2(0.3826834261417389, 6.22335089017767e-9);\nconst vec2 SIN_TABLE_2_FP64 = vec2(0.5555702447891235, -1.1769521357507529e-8);\nconst vec2 SIN_TABLE_3_FP64 = vec2(0.7071067690849304, 1.2101617041793133e-8);\n\nconst vec2 COS_TABLE_0_FP64 = vec2(0.9807852506637573, 2.9739473106360492e-8);\nconst vec2 COS_TABLE_1_FP64 = vec2(0.9238795042037964, 2.8307490351764386e-8);\nconst vec2 COS_TABLE_2_FP64 = vec2(0.8314695954322815, 1.6870263741530778e-8);\nconst vec2 COS_TABLE_3_FP64 = vec2(0.7071067690849304, 1.2101617152815436e-8);\n\nconst vec2 INVERSE_FACTORIAL_3_FP64 = vec2(1.666666716337204e-01, -4.967053879312289e-09);\nconst vec2 INVERSE_FACTORIAL_4_FP64 = vec2(4.16666679084301e-02, -1.2417634698280722e-09);\nconst vec2 INVERSE_FACTORIAL_5_FP64 = vec2(8.333333767950535e-03, -4.34617203337595e-10);\nconst vec2 INVERSE_FACTORIAL_6_FP64 = vec2(1.3888889225199819e-03, -3.3631094437103215e-11);\nconst vec2 INVERSE_FACTORIAL_7_FP64 = vec2(1.9841270113829523e-04, -2.725596874933456e-12);\nconst vec2 INVERSE_FACTORIAL_8_FP64 = vec2(2.4801587642286904e-05, -3.406996025904184e-13);\nconst vec2 INVERSE_FACTORIAL_9_FP64 = vec2(2.75573188446287533e-06, 3.7935713937038186e-14);\nconst vec2 INVERSE_FACTORIAL_10_FP64 = vec2(2.755731998149713e-07, -7.575112367869873e-15);\n\nfloat nint(float d) {\n if (d == floor(d)) return d;\n return floor(d + 0.5);\n}\n\nvec2 nint_fp64(vec2 a) {\n float hi = nint(a.x);\n float lo;\n vec2 tmp;\n if (hi == a.x) {\n lo = nint(a.y);\n tmp = quickTwoSum(hi, lo);\n } else {\n lo = 0.0;\n if (abs(hi - a.x) == 0.5 && a.y < 0.0) {\n hi -= 1.0;\n }\n tmp = vec2(hi, lo);\n }\n return tmp;\n}\n\nvec2 exp_fp64(vec2 a) {\n\n const int k_power = 4;\n const float k = 16.0;\n\n const float inv_k = 1.0 / k;\n\n if (a.x <= -88.0) return vec2(0.0, 0.0);\n if (a.x >= 88.0) return vec2(1.0 / 0.0, 1.0 / 0.0);\n if (a.x == 0.0 && a.y == 0.0) return vec2(1.0, 0.0);\n if (a.x == 1.0 && a.y == 0.0) return E_FP64;\n\n float m = floor(a.x / LOG2_FP64.x + 0.5);\n vec2 r = sub_fp64(a, mul_fp64(LOG2_FP64, vec2(m, 0.0))) * inv_k;\n vec2 s, t, p;\n\n p = mul_fp64(r, r);\n s = sum_fp64(r, p * 0.5);\n p = mul_fp64(p, r);\n t = mul_fp64(p, INVERSE_FACTORIAL_3_FP64);\n\n s = sum_fp64(s, t);\n p = mul_fp64(p, r);\n t = mul_fp64(p, INVERSE_FACTORIAL_4_FP64);\n\n s = sum_fp64(s, t);\n p = mul_fp64(p, r);\n t = mul_fp64(p, INVERSE_FACTORIAL_5_FP64);\n\n\n\n\n\n\n s = sum_fp64(s, t);\n for (int i = 0; i < k_power; i++) {\n s = sum_fp64(s * 2.0, mul_fp64(s, s));\n }\n\n#if defined(NVIDIA_FP64_WORKAROUND) || defined(INTEL_FP64_WORKAROUND)\n s = sum_fp64(s, vec2(ONE, 0.0));\n#else\n s = sum_fp64(s, vec2(1.0, 0.0));\n#endif\n\n return s * pow(2.0, m);\n}\n\nvec2 log_fp64(vec2 a)\n{\n if (a.x == 1.0 && a.y == 0.0) return vec2(0.0, 0.0);\n if (a.x <= 0.0) return vec2(0.0 / 0.0, 0.0 / 0.0);\n vec2 x = vec2(log(a.x), 0.0);\n vec2 s;\n#if defined(NVIDIA_FP64_WORKAROUND) || defined(INTEL_FP64_WORKAROUND)\n s = vec2(ONE, 0.0);\n#else\n s = vec2(1.0, 0.0);\n#endif\n\n x = sub_fp64(sum_fp64(x, mul_fp64(a, exp_fp64(-x))), s);\n return x;\n}\n\nvec2 sin_taylor_fp64(vec2 a) {\n vec2 r, s, t, x;\n\n if (a.x == 0.0 && a.y == 0.0) {\n return vec2(0.0, 0.0);\n }\n\n x = -mul_fp64(a, a);\n s = a;\n r = a;\n\n r = mul_fp64(r, x);\n t = mul_fp64(r, INVERSE_FACTORIAL_3_FP64);\n s = sum_fp64(s, t);\n\n r = mul_fp64(r, x);\n t = mul_fp64(r, INVERSE_FACTORIAL_5_FP64);\n s = sum_fp64(s, t);\n\n\n\n\n\n\n return s;\n}\n\nvec2 cos_taylor_fp64(vec2 a) {\n vec2 r, s, t, x;\n\n if (a.x == 0.0 && a.y == 0.0) {\n return vec2(1.0, 0.0);\n }\n\n x = -mul_fp64(a, a);\n r = x;\n s = sum_fp64(vec2(1.0, 0.0), r * 0.5);\n\n r = mul_fp64(r, x);\n t = mul_fp64(r, INVERSE_FACTORIAL_4_FP64);\n s = sum_fp64(s, t);\n\n r = mul_fp64(r, x);\n t = mul_fp64(r, INVERSE_FACTORIAL_6_FP64);\n s = sum_fp64(s, t);\n\n\n\n\n\n\n return s;\n}\n\nvoid sincos_taylor_fp64(vec2 a, out vec2 sin_t, out vec2 cos_t) {\n if (a.x == 0.0 && a.y == 0.0) {\n sin_t = vec2(0.0, 0.0);\n cos_t = vec2(1.0, 0.0);\n }\n\n sin_t = sin_taylor_fp64(a);\n cos_t = sqrt_fp64(sub_fp64(vec2(1.0, 0.0), mul_fp64(sin_t, sin_t)));\n}\n\nvec2 sin_fp64(vec2 a) {\n if (a.x == 0.0 && a.y == 0.0) {\n return vec2(0.0, 0.0);\n }\n vec2 z = nint_fp64(div_fp64(a, TWO_PI_FP64));\n vec2 r = sub_fp64(a, mul_fp64(TWO_PI_FP64, z));\n\n vec2 t;\n float q = floor(r.x / PI_2_FP64.x + 0.5);\n int j = int(q);\n\n if (j < -2 || j > 2) {\n return vec2(0.0 / 0.0, 0.0 / 0.0);\n }\n\n t = sub_fp64(r, mul_fp64(PI_2_FP64, vec2(q, 0.0)));\n\n q = floor(t.x / PI_16_FP64.x + 0.5);\n int k = int(q);\n\n if (k == 0) {\n if (j == 0) {\n return sin_taylor_fp64(t);\n } else if (j == 1) {\n return cos_taylor_fp64(t);\n } else if (j == -1) {\n return -cos_taylor_fp64(t);\n } else {\n return -sin_taylor_fp64(t);\n }\n }\n\n int abs_k = int(abs(float(k)));\n\n if (abs_k > 4) {\n return vec2(0.0 / 0.0, 0.0 / 0.0);\n } else {\n t = sub_fp64(t, mul_fp64(PI_16_FP64, vec2(q, 0.0)));\n }\n\n vec2 u = vec2(0.0, 0.0);\n vec2 v = vec2(0.0, 0.0);\n\n#if defined(NVIDIA_FP64_WORKAROUND) || defined(INTEL_FP64_WORKAROUND)\n if (abs(float(abs_k) - 1.0) < 0.5) {\n u = COS_TABLE_0_FP64;\n v = SIN_TABLE_0_FP64;\n } else if (abs(float(abs_k) - 2.0) < 0.5) {\n u = COS_TABLE_1_FP64;\n v = SIN_TABLE_1_FP64;\n } else if (abs(float(abs_k) - 3.0) < 0.5) {\n u = COS_TABLE_2_FP64;\n v = SIN_TABLE_2_FP64;\n } else if (abs(float(abs_k) - 4.0) < 0.5) {\n u = COS_TABLE_3_FP64;\n v = SIN_TABLE_3_FP64;\n }\n#else\n if (abs_k == 1) {\n u = COS_TABLE_0_FP64;\n v = SIN_TABLE_0_FP64;\n } else if (abs_k == 2) {\n u = COS_TABLE_1_FP64;\n v = SIN_TABLE_1_FP64;\n } else if (abs_k == 3) {\n u = COS_TABLE_2_FP64;\n v = SIN_TABLE_2_FP64;\n } else if (abs_k == 4) {\n u = COS_TABLE_3_FP64;\n v = SIN_TABLE_3_FP64;\n }\n#endif\n\n vec2 sin_t, cos_t;\n sincos_taylor_fp64(t, sin_t, cos_t);\n\n\n\n vec2 result = vec2(0.0, 0.0);\n if (j == 0) {\n if (k > 0) {\n result = sum_fp64(mul_fp64(u, sin_t), mul_fp64(v, cos_t));\n } else {\n result = sub_fp64(mul_fp64(u, sin_t), mul_fp64(v, cos_t));\n }\n } else if (j == 1) {\n if (k > 0) {\n result = sub_fp64(mul_fp64(u, cos_t), mul_fp64(v, sin_t));\n } else {\n result = sum_fp64(mul_fp64(u, cos_t), mul_fp64(v, sin_t));\n }\n } else if (j == -1) {\n if (k > 0) {\n result = sub_fp64(mul_fp64(v, sin_t), mul_fp64(u, cos_t));\n } else {\n result = -sum_fp64(mul_fp64(v, sin_t), mul_fp64(u, cos_t));\n }\n } else {\n if (k > 0) {\n result = -sum_fp64(mul_fp64(u, sin_t), mul_fp64(v, cos_t));\n } else {\n result = sub_fp64(mul_fp64(v, cos_t), mul_fp64(u, sin_t));\n }\n }\n\n return result;\n}\n\nvec2 cos_fp64(vec2 a) {\n if (a.x == 0.0 && a.y == 0.0) {\n return vec2(1.0, 0.0);\n }\n vec2 z = nint_fp64(div_fp64(a, TWO_PI_FP64));\n vec2 r = sub_fp64(a, mul_fp64(TWO_PI_FP64, z));\n\n vec2 t;\n float q = floor(r.x / PI_2_FP64.x + 0.5);\n int j = int(q);\n\n if (j < -2 || j > 2) {\n return vec2(0.0 / 0.0, 0.0 / 0.0);\n }\n\n t = sub_fp64(r, mul_fp64(PI_2_FP64, vec2(q, 0.0)));\n\n q = floor(t.x / PI_16_FP64.x + 0.5);\n int k = int(q);\n\n if (k == 0) {\n if (j == 0) {\n return cos_taylor_fp64(t);\n } else if (j == 1) {\n return -sin_taylor_fp64(t);\n } else if (j == -1) {\n return sin_taylor_fp64(t);\n } else {\n return -cos_taylor_fp64(t);\n }\n }\n\n int abs_k = int(abs(float(k)));\n\n if (abs_k > 4) {\n return vec2(0.0 / 0.0, 0.0 / 0.0);\n } else {\n t = sub_fp64(t, mul_fp64(PI_16_FP64, vec2(q, 0.0)));\n }\n\n vec2 u = vec2(0.0, 0.0);\n vec2 v = vec2(0.0, 0.0);\n\n#if defined(NVIDIA_FP64_WORKAROUND) || defined(INTEL_FP64_WORKAROUND)\n if (abs(float(abs_k) - 1.0) < 0.5) {\n u = COS_TABLE_0_FP64;\n v = SIN_TABLE_0_FP64;\n } else if (abs(float(abs_k) - 2.0) < 0.5) {\n u = COS_TABLE_1_FP64;\n v = SIN_TABLE_1_FP64;\n } else if (abs(float(abs_k) - 3.0) < 0.5) {\n u = COS_TABLE_2_FP64;\n v = SIN_TABLE_2_FP64;\n } else if (abs(float(abs_k) - 4.0) < 0.5) {\n u = COS_TABLE_3_FP64;\n v = SIN_TABLE_3_FP64;\n }\n#else\n if (abs_k == 1) {\n u = COS_TABLE_0_FP64;\n v = SIN_TABLE_0_FP64;\n } else if (abs_k == 2) {\n u = COS_TABLE_1_FP64;\n v = SIN_TABLE_1_FP64;\n } else if (abs_k == 3) {\n u = COS_TABLE_2_FP64;\n v = SIN_TABLE_2_FP64;\n } else if (abs_k == 4) {\n u = COS_TABLE_3_FP64;\n v = SIN_TABLE_3_FP64;\n }\n#endif\n\n vec2 sin_t, cos_t;\n sincos_taylor_fp64(t, sin_t, cos_t);\n\n vec2 result = vec2(0.0, 0.0);\n if (j == 0) {\n if (k > 0) {\n result = sub_fp64(mul_fp64(u, cos_t), mul_fp64(v, sin_t));\n } else {\n result = sum_fp64(mul_fp64(u, cos_t), mul_fp64(v, sin_t));\n }\n } else if (j == 1) {\n if (k > 0) {\n result = -sum_fp64(mul_fp64(u, sin_t), mul_fp64(v, cos_t));\n } else {\n result = sub_fp64(mul_fp64(v, cos_t), mul_fp64(u, sin_t));\n }\n } else if (j == -1) {\n if (k > 0) {\n result = sum_fp64(mul_fp64(u, sin_t), mul_fp64(v, cos_t));\n } else {\n result = sub_fp64(mul_fp64(u, sin_t), mul_fp64(v, cos_t));\n }\n } else {\n if (k > 0) {\n result = sub_fp64(mul_fp64(v, sin_t), mul_fp64(u, cos_t));\n } else {\n result = -sum_fp64(mul_fp64(u, cos_t), mul_fp64(v, sin_t));\n }\n }\n\n return result;\n}\n\nvec2 tan_fp64(vec2 a) {\n vec2 sin_a;\n vec2 cos_a;\n\n if (a.x == 0.0 && a.y == 0.0) {\n return vec2(0.0, 0.0);\n }\n vec2 z = nint_fp64(div_fp64(a, TWO_PI_FP64));\n vec2 r = sub_fp64(a, mul_fp64(TWO_PI_FP64, z));\n\n vec2 t;\n float q = floor(r.x / PI_2_FP64.x + 0.5);\n int j = int(q);\n\n\n if (j < -2 || j > 2) {\n return vec2(0.0 / 0.0, 0.0 / 0.0);\n }\n\n t = sub_fp64(r, mul_fp64(PI_2_FP64, vec2(q, 0.0)));\n\n q = floor(t.x / PI_16_FP64.x + 0.5);\n int k = int(q);\n int abs_k = int(abs(float(k)));\n\n if (abs_k > 4) {\n return vec2(0.0 / 0.0, 0.0 / 0.0);\n } else {\n t = sub_fp64(t, mul_fp64(PI_16_FP64, vec2(q, 0.0)));\n }\n\n\n vec2 u = vec2(0.0, 0.0);\n vec2 v = vec2(0.0, 0.0);\n\n vec2 sin_t, cos_t;\n vec2 s, c;\n sincos_taylor_fp64(t, sin_t, cos_t);\n\n if (k == 0) {\n s = sin_t;\n c = cos_t;\n } else {\n#if defined(NVIDIA_FP64_WORKAROUND) || defined(INTEL_FP64_WORKAROUND)\n if (abs(float(abs_k) - 1.0) < 0.5) {\n u = COS_TABLE_0_FP64;\n v = SIN_TABLE_0_FP64;\n } else if (abs(float(abs_k) - 2.0) < 0.5) {\n u = COS_TABLE_1_FP64;\n v = SIN_TABLE_1_FP64;\n } else if (abs(float(abs_k) - 3.0) < 0.5) {\n u = COS_TABLE_2_FP64;\n v = SIN_TABLE_2_FP64;\n } else if (abs(float(abs_k) - 4.0) < 0.5) {\n u = COS_TABLE_3_FP64;\n v = SIN_TABLE_3_FP64;\n }\n#else\n if (abs_k == 1) {\n u = COS_TABLE_0_FP64;\n v = SIN_TABLE_0_FP64;\n } else if (abs_k == 2) {\n u = COS_TABLE_1_FP64;\n v = SIN_TABLE_1_FP64;\n } else if (abs_k == 3) {\n u = COS_TABLE_2_FP64;\n v = SIN_TABLE_2_FP64;\n } else if (abs_k == 4) {\n u = COS_TABLE_3_FP64;\n v = SIN_TABLE_3_FP64;\n }\n#endif\n if (k > 0) {\n s = sum_fp64(mul_fp64(u, sin_t), mul_fp64(v, cos_t));\n c = sub_fp64(mul_fp64(u, cos_t), mul_fp64(v, sin_t));\n } else {\n s = sub_fp64(mul_fp64(u, sin_t), mul_fp64(v, cos_t));\n c = sum_fp64(mul_fp64(u, cos_t), mul_fp64(v, sin_t));\n }\n }\n\n if (j == 0) {\n sin_a = s;\n cos_a = c;\n } else if (j == 1) {\n sin_a = c;\n cos_a = -s;\n } else if (j == -1) {\n sin_a = -c;\n cos_a = s;\n } else {\n sin_a = -s;\n cos_a = -c;\n }\n return div_fp64(sin_a, cos_a);\n}\n\nvec2 radians_fp64(vec2 degree) {\n return mul_fp64(degree, PI_180_FP64);\n}\n\nvec2 mix_fp64(vec2 a, vec2 b, float x) {\n vec2 range = sub_fp64(b, a);\n return sum_fp64(a, mul_fp64(range, vec2(x, 0.0)));\n}\n\nvoid vec2_sum_fp64(vec2 a[2], vec2 b[2], out vec2 out_val[2]) {\n out_val[0] = sum_fp64(a[0], b[0]);\n out_val[1] = sum_fp64(a[1], b[1]);\n}\n\nvoid vec2_sub_fp64(vec2 a[2], vec2 b[2], out vec2 out_val[2]) {\n out_val[0] = sub_fp64(a[0], b[0]);\n out_val[1] = sub_fp64(a[1], b[1]);\n}\n\nvoid vec2_mul_fp64(vec2 a[2], vec2 b[2], out vec2 out_val[2]) {\n out_val[0] = mul_fp64(a[0], b[0]);\n out_val[1] = mul_fp64(a[1], b[1]);\n}\n\nvoid vec2_div_fp64(vec2 a[2], vec2 b[2], out vec2 out_val[2]) {\n out_val[0] = div_fp64(a[0], b[0]);\n out_val[1] = div_fp64(a[1], b[1]);\n}\n\nvoid vec2_mix_fp64(vec2 x[2], vec2 y[2], float a, out vec2 out_val[2]) {\n vec2 range[2];\n vec2_sub_fp64(y, x, range);\n vec2 portion[2];\n portion[0] = range[0] * a;\n portion[1] = range[1] * a;\n vec2_sum_fp64(x, portion, out_val);\n}\n\nvec2 vec2_length_fp64(vec2 x[2]) {\n return sqrt_fp64(sum_fp64(mul_fp64(x[0], x[0]), mul_fp64(x[1], x[1])));\n}\n\nvoid vec2_normalize_fp64(vec2 x[2], out vec2 out_val[2]) {\n vec2 length = vec2_length_fp64(x);\n vec2 length_vec2[2];\n length_vec2[0] = length;\n length_vec2[1] = length;\n\n vec2_div_fp64(x, length_vec2, out_val);\n}\n\nvec2 vec2_distance_fp64(vec2 x[2], vec2 y[2]) {\n vec2 diff[2];\n vec2_sub_fp64(x, y, diff);\n return vec2_length_fp64(diff);\n}\n\nvec2 vec2_dot_fp64(vec2 a[2], vec2 b[2]) {\n vec2 v[2];\n\n v[0] = mul_fp64(a[0], b[0]);\n v[1] = mul_fp64(a[1], b[1]);\n\n return sum_fp64(v[0], v[1]);\n}\nvoid vec3_sub_fp64(vec2 a[3], vec2 b[3], out vec2 out_val[3]) {\n for (int i = 0; i < 3; i++) {\n out_val[i] = sum_fp64(a[i], b[i]);\n }\n}\n\nvoid vec3_sum_fp64(vec2 a[3], vec2 b[3], out vec2 out_val[3]) {\n for (int i = 0; i < 3; i++) {\n out_val[i] = sum_fp64(a[i], b[i]);\n }\n}\n\nvec2 vec3_length_fp64(vec2 x[3]) {\n return sqrt_fp64(sum_fp64(sum_fp64(mul_fp64(x[0], x[0]), mul_fp64(x[1], x[1])),\n mul_fp64(x[2], x[2])));\n}\n\nvec2 vec3_distance_fp64(vec2 x[3], vec2 y[3]) {\n vec2 diff[3];\n vec3_sub_fp64(x, y, diff);\n return vec3_length_fp64(diff);\n}\nvoid vec4_fp64(vec4 a, out vec2 out_val[4]) {\n out_val[0].x = a[0];\n out_val[0].y = 0.0;\n\n out_val[1].x = a[1];\n out_val[1].y = 0.0;\n\n out_val[2].x = a[2];\n out_val[2].y = 0.0;\n\n out_val[3].x = a[3];\n out_val[3].y = 0.0;\n}\n\nvoid vec4_scalar_mul_fp64(vec2 a[4], vec2 b, out vec2 out_val[4]) {\n out_val[0] = mul_fp64(a[0], b);\n out_val[1] = mul_fp64(a[1], b);\n out_val[2] = mul_fp64(a[2], b);\n out_val[3] = mul_fp64(a[3], b);\n}\n\nvoid vec4_sum_fp64(vec2 a[4], vec2 b[4], out vec2 out_val[4]) {\n for (int i = 0; i < 4; i++) {\n out_val[i] = sum_fp64(a[i], b[i]);\n }\n}\n\nvoid vec4_dot_fp64(vec2 a[4], vec2 b[4], out vec2 out_val) {\n vec2 v[4];\n\n v[0] = mul_fp64(a[0], b[0]);\n v[1] = mul_fp64(a[1], b[1]);\n v[2] = mul_fp64(a[2], b[2]);\n v[3] = mul_fp64(a[3], b[3]);\n\n out_val = sum_fp64(sum_fp64(v[0], v[1]), sum_fp64(v[2], v[3]));\n}\n\nvoid mat4_vec4_mul_fp64(vec2 b[16], vec2 a[4], out vec2 out_val[4]) {\n vec2 tmp[4];\n\n for (int i = 0; i < 4; i++)\n {\n for (int j = 0; j < 4; j++)\n {\n tmp[j] = b[j + i * 4];\n }\n vec4_dot_fp64(a, tmp, out_val[i]);\n }\n}\n",fs:null,dependencies:[{name:"fp64-arithmetic",vs:"uniform float ONE;\nvec2 split(float a) {\n const float SPLIT = 4097.0;\n float t = a * SPLIT;\n#if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)\n float a_hi = t * ONE - (t - a);\n float a_lo = a * ONE - a_hi;\n#else\n float a_hi = t - (t - a);\n float a_lo = a - a_hi;\n#endif\n return vec2(a_hi, a_lo);\n}\nvec2 split2(vec2 a) {\n vec2 b = split(a.x);\n b.y += a.y;\n return b;\n}\nvec2 quickTwoSum(float a, float b) {\n#if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)\n float sum = (a + b) * ONE;\n float err = b - (sum - a) * ONE;\n#else\n float sum = a + b;\n float err = b - (sum - a);\n#endif\n return vec2(sum, err);\n}\nvec2 twoSum(float a, float b) {\n float s = (a + b);\n#if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)\n float v = (s * ONE - a) * ONE;\n float err = (a - (s - v) * ONE) * ONE * ONE * ONE + (b - v);\n#else\n float v = s - a;\n float err = (a - (s - v)) + (b - v);\n#endif\n return vec2(s, err);\n}\n\nvec2 twoSub(float a, float b) {\n float s = (a - b);\n#if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)\n float v = (s * ONE - a) * ONE;\n float err = (a - (s - v) * ONE) * ONE * ONE * ONE - (b + v);\n#else\n float v = s - a;\n float err = (a - (s - v)) - (b + v);\n#endif\n return vec2(s, err);\n}\n\nvec2 twoSqr(float a) {\n float prod = a * a;\n vec2 a_fp64 = split(a);\n#if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)\n float err = ((a_fp64.x * a_fp64.x - prod) * ONE + 2.0 * a_fp64.x *\n a_fp64.y * ONE * ONE) + a_fp64.y * a_fp64.y * ONE * ONE * ONE;\n#else\n float err = ((a_fp64.x * a_fp64.x - prod) + 2.0 * a_fp64.x * a_fp64.y) + a_fp64.y * a_fp64.y;\n#endif\n return vec2(prod, err);\n}\n\nvec2 twoProd(float a, float b) {\n float prod = a * b;\n vec2 a_fp64 = split(a);\n vec2 b_fp64 = split(b);\n float err = ((a_fp64.x * b_fp64.x - prod) + a_fp64.x * b_fp64.y +\n a_fp64.y * b_fp64.x) + a_fp64.y * b_fp64.y;\n return vec2(prod, err);\n}\n\nvec2 sum_fp64(vec2 a, vec2 b) {\n vec2 s, t;\n s = twoSum(a.x, b.x);\n t = twoSum(a.y, b.y);\n s.y += t.x;\n s = quickTwoSum(s.x, s.y);\n s.y += t.y;\n s = quickTwoSum(s.x, s.y);\n return s;\n}\n\nvec2 sub_fp64(vec2 a, vec2 b) {\n vec2 s, t;\n s = twoSub(a.x, b.x);\n t = twoSub(a.y, b.y);\n s.y += t.x;\n s = quickTwoSum(s.x, s.y);\n s.y += t.y;\n s = quickTwoSum(s.x, s.y);\n return s;\n}\n\nvec2 mul_fp64(vec2 a, vec2 b) {\n vec2 prod = twoProd(a.x, b.x);\n prod.y += a.x * b.y;\n#if defined(LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND)\n prod = split2(prod);\n#endif\n prod = quickTwoSum(prod.x, prod.y);\n prod.y += a.y * b.x;\n#if defined(LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND)\n prod = split2(prod);\n#endif\n prod = quickTwoSum(prod.x, prod.y);\n return prod;\n}\n\nvec2 div_fp64(vec2 a, vec2 b) {\n float xn = 1.0 / b.x;\n#if defined(LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND)\n vec2 yn = mul_fp64(a, vec2(xn, 0));\n#else\n vec2 yn = a * xn;\n#endif\n float diff = (sub_fp64(a, mul_fp64(b, yn))).x;\n vec2 prod = twoProd(xn, diff);\n return sum_fp64(yn, prod);\n}\n\nvec2 sqrt_fp64(vec2 a) {\n if (a.x == 0.0 && a.y == 0.0) return vec2(0.0, 0.0);\n if (a.x < 0.0) return vec2(0.0 / 0.0, 0.0 / 0.0);\n\n float x = 1.0 / sqrt(a.x);\n float yn = a.x * x;\n#if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)\n vec2 yn_sqr = twoSqr(yn) * ONE;\n#else\n vec2 yn_sqr = twoSqr(yn);\n#endif\n float diff = sub_fp64(a, yn_sqr).x;\n vec2 prod = twoProd(x * 0.5, diff);\n#if defined(LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND)\n return sum_fp64(split(yn), prod);\n#else\n return sum_fp64(vec2(yn, 0.0), prod);\n#endif\n}\n",fs:null,getUniforms:function(){return V},fp64ify:B,fp64LowPart:D,fp64ifyMatrix4:M}],fp64ify:B,fp64LowPart:D,fp64ifyMatrix4:M},U=z.fp64ify,G=z.fp64ifyMatrix4,W={name:"project64",dependencies:[d.project,z],vs:"\nconst vec2 WORLD_SCALE_FP64 = vec2(81.4873275756836, 0.0000032873668232014097);\n\nuniform vec2 project_uViewProjectionMatrixFP64[16];\n\n// longitude: lnglat_fp64.xy; latitude: lnglat_fp64.zw\nvoid mercatorProject_fp64(vec4 lnglat_fp64, out vec2 out_val[2]) {\n\n#if defined(NVIDIA_FP64_WORKAROUND)\n out_val[0] = sum_fp64(radians_fp64(lnglat_fp64.xy), PI_FP64 * ONE);\n#else\n out_val[0] = sum_fp64(radians_fp64(lnglat_fp64.xy), PI_FP64);\n#endif\n out_val[1] = sum_fp64(PI_FP64,\n log_fp64(tan_fp64(sum_fp64(PI_4_FP64, radians_fp64(lnglat_fp64.zw) / 2.0))));\n return;\n}\n\nvoid project_position_fp64(vec4 position_fp64, out vec2 out_val[2]) {\n vec2 pos_fp64[2];\n mercatorProject_fp64(position_fp64, pos_fp64);\n out_val[0] = mul_fp64(pos_fp64[0], WORLD_SCALE_FP64);\n out_val[1] = mul_fp64(pos_fp64[1], WORLD_SCALE_FP64);\n\n return;\n}\n\nvoid project_position_fp64(vec2 position, vec2 position64xyLow, out vec2 out_val[2]) {\n vec4 position64xy = vec4(\n position.x, position64xyLow.x,\n position.y, position64xyLow.y);\n\n project_position_fp64(position64xy, out_val);\n}\n\nvec4 project_common_position_to_clipspace_fp64(vec2 vertex_pos_modelspace[4]) {\n vec2 vertex_pos_clipspace[4];\n mat4_vec4_mul_fp64(project_uViewProjectionMatrixFP64, vertex_pos_modelspace,\n vertex_pos_clipspace);\n return vec4(\n vertex_pos_clipspace[0].x,\n vertex_pos_clipspace[1].x,\n vertex_pos_clipspace[2].x,\n vertex_pos_clipspace[3].x\n );\n}\n\nvec4 project_position_to_clipspace(\n vec3 position, vec3 position64xyLow, vec3 offset, out vec4 commonPosition\n) {\n // This is the local offset to the instance position\n vec2 offset64[4];\n vec4_fp64(vec4(offset, 0.0), offset64);\n\n float z = project_size(position.z);\n\n // Apply web mercator projection (depends on coordinate system imn use)\n vec2 projectedPosition64xy[2];\n project_position_fp64(position.xy, position64xyLow.xy, projectedPosition64xy);\n\n vec2 commonPosition64[4];\n commonPosition64[0] = sum_fp64(offset64[0], projectedPosition64xy[0]);\n commonPosition64[1] = sum_fp64(offset64[1], projectedPosition64xy[1]);\n commonPosition64[2] = sum_fp64(offset64[2], vec2(z, 0.0));\n commonPosition64[3] = vec2(1.0, 0.0);\n\n commonPosition = vec4(projectedPosition64xy[0].x, projectedPosition64xy[1].x, z, 1.0);\n\n return project_common_position_to_clipspace_fp64(commonPosition64);\n}\n\nvec4 project_position_to_clipspace(\n vec3 position, vec3 position64xyLow, vec3 offset\n) {\n vec4 commonPosition;\n return project_position_to_clipspace(\n position, position64xyLow, offset, commonPosition\n );\n}\n",getUniforms:function(n){if(n&&"viewport"in n){var e=n.viewport,t=e.viewProjectionMatrix,r=e.scale;return q({viewProjectionMatrix:t,scale:r})}return{}}},q=Object(d._memoize)((function(n){var e=n.viewProjectionMatrix,t=n.scale,r=G(e),i=U(t);return{project_uViewProjectionMatrixFP64:r,project64_uViewProjectionMatrix:r,project64_uScale:i}}));function K(n){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(n){return!1}}();return function(){var t,r=_()(n);if(e){var i=_()(this).constructor;t=Reflect.construct(r,arguments,i)}else t=r.apply(this,arguments);return c()(this,t)}}var Y=function(n){f()(t,n);var e=K(t);function t(){return i()(this,t),e.apply(this,arguments)}return a()(t,[{key:"getShaders",value:function(){var n=this.props.coordinateSystem;if(n!==d.COORDINATE_SYSTEM.LNGLAT&&n!==d.COORDINATE_SYSTEM.DEFAULT)throw new Error("fp64: coordinateSystem must be LNGLAT");return{modules:[W]}}}]),t}(d.LayerExtension);v()(Y,"extensionName","Fp64Extension");var H={inject:{"vs:#decl":"\nattribute vec2 instanceDashArrays;\nattribute float instanceDashOffsets;\nvarying vec2 vDashArray;\nvarying float vDashOffset;\n","vs:#main-end":"\nvDashArray = instanceDashArrays;\nvDashOffset = instanceDashOffsets / width.x;\n","fs:#decl":"\nuniform float dashAlignMode;\nuniform float capType;\nuniform bool dashGapPickable;\nvarying vec2 vDashArray;\nvarying float vDashOffset;\n\nfloat round(float x) {\n return floor(x + 0.5);\n}\n","fs:#main-start":"\n float solidLength = vDashArray.x;\n float gapLength = vDashArray.y;\n float unitLength = solidLength + gapLength;\n\n float offset;\n\n if (unitLength > 0.0) {\n if (dashAlignMode == 0.0) {\n offset = vDashOffset;\n } else {\n unitLength = vPathLength / round(vPathLength / unitLength);\n offset = solidLength / 2.0;\n }\n\n float unitOffset = mod(clamp(vPathPosition.y, 0.0, vPathLength) + offset, unitLength);\n\n if (gapLength > 0.0 && unitOffset > solidLength) {\n if (capType <= 0.5) {\n if (!(dashGapPickable && picking_uActive)) {\n discard;\n }\n } else {\n // caps are rounded, test the distance to solid ends\n float distToEnd = length(vec2(\n min(unitOffset - solidLength, unitLength - unitOffset),\n vPathPosition.x\n ));\n if (distToEnd > 1.0) {\n if (!(dashGapPickable && picking_uActive)) {\n discard;\n }\n }\n }\n }\n }\n"}},X={inject:{"vs:#decl":"\nattribute float instanceOffsets;\n","vs:DECKGL_FILTER_SIZE":"\n float offsetWidth = abs(instanceOffsets * 2.0) + 1.0;\n size *= offsetWidth;\n","vCornerOffset = offsetVec;":"\n float offsetWidth = abs(instanceOffsets * 2.0) + 1.0;\n vec2 offsetCenter = -instanceOffsets * (isCap ? perp : miterVec * miterSize) * 2.0;\n vCornerOffset = vCornerOffset * offsetWidth - offsetCenter;\n","fs:#main-start":"\n float isInside;\n isInside = step(-1.0, vPathPosition.x) * step(vPathPosition.x, 1.0);\n if (isInside == 0.0) {\n discard;\n }\n"}},J="undefined"!=typeof Float32Array?Float32Array:Array;Math.random;Math.PI;Math.hypot||(Math.hypot=function(){for(var n=0,e=arguments.length;e--;)n+=arguments[e]*arguments[e];return Math.sqrt(n)});var Z,Q,$=function(n,e){var t=e[0]-n[0],r=e[1]-n[1],i=e[2]-n[2];return Math.hypot(t,r,i)};Z=new J(3),J!=Float32Array&&(Z[0]=0,Z[1]=0,Z[2]=0),Q=Z;function nn(n){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(n){return!1}}();return function(){var t,r=_()(n);if(e){var i=_()(this).constructor;t=Reflect.construct(r,arguments,i)}else t=r.apply(this,arguments);return c()(this,t)}}var en=function(n){f()(t,n);var e=nn(t);function t(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=n.dash,o=void 0!==r&&r,a=n.offset,s=void 0!==a&&a,f=n.highPrecisionDash,l=void 0!==f&&f;return i()(this,t),e.call(this,{dash:o||l,offset:s,highPrecisionDash:l})}return a()(t,[{key:"isEnabled",value:function(n){return"pathTesselator"in n.state}},{key:"getShaders",value:function(n){if(!n.isEnabled(this))return null;var e={};return n.opts.dash&&(e=Object(d._mergeShaders)(e,H)),n.opts.offset&&(e=Object(d._mergeShaders)(e,X)),e}},{key:"initializeState",value:function(n,e){var t=this.getAttributeManager();t&&e.isEnabled(this)&&(e.opts.dash&&t.addInstanced({instanceDashArrays:{size:2,accessor:"getDashArray"}}),e.opts.highPrecisionDash&&t.addInstanced({instanceDashOffsets:{size:1,accessor:"getPath",transform:e.getDashOffsets.bind(this)}}),e.opts.offset&&t.addInstanced({instanceOffsets:{size:1,accessor:"getOffset"}}))}},{key:"updateState",value:function(n,e){if(e.isEnabled(this)){var t={};e.opts.dash&&(t.dashAlignMode=this.props.dashJustified?1:0,t.dashGapPickable=Boolean(this.props.dashGapPickable)),this.state.model.setUniforms(t)}}},{key:"getDashOffsets",value:function(n){for(var e,t,r=[0],i="XY"===this.props.positionFormat?2:3,o=Array.isArray(n[0]),a=o?n.length:n.length/i,s=0;s<a-1;s++)e=o?n[s]:n.slice(s*i,s*i+i),e=this.projectPosition(e),s>0&&(r[s]=r[s-1]+$(t,e)),t=e;return r}}]),t}(d.LayerExtension);v()(en,"defaultProps",{getDashArray:{type:"accessor",value:[0,0]},getOffset:{type:"accessor",value:0},dashJustified:!1,dashGapPickable:!1}),v()(en,"extensionName","PathStyleExtension");var tn=t(9),rn=t.n(tn),on=t(8),an=t.n(on);var sn,fn={name:"fill-pattern",vs:"\n#ifdef NON_INSTANCED_MODEL\n #define FILL_PATTERN_FRAME_ATTRIB fillPatternFrames\n #define FILL_PATTERN_SCALE_ATTRIB fillPatternScales\n #define FILL_PATTERN_OFFSET_ATTRIB fillPatternOffsets\n#else\n #define FILL_PATTERN_FRAME_ATTRIB instanceFillPatternFrames\n #define FILL_PATTERN_SCALE_ATTRIB instanceFillPatternScales\n #define FILL_PATTERN_OFFSET_ATTRIB instanceFillPatternOffsets\n#endif\n\nattribute vec4 FILL_PATTERN_FRAME_ATTRIB;\nattribute float FILL_PATTERN_SCALE_ATTRIB;\nattribute vec2 FILL_PATTERN_OFFSET_ATTRIB;\n\nuniform bool fill_patternEnabled;\nuniform vec2 fill_patternTextureSize;\n\nvarying vec2 fill_uv;\nvarying vec4 fill_patternBounds;\nvarying vec4 fill_patternPlacement;\n",fs:"\nuniform bool fill_patternEnabled;\nuniform bool fill_patternMask;\nuniform sampler2D fill_patternTexture;\nuniform vec2 fill_uvCoordinateOrigin;\nuniform vec2 fill_uvCoordinateOrigin64Low;\n\nvarying vec4 fill_patternBounds;\nvarying vec4 fill_patternPlacement;\nvarying vec2 fill_uv;\n\nconst float FILL_UV_SCALE = 512.0 / 40000000.0;\n",inject:{"vs:DECKGL_FILTER_GL_POSITION":"\n fill_uv = geometry.position.xy;\n ","vs:DECKGL_FILTER_COLOR":"\n if (fill_patternEnabled) {\n fill_patternBounds = FILL_PATTERN_FRAME_ATTRIB / vec4(fill_patternTextureSize, fill_patternTextureSize);\n fill_patternPlacement.xy = FILL_PATTERN_OFFSET_ATTRIB;\n fill_patternPlacement.zw = FILL_PATTERN_SCALE_ATTRIB * FILL_PATTERN_FRAME_ATTRIB.zw;\n }\n ","fs:DECKGL_FILTER_COLOR":"\n if (fill_patternEnabled) {\n vec2 scale = FILL_UV_SCALE * fill_patternPlacement.zw;\n vec2 patternUV = mod(mod(fill_uvCoordinateOrigin, scale) + fill_uvCoordinateOrigin64Low + fill_uv, scale) / scale;\n patternUV = mod(fill_patternPlacement.xy + patternUV, 1.0);\n\n vec2 texCoords = fill_patternBounds.xy + fill_patternBounds.zw * patternUV;\n\n vec4 patternColor = texture2D(fill_patternTexture, texCoords);\n color.a *= patternColor.a;\n if (!fill_patternMask) {\n color.rgb = patternColor.rgb;\n }\n }\n "},dependencies:[d.project],getUniforms:function(n,e){if(!n)return{};if("fillPatternTexture"in n){var t=n.fillPatternTexture;return{fill_patternTexture:t,fill_patternTextureSize:[t.width,t.height]}}if("viewport"in n){var r=n.viewport,i=n.fillPatternMask,o=void 0===i||i,a=n.fillPatternEnabled,s=void 0===a||a,f=e.project_uCoordinateOrigin,l=r.projectPosition(f),c=[Object(d.fp64LowPart)(l[0]),Object(d.fp64LowPart)(l[1])];return{fill_uvCoordinateOrigin:l.slice(0,2),fill_uvCoordinateOrigin64Low:c,fill_patternMask:o,fill_patternEnabled:s}}return{}}};function ln(n){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(n){return!1}}();return function(){var t,r=_()(n);if(e){var i=_()(this).constructor;t=Reflect.construct(r,arguments,i)}else t=r.apply(this,arguments);return c()(this,t)}}var cn=(sn={},v()(sn,10241,9729),v()(sn,10240,9729),v()(sn,10242,33071),v()(sn,10243,33071),sn),un=function(n){f()(o,n);var e,t,r=ln(o);function o(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=n.pattern,t=void 0!==e&&e;return i()(this,o),r.call(this,{pattern:t})}return a()(o,[{key:"isEnabled",value:function(n){return null!==n.getAttributeManager()&&!("pathTesselator"in n.state)}},{key:"getShaders",value:function(n){return n.isEnabled(this)?{modules:[n.opts.pattern&&fn].filter(Boolean)}:null}},{key:"initializeState",value:function(n,e){if(e.isEnabled(this)){var t=this.getAttributeManager();e.opts.pattern&&t.add({fillPatternFrames:{size:4,accessor:"getFillPattern",transform:e.getPatternFrame.bind(this),shaderAttributes:{fillPatternFrames:{divisor:0},instanceFillPatternFrames:{divisor:1}}},fillPatternScales:{size:1,accessor:"getFillPatternScale",defaultValue:1,shaderAttributes:{fillPatternScales:{divisor:0},instanceFillPatternScales:{divisor:1}}},fillPatternOffsets:{size:2,accessor:"getFillPatternOffset",shaderAttributes:{fillPatternOffsets:{divisor:0},instanceFillPatternOffsets:{divisor:1}}}}),this.setState({emptyTexture:new L.Texture2D(this.context.gl,{data:new Uint8Array(4),width:1,height:1})})}}},{key:"updateState",value:function(n,e){var t=n.props,r=n.oldProps;e.isEnabled(this)&&(t.fillPatternAtlas&&t.fillPatternAtlas!==r.fillPatternAtlas&&e.loadPatternAtlas.call(this),t.fillPatternMapping&&t.fillPatternMapping!==r.fillPatternMapping&&e.loadPatternMapping.call(this))}},{key:"draw",value:function(n,e){if(e.isEnabled(this)){var t=this.state.patternTexture;this.setModuleParameters({fillPatternTexture:t||this.state.emptyTexture})}}},{key:"finalizeState",value:function(){var n=this.state,e=n.patternTexture,t=n.emptyTexture;null==e||e.delete(),null==t||t.delete()}},{key:"loadPatternAtlas",value:(t=rn()(an.a.mark((function n(){var e,t,r,i,o,a;return an.a.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(t=this.props,r=t.fillPatternAtlas,i=t.fetch,null===(e=this.state.patternTexture)||void 0===e||e.delete(),this.setState({patternTexture:null}),"string"!=typeof(o=r)){n.next=8;break}return n.next=7,i(o,{propName:"fillPatternAtlas",layer:this});case 7:o=n.sent;case 8:a=o instanceof L.Texture2D?o:new L.Texture2D(this.context.gl,{data:o,parameters:cn}),this.setState({patternTexture:a});case 10:case"end":return n.stop()}}),n,this)}))),function(n){return t.apply(this,arguments)})},{key:"loadPatternMapping",value:(e=rn()(an.a.mark((function n(){var e,t,r,i;return an.a.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(e=this.props,t=e.fillPatternMapping,r=e.fetch,this.setState({patternMapping:null}),"string"!=typeof(i=t)){n.next=7;break}return n.next=6,r(i,{propName:"fillPatternMapping",layer:this});case 6:i=n.sent;case 7:this.setState({patternMapping:i}),this.getAttributeManager().invalidate("getFillPattern"),this.setNeedsUpdate();case 10:case"end":return n.stop()}}),n,this)}))),function(n){return e.apply(this,arguments)})},{key:"getPatternFrame",value:function(n){var e=this.state.patternMapping,t=e&&e[n];return t?[t.x,t.y,t.width,t.height]:[0,0,0,0]}}]),o}(d.LayerExtension);function _n(n){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(n){return!1}}();return function(){var t,r=_()(n);if(e){var i=_()(this).constructor;t=Reflect.construct(r,arguments,i)}else t=r.apply(this,arguments);return c()(this,t)}}v()(un,"defaultProps",{fillPatternEnabled:!0,fillPatternAtlas:null,fillPatternMapping:null,fillPatternMask:!0,getFillPattern:{type:"accessor",value:function(n){return n.pattern}},getFillPatternScale:{type:"accessor",value:1},getFillPatternOffset:{type:"accessor",value:[0,0]}}),v()(un,"extensionName","FillStyleExtension");var pn={clipBounds:[0,0,1,1]},vn="\nuniform vec4 clip_bounds;\n\nbool clip_isInBounds(vec2 position) {\n return position.x >= clip_bounds[0] && position.y >= clip_bounds[1] && position.x < clip_bounds[2] && position.y < clip_bounds[3];\n}\n",dn={name:"clip-vs",vs:vn},mn={"vs:#decl":"\nvarying float clip_isVisible;\n","vs:DECKGL_FILTER_GL_POSITION":"\n clip_isVisible = float(clip_isInBounds(geometry.worldPosition.xy));\n","fs:#decl":"\nvarying float clip_isVisible;\n","fs:DECKGL_FILTER_COLOR":"\n if (clip_isVisible < 0.5) discard;\n"},hn={name:"clip-fs",fs:vn},yn={"vs:#decl":"\nvarying vec2 clip_commonPosition;\n","vs:DECKGL_FILTER_GL_POSITION":"\n clip_commonPosition = geometry.position.xy;\n","fs:#decl":"\nvarying vec2 clip_commonPosition;\n","fs:DECKGL_FILTER_COLOR":"\n if (!clip_isInBounds(clip_commonPosition)) discard;\n"},bn=function(n){f()(t,n);var e=_n(t);function t(){return i()(this,t),e.apply(this,arguments)}return a()(t,[{key:"getShaders",value:function(){var n="instancePositions"in this.getAttributeManager().attributes;return"clipByInstance"in this.props&&(n=this.props.clipByInstance),this.state.clipByInstance=n,n?{modules:[dn],inject:mn}:{modules:[hn],inject:yn}}},{key:"draw",value:function(n){var e=n.uniforms,t=this.props.clipBounds,r=void 0===t?pn.clipBounds:t;if(this.state.clipByInstance)e.clip_bounds=r;else{var i=this.projectPosition([r[0],r[1],0]),o=this.projectPosition([r[2],r[3],0]);e.clip_bounds=[Math.min(i[0],o[0]),Math.min(i[1],o[1]),Math.max(i[0],o[0]),Math.max(i[1],o[1])]}}}]),t}(d.LayerExtension);v()(bn,"defaultProps",pn),v()(bn,"extensionName","ClipExtension");var gn={name:"mask",dependencies:[d.project],vs:"\nuniform vec4 mask_bounds;\nuniform bool mask_maskByInstance;\nvec2 mask_getCoords(vec4 position) {\n return (position.xy - mask_bounds.xy) / (mask_bounds.zw - mask_bounds.xy);\n}\n",fs:"\nuniform sampler2D mask_texture;\nuniform int mask_channel;\nuniform bool mask_enabled;\nbool mask_isInBounds(vec2 texCoords) {\n if (!mask_enabled) {\n return true;\n }\n vec4 maskColor = texture2D(mask_texture, texCoords);\n float maskValue = 1.0;\n if (mask_channel == 0) {\n maskValue = maskColor.r;\n } else if (mask_channel == 1) {\n maskValue = maskColor.g;\n } else if (mask_channel == 2) {\n maskValue = maskColor.b;\n } else if (mask_channel == 3) {\n maskValue = maskColor.a;\n }\n return maskValue < 0.5;\n}\n",inject:{"vs:#decl":"\nvarying vec2 mask_texCoords;\n","vs:#main-end":"\n vec4 mask_common_position;\n if (mask_maskByInstance) {\n mask_common_position = project_position(vec4(geometry.worldPosition, 1.0));\n } else {\n mask_common_position = geometry.position;\n }\n mask_texCoords = mask_getCoords(mask_common_position);\n","fs:#decl":"\nvarying vec2 mask_texCoords;\n","fs:#main-start":"\n if (mask_enabled) {\n bool mask = mask_isInBounds(mask_texCoords);\n\n // Debug: show extent of render target\n // gl_FragColor = vec4(mask_texCoords, 0.0, 1.0);\n gl_FragColor = texture2D(mask_texture, mask_texCoords);\n\n if (!mask) discard;\n }\n"},getUniforms:function(n){return n&&"maskMap"in n?{mask_texture:n.maskMap}:{}}};function Pn(n){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(n){return!1}}();return function(){var t,r=_()(n);if(e){var i=_()(this).constructor;t=Reflect.construct(r,arguments,i)}else t=r.apply(this,arguments);return c()(this,t)}}var xn=function(n){f()(t,n);var e=Pn(t);function t(){return i()(this,t),e.apply(this,arguments)}return a()(t,[{key:"getShaders",value:function(){var n="instancePositions"in this.getAttributeManager().attributes;return"maskByInstance"in this.props&&(n=Boolean(this.props.maskByInstance)),this.state.maskByInstance=n,{modules:[gn]}}},{key:"draw",value:function(n){var e=n.uniforms,t=n.context,r=n.moduleParameters;e.mask_maskByInstance=this.state.maskByInstance;var i=this.props.maskId,o=void 0===i?"":i,a=r.maskChannels,s=t.viewport;if(a&&a[o]){var f=a[o],l=f.index,c=f.bounds,u=f.coordinateOrigin,_=a[o].coordinateSystem;e.mask_enabled=!0,e.mask_channel=l,_===d.COORDINATE_SYSTEM.DEFAULT&&(_=s.isGeospatial?d.COORDINATE_SYSTEM.LNGLAT:d.COORDINATE_SYSTEM.CARTESIAN);var p={modelMatrix:null,fromCoordinateOrigin:u,fromCoordinateSystem:_},v=this.projectPosition([c[0],c[1],0],p),m=this.projectPosition([c[2],c[3],0],p);e.mask_bounds=[v[0],v[1],m[0],m[1]]}else o&&d.log.warn("Could not find a mask layer with id: ".concat(o))(),e.mask_enabled=!1}}]),t}(d.LayerExtension);v()(xn,"defaultProps",{maskId:""}),v()(xn,"extensionName","MaskExtension"),t.d(e,"BrushingExtension",(function(){return b})),t.d(e,"DataFilterExtension",(function(){return C})),t.d(e,"Fp64Extension",(function(){return Y})),t.d(e,"PathStyleExtension",(function(){return en})),t.d(e,"FillStyleExtension",(function(){return un})),t.d(e,"ClipExtension",(function(){return bn})),t.d(e,"MaskExtension",(function(){return xn})),t.d(e,"project64",(function(){return W}))}])}));
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@deck.gl/extensions",
3
3
  "description": "Plug-and-play functionalities for deck.gl layers",
4
4
  "license": "MIT",
5
- "version": "8.8.19",
5
+ "version": "8.8.21",
6
6
  "publishConfig": {
7
7
  "access": "public"
8
8
  },
@@ -38,5 +38,5 @@
38
38
  "@luma.gl/core": "^8.0.0",
39
39
  "gl-matrix": "^3.0.0"
40
40
  },
41
- "gitHead": "08d96bf264e4b59bf829103df35f38f0825fccc9"
41
+ "gitHead": "8ca244c2a02d11c6f5ad4ef9efaf0921236a1687"
42
42
  }
@@ -146,6 +146,12 @@ const inject = {
146
146
  #endif
147
147
  `,
148
148
 
149
+ 'vs:#main-end': `
150
+ if (dataFilter_value == 0.0) {
151
+ gl_Position = vec4(0.);
152
+ }
153
+ `,
154
+
149
155
  'vs:DECKGL_FILTER_SIZE': `
150
156
  if (filter_transformSize) {
151
157
  size = size * dataFilter_value;
@@ -1 +1 @@
1
- {"version":3,"file":"shader-module.d.ts","sourceRoot":"","sources":["../../src/data-filter/shader-module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,IAAI,YAAY,EAAC,MAAM,qBAAqB,CAAC;AAElE,OAAO,KAAK,EAAC,wBAAwB,EAAC,MAAM,eAAe,CAAC;AAmE5D,aAAK,wBAAwB,GAAG;IAC9B,UAAU,EAAE,GAAG,EAAE,CAAC;CACnB,GAAG,wBAAwB,CAAC;AA2F7B,eAAO,MAAM,YAAY,EAAE,YAAY,CAAC,wBAAwB,CAM/D,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,YAAY,CAAC,wBAAwB,CAMjE,CAAC"}
1
+ {"version":3,"file":"shader-module.d.ts","sourceRoot":"","sources":["../../src/data-filter/shader-module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,IAAI,YAAY,EAAC,MAAM,qBAAqB,CAAC;AAElE,OAAO,KAAK,EAAC,wBAAwB,EAAC,MAAM,eAAe,CAAC;AAmE5D,aAAK,wBAAwB,GAAG;IAC9B,UAAU,EAAE,GAAG,EAAE,CAAC;CACnB,GAAG,wBAAwB,CAAC;AAiG7B,eAAO,MAAM,YAAY,EAAE,YAAY,CAAC,wBAAwB,CAM/D,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,YAAY,CAAC,wBAAwB,CAMjE,CAAC"}
@@ -0,0 +1,38 @@
1
+ import { Effect, PreRenderOptions, CoordinateSystem } from '@deck.gl/core/typed';
2
+ import { Texture2D } from '@luma.gl/core';
3
+ import { MaskBounds } from './utils';
4
+ declare type Mask = {
5
+ /** The channel index */
6
+ index: number;
7
+ bounds: MaskBounds;
8
+ coordinateOrigin: [number, number, number];
9
+ coordinateSystem: CoordinateSystem;
10
+ };
11
+ export default class MaskEffect implements Effect {
12
+ id: string;
13
+ props: null;
14
+ useInPicking: boolean;
15
+ private dummyMaskMap?;
16
+ private channels;
17
+ private masks;
18
+ private maskPass?;
19
+ private maskMap?;
20
+ private lastViewport?;
21
+ preRender(gl: WebGLRenderingContext, { layers, layerFilter, viewports, onViewportActive, views }: PreRenderOptions): void;
22
+ private _renderChannel;
23
+ /**
24
+ * Find a channel to render each mask into
25
+ * If a maskId already exists, diff and update the existing channel
26
+ * Otherwise replace a removed mask
27
+ * Otherwise create a new channel
28
+ * Returns a map from mask layer id to channel info
29
+ */
30
+ private _sortMaskChannels;
31
+ getModuleParameters(): {
32
+ maskMap: Texture2D;
33
+ maskChannels: Record<string, Mask> | null;
34
+ };
35
+ cleanup(): void;
36
+ }
37
+ export {};
38
+ //# sourceMappingURL=mask-effect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mask-effect.d.ts","sourceRoot":"","sources":["../../src/mask/mask-effect.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,MAAM,EACN,gBAAgB,EAEhB,gBAAgB,EAEjB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;AAIxC,OAAO,EAAiC,UAAU,EAAC,MAAM,SAAS,CAAC;AAEnE,aAAK,IAAI,GAAG;IACV,wBAAwB;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,UAAU,CAAC;IACnB,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,gBAAgB,EAAE,gBAAgB,CAAC;CACpC,CAAC;AAcF,MAAM,CAAC,OAAO,OAAO,UAAW,YAAW,MAAM;IAC/C,EAAE,SAAiB;IACnB,KAAK,OAAQ;IACb,YAAY,UAAQ;IAEpB,OAAO,CAAC,YAAY,CAAC,CAAY;IACjC,OAAO,CAAC,QAAQ,CAA0B;IAC1C,OAAO,CAAC,KAAK,CAAqC;IAClD,OAAO,CAAC,QAAQ,CAAC,CAAW;IAC5B,OAAO,CAAC,OAAO,CAAC,CAAY;IAC5B,OAAO,CAAC,YAAY,CAAC,CAAW;IAEhC,SAAS,CACP,EAAE,EAAE,qBAAqB,EACzB,EAAC,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,gBAAgB,EAAE,KAAK,EAAC,EAAE,gBAAgB,GAC1E,IAAI;IAgEP,OAAO,CAAC,cAAc;IA6EtB;;;;;;OAMG;IACH,OAAO,CAAC,iBAAiB;IA4CzB,mBAAmB,IAAI;QACrB,OAAO,EAAE,SAAS,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC;KAC3C;IAOD,OAAO,IAAI,IAAI;CAgBhB"}
@@ -0,0 +1,19 @@
1
+ import { Framebuffer, Texture2D } from '@luma.gl/core';
2
+ import { _LayersPass as LayersPass, LayersPassRenderOptions } from '@deck.gl/core/typed';
3
+ declare type MaskPassRenderOptions = LayersPassRenderOptions & {
4
+ /** The channel to render into, 0:red, 1:green, 2:blue, 3:alpha */
5
+ channel: number;
6
+ };
7
+ export default class MaskPass extends LayersPass {
8
+ maskMap: Texture2D;
9
+ fbo: Framebuffer;
10
+ constructor(gl: any, props: {
11
+ id: string;
12
+ mapSize?: number;
13
+ });
14
+ render(options: MaskPassRenderOptions): any;
15
+ shouldDrawLayer(layer: any): boolean;
16
+ delete(): void;
17
+ }
18
+ export {};
19
+ //# sourceMappingURL=mask-pass.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mask-pass.d.ts","sourceRoot":"","sources":["../../src/mask/mask-pass.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAE,SAAS,EAAiB,MAAM,eAAe,CAAC;AACrE,OAAO,EAAY,WAAW,IAAI,UAAU,EAAE,uBAAuB,EAAC,MAAM,eAAe,CAAC;AAE5F,aAAK,qBAAqB,GAAG,uBAAuB,GAAG;IACrD,kEAAkE;IAClE,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,UAAU;IAC9C,OAAO,EAAE,SAAS,CAAC;IACnB,GAAG,EAAE,WAAW,CAAC;gBAEL,EAAE,KAAA,EAAE,KAAK,EAAE;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAC;IA0BrD,MAAM,CAAC,OAAO,EAAE,qBAAqB;IAoBrC,eAAe,CAAC,KAAK,KAAA;IAIrB,MAAM;CAIP"}
@@ -0,0 +1,13 @@
1
+ import { Layer, Viewport } from '@deck.gl/core/typed';
2
+ export declare type MaskBounds = [number, number, number, number];
3
+ export declare function getMaskBounds({ layers, viewport }: {
4
+ layers: Layer[];
5
+ viewport: Viewport;
6
+ }): MaskBounds;
7
+ export declare function getMaskViewport({ bounds, viewport, width, height }: {
8
+ bounds: MaskBounds;
9
+ viewport: Viewport;
10
+ width: number;
11
+ height: number;
12
+ }): Viewport | null;
13
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/mask/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6C,KAAK,EAAE,QAAQ,EAAC,MAAM,eAAe,CAAC;AAG1F,oBAAY,UAAU,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAO1D,wBAAgB,aAAa,CAAC,EAC5B,MAAM,EACN,QAAQ,EACT,EAAE;IACD,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,QAAQ,EAAE,QAAQ,CAAC;CACpB,GAAG,UAAU,CAkDb;AAKD,wBAAgB,eAAe,CAAC,EAC9B,MAAM,EACN,QAAQ,EACR,KAAK,EACL,MAAM,EACP,EAAE;IACD,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,EAAE,QAAQ,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,QAAQ,GAAG,IAAI,CAsDlB"}