ol 10.4.1-dev.1738253405574 → 10.4.1-dev.1738363213886

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.
@@ -1,6 +1,7 @@
1
1
  export type SnapEventType = string;
2
2
  export namespace SnapEventType {
3
3
  let SNAP: string;
4
+ let UNSNAP: string;
4
5
  }
5
6
  /**
6
7
  * @classdesc
@@ -1 +1 @@
1
- {"version":3,"file":"SnapEvent.d.ts","sourceRoot":"","sources":["SnapEvent.js"],"names":[],"mappings":"4BAMU,MAAM;;;;AAWhB;;;GAGG;AACH;IACE;;;;;;;OAOG;IACH,kBAPW,aAAa,WAErB;QAAuD,MAAM,EAArD,OAAO,kBAAkB,EAAE,UAAU;QACU,WAAW,EAA1D,OAAO,kBAAkB,EAAE,UAAU;QACI,OAAO,EAAhD,OAAO,eAAe,EAAE,OAAO;QAC4B,OAAO,EAAlE,KAAK,CAAC,OAAO,kBAAkB,EAAE,UAAU,CAAC,GAAC,IAAI;KAC3D,EA2BA;IAxBC;;;;OAIG;IACH,QAHU,OAAO,kBAAkB,EAAE,UAAU,CAGnB;IAC5B;;;;OAIG;IACH,aAHU,KAAK,CAAC,MAAM,CAAC,GAAC,KAAK,CAAC,MAAM,CAAC,CAGC;IACtC;;;;OAIG;IACH,SAHU,OAAO,eAAe,EAAE,OAAO,CAAC,OAAO,qBAAqB,EAAE,OAAO,CAAC,CAGlD;IAC9B;;;;OAIG;IACH,SAHU,KAAK,CAAC,OAAO,kBAAkB,EAAE,UAAU,CAAC,GAAC,IAAI,CAG7B;CAEjC;kBAtDiB,YAAY"}
1
+ {"version":3,"file":"SnapEvent.d.ts","sourceRoot":"","sources":["SnapEvent.js"],"names":[],"mappings":"4BAMU,MAAM;;;;;AAYhB;;;GAGG;AACH;IACE;;;;;;;OAOG;IACH,kBAPW,aAAa,WAErB;QAAuD,MAAM,EAArD,OAAO,kBAAkB,EAAE,UAAU;QACU,WAAW,EAA1D,OAAO,kBAAkB,EAAE,UAAU;QACI,OAAO,EAAhD,OAAO,eAAe,EAAE,OAAO;QAC4B,OAAO,EAAlE,KAAK,CAAC,OAAO,kBAAkB,EAAE,UAAU,CAAC,GAAC,IAAI;KAC3D,EA2BA;IAxBC;;;;OAIG;IACH,QAHU,OAAO,kBAAkB,EAAE,UAAU,CAGnB;IAC5B;;;;OAIG;IACH,aAHU,KAAK,CAAC,MAAM,CAAC,GAAC,KAAK,CAAC,MAAM,CAAC,CAGC;IACtC;;;;OAIG;IACH,SAHU,OAAO,eAAe,EAAE,OAAO,CAAC,OAAO,qBAAqB,EAAE,OAAO,CAAC,CAGlD;IAC9B;;;;OAIG;IACH,SAHU,KAAK,CAAC,OAAO,kBAAkB,EAAE,UAAU,CAAC,GAAC,IAAI,CAG7B;CAEjC;kBAvDiB,YAAY"}
@@ -13,6 +13,7 @@ export const SnapEventType = {
13
13
  * @api
14
14
  */
15
15
  SNAP: 'snap',
16
+ UNSNAP: 'unsnap',
16
17
  };
17
18
 
18
19
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"KML.d.ts","sourceRoot":"","sources":["KML.js"],"names":[],"mappings":"AAmNA;;;GAGG;AACH,uCAFY,IAAI,GAAC,IAAI,CAIpB;AAgCD;;;GAGG;AACH,wCAFY,OAAO,mBAAmB,EAAE,OAAO,GAAC,IAAI,CAInD;AAYD;;;GAGG;AACH,yCAFY,MAAM,GAAC,IAAI,CAItB;AAYD;;;GAGG;AACH,uCAFY,IAAI,GAAC,IAAI,CAIpB;AAOD;;;GAGG;AACH,mCAFY,KAAK,GAAC,IAAI,CAIrB;AAOD;;;GAGG;AACH,wCAFY,KAAK,CAAC,KAAK,CAAC,GAAC,IAAI,CAI5B;AAw2BD;;;GAGG;AACH,0CAHW,IAAI,GACH,KAAK,CAAC,MAAM,CAAC,GAAC,SAAS,CAsBlC;;;;;;;8BA/yBY,CAAS,IAAM,EAAN,MAAM,KAAE,MAAM;;;;;OAxVtB,MAAM;;;;YACN,OAAO,kBAAkB,EAAE,eAAe;;;;OAC1C,MAAM;;;;YACN,OAAO,kBAAkB,EAAE,eAAe;;;;;;;;;;iBAM1C,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;;;;WACpB,KAAK,CAAC,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAhDV,kBAAkB;mBAEhB,oBAAoB;iBAEtB,kBAAkB;kBADjB,mBAAmB;AAwYrC;;;;;;;;;;;GAWG;AAEH;;;;;;;;;;;;GAYG;AACH;IACE;;OAEG;IACH,sBAFW,OAAO,EAgEjB;IAhDC;;;OAGG;IACH,sBAEuB;IAEvB;;;OAGG;IACH,uBACoE;IAEpE;;OAEG;IACH,cAFU,OAAO,CAG+C;IAEhE;;;OAGG;IACH,sBAAuB;IAEvB;;;OAGG;IACH,wBACsE;IAEtE;;OAEG;IACH,cAFU,IAAI,GAAC,MAAM,CAGkD;IAEvE;;OAEG;IACH,kBAFU,eAAe,CAIC;IAK5B;;;;;OAKG;IACH,8BAgBC;IAED;;;;;OAKG;IACH,uBA8CC;IAED;;;;OAIG;IACH,yBAmBC;IAED;;;;OAIG;IACH,4BAqBC;IAiED;;;;;;OAMG;IACH,iBAJW,QAAQ,GAAC,OAAO,GAAC,MAAM,GACtB,MAAM,GAAC,SAAS,CAe3B;IAED;;;OAGG;IACH,0BAHW,QAAQ,GACP,MAAM,GAAC,SAAS,CAY3B;IAED;;;OAGG;IACH,uBAHW,OAAO,GACN,MAAM,GAAC,SAAS,CAwB3B;IAED;;;;;;OAMG;IACH,yBAJW,QAAQ,GAAC,OAAO,GAAC,MAAM,GACtB,KAAK,KAAQ,CAoBxB;IAED;;;OAGG;IACH,kCAHW,QAAQ,GACP,KAAK,KAAQ,CAaxB;IAED;;;OAGG;IACH,+BAHW,OAAO,GACN,KAAK,KAAQ,CAuBxB;IAED;;;;;;OAMG;IACH,mBAJW,QAAQ,GAAC,OAAO,GAAC,MAAM,GACtB,KAAK,KAAQ,CAiBxB;IAED;;;OAGG;IACH,4BAHW,QAAQ,GACP,KAAK,KAAQ,CAUxB;IAED;;;;OAIG;IACH,yBAJW,OAAO,GACN,KAAK,KAAQ,CAqBxB;IAED;;;;;;;;;OASG;IAEH;;;;;;OAMG;IACH,mBAJW,QAAQ,GAAC,OAAO,GAAC,MAAM,GACtB,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAAW,CAiB3B;IAED;;;OAGG;IACH,4BAHW,QAAQ,GACP,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAAW,CAU3B;IAED;;;;OAIG;IACH,yBAJW,OAAO,GACN,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAAW,CAwB3B;CA+CF;uBAj9BsB,iBAAiB"}
1
+ {"version":3,"file":"KML.d.ts","sourceRoot":"","sources":["KML.js"],"names":[],"mappings":"AAkNA;;;GAGG;AACH,uCAFY,IAAI,GAAC,IAAI,CAIpB;AAgCD;;;GAGG;AACH,wCAFY,OAAO,mBAAmB,EAAE,OAAO,GAAC,IAAI,CAInD;AAYD;;;GAGG;AACH,yCAFY,MAAM,GAAC,IAAI,CAItB;AAYD;;;GAGG;AACH,uCAFY,IAAI,GAAC,IAAI,CAIpB;AAOD;;;GAGG;AACH,mCAFY,KAAK,GAAC,IAAI,CAIrB;AAOD;;;GAGG;AACH,wCAFY,KAAK,CAAC,KAAK,CAAC,GAAC,IAAI,CAI5B;AAw2BD;;;GAGG;AACH,0CAHW,IAAI,GACH,KAAK,CAAC,MAAM,CAAC,GAAC,SAAS,CAsBlC;;;;;;;8BA/yBY,CAAS,IAAM,EAAN,MAAM,KAAE,MAAM;;;;;OAxVtB,MAAM;;;;YACN,OAAO,kBAAkB,EAAE,eAAe;;;;OAC1C,MAAM;;;;YACN,OAAO,kBAAkB,EAAE,eAAe;;;;;;;;;;iBAM1C,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;;;;WACpB,KAAK,CAAC,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA/CV,kBAAkB;mBAEhB,oBAAoB;iBAEtB,kBAAkB;kBADjB,mBAAmB;AAuYrC;;;;;;;;;;;GAWG;AAEH;;;;;;;;;;;;GAYG;AACH;IACE;;OAEG;IACH,sBAFW,OAAO,EAgEjB;IAhDC;;;OAGG;IACH,sBAEuB;IAEvB;;;OAGG;IACH,uBACoE;IAEpE;;OAEG;IACH,cAFU,OAAO,CAG+C;IAEhE;;;OAGG;IACH,sBAAuB;IAEvB;;;OAGG;IACH,wBACsE;IAEtE;;OAEG;IACH,cAFU,IAAI,GAAC,MAAM,CAGkD;IAEvE;;OAEG;IACH,kBAFU,eAAe,CAIC;IAK5B;;;;;OAKG;IACH,8BAgBC;IAED;;;;;OAKG;IACH,uBA8CC;IAED;;;;OAIG;IACH,yBAmBC;IAED;;;;OAIG;IACH,4BAqBC;IAiED;;;;;;OAMG;IACH,iBAJW,QAAQ,GAAC,OAAO,GAAC,MAAM,GACtB,MAAM,GAAC,SAAS,CAe3B;IAED;;;OAGG;IACH,0BAHW,QAAQ,GACP,MAAM,GAAC,SAAS,CAY3B;IAED;;;OAGG;IACH,uBAHW,OAAO,GACN,MAAM,GAAC,SAAS,CAwB3B;IAED;;;;;;OAMG;IACH,yBAJW,QAAQ,GAAC,OAAO,GAAC,MAAM,GACtB,KAAK,KAAQ,CAoBxB;IAED;;;OAGG;IACH,kCAHW,QAAQ,GACP,KAAK,KAAQ,CAaxB;IAED;;;OAGG;IACH,+BAHW,OAAO,GACN,KAAK,KAAQ,CAuBxB;IAED;;;;;;OAMG;IACH,mBAJW,QAAQ,GAAC,OAAO,GAAC,MAAM,GACtB,KAAK,KAAQ,CAiBxB;IAED;;;OAGG;IACH,4BAHW,QAAQ,GACP,KAAK,KAAQ,CAUxB;IAED;;;;OAIG;IACH,yBAJW,OAAO,GACN,KAAK,KAAQ,CAqBxB;IAED;;;;;;;;;OASG;IAEH;;;;;;OAMG;IACH,mBAJW,QAAQ,GAAC,OAAO,GAAC,MAAM,GACtB,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAAW,CAiB3B;IAED;;;OAGG;IACH,4BAHW,QAAQ,GACP,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAAW,CAU3B;IAED;;;;OAIG;IACH,yBAJW,OAAO,GACN,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAAW,CAwB3B;CA+CF;uBAh9BsB,iBAAiB"}
package/format/KML.js CHANGED
@@ -45,7 +45,6 @@ import {
45
45
  readDecimal,
46
46
  readString,
47
47
  writeBooleanTextNode,
48
- writeCDATASection,
49
48
  writeDecimalTextNode,
50
49
  writeStringTextNode,
51
50
  } from './xsd.js';
@@ -2508,7 +2507,7 @@ function writeDataNode(node, pair, objectStack) {
2508
2507
  * @param {string} name DisplayName.
2509
2508
  */
2510
2509
  function writeDataNodeName(node, name) {
2511
- writeCDATASection(node, name);
2510
+ writeStringTextNode(node, name);
2512
2511
  }
2513
2512
 
2514
2513
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"xsd.d.ts","sourceRoot":"","sources":["xsd.js"],"names":[],"mappings":"AAMA;;;GAGG;AACH,kCAHW,IAAI,GACH,OAAO,GAAC,SAAS,CAK5B;AAED;;;GAGG;AACH,0CAHW,MAAM,GACL,OAAO,GAAC,SAAS,CAQ5B;AAED;;;GAGG;AACH,mCAHW,IAAI,GACH,MAAM,GAAC,SAAS,CAM3B;AAED;;;GAGG;AACH,kCAHW,IAAI,GACH,MAAM,GAAC,SAAS,CAK3B;AAED;;;GAGG;AACH,0CAHW,MAAM,GACL,MAAM,GAAC,SAAS,CAS3B;AAED;;;GAGG;AACH,0CAHW,IAAI,GACH,MAAM,GAAC,SAAS,CAK3B;AAED;;;GAGG;AACH,qDAHW,MAAM,GACL,MAAM,GAAC,SAAS,CAQ3B;AAED;;;GAGG;AACH,iCAHW,IAAI,GACH,MAAM,GAAC,SAAS,CAI3B;AAED;;;GAGG;AACH,2CAHW,IAAI,QACJ,OAAO,QAIjB;AAED;;;GAGG;AACH,wCAHW,IAAI,UACJ,MAAM,QAIhB;AAED;;;GAGG;AACH,4CAHW,IAAI,YACJ,MAAM,QAkBhB;AAED;;;GAGG;AACH,2CAHW,IAAI,WACJ,MAAM,QAKhB;AAED;;;GAGG;AACH,sDAHW,IAAI,sBACJ,MAAM,QAKhB;AAED;;;GAGG;AACH,0CAHW,IAAI,UACJ,MAAM,QAIhB"}
1
+ {"version":3,"file":"xsd.d.ts","sourceRoot":"","sources":["xsd.js"],"names":[],"mappings":"AAMA;;;GAGG;AACH,kCAHW,IAAI,GACH,OAAO,GAAC,SAAS,CAK5B;AAED;;;GAGG;AACH,0CAHW,MAAM,GACL,OAAO,GAAC,SAAS,CAQ5B;AAED;;;GAGG;AACH,mCAHW,IAAI,GACH,MAAM,GAAC,SAAS,CAM3B;AAED;;;GAGG;AACH,kCAHW,IAAI,GACH,MAAM,GAAC,SAAS,CAK3B;AAED;;;GAGG;AACH,0CAHW,MAAM,GACL,MAAM,GAAC,SAAS,CAS3B;AAED;;;GAGG;AACH,0CAHW,IAAI,GACH,MAAM,GAAC,SAAS,CAK3B;AAED;;;GAGG;AACH,qDAHW,MAAM,GACL,MAAM,GAAC,SAAS,CAQ3B;AAED;;;GAGG;AACH,iCAHW,IAAI,GACH,MAAM,GAAC,SAAS,CAI3B;AAED;;;GAGG;AACH,2CAHW,IAAI,QACJ,OAAO,QAIjB;AAED;;;GAGG;AACH,wCAHW,IAAI,UACJ,MAAM,QAIhB;AAED;;;GAGG;AACH,4CAHW,IAAI,YACJ,MAAM,QAkBhB;AAED;;;GAGG;AACH,2CAHW,IAAI,WACJ,MAAM,QAKhB;AAED;;;GAGG;AACH,sDAHW,IAAI,sBACJ,MAAM,QAKhB;AAMD;;;GAGG;AACH,0CAHW,IAAI,UACJ,MAAM,QAqBhB"}
package/format/xsd.js CHANGED
@@ -142,10 +142,31 @@ export function writeNonNegativeIntegerTextNode(node, nonNegativeInteger) {
142
142
  node.appendChild(getDocument().createTextNode(string));
143
143
  }
144
144
 
145
+ const whiteSpaceStart = /^\s/;
146
+ const whiteSpaceEnd = /\s$/;
147
+ const cdataCharacters = /(\n|\t|\r|<|&| {2})/;
148
+
145
149
  /**
146
150
  * @param {Node} node Node to append a TextNode with the string to.
147
151
  * @param {string} string String.
148
152
  */
149
153
  export function writeStringTextNode(node, string) {
150
- node.appendChild(getDocument().createTextNode(string));
154
+ if (
155
+ typeof string === 'string' &&
156
+ (whiteSpaceStart.test(string) ||
157
+ whiteSpaceEnd.test(string) ||
158
+ cdataCharacters.test(string))
159
+ ) {
160
+ string.split(']]>').forEach((part, i, a) => {
161
+ if (i < a.length - 1) {
162
+ part += ']]';
163
+ }
164
+ if (i > 0) {
165
+ part = '>' + part;
166
+ }
167
+ writeCDATASection(node, part);
168
+ });
169
+ } else {
170
+ node.appendChild(getDocument().createTextNode(string));
171
+ }
151
172
  }
@@ -50,6 +50,27 @@ export type Options = {
50
50
  */
51
51
  source?: import("../source/Vector.js").default<import("../Feature.js").default<import("../geom/Geometry.js").default>> | undefined;
52
52
  };
53
+ /**
54
+ * Information about the last snapped state.
55
+ */
56
+ export type SnappedInfo = {
57
+ /**
58
+ * - The snapped vertex.
59
+ */
60
+ vertex: import("../coordinate.js").Coordinate | null;
61
+ /**
62
+ * - The pixel of the snapped vertex.
63
+ */
64
+ vertexPixel: import("../coordinate.js").Coordinate | null;
65
+ /**
66
+ * - The feature being snapped.
67
+ */
68
+ feature: import("../Feature.js").default | null;
69
+ /**
70
+ * - Segment, or `null` if snapped to a vertex.
71
+ */
72
+ segment: Array<import("../coordinate.js").Coordinate> | null;
73
+ };
53
74
  /**
54
75
  * *
55
76
  */
@@ -160,6 +181,12 @@ declare class Snap extends PointerInteraction {
160
181
  * @private
161
182
  */
162
183
  private rBush_;
184
+ /**
185
+ * Holds information about the last snapped state.
186
+ * @type {SnappedInfo|null}
187
+ * @private
188
+ */
189
+ private snapped_;
163
190
  /**
164
191
  * @const
165
192
  * @private
@@ -179,6 +206,16 @@ declare class Snap extends PointerInteraction {
179
206
  * @private
180
207
  */
181
208
  private getFeatures_;
209
+ /**
210
+ * Checks if two snap data sets are equal.
211
+ * Compares the segment and the feature.
212
+ *
213
+ * @param {SnappedInfo} data1 The first snap data set.
214
+ * @param {SnappedInfo} data2 The second snap data set.
215
+ * @return {boolean} `true` if the data sets are equal, otherwise `false`.
216
+ * @private
217
+ */
218
+ private areSnapDataEqual_;
182
219
  /**
183
220
  * @param {import("../source/Vector.js").VectorSourceEvent|import("../Collection.js").CollectionEvent<import("../Feature.js").default>} evt Event.
184
221
  * @private
@@ -1 +1 @@
1
- {"version":3,"file":"Snap.d.ts","sourceRoot":"","sources":["Snap.js"],"names":[],"mappings":";;;;;YA4Bc,OAAO,kBAAkB,EAAE,UAAU,GAAC,IAAI;;;;iBAC1C,OAAO,aAAa,EAAE,KAAK,GAAC,IAAI;;;;aAChC,OAAO,eAAe,EAAE,OAAO,GAAC,IAAI;;;;aACpC,KAAK,CAAC,OAAO,kBAAkB,EAAE,UAAU,CAAC,GAAC,IAAI;;;;;;aAKjD,OAAO,eAAe,EAAE,OAAO;;;;aAC/B,KAAK,CAAC,OAAO,kBAAkB,EAAE,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BAuC7C,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,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,GAClE,OAAW,eAAe,EAAE,mBAAmB,CAAC,OAAO,eAAe,EAAE,UAAU,GAAC,OAAO,oBAAoB,EAAE,KAAK,GACrH,eAAqB,GAAC,MAAM,EAAE,MAAM,CAAC;AAPtC;;;;;;;;GAQG;AAEH;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH;IACE;;OAEG;IACH,sBAFW,OAAO,EAqHjB;IAlGC;;OAEG;IACH,IAFU,eAAe,CAAC,OAAO,WAAW,EAAE,SAAS,CAAC,CAEjD;IAEP;;OAEG;IACH,MAFU,eAAe,CAAC,OAAO,WAAW,EAAE,SAAS,CAAC,CAE/C;IAET;;OAEG;IACH,IAFU,eAAe,CAAC,IAAI,CAAC,CAExB;IAEP;;;OAGG;IACH,gBAAqD;IAErD;;;OAGG;IACH,gBAAmE;IAEnE;;;OAGG;IACH,cAA6D;IAE7D;;;OAGG;IACH,kBAA2D;IAE3D;;;OAGG;IACH,8BAA+B;IAE/B;;;OAGG;IACH,mCAAoC;IAEpC;;;;;OAKG;IACH,gCAAiC;IAEjC;;;;;;OAMG;IACH,yBAA0B;IAE1B;;;OAGG;IACH,wBACoE;IAEpE;;;;OAIG;IACH,eAAyB;IAEzB;;;;OAIG;IACH,6BAUC;IAGH;;;;;;OAMG;IACH,oBALW,OAAO,eAAe,EAAE,OAAO,aAC/B,OAAO,QAwCjB;IAED;;;OAGG;IACH,qBASC;IAyBD;;;OAGG;IACH,0BAKC;IAED;;;OAGG;IACH,6BAKC;IAED;;;OAGG;IACH,6BAUC;IAiBD;;;;;;OAMG;IACH,uBALW,OAAO,eAAe,EAAE,OAAO,aAC/B,OAAO,QAyBjB;IAED;;;;;;OAMG;IACH,qBAHW,OAAO,WAAW,EAAE,OAAO,QAqDrC;IAED;;;;;OAKG;IACH,cALW,OAAO,aAAa,EAAE,KAAK,mBAC3B,OAAO,kBAAkB,EAAE,UAAU,OACrC,OAAO,WAAW,EAAE,OAAO,GAC1B,MAAM,GAAC,IAAI,CAgHtB;IAED;;;OAGG;IACH,uBAGC;IAED;;;;OAIG;IACH,+BAiBC;IAED;;;;OAIG;IACH,2CAQC;IAED;;;;OAIG;IACH,mCAKC;IAED;;;;OAIG;IACH,wCAQC;IAED;;;;OAIG;IACH,mCAIC;IAED;;;;OAIG;IACH,qCAWC;IAED;;;;OAIG;IACH,8BAEC;IAED;;;;OAIG;IACH,gCAQC;CACF;0BAlrBsC,wBAAwB;+BAchC,cAAc"}
1
+ {"version":3,"file":"Snap.d.ts","sourceRoot":"","sources":["Snap.js"],"names":[],"mappings":"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"}
@@ -48,6 +48,15 @@ import PointerInteraction from './Pointer.js';
48
48
  * @property {import("../source/Vector.js").default} [source] Snap to features from this source. Either this option or features should be provided
49
49
  */
50
50
 
51
+ /**
52
+ * Information about the last snapped state.
53
+ * @typedef {Object} SnappedInfo
54
+ * @property {import("../coordinate.js").Coordinate|null} vertex - The snapped vertex.
55
+ * @property {import("../coordinate.js").Coordinate|null} vertexPixel - The pixel of the snapped vertex.
56
+ * @property {import("../Feature.js").default|null} feature - The feature being snapped.
57
+ * @property {Array<import("../coordinate.js").Coordinate>|null} segment - Segment, or `null` if snapped to a vertex.
58
+ */
59
+
51
60
  /**
52
61
  * @param {import("../source/Vector.js").VectorSourceEvent|import("../Collection.js").CollectionEvent<import("../Feature.js").default>} evt Event.
53
62
  * @return {import("../Feature.js").default|null} Feature.
@@ -210,6 +219,13 @@ class Snap extends PointerInteraction {
210
219
  */
211
220
  this.rBush_ = new RBush();
212
221
 
222
+ /**
223
+ * Holds information about the last snapped state.
224
+ * @type {SnappedInfo|null}
225
+ * @private
226
+ */
227
+ this.snapped_ = null;
228
+
213
229
  /**
214
230
  * @const
215
231
  * @private
@@ -288,6 +304,19 @@ class Snap extends PointerInteraction {
288
304
  return features;
289
305
  }
290
306
 
307
+ /**
308
+ * Checks if two snap data sets are equal.
309
+ * Compares the segment and the feature.
310
+ *
311
+ * @param {SnappedInfo} data1 The first snap data set.
312
+ * @param {SnappedInfo} data2 The second snap data set.
313
+ * @return {boolean} `true` if the data sets are equal, otherwise `false`.
314
+ * @private
315
+ */
316
+ areSnapDataEqual_(data1, data2) {
317
+ return data1.segment === data2.segment && data1.feature === data2.feature;
318
+ }
319
+
291
320
  /**
292
321
  * @param {import("../MapBrowserEvent.js").default} evt Map browser event.
293
322
  * @return {boolean} `false` to stop event propagation.
@@ -296,18 +325,29 @@ class Snap extends PointerInteraction {
296
325
  */
297
326
  handleEvent(evt) {
298
327
  const result = this.snapTo(evt.pixel, evt.coordinate, evt.map);
328
+
299
329
  if (result) {
300
330
  evt.coordinate = result.vertex.slice(0, 2);
301
331
  evt.pixel = result.vertexPixel;
302
- this.dispatchEvent(
303
- new SnapEvent(SnapEventType.SNAP, {
304
- vertex: evt.coordinate,
305
- vertexPixel: evt.pixel,
306
- feature: result.feature,
307
- segment: result.segment,
308
- }),
309
- );
332
+
333
+ // Dispatch UNSNAP event if already snapped
334
+ if (this.snapped_ && !this.areSnapDataEqual_(this.snapped_, result)) {
335
+ this.dispatchEvent(new SnapEvent(SnapEventType.UNSNAP, this.snapped_));
336
+ }
337
+
338
+ this.snapped_ = {
339
+ vertex: evt.coordinate,
340
+ vertexPixel: evt.pixel,
341
+ feature: result.feature,
342
+ segment: result.segment,
343
+ };
344
+ this.dispatchEvent(new SnapEvent(SnapEventType.SNAP, this.snapped_));
345
+ } else if (this.snapped_) {
346
+ // Dispatch UNSNAP event if no longer snapped
347
+ this.dispatchEvent(new SnapEvent(SnapEventType.UNSNAP, this.snapped_));
348
+ this.snapped_ = null;
310
349
  }
350
+
311
351
  return super.handleEvent(evt);
312
352
  }
313
353
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ol",
3
- "version": "10.4.1-dev.1738253405574",
3
+ "version": "10.4.1-dev.1738363213886",
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.4.1-dev.1738253405574';
36
+ export const VERSION = '10.4.1-dev.1738363213886';