ol 10.6.2-dev.1751550843419 → 10.6.2-dev.1751637866951

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.
@@ -334,6 +334,12 @@ declare class Select extends Interaction {
334
334
  * @private
335
335
  */
336
336
  private removeFeature_;
337
+ /**
338
+ * @param {Feature} feature Feature of which to get the layer
339
+ * @return {VectorLayer} layer, if one was found.
340
+ * @private
341
+ */
342
+ private findLayerOfFeature_;
337
343
  /**
338
344
  * @return {import("../style/Style.js").StyleLike|null} Select style.
339
345
  */
@@ -353,6 +359,51 @@ declare class Select extends Interaction {
353
359
  * @private
354
360
  */
355
361
  private removeFeatureLayerAssociation_;
362
+ /**
363
+ * @param {import("../Feature.js").FeatureLike} feature The feature to select
364
+ * @param {import("../layer/Layer.js").default} layer Optional layer containing this feature
365
+ * @param {Array<Feature>} [selected] optional array to which selected features will be added
366
+ * @return {Feature|undefined} The feature, if it got selected.
367
+ * @private
368
+ */
369
+ private selectFeatureInternal_;
370
+ /**
371
+ * Try to select a feature as if it was clicked and `addCondition` evaluated to True.
372
+ * Unlike modifying `select.getFeatures()` directly, this respects the `filter` and `layers` options (except `multi`, which is ignored).
373
+ * The {@link module:ol/interaction/Select~SelectEvent} fired by this won't have a mapBrowserEvent property
374
+ * @param {Feature} feature The feature to select
375
+ * @return {boolean} True if the feature was selected
376
+ */
377
+ selectFeature(feature: Feature): boolean;
378
+ /**
379
+ * Deselects a feature if it was previously selected. Also removes layer association.
380
+ * @param {import("../Feature.js").FeatureLike} feature The feature to deselect
381
+ * @param {Array<Feature>} [deselected] optional array to which deselected features will be added
382
+ * @return {Feature|undefined} The feature, if it was previously selected.
383
+ * @private
384
+ */
385
+ private removeFeatureInternal_;
386
+ /**
387
+ * Try to deselect a feature as if it was clicked.
388
+ * Compared to `select.getFeatures().remove(feature)` this causes a SelectEvent.
389
+ * The {@link module:ol/interaction/Select~SelectEvent} fired by this won't have a mapBrowserEvent property
390
+ * @param {Feature} feature The feature to deselect
391
+ * @return {boolean} True if the feature was deselected
392
+ */
393
+ deselectFeature(feature: Feature): boolean;
394
+ /**
395
+ * Try to toggle a feature as if it was clicked and `toggleCondition` was True.
396
+ * Unlike modifying `select.getFeatures()` directly, this respects the `filter` and `layers` options (except `multi`, which is ignored).
397
+ * The {@link module:ol/interaction/Select~SelectEvent} fired by this won't have a mapBrowserEvent property
398
+ * @param {Feature} feature The feature to deselect
399
+ */
400
+ toggleFeature(feature: Feature): void;
401
+ /**
402
+ * Deselect all features as if a user deselected them.
403
+ * Compared to `select.getFeatures().clear()` this causes a SelectEvent.
404
+ * The {@link module:ol/interaction/Select~SelectEvent} fired by this won't have a mapBrowserEvent property
405
+ */
406
+ clearSelection(): void;
356
407
  }
357
408
  import Feature from '../Feature.js';
358
409
  import Collection from '../Collection.js';
@@ -1 +1 @@
1
- {"version":3,"file":"Select.d.ts","sourceRoot":"","sources":["Select.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Select.d.ts","sourceRoot":"","sources":["Select.js"],"names":[],"mappings":"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"}
@@ -377,19 +377,7 @@ class Select extends Interaction {
377
377
  this.applySelectedStyle_(feature);
378
378
  }
379
379
  if (!this.getLayer(feature)) {
380
- const layer = /** @type {VectorLayer} */ (
381
- this.getMap()
382
- .getAllLayers()
383
- .find(function (layer) {
384
- if (
385
- layer instanceof VectorLayer &&
386
- layer.getSource() &&
387
- layer.getSource().hasFeature(feature)
388
- ) {
389
- return layer;
390
- }
391
- })
392
- );
380
+ const layer = this.findLayerOfFeature_(feature);
393
381
  if (layer) {
394
382
  this.addFeatureLayerAssociation_(feature, layer);
395
383
  }
@@ -406,6 +394,28 @@ class Select extends Interaction {
406
394
  }
407
395
  }
408
396
 
397
+ /**
398
+ * @param {Feature} feature Feature of which to get the layer
399
+ * @return {VectorLayer} layer, if one was found.
400
+ * @private
401
+ */
402
+ findLayerOfFeature_(feature) {
403
+ const layer = /** @type {VectorLayer} */ (
404
+ this.getMap()
405
+ .getAllLayers()
406
+ .find(function (layer) {
407
+ if (
408
+ layer instanceof VectorLayer &&
409
+ layer.getSource() &&
410
+ layer.getSource().hasFeature(feature)
411
+ ) {
412
+ return layer;
413
+ }
414
+ })
415
+ );
416
+ return layer;
417
+ }
418
+
409
419
  /**
410
420
  * @return {import("../style/Style.js").StyleLike|null} Select style.
411
421
  */
@@ -457,6 +467,116 @@ class Select extends Interaction {
457
467
  delete this.featureLayerAssociation_[getUid(feature)];
458
468
  }
459
469
 
470
+ /**
471
+ * @param {import("../Feature.js").FeatureLike} feature The feature to select
472
+ * @param {import("../layer/Layer.js").default} layer Optional layer containing this feature
473
+ * @param {Array<Feature>} [selected] optional array to which selected features will be added
474
+ * @return {Feature|undefined} The feature, if it got selected.
475
+ * @private
476
+ */
477
+ selectFeatureInternal_(feature, layer, selected) {
478
+ if (!(feature instanceof Feature)) {
479
+ return;
480
+ }
481
+ if (!this.filter_(feature, layer)) {
482
+ return;
483
+ }
484
+ const features = this.getFeatures();
485
+ if (!features.getArray().includes(feature)) {
486
+ this.addFeatureLayerAssociation_(feature, layer);
487
+ features.push(feature);
488
+ selected?.push(feature);
489
+ }
490
+ return feature;
491
+ }
492
+
493
+ /**
494
+ * Try to select a feature as if it was clicked and `addCondition` evaluated to True.
495
+ * Unlike modifying `select.getFeatures()` directly, this respects the `filter` and `layers` options (except `multi`, which is ignored).
496
+ * The {@link module:ol/interaction/Select~SelectEvent} fired by this won't have a mapBrowserEvent property
497
+ * @param {Feature} feature The feature to select
498
+ * @return {boolean} True if the feature was selected
499
+ */
500
+ selectFeature(feature) {
501
+ const layer = this.findLayerOfFeature_(feature);
502
+ if (!this.layerFilter_(layer)) {
503
+ return false;
504
+ }
505
+ const selected = this.selectFeatureInternal_(feature, layer);
506
+ if (selected) {
507
+ this.dispatchEvent(
508
+ new SelectEvent(SelectEventType.SELECT, [selected], [], undefined),
509
+ );
510
+ }
511
+ return !!selected;
512
+ }
513
+
514
+ /**
515
+ * Deselects a feature if it was previously selected. Also removes layer association.
516
+ * @param {import("../Feature.js").FeatureLike} feature The feature to deselect
517
+ * @param {Array<Feature>} [deselected] optional array to which deselected features will be added
518
+ * @return {Feature|undefined} The feature, if it was previously selected.
519
+ * @private
520
+ */
521
+ removeFeatureInternal_(feature, deselected) {
522
+ const features = this.getFeatures();
523
+ if (
524
+ !(feature instanceof Feature) ||
525
+ !features.getArray().includes(feature)
526
+ ) {
527
+ return;
528
+ }
529
+ features.remove(feature);
530
+ this.removeFeatureLayerAssociation_(feature);
531
+ deselected?.push(feature);
532
+ return feature;
533
+ }
534
+
535
+ /**
536
+ * Try to deselect a feature as if it was clicked.
537
+ * Compared to `select.getFeatures().remove(feature)` this causes a SelectEvent.
538
+ * The {@link module:ol/interaction/Select~SelectEvent} fired by this won't have a mapBrowserEvent property
539
+ * @param {Feature} feature The feature to deselect
540
+ * @return {boolean} True if the feature was deselected
541
+ */
542
+ deselectFeature(feature) {
543
+ const deselected = this.removeFeatureInternal_(feature);
544
+ if (deselected) {
545
+ this.dispatchEvent(
546
+ new SelectEvent(SelectEventType.SELECT, [], [deselected], undefined),
547
+ );
548
+ }
549
+ return !!deselected;
550
+ }
551
+
552
+ /**
553
+ * Try to toggle a feature as if it was clicked and `toggleCondition` was True.
554
+ * Unlike modifying `select.getFeatures()` directly, this respects the `filter` and `layers` options (except `multi`, which is ignored).
555
+ * The {@link module:ol/interaction/Select~SelectEvent} fired by this won't have a mapBrowserEvent property
556
+ * @param {Feature} feature The feature to deselect
557
+ */
558
+ toggleFeature(feature) {
559
+ if (!this.deselectFeature(feature)) {
560
+ this.selectFeature(feature);
561
+ }
562
+ }
563
+ /**
564
+ * Deselect all features as if a user deselected them.
565
+ * Compared to `select.getFeatures().clear()` this causes a SelectEvent.
566
+ * The {@link module:ol/interaction/Select~SelectEvent} fired by this won't have a mapBrowserEvent property
567
+ */
568
+ clearSelection() {
569
+ clear(this.featureLayerAssociation_);
570
+ const features = this.getFeatures();
571
+ const deselected = features.getArray().slice(); // shallow copy
572
+ features.clear();
573
+ if (deselected.length !== 0) {
574
+ this.dispatchEvent(
575
+ new SelectEvent(SelectEventType.SELECT, [], deselected, undefined),
576
+ );
577
+ }
578
+ }
579
+
460
580
  /**
461
581
  * Handles the {@link module:ol/MapBrowserEvent~MapBrowserEvent map browser event} and may change the
462
582
  * selected state of features.
@@ -485,79 +605,67 @@ class Select extends Interaction {
485
605
  */
486
606
  const selected = [];
487
607
 
608
+ // TODO: technically the way i've restructured this logic means that
609
+ // instead of first emptying the features list of all extra features and then adding the selected ones back,
610
+ // the selected features get added and then the old ones get removed.
611
+ // a grow then shrink, instead of a shrink then grow. I can't imagine anyone relying on this, but alas, its worth a mention.
488
612
  if (set) {
489
613
  // Replace the currently selected feature(s) with the feature(s) at the
490
614
  // pixel, or clear the selected feature(s) if there is no feature at
491
615
  // the pixel.
492
- clear(this.featureLayerAssociation_);
616
+ let foundAtCursor = false;
493
617
  map.forEachFeatureAtPixel(
494
618
  mapBrowserEvent.pixel,
495
- /**
496
- * @param {import("../Feature.js").FeatureLike} feature Feature.
497
- * @param {import("../layer/Layer.js").default} layer Layer.
498
- * @return {boolean|undefined} Continue to iterate over the features.
499
- */
500
619
  (feature, layer) => {
501
- if (!(feature instanceof Feature) || !this.filter_(feature, layer)) {
502
- return;
620
+ foundAtCursor = true;
621
+ if (!this.selectFeatureInternal_(feature, layer, selected)) {
622
+ return; // keep going, this one wasn't selected
503
623
  }
504
- this.addFeatureLayerAssociation_(feature, layer);
505
- selected.push(feature);
506
- return !this.multi_;
624
+ return !this.multi_; // stop if not multi
507
625
  },
508
626
  {
509
627
  layerFilter: this.layerFilter_,
510
628
  hitTolerance: this.hitTolerance_,
511
629
  },
512
630
  );
631
+
513
632
  for (let i = features.getLength() - 1; i >= 0; --i) {
514
633
  const feature = features.item(i);
515
- const index = selected.indexOf(feature);
516
- if (index > -1) {
517
- // feature is already selected
518
- selected.splice(index, 1);
519
- } else {
520
- features.remove(feature);
521
- deselected.push(feature);
634
+ if (
635
+ // remove all but selected, if there were any selected
636
+ (selected.length > 0 && !selected.includes(feature)) ||
637
+ // remove all, if click outside of layer
638
+ !foundAtCursor
639
+ ) {
640
+ this.removeFeatureInternal_(feature, deselected);
522
641
  }
523
642
  }
524
- if (selected.length !== 0) {
525
- features.extend(selected);
526
- }
527
643
  } else {
528
644
  // Modify the currently selected feature(s).
529
645
  map.forEachFeatureAtPixel(
530
646
  mapBrowserEvent.pixel,
531
- /**
532
- * @param {import("../Feature.js").FeatureLike} feature Feature.
533
- * @param {import("../layer/Layer.js").default} layer Layer.
534
- * @return {boolean|undefined} Continue to iterate over the features.
535
- */
536
647
  (feature, layer) => {
537
- if (!(feature instanceof Feature) || !this.filter_(feature, layer)) {
538
- return;
648
+ let modifiedFeature;
649
+ if (remove || toggle) {
650
+ modifiedFeature = this.removeFeatureInternal_(feature, deselected);
539
651
  }
540
- if ((add || toggle) && !features.getArray().includes(feature)) {
541
- this.addFeatureLayerAssociation_(feature, layer);
542
- selected.push(feature);
543
- } else if (
544
- (remove || toggle) &&
545
- features.getArray().includes(feature)
546
- ) {
547
- deselected.push(feature);
548
- this.removeFeatureLayerAssociation_(feature);
652
+ if ((add || toggle) && !modifiedFeature) {
653
+ modifiedFeature = this.selectFeatureInternal_(
654
+ feature,
655
+ layer,
656
+ selected,
657
+ );
658
+ }
659
+ if (!modifiedFeature) {
660
+ return; // keep going, this one wasn't removed/selected
549
661
  }
550
- return !this.multi_;
662
+ return !this.multi_; // stop if not multi
551
663
  },
552
664
  {
553
665
  layerFilter: this.layerFilter_,
554
666
  hitTolerance: this.hitTolerance_,
555
667
  },
556
668
  );
557
- for (let j = deselected.length - 1; j >= 0; --j) {
558
- features.remove(deselected[j]);
559
- }
560
- features.extend(selected);
561
669
  }
562
670
  if (selected.length > 0 || deselected.length > 0) {
563
671
  this.dispatchEvent(
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ol",
3
- "version": "10.6.2-dev.1751550843419",
3
+ "version": "10.6.2-dev.1751637866951",
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.6.2-dev.1751550843419';
36
+ export const VERSION = '10.6.2-dev.1751637866951';