ol 10.4.1-dev.1742586599854 → 10.4.1-dev.1742845130862

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.
@@ -203,6 +203,7 @@ export type ArgValidator = (arg0: Array<EncodedExpression>, arg1: number, arg2:
203
203
  * * `['any', value1, value2, ...]` returns `true` if any of the inputs are `true`, `false` otherwise.
204
204
  * * `['has', attributeName, keyOrArrayIndex, ...]` returns `true` if feature properties include the (nested) key `attributeName`,
205
205
  * `false` otherwise.
206
+ * Note that for WebGL layers, the hardcoded value `-9999999` is used to distinguish when a property is not defined.
206
207
  * * `['between', value1, value2, value3]` returns `true` if `value1` is contained between `value2` and `value3`
207
208
  * (inclusively), or `false` otherwise.
208
209
  * * `['in', needle, haystack]` returns `true` if `needle` is found in `haystack`, and
@@ -1 +1 @@
1
- {"version":3,"file":"expression.d.ts","sourceRoot":"","sources":["expression.js"],"names":[],"mappings":"AAoKA;;;;GAIG;AACH,+BAHW,MAAM,GACL,MAAM,CAgBjB;AAED;;;;GAIG;AACH,oCAJW,MAAM,YACN,MAAM,GACL,OAAO,CAIlB;AAED;;;;GAIG;AACH,sCAJW,MAAM,aACN,MAAM,GACL,OAAO,CAIlB;AAED;;;;GAIG;AACH,6BAJW,MAAM,YACN,MAAM,GACL,OAAO,CAIlB;AAmCD;;GAEG;AAEH;;;;;;;GAOG;AAEH;;GAEG;AACH,qCAFY,cAAc,CAUzB;AAED;;GAEG;AAEH;;;;;GAKG;AACH,+BALW,iBAAiB,gBACjB,MAAM,WACN,cAAc,GACb,UAAU,CA6FrB;AA8oBD;;;;GAIG;AACH,8CAHW,OAAO,qBAAqB,EAAE,OAAO,GAAC,OAAO,sBAAsB,EAAE,OAAO,GAC3E,OAAO,GAAC,YAAY,GAAC,SAAS,GAAC,EAAE,CA2B5C;AAx5BD,uBAAwB,CAAC,CAAC;AAC1B,iCAA2C;AAC3C,gCAA0C;AAC1C,gCAA0C;AAC1C,+BAAyC;AACzC,qCAA+C;AAC/C,8BAAwC;AACxC,6BAAiD;AAqEjD;;GAEG;AAEH;IACE;;;OAGG;IACH,kBAHW,MAAM,SACN,YAAY,EAUtB;IAFC,aAAgB;IAChB,oBAAkB;CAErB;AAED;IACE;;;;OAIG;IACH,kBAJW,MAAM,YACN,MAAM,WACH,UAAU,EAAA,EAMvB;IAHC,aAAgB;IAChB,iBAAwB;IACxB,mBAAgB;CAEnB;AAmID;;GAEG;AACH;;EAgDE;yBAnLW,iBAAiB,GAAC,cAAc;;;;;eAK/B,GAAG,CAAC,MAAM,CAAC;;;;gBACX,GAAG,CAAC,MAAM,CAAC;;;;eACX,OAAO;;;;kBACP,OAAO;;;;cACP,OAAO;;gCAiBR,YAAY,QAAM;;;;;2BAyUlB,CAAS,IAAwB,EAAxB,KAAK,CAAC,iBAAiB,CAAC,EAAE,IAAM,EAAN,MAAM,EAAE,IAAc,EAAd,cAAc,KAAE,KAAK,CAAC,UAAU,CAAC,GAAC,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8BAtdjF,KAAK,CAAC,GAAC,CAAC,GAAC,OAAO,aAAa,EAAE,KAAK,GAAC,MAAM,GAAC,MAAM,GAAC,OAAO;2BAkF1D,OAAO,GAAC,MAAM,GAAC,MAAM,GAAC,KAAK,CAAC,MAAM,CAAC;;;;qBAuNnC,CAAS,IAAK,SAAE,IAAM,EAAN,MAAM,EAAE,IAAc,EAAd,cAAc,KAAE,UAAU"}
1
+ {"version":3,"file":"expression.d.ts","sourceRoot":"","sources":["expression.js"],"names":[],"mappings":"AAqKA;;;;GAIG;AACH,+BAHW,MAAM,GACL,MAAM,CAgBjB;AAED;;;;GAIG;AACH,oCAJW,MAAM,YACN,MAAM,GACL,OAAO,CAIlB;AAED;;;;GAIG;AACH,sCAJW,MAAM,aACN,MAAM,GACL,OAAO,CAIlB;AAED;;;;GAIG;AACH,6BAJW,MAAM,YACN,MAAM,GACL,OAAO,CAIlB;AAmCD;;GAEG;AAEH;;;;;;;GAOG;AAEH;;GAEG;AACH,qCAFY,cAAc,CAUzB;AAED;;GAEG;AAEH;;;;;GAKG;AACH,+BALW,iBAAiB,gBACjB,MAAM,WACN,cAAc,GACb,UAAU,CA6FrB;AA8oBD;;;;GAIG;AACH,8CAHW,OAAO,qBAAqB,EAAE,OAAO,GAAC,OAAO,sBAAsB,EAAE,OAAO,GAC3E,OAAO,GAAC,YAAY,GAAC,SAAS,GAAC,EAAE,CA2B5C;AAx5BD,uBAAwB,CAAC,CAAC;AAC1B,iCAA2C;AAC3C,gCAA0C;AAC1C,gCAA0C;AAC1C,+BAAyC;AACzC,qCAA+C;AAC/C,8BAAwC;AACxC,6BAAiD;AAqEjD;;GAEG;AAEH;IACE;;;OAGG;IACH,kBAHW,MAAM,SACN,YAAY,EAUtB;IAFC,aAAgB;IAChB,oBAAkB;CAErB;AAED;IACE;;;;OAIG;IACH,kBAJW,MAAM,YACN,MAAM,WACH,UAAU,EAAA,EAMvB;IAHC,aAAgB;IAChB,iBAAwB;IACxB,mBAAgB;CAEnB;AAmID;;GAEG;AACH;;EAgDE;yBAnLW,iBAAiB,GAAC,cAAc;;;;;eAK/B,GAAG,CAAC,MAAM,CAAC;;;;gBACX,GAAG,CAAC,MAAM,CAAC;;;;eACX,OAAO;;;;kBACP,OAAO;;;;cACP,OAAO;;gCAiBR,YAAY,QAAM;;;;;2BAyUlB,CAAS,IAAwB,EAAxB,KAAK,CAAC,iBAAiB,CAAC,EAAE,IAAM,EAAN,MAAM,EAAE,IAAc,EAAd,cAAc,KAAE,KAAK,CAAC,UAAU,CAAC,GAAC,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8BAtdjF,KAAK,CAAC,GAAC,CAAC,GAAC,OAAO,aAAa,EAAE,KAAK,GAAC,MAAM,GAAC,MAAM,GAAC,OAAO;2BAkF1D,OAAO,GAAC,MAAM,GAAC,MAAM,GAAC,KAAK,CAAC,MAAM,CAAC;;;;qBAuNnC,CAAS,IAAK,SAAE,IAAM,EAAN,MAAM,EAAE,IAAc,EAAd,cAAc,KAAE,UAAU"}
@@ -96,6 +96,7 @@ import {toSize} from '../size.js';
96
96
  * * `['any', value1, value2, ...]` returns `true` if any of the inputs are `true`, `false` otherwise.
97
97
  * * `['has', attributeName, keyOrArrayIndex, ...]` returns `true` if feature properties include the (nested) key `attributeName`,
98
98
  * `false` otherwise.
99
+ * Note that for WebGL layers, the hardcoded value `-9999999` is used to distinguish when a property is not defined.
99
100
  * * `['between', value1, value2, value3]` returns `true` if `value1` is contained between `value2` and `value3`
100
101
  * (inclusively), or `false` otherwise.
101
102
  * * `['in', needle, haystack]` returns `true` if `needle` is found in `haystack`, and
package/expr/gpu.d.ts CHANGED
@@ -97,6 +97,10 @@ export function buildExpression(encoded: import("./expression.js").EncodedExpres
97
97
  export const PALETTE_TEXTURE_ARRAY: "u_paletteTextures";
98
98
  export const FEATURE_ID_PROPERTY_NAME: "featureId";
99
99
  export const GEOMETRY_TYPE_PROPERTY_NAME: "geometryType";
100
+ /**
101
+ * The value `-9999999` will be used to indicate that a property on a feature is not defined, similar to a "no data" value.
102
+ */
103
+ export const UNDEFINED_PROP_VALUE: -9999999;
100
104
  export type ParsingContext = import("./expression.js").ParsingContext;
101
105
  export type Expression = import("./expression.js").Expression;
102
106
  export type LiteralExpression = import("./expression.js").LiteralExpression;
package/expr/gpu.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"gpu.d.ts","sourceRoot":"","sources":["gpu.js"],"names":[],"mappings":"AA6BA;;;;GAIG;AACH,gCAHW,MAAM,GACL,MAAM,CAKjB;AAED;;;;GAIG;AACH,mCAHW,KAAK,CAAC,MAAM,CAAC,GACZ,MAAM,CASjB;AAED;;;;;;GAMG;AACH,mCALW,MAAM,GAAC,OAAO,aAAa,EAAE,KAAK,GAGjC,MAAM,CAMjB;AAED;;;;GAIG;AACH,iCAHW,MAAM,GAAC,OAAO,YAAY,EAAE,IAAI,GAC/B,MAAM,CAKjB;AAMD;;;;GAIG;AACH,kDAHW,MAAM,GACL,MAAM,CAOjB;AAED;;;;;;GAMG;AACH,qCAHW,MAAM,GACL,MAAM,CAIjB;AAED;;;;GAIG;AACH,qDAHW,MAAM,GACL,MAAM,CAIjB;AAED;;GAEG;AACH;;;GAGG;AACH;;;GAGG;AAEH;;;;GAIG;AAEH;;;;GAIG;AAEH;;;;;;;;;GASG;AAEH;;GAEG;AACH,yCAFY,kBAAkB,CAW7B;AASD;;GAEG;AAEH;;;GAGG;AAEH;;;;;;GAMG;AACH,yCANW,OAAO,iBAAiB,EAAE,iBAAiB,QAC3C,MAAM,kBACN,OAAO,iBAAiB,EAAE,cAAc,sBACxC,kBAAkB,GACjB,kBAAkB,CAU7B;AA7BD,oCAAqC,mBAAmB,CAAC;AAEzD,uCAAwC,WAAW,CAAC;AACpD,0CAA2C,cAAc,CAAC;6BArD7C,OAAO,iBAAiB,EAAE,cAAc;yBAIxC,OAAO,iBAAiB,EAAE,UAAU;gCAIpC,OAAO,iBAAiB,EAAE,iBAAiB;;;;;UAK1C,MAAM;;;;UACN,MAAM;;;;;;UAKN,MAAM;;;;UACN,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eAUN,OAAO;;;;kBACP,OAAO;;iCAyBR,MAAM;;;;uBAIN,CAAS,IAAkB,EAAlB,kBAAkB,EAAE,IAAc,EAAd,cAAc,EAAE,IAAM,EAAN,MAAM,KAAG,MAAM;2BAvK9C,4BAA4B;+BAYhD,iBAAiB"}
1
+ {"version":3,"file":"gpu.d.ts","sourceRoot":"","sources":["gpu.js"],"names":[],"mappings":"AA6BA;;;;GAIG;AACH,gCAHW,MAAM,GACL,MAAM,CAKjB;AAED;;;;GAIG;AACH,mCAHW,KAAK,CAAC,MAAM,CAAC,GACZ,MAAM,CASjB;AAED;;;;;;GAMG;AACH,mCALW,MAAM,GAAC,OAAO,aAAa,EAAE,KAAK,GAGjC,MAAM,CAMjB;AAED;;;;GAIG;AACH,iCAHW,MAAM,GAAC,OAAO,YAAY,EAAE,IAAI,GAC/B,MAAM,CAKjB;AAMD;;;;GAIG;AACH,kDAHW,MAAM,GACL,MAAM,CAOjB;AAED;;;;;;GAMG;AACH,qCAHW,MAAM,GACL,MAAM,CAIjB;AAED;;;;GAIG;AACH,qDAHW,MAAM,GACL,MAAM,CAIjB;AAED;;GAEG;AACH;;;GAGG;AACH;;;GAGG;AAEH;;;;GAIG;AAEH;;;;GAIG;AAEH;;;;;;;;;GASG;AAEH;;GAEG;AACH,yCAFY,kBAAkB,CAW7B;AAcD;;GAEG;AAEH;;;GAGG;AAEH;;;;;;GAMG;AACH,yCANW,OAAO,iBAAiB,EAAE,iBAAiB,QAC3C,MAAM,kBACN,OAAO,iBAAiB,EAAE,cAAc,sBACxC,kBAAkB,GACjB,kBAAkB,CAU7B;AAlCD,oCAAqC,mBAAmB,CAAC;AAEzD,uCAAwC,WAAW,CAAC;AACpD,0CAA2C,cAAc,CAAC;AAE1D;;GAEG;AACH,mCAAoC,CAAC,OAAO,CAAC;6BA1DhC,OAAO,iBAAiB,EAAE,cAAc;yBAIxC,OAAO,iBAAiB,EAAE,UAAU;gCAIpC,OAAO,iBAAiB,EAAE,iBAAiB;;;;;UAK1C,MAAM;;;;UACN,MAAM;;;;;;UAKN,MAAM;;;;UACN,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eAUN,OAAO;;;;kBACP,OAAO;;iCA8BR,MAAM;;;;uBAIN,CAAS,IAAkB,EAAlB,kBAAkB,EAAE,IAAc,EAAd,cAAc,EAAE,IAAM,EAAN,MAAM,KAAG,MAAM;2BA5K9C,4BAA4B;+BAYhD,iBAAiB"}
package/expr/gpu.js CHANGED
@@ -166,6 +166,11 @@ export const PALETTE_TEXTURE_ARRAY = 'u_paletteTextures';
166
166
  export const FEATURE_ID_PROPERTY_NAME = 'featureId';
167
167
  export const GEOMETRY_TYPE_PROPERTY_NAME = 'geometryType';
168
168
 
169
+ /**
170
+ * The value `-9999999` will be used to indicate that a property on a feature is not defined, similar to a "no data" value.
171
+ */
172
+ export const UNDEFINED_PROP_VALUE = -9999999;
173
+
169
174
  /**
170
175
  * @typedef {string} CompiledExpression
171
176
  */
@@ -244,6 +249,18 @@ const compilers = {
244
249
  }
245
250
  return uniformNameForVariable(varName);
246
251
  },
252
+ [Ops.Has]: (context, expression) => {
253
+ const firstArg = /** @type {LiteralExpression} */ (expression.args[0]);
254
+ const propName = /** @type {string} */ (firstArg.value);
255
+ const isExisting = propName in context.properties;
256
+ if (!isExisting) {
257
+ context.properties[propName] = {
258
+ name: propName,
259
+ type: expression.type,
260
+ };
261
+ }
262
+ return `(a_prop_${propName} != ${numberToGlsl(UNDEFINED_PROP_VALUE)})`;
263
+ },
247
264
  [Ops.Resolution]: () => 'u_resolution',
248
265
  [Ops.Zoom]: () => 'u_zoom',
249
266
  [Ops.Time]: () => 'u_time',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ol",
3
- "version": "10.4.1-dev.1742586599854",
3
+ "version": "10.4.1-dev.1742845130862",
4
4
  "description": "OpenLayers mapping library",
5
5
  "keywords": [
6
6
  "map",
@@ -1 +1 @@
1
- {"version":3,"file":"renderinstructions.d.ts","sourceRoot":"","sources":["renderinstructions.js"],"names":[],"mappings":"AAwCA;;;GAGG;AACH,0DAHW,OAAO,0BAA0B,EAAE,oBAAoB,GACtD,MAAM,CAOjB;AAED;;;;;;;;GAQG;AACH,uDANW,OAAO,yBAAyB,EAAE,kBAAkB,sBACpD,YAAY,oBACZ,OAAO,0BAA0B,EAAE,oBAAoB,aACvD,OAAO,oBAAoB,EAAE,SAAS,GACrC,YAAY,CAyCvB;AAED;;;;;;;;GAQG;AACH,4DANW,OAAO,yBAAyB,EAAE,uBAAuB,sBACzD,YAAY,oBACZ,OAAO,0BAA0B,EAAE,oBAAoB,aACvD,OAAO,oBAAoB,EAAE,SAAS,GACrC,YAAY,CAyDvB;AAED;;;;;;;;GAQG;AACH,yDANW,OAAO,yBAAyB,EAAE,oBAAoB,sBACtD,YAAY,oBACZ,OAAO,0BAA0B,EAAE,oBAAoB,aACvD,OAAO,oBAAoB,EAAE,SAAS,GACrC,YAAY,CAoEvB"}
1
+ {"version":3,"file":"renderinstructions.d.ts","sourceRoot":"","sources":["renderinstructions.js"],"names":[],"mappings":"AAkDA;;;GAGG;AACH,0DAHW,OAAO,0BAA0B,EAAE,oBAAoB,GACtD,MAAM,CAOjB;AAED;;;;;;;;GAQG;AACH,uDANW,OAAO,yBAAyB,EAAE,kBAAkB,sBACpD,YAAY,oBACZ,OAAO,0BAA0B,EAAE,oBAAoB,aACvD,OAAO,oBAAoB,EAAE,SAAS,GACrC,YAAY,CAyCvB;AAED;;;;;;;;GAQG;AACH,4DANW,OAAO,yBAAyB,EAAE,uBAAuB,sBACzD,YAAY,oBACZ,OAAO,0BAA0B,EAAE,oBAAoB,aACvD,OAAO,oBAAoB,EAAE,SAAS,GACrC,YAAY,CAyDvB;AAED;;;;;;;;GAQG;AACH,yDANW,OAAO,yBAAyB,EAAE,oBAAoB,sBACtD,YAAY,oBACZ,OAAO,0BAA0B,EAAE,oBAAoB,aACvD,OAAO,oBAAoB,EAAE,SAAS,GACrC,YAAY,CAoEvB"}
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * @module ol/render/webgl/renderinstructions
3
3
  */
4
+ import {UNDEFINED_PROP_VALUE} from '../../expr/gpu.js';
4
5
  import {transform2D} from '../../geom/flat/transform.js';
5
6
  import {apply as applyTransform} from '../../transform.js';
6
7
 
@@ -21,7 +22,16 @@ function pushCustomAttributesInRenderInstructions(
21
22
  for (const key in customAttributes) {
22
23
  const attr = customAttributes[key];
23
24
  const value = attr.callback.call(batchEntry, batchEntry.feature);
24
- renderInstructions[currentIndex + shift++] = value?.[0] ?? value;
25
+ let first = value?.[0] ?? value;
26
+ if (first === UNDEFINED_PROP_VALUE) {
27
+ console.warn('The "has" operator might return false positives.'); // eslint-disable-line no-console
28
+ }
29
+ if (first === undefined) {
30
+ first = UNDEFINED_PROP_VALUE;
31
+ } else if (first === null) {
32
+ first = 0;
33
+ }
34
+ renderInstructions[currentIndex + shift++] = first;
25
35
  if (!attr.size || attr.size === 1) {
26
36
  continue;
27
37
  }
@@ -73,7 +73,7 @@ declare class CanvasLayerRenderer<LayerType extends import("../../layer/Layer.js
73
73
  /**
74
74
  * Get a rendering container from an existing target, if compatible.
75
75
  * @param {HTMLElement} target Potential render target.
76
- * @param {string} transform CSS Transform.
76
+ * @param {string} transform CSS transform matrix.
77
77
  * @param {string} [backgroundColor] Background color.
78
78
  */
79
79
  useContainer(target: HTMLElement, transform: string, backgroundColor?: string): void;
@@ -1 +1 @@
1
- {"version":3,"file":"Layer.d.ts","sourceRoot":"","sources":["Layer.js"],"names":[],"mappings":"AA0BA;;GAEG;AACH,yBAFU,KAAK,CAAC,iBAAiB,CAAC,CAEL;;AAa7B;;;;GAIG;AACH,kCAHsD,SAAS,SAAlD,OAAQ,sBAAsB,EAAE,OAAQ;IAUjD;;;OAGG;IACH,qBAFU,WAAW,CAEA;IAErB;;;OAGG;IACH,8BAFU,MAAM,CAEO;IAEvB;;;;;OAKG;IACH,yBAFU,OAAO,oBAAoB,EAAE,SAAS,CAEV;IAEtC;;;;;OAKG;IACH,0BAFU,OAAO,oBAAoB,EAAE,SAAS,CAET;IAEvC;;;;;OAKG;IACH,iCAFU,OAAO,oBAAoB,EAAE,SAAS,CAEF;IAE9C;;OAEG;IACH,SAFU,wBAAwB,CAEf;IAEnB;;;OAGG;IACH,yBAA4B;IAE5B;;OAEG;IACH,iBAFU,OAAO,CAEW;IAE5B;;;OAGG;IACH,sBAFU,OAAO,cAAc,EAAE,UAAU,GAAC,IAAI,CAE1B;IAGxB;;;;;OAKG;IACH,oBALW,OAAO,mBAAmB,EAAE,SAAS,OACrC,MAAM,OACN,MAAM,GACL,iBAAiB,GAAC,IAAI,CAiBjC;IAED;;;OAGG;IACH,0BAHW,OAAO,cAAc,EAAE,UAAU,GAChC,MAAM,CASjB;IAED;;;;;OAKG;IACH,qBAJW,WAAW,aACX,MAAM,oBACN,MAAM,QA0DhB;IAED;;;;;OAKG;IACH,iCALW,wBAAwB,cACxB,OAAO,cAAc,EAAE,UAAU,UACjC,OAAO,iBAAiB,EAAE,MAAM,QA2B1C;IAED;;;;OAIG;IACH,uCAJW,OAAO,cAAc,EAAE,UAAU,UACjC,WAAW,QAsCrB;IAED;;;;;OAKG;IACH,6BAWC;IAED;;;;OAIG;IACH,6BAJW,wBAAwB,cACxB,OAAO,cAAc,EAAE,UAAU,QAS3C;IAED;;;;OAIG;IACH,8BAJW,wBAAwB,cACxB,OAAO,cAAc,EAAE,UAAU,QAQ3C;IAED;;OAEG;IACH,mCAFW,OAAO,cAAc,EAAE,UAAU,QAEP;IAErC;;;OAGG;IACH,6BAHW,OAAO,cAAc,EAAE,UAAU,GAChC,OAAO,sCAAsC,EAAE,kBAAkB,CAS5E;IA2BD;;;;;;;;;;;OAWG;IACH,qCAVW,OAAO,qBAAqB,EAAE,UAAU,cACxC,MAAM,YACN,MAAM,cACN,MAAM,SACN,MAAM,UACN,MAAM,WACN,MAAM,GAEL,OAAQ,oBAAoB,EAAE,SAAS,CA2BlD;CAUF;0BA7YyB,aAAa"}
1
+ {"version":3,"file":"Layer.d.ts","sourceRoot":"","sources":["Layer.js"],"names":[],"mappings":"AA2BA;;GAEG;AACH,yBAFU,KAAK,CAAC,iBAAiB,CAAC,CAEL;;AAa7B;;;;GAIG;AACH,kCAHsD,SAAS,SAAlD,OAAQ,sBAAsB,EAAE,OAAQ;IAUjD;;;OAGG;IACH,qBAFU,WAAW,CAEA;IAErB;;;OAGG;IACH,8BAFU,MAAM,CAEO;IAEvB;;;;;OAKG;IACH,yBAFU,OAAO,oBAAoB,EAAE,SAAS,CAEV;IAEtC;;;;;OAKG;IACH,0BAFU,OAAO,oBAAoB,EAAE,SAAS,CAET;IAEvC;;;;;OAKG;IACH,iCAFU,OAAO,oBAAoB,EAAE,SAAS,CAEF;IAE9C;;OAEG;IACH,SAFU,wBAAwB,CAEf;IAEnB;;;OAGG;IACH,yBAA4B;IAE5B;;OAEG;IACH,iBAFU,OAAO,CAEW;IAE5B;;;OAGG;IACH,sBAFU,OAAO,cAAc,EAAE,UAAU,GAAC,IAAI,CAE1B;IAGxB;;;;;OAKG;IACH,oBALW,OAAO,mBAAmB,EAAE,SAAS,OACrC,MAAM,OACN,MAAM,GACL,iBAAiB,GAAC,IAAI,CAiBjC;IAED;;;OAGG;IACH,0BAHW,OAAO,cAAc,EAAE,UAAU,GAChC,MAAM,CASjB;IAED;;;;;OAKG;IACH,qBAJW,WAAW,aACX,MAAM,oBACN,MAAM,QA0DhB;IAED;;;;;OAKG;IACH,iCALW,wBAAwB,cACxB,OAAO,cAAc,EAAE,UAAU,UACjC,OAAO,iBAAiB,EAAE,MAAM,QA2B1C;IAED;;;;OAIG;IACH,uCAJW,OAAO,cAAc,EAAE,UAAU,UACjC,WAAW,QAsCrB;IAED;;;;;OAKG;IACH,6BAWC;IAED;;;;OAIG;IACH,6BAJW,wBAAwB,cACxB,OAAO,cAAc,EAAE,UAAU,QAS3C;IAED;;;;OAIG;IACH,8BAJW,wBAAwB,cACxB,OAAO,cAAc,EAAE,UAAU,QAQ3C;IAED;;OAEG;IACH,mCAFW,OAAO,cAAc,EAAE,UAAU,QAEP;IAErC;;;OAGG;IACH,6BAHW,OAAO,cAAc,EAAE,UAAU,GAChC,OAAO,sCAAsC,EAAE,kBAAkB,CAS5E;IA2BD;;;;;;;;;;;OAWG;IACH,qCAVW,OAAO,qBAAqB,EAAE,UAAU,cACxC,MAAM,YACN,MAAM,cACN,MAAM,SACN,MAAM,UACN,MAAM,WACN,MAAM,GAEL,OAAQ,oBAAoB,EAAE,SAAS,CA2BlD;CAUF;0BA7YyB,aAAa"}
@@ -19,6 +19,7 @@ import {
19
19
  apply as applyTransform,
20
20
  compose as composeTransform,
21
21
  create as createTransform,
22
+ equivalent,
22
23
  makeInverse,
23
24
  toString as toTransformString,
24
25
  } from '../../transform.js';
@@ -150,7 +151,7 @@ class CanvasLayerRenderer extends LayerRenderer {
150
151
  /**
151
152
  * Get a rendering container from an existing target, if compatible.
152
153
  * @param {HTMLElement} target Potential render target.
153
- * @param {string} transform CSS Transform.
154
+ * @param {string} transform CSS transform matrix.
154
155
  * @param {string} [backgroundColor] Background color.
155
156
  */
156
157
  useContainer(target, transform, backgroundColor) {
@@ -172,7 +173,7 @@ class CanvasLayerRenderer extends LayerRenderer {
172
173
  context = canvas.getContext('2d');
173
174
  }
174
175
  }
175
- if (context && context.canvas.style.transform === transform) {
176
+ if (context && equivalent(context.canvas.style.transform, transform)) {
176
177
  // Container of the previous layer renderer can be used.
177
178
  this.container = target;
178
179
  this.context = context;
package/transform.d.ts CHANGED
@@ -127,12 +127,19 @@ export function makeInverse(target: Transform, source: Transform): Transform;
127
127
  */
128
128
  export function determinant(mat: Transform): number;
129
129
  /**
130
- * A rounded string version of the transform. This can be used
130
+ * A matrix string version of the transform. This can be used
131
131
  * for CSS transforms.
132
132
  * @param {!Transform} mat Matrix.
133
133
  * @return {string} The transform as a string.
134
134
  */
135
135
  export function toString(mat: Transform): string;
136
+ /**
137
+ * Compare two matrices for equality.
138
+ * @param {!string} cssTransform1 A CSS transform matrix string.
139
+ * @param {!string} cssTransform2 A CSS transform matrix string.
140
+ * @return {boolean} The two matrices are equal.
141
+ */
142
+ export function equivalent(cssTransform1: string, cssTransform2: string): boolean;
136
143
  /**
137
144
  * An array representing an affine 2d transformation for use with
138
145
  * {@link module :ol/transform} functions. The array has 6 elements.
@@ -1 +1 @@
1
- {"version":3,"file":"transform.d.ts","sourceRoot":"","sources":["transform.js"],"names":[],"mappings":"AA8BA;;;GAGG;AACH,0BAFa,SAAS,CAIrB;AAED;;;;GAIG;AACH,iCAHY,SAAS,GACR,SAAS,CAIrB;AAED;;;;;;GAMG;AACH,qCAJY,SAAS,cACT,SAAS,GACR,SAAS,CAwBrB;AAED;;;;;;;;;;GAUG;AACH,+BATY,SAAS,KACV,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,GACJ,SAAS,CAUrB;AAED;;;;;GAKG;AACH,yCAJY,SAAS,cACT,SAAS,GACR,SAAS,CAUrB;AAED;;;;;;;;GAQG;AACH,iCALW,SAAS,cACT,OAAO,iBAAiB,EAAE,UAAU,GAAC,OAAO,YAAY,EAAE,KAAK,GAC9D,OAAO,iBAAiB,EAAE,UAAU,GAAC,OAAO,YAAY,EAAE,KAAK,CAS1E;AAED;;;;;GAKG;AACH,kCAJY,SAAS,SACV,MAAM,GACJ,SAAS,CAMrB;AAED;;;;;;GAMG;AACH,iCALY,SAAS,KACV,MAAM,KACN,MAAM,GACJ,SAAS,CAIrB;AAED;;;;;;GAMG;AACH,kCALY,SAAS,KACV,MAAM,KACN,MAAM,GACJ,SAAS,CAIrB;AAED;;;;;;GAMG;AACH,qCALY,SAAS,MACV,MAAM,MACN,MAAM,GACJ,SAAS,CAIrB;AAED;;;;;;;;;;;;GAYG;AACH,mCAVY,SAAS,OACV,MAAM,OACN,MAAM,MACN,MAAM,MACN,MAAM,SACN,MAAM,OACN,MAAM,OACN,MAAM,GACJ,SAAS,CAYrB;AAED;;;;;;;;;;;;;GAaG;AACH,yCAVW,MAAM,OACN,MAAM,MACN,MAAM,MACN,MAAM,SACN,MAAM,OACN,MAAM,OACN,MAAM,GACL,MAAM,CAKjB;AAED;;;;GAIG;AACH,+BAHY,SAAS,GACR,SAAS,CAIrB;AAED;;;;;;GAMG;AACH,oCALY,SAAS,UAET,SAAS,GACR,SAAS,CAqBrB;AAED;;;;GAIG;AACH,iCAHY,SAAS,GACT,MAAM,CAIjB;AAOD;;;;;GAKG;AACH,8BAHY,SAAS,GACT,MAAM,CAajB;;;;;wBAxRa,KAAK,CAAC,MAAM,CAAC"}
1
+ {"version":3,"file":"transform.d.ts","sourceRoot":"","sources":["transform.js"],"names":[],"mappings":"AA8BA;;;GAGG;AACH,0BAFa,SAAS,CAIrB;AAED;;;;GAIG;AACH,iCAHY,SAAS,GACR,SAAS,CAIrB;AAED;;;;;;GAMG;AACH,qCAJY,SAAS,cACT,SAAS,GACR,SAAS,CAwBrB;AAED;;;;;;;;;;GAUG;AACH,+BATY,SAAS,KACV,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,GACJ,SAAS,CAUrB;AAED;;;;;GAKG;AACH,yCAJY,SAAS,cACT,SAAS,GACR,SAAS,CAUrB;AAED;;;;;;;;GAQG;AACH,iCALW,SAAS,cACT,OAAO,iBAAiB,EAAE,UAAU,GAAC,OAAO,YAAY,EAAE,KAAK,GAC9D,OAAO,iBAAiB,EAAE,UAAU,GAAC,OAAO,YAAY,EAAE,KAAK,CAS1E;AAED;;;;;GAKG;AACH,kCAJY,SAAS,SACV,MAAM,GACJ,SAAS,CAMrB;AAED;;;;;;GAMG;AACH,iCALY,SAAS,KACV,MAAM,KACN,MAAM,GACJ,SAAS,CAIrB;AAED;;;;;;GAMG;AACH,kCALY,SAAS,KACV,MAAM,KACN,MAAM,GACJ,SAAS,CAIrB;AAED;;;;;;GAMG;AACH,qCALY,SAAS,MACV,MAAM,MACN,MAAM,GACJ,SAAS,CAIrB;AAED;;;;;;;;;;;;GAYG;AACH,mCAVY,SAAS,OACV,MAAM,OACN,MAAM,MACN,MAAM,MACN,MAAM,SACN,MAAM,OACN,MAAM,OACN,MAAM,GACJ,SAAS,CAYrB;AAED;;;;;;;;;;;;;GAaG;AACH,yCAVW,MAAM,OACN,MAAM,MACN,MAAM,MACN,MAAM,SACN,MAAM,OACN,MAAM,OACN,MAAM,GACL,MAAM,CAKjB;AAED;;;;GAIG;AACH,+BAHY,SAAS,GACR,SAAS,CAIrB;AAED;;;;;;GAMG;AACH,oCALY,SAAS,UAET,SAAS,GACR,SAAS,CAqBrB;AAED;;;;GAIG;AACH,iCAHY,SAAS,GACT,MAAM,CAIjB;AAOD;;;;;GAKG;AACH,8BAHY,SAAS,GACT,MAAM,CAKjB;AAYD;;;;;GAKG;AACH,0CAJW,MAAO,iBACP,MAAO,GACN,OAAO,CAWlB;;;;;wBA3Sa,KAAK,CAAC,MAAM,CAAC"}
package/transform.js CHANGED
@@ -267,23 +267,42 @@ export function determinant(mat) {
267
267
  /**
268
268
  * @type {Array}
269
269
  */
270
- const matrixPrecision = [1e6, 1e6, 1e6, 1e6, 2, 2];
270
+ const matrixPrecision = [1e5, 1e5, 1e5, 1e5, 2, 2];
271
271
 
272
272
  /**
273
- * A rounded string version of the transform. This can be used
273
+ * A matrix string version of the transform. This can be used
274
274
  * for CSS transforms.
275
275
  * @param {!Transform} mat Matrix.
276
276
  * @return {string} The transform as a string.
277
277
  */
278
278
  export function toString(mat) {
279
- const transformString =
280
- 'matrix(' +
281
- mat
282
- .map(
283
- (value, i) =>
284
- Math.round(value * matrixPrecision[i]) / matrixPrecision[i],
285
- )
286
- .join(', ') +
287
- ')';
279
+ const transformString = 'matrix(' + mat.join(', ') + ')';
288
280
  return transformString;
289
281
  }
282
+
283
+ /**
284
+ * Create a transform from a CSS transform matrix string.
285
+ * @param {string} cssTransform The CSS string to parse.
286
+ * @return {!Transform} The transform.
287
+ */
288
+ function fromString(cssTransform) {
289
+ const values = cssTransform.substring(7, cssTransform.length - 1).split(',');
290
+ return values.map(parseFloat);
291
+ }
292
+
293
+ /**
294
+ * Compare two matrices for equality.
295
+ * @param {!string} cssTransform1 A CSS transform matrix string.
296
+ * @param {!string} cssTransform2 A CSS transform matrix string.
297
+ * @return {boolean} The two matrices are equal.
298
+ */
299
+ export function equivalent(cssTransform1, cssTransform2) {
300
+ const mat1 = fromString(cssTransform1);
301
+ const mat2 = fromString(cssTransform2);
302
+ for (let i = 0; i < 6; ++i) {
303
+ if (Math.round((mat1[i] - mat2[i]) * matrixPrecision[i]) !== 0) {
304
+ return false;
305
+ }
306
+ }
307
+ return true;
308
+ }
package/util.js CHANGED
@@ -33,4 +33,4 @@ export function getUid(obj) {
33
33
  * OpenLayers version.
34
34
  * @type {string}
35
35
  */
36
- export const VERSION = '10.4.1-dev.1742586599854';
36
+ export const VERSION = '10.4.1-dev.1742845130862';