@deck.gl/extensions 9.3.0-alpha.5 → 9.3.0-beta.1

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.
@@ -40,7 +40,7 @@ export type PathStyleExtensionOptions = {
40
40
  */
41
41
  highPrecisionDash: boolean;
42
42
  };
43
- /** Adds selected features to the `PathLayer` and composite layers that render the `PathLayer`. */
43
+ /** Adds selected features to the `PathLayer`, `ScatterplotLayer`, `TextBackgroundLayer`, and composite layers that render them. */
44
44
  export default class PathStyleExtension extends LayerExtension<PathStyleExtensionOptions> {
45
45
  static defaultProps: {
46
46
  getDashArray: {
@@ -56,6 +56,7 @@ export default class PathStyleExtension extends LayerExtension<PathStyleExtensio
56
56
  };
57
57
  static extensionName: string;
58
58
  constructor({ dash, offset, highPrecisionDash }?: Partial<PathStyleExtensionOptions>);
59
+ private getLayerType;
59
60
  isEnabled(layer: Layer<PathStyleExtensionProps>): boolean;
60
61
  getShaders(this: Layer<PathStyleExtensionProps>, extension: this): any;
61
62
  initializeState(this: Layer<PathStyleExtensionProps>, context: LayerContext, extension: this): void;
@@ -1 +1 @@
1
- {"version":3,"file":"path-style-extension.d.ts","sourceRoot":"","sources":["../../src/path-style/path-style-extension.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,cAAc,EAAgC,MAAM,eAAe,CAAC;AAI5E,OAAO,KAAK,EAAC,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAC,MAAM,eAAe,CAAC;AAenF,MAAM,MAAM,uBAAuB,CAAC,KAAK,GAAG,GAAG,IAAI;IACjD;;;OAGG;IACH,YAAY,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAC3D;;;;OAIG;IACH,SAAS,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACpC;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC;;;OAGG;IACH,IAAI,EAAE,OAAO,CAAC;IACd;;;OAGG;IACH,MAAM,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,iBAAiB,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF,kGAAkG;AAClG,MAAM,CAAC,OAAO,OAAO,kBAAmB,SAAQ,cAAc,CAAC,yBAAyB,CAAC;IACvF,MAAM,CAAC,YAAY;;;;;;;;;;;MAAgB;IACnC,MAAM,CAAC,aAAa,SAAwB;gBAEhC,EACV,IAAY,EACZ,MAAc,EACd,iBAAyB,EAC1B,GAAE,OAAO,CAAC,yBAAyB,CAAM;IAI1C,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,uBAAuB,CAAC,GAAG,OAAO;IAIzD,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,uBAAuB,CAAC,EAAE,SAAS,EAAE,IAAI,GAAG,GAAG;IAiCtE,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,uBAAuB,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI;IA4B5F,WAAW,CACT,IAAI,EAAE,KAAK,CAAC,uBAAuB,CAAC,EACpC,MAAM,EAAE,gBAAgB,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC,EACxD,SAAS,EAAE,IAAI;IAejB,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,uBAAuB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE;CAqB5F"}
1
+ {"version":3,"file":"path-style-extension.d.ts","sourceRoot":"","sources":["../../src/path-style/path-style-extension.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,cAAc,EAAgC,MAAM,eAAe,CAAC;AAU5E,OAAO,KAAK,EAAC,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAC,MAAM,eAAe,CAAC;AAmBnF,MAAM,MAAM,uBAAuB,CAAC,KAAK,GAAG,GAAG,IAAI;IACjD;;;OAGG;IACH,YAAY,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAC3D;;;;OAIG;IACH,SAAS,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACpC;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC;;;OAGG;IACH,IAAI,EAAE,OAAO,CAAC;IACd;;;OAGG;IACH,MAAM,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,iBAAiB,EAAE,OAAO,CAAC;CAC5B,CAAC;AAIF,mIAAmI;AACnI,MAAM,CAAC,OAAO,OAAO,kBAAmB,SAAQ,cAAc,CAAC,yBAAyB,CAAC;IACvF,MAAM,CAAC,YAAY;;;;;;;;;;;MAAgB;IACnC,MAAM,CAAC,aAAa,SAAwB;gBAEhC,EACV,IAAY,EACZ,MAAc,EACd,iBAAyB,EAC1B,GAAE,OAAO,CAAC,yBAAyB,CAAM;IAI1C,OAAO,CAAC,YAAY;IAcpB,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,uBAAuB,CAAC,GAAG,OAAO;IAIzD,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,uBAAuB,CAAC,EAAE,SAAS,EAAE,IAAI,GAAG,GAAG;IAoDtE,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,uBAAuB,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI;IA4B5F,WAAW,CACT,IAAI,EAAE,KAAK,CAAC,uBAAuB,CAAC,EACpC,MAAM,EAAE,gBAAgB,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC,EACxD,SAAS,EAAE,IAAI;IAuBjB,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,uBAAuB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE;CAqB5F"}
@@ -3,26 +3,56 @@
3
3
  // Copyright (c) vis.gl contributors
4
4
  import { LayerExtension, _mergeShaders as mergeShaders } from '@deck.gl/core';
5
5
  import { vec3 } from '@math.gl/core';
6
- import { dashShaders, offsetShaders } from "./shaders.glsl.js";
6
+ import { dashShaders, offsetShaders, scatterplotDashShaders, textBackgroundDashShaders } from "./shaders.glsl.js";
7
7
  const defaultProps = {
8
8
  getDashArray: { type: 'accessor', value: [0, 0] },
9
9
  getOffset: { type: 'accessor', value: 0 },
10
10
  dashJustified: false,
11
11
  dashGapPickable: false
12
12
  };
13
- /** Adds selected features to the `PathLayer` and composite layers that render the `PathLayer`. */
13
+ /** Adds selected features to the `PathLayer`, `ScatterplotLayer`, `TextBackgroundLayer`, and composite layers that render them. */
14
14
  class PathStyleExtension extends LayerExtension {
15
15
  constructor({ dash = false, offset = false, highPrecisionDash = false } = {}) {
16
16
  super({ dash: dash || highPrecisionDash, offset, highPrecisionDash });
17
17
  }
18
+ getLayerType(layer) {
19
+ if ('pathTesselator' in layer.state) {
20
+ return 'path';
21
+ }
22
+ const layerName = layer.constructor.layerName;
23
+ if (layerName === 'ScatterplotLayer') {
24
+ return 'scatterplot';
25
+ }
26
+ if (layerName === 'TextBackgroundLayer') {
27
+ return 'textBackground';
28
+ }
29
+ return null;
30
+ }
18
31
  isEnabled(layer) {
19
- return 'pathTesselator' in layer.state;
32
+ return this.getLayerType(layer) !== null;
20
33
  }
21
34
  getShaders(extension) {
22
- if (!extension.isEnabled(this)) {
35
+ const layerType = extension.getLayerType(this);
36
+ if (!layerType) {
23
37
  return null;
24
38
  }
25
- // Merge shader injection
39
+ if (layerType === 'scatterplot' || layerType === 'textBackground') {
40
+ if (!extension.opts.dash) {
41
+ return null;
42
+ }
43
+ const inject = layerType === 'scatterplot'
44
+ ? scatterplotDashShaders.inject
45
+ : textBackgroundDashShaders.inject;
46
+ const pathStyle = {
47
+ name: 'pathStyle',
48
+ inject,
49
+ uniformTypes: {
50
+ dashGapPickable: 'i32'
51
+ }
52
+ };
53
+ return { modules: [pathStyle] };
54
+ }
55
+ // PathLayer: existing logic
26
56
  let result = {};
27
57
  const defines = {};
28
58
  if (extension.opts.dash) {
@@ -50,14 +80,14 @@ class PathStyleExtension extends LayerExtension {
50
80
  }
51
81
  initializeState(context, extension) {
52
82
  const attributeManager = this.getAttributeManager();
53
- if (!attributeManager || !extension.isEnabled(this)) {
54
- // This extension only works with the PathLayer
83
+ const layerType = extension.getLayerType(this);
84
+ if (!attributeManager || !layerType) {
55
85
  return;
56
86
  }
57
87
  if (extension.opts.dash) {
58
88
  attributeManager.addInstanced({
59
89
  instanceDashArrays: { size: 2, accessor: 'getDashArray' },
60
- ...(extension.opts.highPrecisionDash
90
+ ...(layerType === 'path' && extension.opts.highPrecisionDash
61
91
  ? {
62
92
  instanceDashOffsets: {
63
93
  size: 1,
@@ -68,7 +98,7 @@ class PathStyleExtension extends LayerExtension {
68
98
  : {})
69
99
  });
70
100
  }
71
- if (extension.opts.offset) {
101
+ if (layerType === 'path' && extension.opts.offset) {
72
102
  attributeManager.addInstanced({
73
103
  instanceOffsets: { size: 1, accessor: 'getOffset' }
74
104
  });
@@ -79,11 +109,20 @@ class PathStyleExtension extends LayerExtension {
79
109
  return;
80
110
  }
81
111
  if (extension.opts.dash) {
82
- const pathStyleProps = {
83
- dashAlignMode: this.props.dashJustified ? 1 : 0,
84
- dashGapPickable: Boolean(this.props.dashGapPickable)
85
- };
86
- this.setShaderModuleProps({ pathStyle: pathStyleProps });
112
+ const layerType = extension.getLayerType(this);
113
+ if (layerType === 'scatterplot' || layerType === 'textBackground') {
114
+ const pathStyleProps = {
115
+ dashGapPickable: Boolean(this.props.dashGapPickable)
116
+ };
117
+ this.setShaderModuleProps({ pathStyle: pathStyleProps });
118
+ }
119
+ else {
120
+ const pathStyleProps = {
121
+ dashAlignMode: this.props.dashJustified ? 1 : 0,
122
+ dashGapPickable: Boolean(this.props.dashGapPickable)
123
+ };
124
+ this.setShaderModuleProps({ pathStyle: pathStyleProps });
125
+ }
87
126
  }
88
127
  }
89
128
  getDashOffsets(path) {
@@ -1 +1 @@
1
- {"version":3,"file":"path-style-extension.js","sourceRoot":"","sources":["../../src/path-style/path-style-extension.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"path-style-extension.js","sourceRoot":"","sources":["../../src/path-style/path-style-extension.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,24 @@ export declare const dashShaders: {
12
12
  'fs:#main-start': string;
13
13
  };
14
14
  };
15
+ export declare const scatterplotDashShaders: {
16
+ inject: {
17
+ 'vs:#decl': string;
18
+ 'vs:#main-end': string;
19
+ 'fs:#decl': string;
20
+ 'fs:#main-start': string;
21
+ 'fs:#main-end': string;
22
+ };
23
+ };
24
+ export declare const textBackgroundDashShaders: {
25
+ inject: {
26
+ 'vs:#decl': string;
27
+ 'vs:#main-end': string;
28
+ 'fs:#decl': string;
29
+ 'fs:#main-start': string;
30
+ 'fs:#main-end': string;
31
+ };
32
+ };
15
33
  export declare const offsetShaders: {
16
34
  inject: {
17
35
  'vs:#decl': string;
@@ -1 +1 @@
1
- {"version":3,"file":"shaders.glsl.d.ts","sourceRoot":"","sources":["../../src/path-style/shaders.glsl.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,OAAO,GAAG;IAEpB;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B,CAAC;AAEF,eAAO,MAAM,WAAW;;;;;;;CA4EvB,CAAC;AAEF,eAAO,MAAM,aAAa;;;;;;;CAwBzB,CAAC"}
1
+ {"version":3,"file":"shaders.glsl.d.ts","sourceRoot":"","sources":["../../src/path-style/shaders.glsl.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,OAAO,GAAG;IAEpB;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B,CAAC;AAEF,eAAO,MAAM,WAAW;;;;;;;CA4EvB,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;;;;;;CAwDlC,CAAC;AAEF,eAAO,MAAM,yBAAyB;;;;;;;;CAyJrC,CAAC;AAEF,eAAO,MAAM,aAAa;;;;;;;CAwBzB,CAAC"}
@@ -69,6 +69,188 @@ discard;
69
69
  `
70
70
  }
71
71
  };
72
+ export const scatterplotDashShaders = {
73
+ inject: {
74
+ 'vs:#decl': `
75
+ in vec2 instanceDashArrays;
76
+ out vec2 vDashArray;
77
+ `,
78
+ 'vs:#main-end': `
79
+ vDashArray = instanceDashArrays;
80
+ `,
81
+ 'fs:#decl': `
82
+ layout(std140) uniform pathStyleUniforms {
83
+ bool dashGapPickable;
84
+ } pathStyle;
85
+ in vec2 vDashArray;
86
+ #define PI 3.141592653589793
87
+ `,
88
+ 'fs:#main-start': `
89
+ bool inDashGap = false;
90
+ float dashUnitLength = vDashArray.x + vDashArray.y;
91
+ if (dashUnitLength > 0.0 && scatterplot.stroked > 0.5) {
92
+ float _distToCenter = length(unitPosition) * outerRadiusPixels;
93
+ float innerRadius = innerUnitRadius * outerRadiusPixels;
94
+ if (_distToCenter >= innerRadius) {
95
+ float strokeWidth = (1.0 - innerUnitRadius) * outerRadiusPixels;
96
+ float midStrokeRadius = (innerUnitRadius + 1.0) * 0.5 * outerRadiusPixels;
97
+ float angle = atan(unitPosition.y, unitPosition.x) + PI;
98
+ float circumference = 2.0 * PI * midStrokeRadius;
99
+ float posAlongStroke = (angle / (2.0 * PI)) * circumference / strokeWidth;
100
+ float unitOffset = mod(posAlongStroke, dashUnitLength);
101
+ if (unitOffset > vDashArray.x) {
102
+ if (scatterplot.filled > 0.5) {
103
+ inDashGap = true;
104
+ } else {
105
+ if (!(pathStyle.dashGapPickable && bool(picking.isActive))) {
106
+ discard;
107
+ }
108
+ }
109
+ }
110
+ }
111
+ }
112
+ `,
113
+ 'fs:#main-end': `
114
+ if (inDashGap) {
115
+ float alphaFactor = fragColor.a / max(vLineColor.a, 0.001);
116
+ fragColor = vec4(vFillColor.rgb, vFillColor.a * alphaFactor);
117
+ fragColor = picking_filterPickingColor(fragColor);
118
+ fragColor = picking_filterHighlightColor(fragColor);
119
+ }
120
+ `
121
+ }
122
+ };
123
+ export const textBackgroundDashShaders = {
124
+ inject: {
125
+ 'vs:#decl': `
126
+ in vec2 instanceDashArrays;
127
+ out vec2 vDashArray;
128
+ `,
129
+ 'vs:#main-end': `
130
+ vDashArray = instanceDashArrays;
131
+ `,
132
+ 'fs:#decl': `
133
+ layout(std140) uniform pathStyleUniforms {
134
+ bool dashGapPickable;
135
+ } pathStyle;
136
+ in vec2 vDashArray;
137
+ #define PI 3.141592653589793
138
+ float getPerimeterPosition(vec2 fragUV, vec2 dims, vec4 radii, float lineWidth) {
139
+ float width = dims.x;
140
+ float height = dims.y;
141
+ float maxRadius = min(width, height) * 0.5;
142
+ float rBL = min(radii.w, maxRadius);
143
+ float rTL = min(radii.z, maxRadius);
144
+ float rTR = min(radii.x, maxRadius);
145
+ float rBR = min(radii.y, maxRadius);
146
+ vec2 p = fragUV * dims;
147
+ float leftLen = height - rBL - rTL;
148
+ float topLen = width - rTL - rTR;
149
+ float rightLen = height - rTR - rBR;
150
+ float bottomLen = width - rBR - rBL;
151
+ float arcBL = PI * 0.5 * rBL;
152
+ float arcTL = PI * 0.5 * rTL;
153
+ float arcTR = PI * 0.5 * rTR;
154
+ float arcBR = PI * 0.5 * rBR;
155
+ float pos = 0.0;
156
+ float distLeft = p.x;
157
+ float distRight = width - p.x;
158
+ float distBottom = p.y;
159
+ float distTop = height - p.y;
160
+ float minDist = min(min(distLeft, distRight), min(distBottom, distTop));
161
+ if (p.x < rBL && p.y < rBL) {
162
+ vec2 c = vec2(rBL, rBL);
163
+ vec2 d = p - c;
164
+ float angle = atan(-d.x, -d.y);
165
+ pos = angle / (PI * 0.5) * arcBL;
166
+ } else if (p.x < rTL && p.y > height - rTL) {
167
+ vec2 c = vec2(rTL, height - rTL);
168
+ vec2 d = p - c;
169
+ float angle = atan(d.y, -d.x);
170
+ pos = arcBL + leftLen + angle / (PI * 0.5) * arcTL;
171
+ } else if (p.x > width - rTR && p.y > height - rTR) {
172
+ vec2 c = vec2(width - rTR, height - rTR);
173
+ vec2 d = p - c;
174
+ float angle = atan(d.x, d.y);
175
+ pos = arcBL + leftLen + arcTL + topLen + angle / (PI * 0.5) * arcTR;
176
+ } else if (p.x > width - rBR && p.y < rBR) {
177
+ vec2 c = vec2(width - rBR, rBR);
178
+ vec2 d = p - c;
179
+ float angle = atan(-d.y, d.x);
180
+ pos = arcBL + leftLen + arcTL + topLen + arcTR + rightLen + angle / (PI * 0.5) * arcBR;
181
+ } else if (minDist == distLeft) {
182
+ pos = arcBL + clamp(p.y - rBL, 0.0, leftLen);
183
+ } else if (minDist == distTop) {
184
+ pos = arcBL + leftLen + arcTL + clamp(p.x - rTL, 0.0, topLen);
185
+ } else if (minDist == distRight) {
186
+ pos = arcBL + leftLen + arcTL + topLen + arcTR + clamp(height - rTR - p.y, 0.0, rightLen);
187
+ } else {
188
+ pos = arcBL + leftLen + arcTL + topLen + arcTR + rightLen + arcBR + clamp(width - rBR - p.x, 0.0, bottomLen);
189
+ }
190
+ return pos / lineWidth;
191
+ }
192
+ float getRectPerimeterPosition(vec2 fragUV, vec2 dims, float lineWidth) {
193
+ float width = dims.x;
194
+ float height = dims.y;
195
+ float distLeft = fragUV.x * width;
196
+ float distRight = (1.0 - fragUV.x) * width;
197
+ float distBottom = fragUV.y * height;
198
+ float distTop = (1.0 - fragUV.y) * height;
199
+ float minDist = min(min(distLeft, distRight), min(distBottom, distTop));
200
+ float pos = 0.0;
201
+ if (minDist == distLeft) {
202
+ pos = fragUV.y * height;
203
+ } else if (minDist == distTop) {
204
+ pos = height + fragUV.x * width;
205
+ } else if (minDist == distRight) {
206
+ pos = height + width + (1.0 - fragUV.y) * height;
207
+ } else {
208
+ pos = 2.0 * height + width + (1.0 - fragUV.x) * width;
209
+ }
210
+ return pos / lineWidth;
211
+ }
212
+ `,
213
+ 'fs:#main-start': `
214
+ bool inDashGap = false;
215
+ float dashUnitLength = vDashArray.x + vDashArray.y;
216
+ if (dashUnitLength > 0.0 && textBackground.stroked) {
217
+ float distToEdge;
218
+ bool hasRoundedCorners = textBackground.borderRadius != vec4(0.0);
219
+ if (hasRoundedCorners) {
220
+ distToEdge = round_rect(uv, dimensions, textBackground.borderRadius);
221
+ } else {
222
+ distToEdge = rect(uv, dimensions);
223
+ }
224
+ if (distToEdge <= vLineWidth && distToEdge >= 0.0) {
225
+ float posAlongStroke;
226
+ if (hasRoundedCorners) {
227
+ posAlongStroke = getPerimeterPosition(uv, dimensions, textBackground.borderRadius, vLineWidth);
228
+ } else {
229
+ posAlongStroke = getRectPerimeterPosition(uv, dimensions, vLineWidth);
230
+ }
231
+ float unitOffset = mod(posAlongStroke, dashUnitLength);
232
+ if (unitOffset > vDashArray.x) {
233
+ if (vFillColor.a > 0.0) {
234
+ inDashGap = true;
235
+ } else {
236
+ if (!(pathStyle.dashGapPickable && bool(picking.isActive))) {
237
+ discard;
238
+ }
239
+ }
240
+ }
241
+ }
242
+ }
243
+ `,
244
+ 'fs:#main-end': `
245
+ if (inDashGap) {
246
+ float alphaFactor = fragColor.a / max(vLineColor.a, 0.001);
247
+ fragColor = vec4(vFillColor.rgb, vFillColor.a * alphaFactor);
248
+ fragColor = picking_filterPickingColor(fragColor);
249
+ fragColor = picking_filterHighlightColor(fragColor);
250
+ }
251
+ `
252
+ }
253
+ };
72
254
  export const offsetShaders = {
73
255
  inject: {
74
256
  'vs:#decl': `
@@ -1 +1 @@
1
- {"version":3,"file":"shaders.glsl.js","sourceRoot":"","sources":["../../src/path-style/shaders.glsl.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAUpC,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,MAAM,EAAE;QACN,UAAU,EAAE;;;;;;;CAOf;QAEG,cAAc,EAAE;;;;;;;CAOnB;QAEG,UAAU;;;;;;;CAQb;QAEG,0DAA0D;QAC1D,sDAAsD;QACtD,6CAA6C;QAC7C,aAAa;QACb,oBAAoB;QACpB,mEAAmE;QACnE,kEAAkE;QAClE,mEAAmE;QACnE,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoCnB;KACE;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,MAAM,EAAE;QACN,UAAU,EAAE;;CAEf;QACG,uBAAuB;;;CAG1B;QACG,cAAc;;;;;;CAMjB;QACG,gBAAgB;;;;;;CAMnB;KACE;CACF,CAAC"}
1
+ {"version":3,"file":"shaders.glsl.js","sourceRoot":"","sources":["../../src/path-style/shaders.glsl.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAUpC,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,MAAM,EAAE;QACN,UAAU,EAAE;;;;;;;CAOf;QAEG,cAAc,EAAE;;;;;;;CAOnB;QAEG,UAAU;;;;;;;CAQb;QAEG,0DAA0D;QAC1D,sDAAsD;QACtD,6CAA6C;QAC7C,aAAa;QACb,oBAAoB;QACpB,mEAAmE;QACnE,kEAAkE;QAClE,mEAAmE;QACnE,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoCnB;KACE;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,MAAM,EAAE;QACN,UAAU,EAAE;;;CAGf;QAEG,cAAc,EAAE;;CAEnB;QAEG,UAAU;;;;;;CAQb;QAEG,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;CAwBnB;QAEG,cAAc;;;;;;;CAOjB;KACE;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,MAAM,EAAE;QACN,UAAU,EAAE;;;CAGf;QAEG,cAAc,EAAE;;CAEnB;QAEG,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkGb;QAEG,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BnB;QAEG,cAAc;;;;;;;CAOjB;KACE;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,MAAM,EAAE;QACN,UAAU,EAAE;;CAEf;QACG,uBAAuB;;;CAG1B;QACG,cAAc;;;;;;CAMjB;QACG,gBAAgB;;;;;;CAMnB;KACE;CACF,CAAC"}