ol 10.0.1-dev.1723061166717 → 10.0.1-dev.1723457010002

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/expr/cpu.js CHANGED
@@ -115,7 +115,8 @@ function compileExpression(expression, context) {
115
115
  return compileAssertionExpression(expression, context);
116
116
  }
117
117
  case Ops.Get:
118
- case Ops.Var: {
118
+ case Ops.Var:
119
+ case Ops.Has: {
119
120
  return compileAccessorExpression(expression, context);
120
121
  }
121
122
  case Ops.Id: {
@@ -256,6 +257,24 @@ function compileAccessorExpression(expression, context) {
256
257
  case Ops.Var: {
257
258
  return (context) => context.variables[name];
258
259
  }
260
+ case Ops.Has: {
261
+ return (context) => {
262
+ const args = expression.args;
263
+ if (!(name in context.properties)) {
264
+ return false;
265
+ }
266
+ let value = context.properties[name];
267
+ for (let i = 1, ii = args.length; i < ii; ++i) {
268
+ const keyExpression = /** @type {LiteralExpression} */ (args[i]);
269
+ const key = /** @type {string|number} */ (keyExpression.value);
270
+ if (!value || !Object.hasOwn(value, key)) {
271
+ return false;
272
+ }
273
+ value = value[key];
274
+ }
275
+ return true;
276
+ };
277
+ }
259
278
  default: {
260
279
  throw new Error(`Unsupported accessor operator ${expression.operator}`);
261
280
  }
@@ -193,6 +193,8 @@ export type ArgValidator = (arg0: Array<EncodedExpression>, arg1: number, arg2:
193
193
  * * `['!', value1]` returns `false` if `value1` is `true` or greater than `0`, or `true` otherwise.
194
194
  * * `['all', value1, value2, ...]` returns `true` if all the inputs are `true`, `false` otherwise.
195
195
  * * `['any', value1, value2, ...]` returns `true` if any of the inputs are `true`, `false` otherwise.
196
+ * * `['has', attributeName, keyOrArrayIndex, ...]` returns `true` if feature properties include the (nested) key `attributeName`,
197
+ * `false` otherwise.
196
198
  * * `['between', value1, value2, value3]` returns `true` if `value1` is contained between `value2` and `value3`
197
199
  * (inclusively), or `false` otherwise.
198
200
  * * `['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":"AA+JA;;;;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;;;;;;GAMG;AAEH;;GAEG;AACH,qCAFY,cAAc,CASzB;AAED;;GAEG;AAEH;;;;;GAKG;AACH,+BALW,iBAAiB,gBACjB,MAAM,WACN,cAAc,GACb,UAAU,CA6FrB;AAmoBD;;;;GAIG;AACH,8CAHW,OAAO,qBAAqB,EAAE,OAAO,GAAC,OAAO,sBAAsB,EAAE,OAAO,GAC3E,OAAO,GAAC,YAAY,GAAC,SAAS,GAAC,EAAE,CA2B5C;AA34BD,yBAA0B;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;AAiID;;GAEG;AACH,kBAFU;QAAO,MAAM,GAAE,MAAM;CAAC,CAgD9B;yBA/KW,iBAAiB,GAAC,cAAc;;;;;eAK/B,GAAG,CAAC,MAAM,CAAC;;;;gBACX,GAAG,CAAC,MAAM,CAAC;;;;eACX,OAAO;;;;kBACP,OAAO;;gCAgBR,YAAY,QAAM;;;;;2BAqUlB,CAAS,IAAwB,EAAxB,KAAK,CAAC,iBAAiB,CAAC,EAAE,IAAM,EAAN,MAAM,EAAE,IAAc,EAAd,cAAc,KAAE,KAAK,CAAC,UAAU,CAAC,GAAC,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8BAhdjF,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;;;;qBAmNnC,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":"AAiKA;;;;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;;;;;;GAMG;AAEH;;GAEG;AACH,qCAFY,cAAc,CASzB;AAED;;GAEG;AAEH;;;;;GAKG;AACH,+BALW,iBAAiB,gBACjB,MAAM,WACN,cAAc,GACb,UAAU,CA6FrB;AAqoBD;;;;GAIG;AACH,8CAHW,OAAO,qBAAqB,EAAE,OAAO,GAAC,OAAO,sBAAsB,EAAE,OAAO,GAC3E,OAAO,GAAC,YAAY,GAAC,SAAS,GAAC,EAAE,CA2B5C;AA74BD,yBAA0B;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;AAiID;;GAEG;AACH,kBAFU;QAAO,MAAM,GAAE,MAAM;CAAC,CAiD9B;yBAhLW,iBAAiB,GAAC,cAAc;;;;;eAK/B,GAAG,CAAC,MAAM,CAAC;;;;gBACX,GAAG,CAAC,MAAM,CAAC;;;;eACX,OAAO;;;;kBACP,OAAO;;gCAgBR,YAAY,QAAM;;;;;2BAuUlB,CAAS,IAAwB,EAAxB,KAAK,CAAC,iBAAiB,CAAC,EAAE,IAAM,EAAN,MAAM,EAAE,IAAc,EAAd,cAAc,KAAE,KAAK,CAAC,UAAU,CAAC,GAAC,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8BAldjF,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;;;;qBAoNnC,CAAS,IAAK,SAAE,IAAM,EAAN,MAAM,EAAE,IAAc,EAAd,cAAc,KAAE,UAAU"}
@@ -91,6 +91,8 @@ import {toSize} from '../size.js';
91
91
  * * `['!', value1]` returns `false` if `value1` is `true` or greater than `0`, or `true` otherwise.
92
92
  * * `['all', value1, value2, ...]` returns `true` if all the inputs are `true`, `false` otherwise.
93
93
  * * `['any', value1, value2, ...]` returns `true` if any of the inputs are `true`, `false` otherwise.
94
+ * * `['has', attributeName, keyOrArrayIndex, ...]` returns `true` if feature properties include the (nested) key `attributeName`,
95
+ * `false` otherwise.
94
96
  * * `['between', value1, value2, value3]` returns `true` if `value1` is contained between `value2` and `value3`
95
97
  * (inclusively), or `false` otherwise.
96
98
  * * `['in', needle, haystack]` returns `true` if `needle` is found in `haystack`, and
@@ -414,6 +416,7 @@ export const Ops = {
414
416
  Band: 'band',
415
417
  Palette: 'palette',
416
418
  ToString: 'to-string',
419
+ Has: 'has',
417
420
  };
418
421
 
419
422
  /**
@@ -428,6 +431,7 @@ export const Ops = {
428
431
  const parsers = {
429
432
  [Ops.Get]: createCallExpressionParser(hasArgsCount(1, Infinity), withGetArgs),
430
433
  [Ops.Var]: createCallExpressionParser(hasArgsCount(1, 1), withVarArgs),
434
+ [Ops.Has]: createCallExpressionParser(hasArgsCount(1, Infinity), withGetArgs),
431
435
  [Ops.Id]: createCallExpressionParser(usesFeatureId, withNoArgs),
432
436
  [Ops.Concat]: createCallExpressionParser(
433
437
  hasArgsCount(2, Infinity),
@@ -1 +1 @@
1
- {"version":3,"file":"DragBox.d.ts","sourceRoot":"","sources":["DragBox.js"],"names":[],"mappings":"AAgEA;;;;GAIG;AACH;IACE;;;;OAIG;IACH,kBAJW,MAAM,cACN,OAAO,kBAAkB,EAAE,UAAU,mBACrC,4CAAuC,EAmBjD;IAdC;;;;;OAKG;IACH,YAHU,OAAO,kBAAkB,EAAE,UAAU,CAGnB;IAE5B;;;;OAIG;IACH,iBAHU,4CAAuC,CAGX;CAEzC;;;;;;;2BAhFY,CAAS,IAAO,EAAD,OAAC,EAAE,IAAuC,EAAvC,4CAAuC,EAAE,IAA2B,EAA3B,OAAO,aAAa,EAAE,KAAK,EAAE,IAA2B,EAA3B,OAAO,aAAa,EAAE,KAAK,KAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;uBAc7G,OAAO,QAAE,4CAAuC,KAAE,IAAI;;;;;+BAqErE,MAAM,IACN,OAAO,eAAe,EAAE,WAAW,CAAC,OAAO,eAAe,EAAE,UAAU,EAAE,OAAO,oBAAoB,EAAE,OAAO,EAAE,MAAM,CAAC,GACjI,OAAW,eAAe,EAAE,WAAW,CAAC,OAAO,oBAAoB,EAAE,KAAK,GAC1E,eAAqB,EAAE,OAAO,WAAW,EAAE,WAAW,EAAE,MAAM,CAAC,GAC/D,OAAW,eAAe,EAAE,WAAW,CAAC,WAAW,GAAC,SAAS,GAAC,QAAQ,GAAC,UAAU,EAAE,YAAY,EAAE,MAAM,CAAC,GACxG,OAAW,eAAe,EAAE,mBAAmB,CAAC,OAAO,eAAe,EAAE,UAAU,GAAC,OAAO,oBAAoB,EAAE,KAAK,GACrH,eAAqB,GAAC,WAAW,GAAC,SAAS,GAAC,QAAQ,EAAE,MAAM,CAAC;kBAlG5C,oBAAoB;AA2FtC;;;;;;;;GAQG;AAEH;;;;;;;;;;;GAWG;AACH;IACE;;OAEG;IACH,2CAuDC;IApDC;;OAEG;IACH,IAFU,kBAAkB,CAAC,OAAO,WAAW,EAAE,SAAS,CAAC,CAEpD;IAEP;;OAEG;IACH,MAFU,kBAAkB,CAAC,OAAO,WAAW,EAAE,SAAS,CAAC,CAElD;IAET;;OAEG;IACH,IAFU,kBAAkB,CAAC,IAAI,CAAC,CAE3B;IAIP;;;OAGG;IACH,aAA4D;IAE5D;;;OAGG;IACH,iBAAoE;IA8HtE;;;OAGG;IACH,gBAFW,4CAAuC,QAEhC;IA5HhB;;;OAGG;IACH,oBAAuB;IAEvB;;;OAGG;IACH,mBAA2E;IAE3E;;;OAGG;IACH,yBAE+B;IAGjC;;;;;;;;OAQG;IACH,wCANW,4CAAuC,cAEvC,OAAO,aAAa,EAAE,KAAK,YAC3B,OAAO,aAAa,EAAE,KAAK,GAC1B,OAAO,CAMlB;IAED;;;;OAIG;IACH,eAHY,OAAO,oBAAoB,EAAE,OAAO,CAK/C;CAuGF;+BA1S8B,cAAc"}
1
+ {"version":3,"file":"DragBox.d.ts","sourceRoot":"","sources":["DragBox.js"],"names":[],"mappings":"AAgEA;;;;GAIG;AACH;IACE;;;;OAIG;IACH,kBAJW,MAAM,cACN,OAAO,kBAAkB,EAAE,UAAU,mBACrC,4CAAuC,EAmBjD;IAdC;;;;;OAKG;IACH,YAHU,OAAO,kBAAkB,EAAE,UAAU,CAGnB;IAE5B;;;;OAIG;IACH,iBAHU,4CAAuC,CAGX;CAEzC;;;;;;;2BAhFY,CAAS,IAAO,EAAD,OAAC,EAAE,IAAuC,EAAvC,4CAAuC,EAAE,IAA2B,EAA3B,OAAO,aAAa,EAAE,KAAK,EAAE,IAA2B,EAA3B,OAAO,aAAa,EAAE,KAAK,KAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;uBAc7G,OAAO,QAAE,4CAAuC,KAAE,IAAI;;;;;+BAqErE,MAAM,IACN,OAAO,eAAe,EAAE,WAAW,CAAC,OAAO,eAAe,EAAE,UAAU,EAAE,OAAO,oBAAoB,EAAE,OAAO,EAAE,MAAM,CAAC,GACjI,OAAW,eAAe,EAAE,WAAW,CAAC,OAAO,oBAAoB,EAAE,KAAK,GAC1E,eAAqB,EAAE,OAAO,WAAW,EAAE,WAAW,EAAE,MAAM,CAAC,GAC/D,OAAW,eAAe,EAAE,WAAW,CAAC,WAAW,GAAC,SAAS,GAAC,QAAQ,GAAC,UAAU,EAAE,YAAY,EAAE,MAAM,CAAC,GACxG,OAAW,eAAe,EAAE,mBAAmB,CAAC,OAAO,eAAe,EAAE,UAAU,GAAC,OAAO,oBAAoB,EAAE,KAAK,GACrH,eAAqB,GAAC,WAAW,GAAC,SAAS,GAAC,QAAQ,EAAE,MAAM,CAAC;kBAlG5C,oBAAoB;AA2FtC;;;;;;;;GAQG;AAEH;;;;;;;;;;;GAWG;AACH;IACE;;OAEG;IACH,2CAsDC;IAnDC;;OAEG;IACH,IAFU,kBAAkB,CAAC,OAAO,WAAW,EAAE,SAAS,CAAC,CAEpD;IAEP;;OAEG;IACH,MAFU,kBAAkB,CAAC,OAAO,WAAW,EAAE,SAAS,CAAC,CAElD;IAET;;OAEG;IACH,IAFU,kBAAkB,CAAC,IAAI,CAAC,CAE3B;IAIP;;;OAGG;IACH,aAA4D;IAE5D;;;OAGG;IACH,iBAAqC;IA+HvC;;;OAGG;IACH,gBAFW,4CAAuC,QAEhC;IA7HhB;;;OAGG;IACH,oBAAuB;IAEvB;;;OAGG;IACH,mBAAwD;IAExD;;;OAGG;IACH,yBACwD;IAG1D;;;;;;;;OAQG;IACH,wCANW,4CAAuC,cAEvC,OAAO,aAAa,EAAE,KAAK,YAC3B,OAAO,aAAa,EAAE,KAAK,GAC1B,OAAO,CAMlB;IAED;;;;OAIG;IACH,eAHY,OAAO,oBAAoB,EAAE,OAAO,CAK/C;CA8HF;+BAhU8B,cAAc"}
@@ -137,7 +137,7 @@ class DragBox extends PointerInteraction {
137
137
  */
138
138
  this.un;
139
139
 
140
- options = options ? options : {};
140
+ options = options ?? {};
141
141
 
142
142
  /**
143
143
  * @type {import("../render/Box.js").default}
@@ -149,7 +149,7 @@ class DragBox extends PointerInteraction {
149
149
  * @type {number}
150
150
  * @private
151
151
  */
152
- this.minArea_ = options.minArea !== undefined ? options.minArea : 64;
152
+ this.minArea_ = options.minArea ?? 64;
153
153
 
154
154
  if (options.onBoxEnd) {
155
155
  this.onBoxEnd = options.onBoxEnd;
@@ -165,15 +165,14 @@ class DragBox extends PointerInteraction {
165
165
  * @private
166
166
  * @type {import("../events/condition.js").Condition}
167
167
  */
168
- this.condition_ = options.condition ? options.condition : mouseActionButton;
168
+ this.condition_ = options.condition ?? mouseActionButton;
169
169
 
170
170
  /**
171
171
  * @private
172
172
  * @type {EndCondition}
173
173
  */
174
- this.boxEndCondition_ = options.boxEndCondition
175
- ? options.boxEndCondition
176
- : this.defaultBoxEndCondition;
174
+ this.boxEndCondition_ =
175
+ options.boxEndCondition ?? this.defaultBoxEndCondition;
177
176
  }
178
177
 
179
178
  /**
@@ -232,8 +231,6 @@ class DragBox extends PointerInteraction {
232
231
  return false;
233
232
  }
234
233
 
235
- this.box_.setMap(null);
236
-
237
234
  const completeBox = this.boxEndCondition_(
238
235
  mapBrowserEvent,
239
236
  this.startPixel_,
@@ -249,6 +246,10 @@ class DragBox extends PointerInteraction {
249
246
  mapBrowserEvent,
250
247
  ),
251
248
  );
249
+
250
+ this.box_.setMap(null);
251
+ this.startPixel_ = null;
252
+
252
253
  return false;
253
254
  }
254
255
 
@@ -301,6 +302,27 @@ class DragBox extends PointerInteraction {
301
302
 
302
303
  super.setActive(active);
303
304
  }
305
+
306
+ /**
307
+ * @param {import("../Map.js").default|null} map Map.
308
+ * @override
309
+ */
310
+ setMap(map) {
311
+ const oldMap = this.getMap();
312
+
313
+ if (oldMap) {
314
+ this.box_.setMap(null);
315
+
316
+ if (this.startPixel_) {
317
+ this.dispatchEvent(
318
+ new DragBoxEvent(DragBoxEventType.BOXCANCEL, this.startPixel_, null),
319
+ );
320
+ this.startPixel_ = null;
321
+ }
322
+ }
323
+
324
+ super.setMap(map);
325
+ }
304
326
  }
305
327
 
306
328
  export default DragBox;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ol",
3
- "version": "10.0.1-dev.1723061166717",
3
+ "version": "10.0.1-dev.1723457010002",
4
4
  "description": "OpenLayers mapping library",
5
5
  "keywords": [
6
6
  "map",
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.0.1-dev.1723061166717';
36
+ export const VERSION = '10.0.1-dev.1723457010002';