@vaadin/bundles 25.0.0-alpha3 → 25.0.0-alpha5

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.
Files changed (192) hide show
  1. package/node_modules_ol_ImageCanvas_js.js +76 -83
  2. package/node_modules_ol_ImageCanvas_js.js.map +1 -1
  3. package/node_modules_ol_TileRange_js.js +128 -110
  4. package/node_modules_ol_TileRange_js.js.map +1 -1
  5. package/node_modules_ol_Tile_js.js +279 -0
  6. package/node_modules_ol_Tile_js.js.map +1 -0
  7. package/node_modules_ol_VectorRenderTile_js.js +428 -143
  8. package/node_modules_ol_VectorRenderTile_js.js.map +1 -1
  9. package/node_modules_ol_VectorTile_js.js +405 -119
  10. package/node_modules_ol_VectorTile_js.js.map +1 -1
  11. package/node_modules_ol_control_MousePosition_js.js +327 -0
  12. package/node_modules_ol_control_MousePosition_js.js.map +1 -0
  13. package/node_modules_ol_control_ZoomToExtent_js.js +118 -0
  14. package/node_modules_ol_control_ZoomToExtent_js.js.map +1 -0
  15. package/node_modules_ol_events_SnapEvent_js.js +79 -0
  16. package/node_modules_ol_events_SnapEvent_js.js.map +1 -0
  17. package/node_modules_ol_featureloader_js.js +205 -0
  18. package/node_modules_ol_featureloader_js.js.map +1 -0
  19. package/node_modules_ol_geom_Circle_js.js +300 -0
  20. package/node_modules_ol_geom_Circle_js.js.map +1 -0
  21. package/node_modules_ol_geom_GeometryCollection_js.js +369 -0
  22. package/node_modules_ol_geom_GeometryCollection_js.js.map +1 -0
  23. package/node_modules_ol_geom_MultiPoint_js.js +228 -0
  24. package/node_modules_ol_geom_MultiPoint_js.js.map +1 -0
  25. package/node_modules_ol_geom_flat_center_js.js +47 -0
  26. package/node_modules_ol_geom_flat_center_js.js.map +1 -0
  27. package/node_modules_ol_geom_flat_geodesic_js.js +123 -88
  28. package/node_modules_ol_geom_flat_geodesic_js.js.map +1 -1
  29. package/node_modules_ol_geom_flat_interpolate_js.js +230 -0
  30. package/node_modules_ol_geom_flat_interpolate_js.js.map +1 -0
  31. package/node_modules_ol_geom_flat_length_js-_375a0.js +58 -0
  32. package/node_modules_ol_geom_flat_length_js-_375a0.js.map +1 -0
  33. package/node_modules_ol_geom_flat_length_js-_375a1.js +58 -0
  34. package/node_modules_ol_geom_flat_length_js-_375a1.js.map +1 -0
  35. package/node_modules_ol_geom_flat_length_js-_375a2.js +58 -0
  36. package/node_modules_ol_geom_flat_length_js-_375a2.js.map +1 -0
  37. package/node_modules_ol_geom_flat_length_js-_375a3.js +58 -0
  38. package/node_modules_ol_geom_flat_length_js-_375a3.js.map +1 -0
  39. package/node_modules_ol_geom_flat_length_js-_375a4.js +58 -0
  40. package/node_modules_ol_geom_flat_length_js-_375a4.js.map +1 -0
  41. package/node_modules_ol_geom_flat_linechunk_js.js +76 -0
  42. package/node_modules_ol_geom_flat_linechunk_js.js.map +1 -0
  43. package/node_modules_ol_geom_flat_straightchunk_js.js +68 -0
  44. package/node_modules_ol_geom_flat_straightchunk_js.js.map +1 -0
  45. package/node_modules_ol_geom_flat_textpath_js.js +178 -0
  46. package/node_modules_ol_geom_flat_textpath_js.js.map +1 -0
  47. package/node_modules_ol_interaction_DblClickDragZoom_js.js +285 -0
  48. package/node_modules_ol_interaction_DblClickDragZoom_js.js.map +1 -0
  49. package/node_modules_ol_interaction_DragAndDrop_js.js +351 -0
  50. package/node_modules_ol_interaction_DragAndDrop_js.js.map +1 -0
  51. package/node_modules_ol_interaction_DragRotateAndZoom_js.js +159 -0
  52. package/node_modules_ol_interaction_DragRotateAndZoom_js.js.map +1 -0
  53. package/node_modules_ol_layer_Vector_js-_49290.js +110 -0
  54. package/node_modules_ol_layer_Vector_js-_49290.js.map +1 -0
  55. package/node_modules_ol_layer_Vector_js-_49291.js +110 -0
  56. package/node_modules_ol_layer_Vector_js-_49291.js.map +1 -0
  57. package/node_modules_ol_layer_Vector_js-_49292.js +110 -0
  58. package/node_modules_ol_layer_Vector_js-_49292.js.map +1 -0
  59. package/node_modules_ol_layer_Vector_js-_49293.js +110 -0
  60. package/node_modules_ol_layer_Vector_js-_49293.js.map +1 -0
  61. package/node_modules_ol_loadingstrategy_js.js +95 -0
  62. package/node_modules_ol_loadingstrategy_js.js.map +1 -0
  63. package/node_modules_ol_render_VectorContext_js-_3ad60.js +144 -0
  64. package/node_modules_ol_render_VectorContext_js-_3ad60.js.map +1 -0
  65. package/node_modules_ol_render_VectorContext_js-_3ad61.js +144 -0
  66. package/node_modules_ol_render_VectorContext_js-_3ad61.js.map +1 -0
  67. package/node_modules_ol_render_VectorContext_js-node_modules_ol_render_canvas_hitdetect_js.js +372 -0
  68. package/node_modules_ol_render_VectorContext_js-node_modules_ol_render_canvas_hitdetect_js.js.map +1 -0
  69. package/node_modules_ol_render_canvas_ImageBuilder_js.js +318 -0
  70. package/node_modules_ol_render_canvas_ImageBuilder_js.js.map +1 -0
  71. package/node_modules_ol_render_canvas_Instruction_js.js +66 -0
  72. package/node_modules_ol_render_canvas_Instruction_js.js.map +1 -0
  73. package/node_modules_ol_render_canvas_LineStringBuilder_js.js +187 -0
  74. package/node_modules_ol_render_canvas_LineStringBuilder_js.js.map +1 -0
  75. package/node_modules_ol_render_canvas_PolygonBuilder_js.js +276 -0
  76. package/node_modules_ol_render_canvas_PolygonBuilder_js.js.map +1 -0
  77. package/node_modules_ol_render_canvas_ZIndexContext_js-_fab20.js +156 -0
  78. package/node_modules_ol_render_canvas_ZIndexContext_js-_fab20.js.map +1 -0
  79. package/node_modules_ol_render_canvas_ZIndexContext_js-_fab21.js +156 -0
  80. package/node_modules_ol_render_canvas_ZIndexContext_js-_fab21.js.map +1 -0
  81. package/node_modules_ol_render_js-node_modules_ol_render_VectorContext_js.js +301 -0
  82. package/node_modules_ol_render_js-node_modules_ol_render_VectorContext_js.js.map +1 -0
  83. package/node_modules_ol_renderer_Layer_js.js +219 -0
  84. package/node_modules_ol_renderer_Layer_js.js.map +1 -0
  85. package/node_modules_ol_source_Source_js.js +256 -0
  86. package/node_modules_ol_source_Source_js.js.map +1 -0
  87. package/node_modules_ol_source_VectorEventType_js-node_modules_ol_structs_RBush_js.js +318 -0
  88. package/node_modules_ol_source_VectorEventType_js-node_modules_ol_structs_RBush_js.js.map +1 -0
  89. package/node_modules_ol_source_VectorEventType_js.js +80 -0
  90. package/node_modules_ol_source_VectorEventType_js.js.map +1 -0
  91. package/node_modules_ol_structs_RBush_js.js +242 -0
  92. package/node_modules_ol_structs_RBush_js.js.map +1 -0
  93. package/node_modules_ol_style_js.js +2 -1
  94. package/node_modules_ol_style_js.js.map +1 -1
  95. package/node_modules_rbush_rbush_min_js.js +16 -0
  96. package/node_modules_rbush_rbush_min_js.js.map +1 -0
  97. package/package.json +142 -146
  98. package/vaadin-bundle.json +2447 -2352
  99. package/vaadin.js +52246 -63791
  100. package/vaadin.js.map +1 -1
  101. package/vendors-node_modules_dompurify_dist_purify_es_mjs.js +1364 -0
  102. package/vendors-node_modules_dompurify_dist_purify_es_mjs.js.map +1 -0
  103. package/vendors-node_modules_dompurify_dist_purify_js.js +26 -21
  104. package/vendors-node_modules_dompurify_dist_purify_js.js.map +1 -1
  105. package/vendors-node_modules_marked_lib_marked_esm_js.js +2205 -0
  106. package/vendors-node_modules_marked_lib_marked_esm_js.js.map +1 -0
  107. package/vendors-node_modules_marked_lib_marked_umd_js.js +2164 -2556
  108. package/vendors-node_modules_marked_lib_marked_umd_js.js.map +1 -1
  109. package/vendors-node_modules_ol_Feature_js.js +360 -0
  110. package/vendors-node_modules_ol_Feature_js.js.map +1 -0
  111. package/vendors-node_modules_ol_Geolocation_js.js +352 -293
  112. package/vendors-node_modules_ol_Geolocation_js.js.map +1 -1
  113. package/vendors-node_modules_ol_ImageTile_js.js +494 -0
  114. package/vendors-node_modules_ol_ImageTile_js.js.map +1 -0
  115. package/vendors-node_modules_ol_Overlay_js.js +606 -0
  116. package/vendors-node_modules_ol_Overlay_js.js.map +1 -0
  117. package/vendors-node_modules_ol_control_FullScreen_js.js +417 -0
  118. package/vendors-node_modules_ol_control_FullScreen_js.js.map +1 -0
  119. package/vendors-node_modules_ol_control_OverviewMap_js.js +711 -0
  120. package/vendors-node_modules_ol_control_OverviewMap_js.js.map +1 -0
  121. package/vendors-node_modules_ol_control_ScaleLine_js.js +509 -0
  122. package/vendors-node_modules_ol_control_ScaleLine_js.js.map +1 -0
  123. package/vendors-node_modules_ol_control_ZoomSlider_js.js +418 -0
  124. package/vendors-node_modules_ol_control_ZoomSlider_js.js.map +1 -0
  125. package/vendors-node_modules_ol_control_js.js +490 -0
  126. package/vendors-node_modules_ol_control_js.js.map +1 -0
  127. package/vendors-node_modules_ol_geom_LineString_js.js +574 -0
  128. package/vendors-node_modules_ol_geom_LineString_js.js.map +1 -0
  129. package/vendors-node_modules_ol_geom_MultiLineString_js.js +405 -0
  130. package/vendors-node_modules_ol_geom_MultiLineString_js.js.map +1 -0
  131. package/vendors-node_modules_ol_geom_MultiPolygon_js.js +773 -0
  132. package/vendors-node_modules_ol_geom_MultiPolygon_js.js.map +1 -0
  133. package/vendors-node_modules_ol_geom_js-node_modules_ol_geom_flat_length_js.js +769 -0
  134. package/vendors-node_modules_ol_geom_js-node_modules_ol_geom_flat_length_js.js.map +1 -0
  135. package/vendors-node_modules_ol_index_js.js +526 -675
  136. package/vendors-node_modules_ol_index_js.js.map +1 -1
  137. package/vendors-node_modules_ol_interaction_Draw_js.js +2777 -0
  138. package/vendors-node_modules_ol_interaction_Draw_js.js.map +1 -0
  139. package/vendors-node_modules_ol_interaction_Extent_js.js +586 -0
  140. package/vendors-node_modules_ol_interaction_Extent_js.js.map +1 -0
  141. package/vendors-node_modules_ol_interaction_Link_js.js +489 -0
  142. package/vendors-node_modules_ol_interaction_Link_js.js.map +1 -0
  143. package/vendors-node_modules_ol_interaction_Modify_js.js +1841 -0
  144. package/vendors-node_modules_ol_interaction_Modify_js.js.map +1 -0
  145. package/vendors-node_modules_ol_interaction_Select_js.js +623 -0
  146. package/vendors-node_modules_ol_interaction_Select_js.js.map +1 -0
  147. package/vendors-node_modules_ol_interaction_Snap_js.js +982 -0
  148. package/vendors-node_modules_ol_interaction_Snap_js.js.map +1 -0
  149. package/vendors-node_modules_ol_interaction_Translate_js.js +466 -0
  150. package/vendors-node_modules_ol_interaction_Translate_js.js.map +1 -0
  151. package/vendors-node_modules_ol_interaction_js.js +872 -0
  152. package/vendors-node_modules_ol_interaction_js.js.map +1 -0
  153. package/vendors-node_modules_ol_layer_Graticule_js.js +1374 -989
  154. package/vendors-node_modules_ol_layer_Graticule_js.js.map +1 -1
  155. package/vendors-node_modules_ol_render_Feature_js.js +546 -0
  156. package/vendors-node_modules_ol_render_Feature_js.js.map +1 -0
  157. package/vendors-node_modules_ol_render_canvas_BuilderGroup_js.js +897 -0
  158. package/vendors-node_modules_ol_render_canvas_BuilderGroup_js.js.map +1 -0
  159. package/vendors-node_modules_ol_render_canvas_Builder_js.js +907 -0
  160. package/vendors-node_modules_ol_render_canvas_Builder_js.js.map +1 -0
  161. package/vendors-node_modules_ol_render_canvas_ExecutorGroup_js.js +539 -0
  162. package/vendors-node_modules_ol_render_canvas_ExecutorGroup_js.js.map +1 -0
  163. package/vendors-node_modules_ol_render_canvas_Executor_js.js +1715 -0
  164. package/vendors-node_modules_ol_render_canvas_Executor_js.js.map +1 -0
  165. package/vendors-node_modules_ol_render_canvas_Immediate_js.js +1208 -0
  166. package/vendors-node_modules_ol_render_canvas_Immediate_js.js.map +1 -0
  167. package/vendors-node_modules_ol_render_canvas_TextBuilder_js.js +825 -0
  168. package/vendors-node_modules_ol_render_canvas_TextBuilder_js.js.map +1 -0
  169. package/vendors-node_modules_ol_renderer_canvas_Layer_js.js +654 -0
  170. package/vendors-node_modules_ol_renderer_canvas_Layer_js.js.map +1 -0
  171. package/vendors-node_modules_ol_renderer_canvas_VectorLayer_js.js +1044 -0
  172. package/vendors-node_modules_ol_renderer_canvas_VectorLayer_js.js.map +1 -0
  173. package/vendors-node_modules_ol_renderer_vector_js.js +460 -0
  174. package/vendors-node_modules_ol_renderer_vector_js.js.map +1 -0
  175. package/vendors-node_modules_ol_source_Vector_js.js +2091 -0
  176. package/vendors-node_modules_ol_source_Vector_js.js.map +1 -0
  177. package/node_modules_ol_ImageTile_js.js +0 -177
  178. package/node_modules_ol_ImageTile_js.js.map +0 -1
  179. package/node_modules_ol_render_js.js +0 -131
  180. package/node_modules_ol_render_js.js.map +0 -1
  181. package/node_modules_ol_structs_LRUCache_js.js +0 -275
  182. package/node_modules_ol_structs_LRUCache_js.js.map +0 -1
  183. package/node_modules_ol_tilecoord_js.js +0 -115
  184. package/node_modules_ol_tilecoord_js.js.map +0 -1
  185. package/vendors-node_modules_ol_TileCache_js.js +0 -461
  186. package/vendors-node_modules_ol_TileCache_js.js.map +0 -1
  187. package/vendors-node_modules_ol_Tile_js.js +0 -330
  188. package/vendors-node_modules_ol_Tile_js.js.map +0 -1
  189. package/vendors-node_modules_ol_style_Text_js.js +0 -509
  190. package/vendors-node_modules_ol_style_Text_js.js.map +0 -1
  191. package/vendors-node_modules_rbush_index_js.js +0 -531
  192. package/vendors-node_modules_rbush_index_js.js.map +0 -1
@@ -0,0 +1,574 @@
1
+ (self["webpackChunk_vaadin_bundles"] = self["webpackChunk_vaadin_bundles"] || []).push([["vendors-node_modules_ol_geom_LineString_js"],{
2
+
3
+ /***/ "./node_modules/ol/geom/LineString.js":
4
+ /*!********************************************!*\
5
+ !*** ./node_modules/ol/geom/LineString.js ***!
6
+ \********************************************/
7
+ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
8
+
9
+ __webpack_require__.r(__webpack_exports__);
10
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
11
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
12
+ /* harmony export */ });
13
+ /* harmony import */ var _array_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../array.js */ "./node_modules/ol/array.js");
14
+ /* harmony import */ var _extent_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../extent.js */ "./node_modules/ol/extent.js");
15
+ /* harmony import */ var _SimpleGeometry_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SimpleGeometry.js */ "./node_modules/ol/geom/SimpleGeometry.js");
16
+ /* harmony import */ var _flat_closest_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./flat/closest.js */ "./node_modules/ol/geom/flat/closest.js");
17
+ /* harmony import */ var _flat_deflate_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./flat/deflate.js */ "./node_modules/ol/geom/flat/deflate.js");
18
+ /* harmony import */ var _flat_inflate_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./flat/inflate.js */ "./node_modules/ol/geom/flat/inflate.js");
19
+ /* harmony import */ var _flat_interpolate_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./flat/interpolate.js */ "./node_modules/ol/geom/flat/interpolate.js");
20
+ /* harmony import */ var _flat_intersectsextent_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./flat/intersectsextent.js */ "./node_modules/ol/geom/flat/intersectsextent.js");
21
+ /* harmony import */ var _flat_length_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./flat/length.js */ "./node_modules/ol/geom/flat/length.js");
22
+ /* harmony import */ var _flat_segments_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./flat/segments.js */ "./node_modules/ol/geom/flat/segments.js");
23
+ /* harmony import */ var _flat_simplify_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./flat/simplify.js */ "./node_modules/ol/geom/flat/simplify.js");
24
+ /**
25
+ * @module ol/geom/LineString
26
+ */
27
+
28
+
29
+
30
+
31
+
32
+
33
+
34
+
35
+
36
+
37
+
38
+
39
+ /**
40
+ * @classdesc
41
+ * Linestring geometry.
42
+ *
43
+ * @api
44
+ */
45
+ class LineString extends _SimpleGeometry_js__WEBPACK_IMPORTED_MODULE_0__["default"] {
46
+ /**
47
+ * @param {Array<import("../coordinate.js").Coordinate>|Array<number>} coordinates Coordinates.
48
+ * For internal use, flat coordinates in combination with `layout` are also accepted.
49
+ * @param {import("./Geometry.js").GeometryLayout} [layout] Layout.
50
+ */
51
+ constructor(coordinates, layout) {
52
+ super();
53
+
54
+ /**
55
+ * @private
56
+ * @type {import("../coordinate.js").Coordinate|null}
57
+ */
58
+ this.flatMidpoint_ = null;
59
+
60
+ /**
61
+ * @private
62
+ * @type {number}
63
+ */
64
+ this.flatMidpointRevision_ = -1;
65
+
66
+ /**
67
+ * @private
68
+ * @type {number}
69
+ */
70
+ this.maxDelta_ = -1;
71
+
72
+ /**
73
+ * @private
74
+ * @type {number}
75
+ */
76
+ this.maxDeltaRevision_ = -1;
77
+
78
+ if (layout !== undefined && !Array.isArray(coordinates[0])) {
79
+ this.setFlatCoordinates(
80
+ layout,
81
+ /** @type {Array<number>} */ (coordinates),
82
+ );
83
+ } else {
84
+ this.setCoordinates(
85
+ /** @type {Array<import("../coordinate.js").Coordinate>} */ (
86
+ coordinates
87
+ ),
88
+ layout,
89
+ );
90
+ }
91
+ }
92
+
93
+ /**
94
+ * Append the passed coordinate to the coordinates of the linestring.
95
+ * @param {import("../coordinate.js").Coordinate} coordinate Coordinate.
96
+ * @api
97
+ */
98
+ appendCoordinate(coordinate) {
99
+ (0,_array_js__WEBPACK_IMPORTED_MODULE_1__.extend)(this.flatCoordinates, coordinate);
100
+ this.changed();
101
+ }
102
+
103
+ /**
104
+ * Make a complete copy of the geometry.
105
+ * @return {!LineString} Clone.
106
+ * @api
107
+ * @override
108
+ */
109
+ clone() {
110
+ const lineString = new LineString(
111
+ this.flatCoordinates.slice(),
112
+ this.layout,
113
+ );
114
+ lineString.applyProperties(this);
115
+ return lineString;
116
+ }
117
+
118
+ /**
119
+ * @param {number} x X.
120
+ * @param {number} y Y.
121
+ * @param {import("../coordinate.js").Coordinate} closestPoint Closest point.
122
+ * @param {number} minSquaredDistance Minimum squared distance.
123
+ * @return {number} Minimum squared distance.
124
+ * @override
125
+ */
126
+ closestPointXY(x, y, closestPoint, minSquaredDistance) {
127
+ if (minSquaredDistance < (0,_extent_js__WEBPACK_IMPORTED_MODULE_2__.closestSquaredDistanceXY)(this.getExtent(), x, y)) {
128
+ return minSquaredDistance;
129
+ }
130
+ if (this.maxDeltaRevision_ != this.getRevision()) {
131
+ this.maxDelta_ = Math.sqrt(
132
+ (0,_flat_closest_js__WEBPACK_IMPORTED_MODULE_3__.maxSquaredDelta)(
133
+ this.flatCoordinates,
134
+ 0,
135
+ this.flatCoordinates.length,
136
+ this.stride,
137
+ 0,
138
+ ),
139
+ );
140
+ this.maxDeltaRevision_ = this.getRevision();
141
+ }
142
+ return (0,_flat_closest_js__WEBPACK_IMPORTED_MODULE_3__.assignClosestPoint)(
143
+ this.flatCoordinates,
144
+ 0,
145
+ this.flatCoordinates.length,
146
+ this.stride,
147
+ this.maxDelta_,
148
+ false,
149
+ x,
150
+ y,
151
+ closestPoint,
152
+ minSquaredDistance,
153
+ );
154
+ }
155
+
156
+ /**
157
+ * Iterate over each segment, calling the provided callback.
158
+ * If the callback returns a truthy value the function returns that
159
+ * value immediately. Otherwise the function returns `false`.
160
+ *
161
+ * @param {function(this: S, import("../coordinate.js").Coordinate, import("../coordinate.js").Coordinate): T} callback Function
162
+ * called for each segment. The function will receive two arguments, the start and end coordinates of the segment.
163
+ * @return {T|boolean} Value.
164
+ * @template T,S
165
+ * @api
166
+ */
167
+ forEachSegment(callback) {
168
+ return (0,_flat_segments_js__WEBPACK_IMPORTED_MODULE_4__.forEach)(
169
+ this.flatCoordinates,
170
+ 0,
171
+ this.flatCoordinates.length,
172
+ this.stride,
173
+ callback,
174
+ );
175
+ }
176
+
177
+ /**
178
+ * Returns the coordinate at `m` using linear interpolation, or `null` if no
179
+ * such coordinate exists.
180
+ *
181
+ * `extrapolate` controls extrapolation beyond the range of Ms in the
182
+ * MultiLineString. If `extrapolate` is `true` then Ms less than the first
183
+ * M will return the first coordinate and Ms greater than the last M will
184
+ * return the last coordinate.
185
+ *
186
+ * @param {number} m M.
187
+ * @param {boolean} [extrapolate] Extrapolate. Default is `false`.
188
+ * @return {import("../coordinate.js").Coordinate|null} Coordinate.
189
+ * @api
190
+ */
191
+ getCoordinateAtM(m, extrapolate) {
192
+ if (this.layout != 'XYM' && this.layout != 'XYZM') {
193
+ return null;
194
+ }
195
+ extrapolate = extrapolate !== undefined ? extrapolate : false;
196
+ return (0,_flat_interpolate_js__WEBPACK_IMPORTED_MODULE_5__.lineStringCoordinateAtM)(
197
+ this.flatCoordinates,
198
+ 0,
199
+ this.flatCoordinates.length,
200
+ this.stride,
201
+ m,
202
+ extrapolate,
203
+ );
204
+ }
205
+
206
+ /**
207
+ * Return the coordinates of the linestring.
208
+ * @return {Array<import("../coordinate.js").Coordinate>} Coordinates.
209
+ * @api
210
+ * @override
211
+ */
212
+ getCoordinates() {
213
+ return (0,_flat_inflate_js__WEBPACK_IMPORTED_MODULE_6__.inflateCoordinates)(
214
+ this.flatCoordinates,
215
+ 0,
216
+ this.flatCoordinates.length,
217
+ this.stride,
218
+ );
219
+ }
220
+
221
+ /**
222
+ * Return the coordinate at the provided fraction along the linestring.
223
+ * The `fraction` is a number between 0 and 1, where 0 is the start of the
224
+ * linestring and 1 is the end.
225
+ * @param {number} fraction Fraction.
226
+ * @param {import("../coordinate.js").Coordinate} [dest] Optional coordinate whose values will
227
+ * be modified. If not provided, a new coordinate will be returned.
228
+ * @return {import("../coordinate.js").Coordinate} Coordinate of the interpolated point.
229
+ * @api
230
+ */
231
+ getCoordinateAt(fraction, dest) {
232
+ return (0,_flat_interpolate_js__WEBPACK_IMPORTED_MODULE_5__.interpolatePoint)(
233
+ this.flatCoordinates,
234
+ 0,
235
+ this.flatCoordinates.length,
236
+ this.stride,
237
+ fraction,
238
+ dest,
239
+ this.stride,
240
+ );
241
+ }
242
+
243
+ /**
244
+ * Return the length of the linestring on projected plane.
245
+ * @return {number} Length (on projected plane).
246
+ * @api
247
+ */
248
+ getLength() {
249
+ return (0,_flat_length_js__WEBPACK_IMPORTED_MODULE_7__.lineStringLength)(
250
+ this.flatCoordinates,
251
+ 0,
252
+ this.flatCoordinates.length,
253
+ this.stride,
254
+ );
255
+ }
256
+
257
+ /**
258
+ * @return {Array<number>} Flat midpoint.
259
+ */
260
+ getFlatMidpoint() {
261
+ if (this.flatMidpointRevision_ != this.getRevision()) {
262
+ this.flatMidpoint_ = this.getCoordinateAt(
263
+ 0.5,
264
+ this.flatMidpoint_ ?? undefined,
265
+ );
266
+ this.flatMidpointRevision_ = this.getRevision();
267
+ }
268
+ return /** @type {Array<number>} */ (this.flatMidpoint_);
269
+ }
270
+
271
+ /**
272
+ * @param {number} squaredTolerance Squared tolerance.
273
+ * @return {LineString} Simplified LineString.
274
+ * @protected
275
+ * @override
276
+ */
277
+ getSimplifiedGeometryInternal(squaredTolerance) {
278
+ /** @type {Array<number>} */
279
+ const simplifiedFlatCoordinates = [];
280
+ simplifiedFlatCoordinates.length = (0,_flat_simplify_js__WEBPACK_IMPORTED_MODULE_8__.douglasPeucker)(
281
+ this.flatCoordinates,
282
+ 0,
283
+ this.flatCoordinates.length,
284
+ this.stride,
285
+ squaredTolerance,
286
+ simplifiedFlatCoordinates,
287
+ 0,
288
+ );
289
+ return new LineString(simplifiedFlatCoordinates, 'XY');
290
+ }
291
+
292
+ /**
293
+ * Get the type of this geometry.
294
+ * @return {import("./Geometry.js").Type} Geometry type.
295
+ * @api
296
+ * @override
297
+ */
298
+ getType() {
299
+ return 'LineString';
300
+ }
301
+
302
+ /**
303
+ * Test if the geometry and the passed extent intersect.
304
+ * @param {import("../extent.js").Extent} extent Extent.
305
+ * @return {boolean} `true` if the geometry and the extent intersect.
306
+ * @api
307
+ * @override
308
+ */
309
+ intersectsExtent(extent) {
310
+ return (0,_flat_intersectsextent_js__WEBPACK_IMPORTED_MODULE_9__.intersectsLineString)(
311
+ this.flatCoordinates,
312
+ 0,
313
+ this.flatCoordinates.length,
314
+ this.stride,
315
+ extent,
316
+ this.getExtent(),
317
+ );
318
+ }
319
+
320
+ /**
321
+ * Set the coordinates of the linestring.
322
+ * @param {!Array<import("../coordinate.js").Coordinate>} coordinates Coordinates.
323
+ * @param {import("./Geometry.js").GeometryLayout} [layout] Layout.
324
+ * @api
325
+ * @override
326
+ */
327
+ setCoordinates(coordinates, layout) {
328
+ this.setLayout(layout, coordinates, 1);
329
+ if (!this.flatCoordinates) {
330
+ this.flatCoordinates = [];
331
+ }
332
+ this.flatCoordinates.length = (0,_flat_deflate_js__WEBPACK_IMPORTED_MODULE_10__.deflateCoordinates)(
333
+ this.flatCoordinates,
334
+ 0,
335
+ coordinates,
336
+ this.stride,
337
+ );
338
+ this.changed();
339
+ }
340
+ }
341
+
342
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (LineString);
343
+
344
+
345
+ /***/ }),
346
+
347
+ /***/ "./node_modules/ol/geom/flat/interpolate.js":
348
+ /*!**************************************************!*\
349
+ !*** ./node_modules/ol/geom/flat/interpolate.js ***!
350
+ \**************************************************/
351
+ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
352
+
353
+ __webpack_require__.r(__webpack_exports__);
354
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
355
+ /* harmony export */ "interpolatePoint": () => (/* binding */ interpolatePoint),
356
+ /* harmony export */ "lineStringCoordinateAtM": () => (/* binding */ lineStringCoordinateAtM),
357
+ /* harmony export */ "lineStringsCoordinateAtM": () => (/* binding */ lineStringsCoordinateAtM)
358
+ /* harmony export */ });
359
+ /* harmony import */ var _array_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../array.js */ "./node_modules/ol/array.js");
360
+ /* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../math.js */ "./node_modules/ol/math.js");
361
+ /**
362
+ * @module ol/geom/flat/interpolate
363
+ */
364
+
365
+
366
+
367
+ /**
368
+ * @param {Array<number>} flatCoordinates Flat coordinates.
369
+ * @param {number} offset Offset.
370
+ * @param {number} end End.
371
+ * @param {number} stride Stride.
372
+ * @param {number} fraction Fraction.
373
+ * @param {Array<number>} [dest] Destination.
374
+ * @param {number} [dimension] Destination dimension (default is `2`)
375
+ * @return {Array<number>} Destination.
376
+ */
377
+ function interpolatePoint(
378
+ flatCoordinates,
379
+ offset,
380
+ end,
381
+ stride,
382
+ fraction,
383
+ dest,
384
+ dimension,
385
+ ) {
386
+ let o, t;
387
+ const n = (end - offset) / stride;
388
+ if (n === 1) {
389
+ o = offset;
390
+ } else if (n === 2) {
391
+ o = offset;
392
+ t = fraction;
393
+ } else if (n !== 0) {
394
+ let x1 = flatCoordinates[offset];
395
+ let y1 = flatCoordinates[offset + 1];
396
+ let length = 0;
397
+ const cumulativeLengths = [0];
398
+ for (let i = offset + stride; i < end; i += stride) {
399
+ const x2 = flatCoordinates[i];
400
+ const y2 = flatCoordinates[i + 1];
401
+ length += Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));
402
+ cumulativeLengths.push(length);
403
+ x1 = x2;
404
+ y1 = y2;
405
+ }
406
+ const target = fraction * length;
407
+ const index = (0,_array_js__WEBPACK_IMPORTED_MODULE_0__.binarySearch)(cumulativeLengths, target);
408
+ if (index < 0) {
409
+ t =
410
+ (target - cumulativeLengths[-index - 2]) /
411
+ (cumulativeLengths[-index - 1] - cumulativeLengths[-index - 2]);
412
+ o = offset + (-index - 2) * stride;
413
+ } else {
414
+ o = offset + index * stride;
415
+ }
416
+ }
417
+ dimension = dimension > 1 ? dimension : 2;
418
+ dest = dest ? dest : new Array(dimension);
419
+ for (let i = 0; i < dimension; ++i) {
420
+ dest[i] =
421
+ o === undefined
422
+ ? NaN
423
+ : t === undefined
424
+ ? flatCoordinates[o + i]
425
+ : (0,_math_js__WEBPACK_IMPORTED_MODULE_1__.lerp)(flatCoordinates[o + i], flatCoordinates[o + stride + i], t);
426
+ }
427
+ return dest;
428
+ }
429
+
430
+ /**
431
+ * @param {Array<number>} flatCoordinates Flat coordinates.
432
+ * @param {number} offset Offset.
433
+ * @param {number} end End.
434
+ * @param {number} stride Stride.
435
+ * @param {number} m M.
436
+ * @param {boolean} extrapolate Extrapolate.
437
+ * @return {import("../../coordinate.js").Coordinate|null} Coordinate.
438
+ */
439
+ function lineStringCoordinateAtM(
440
+ flatCoordinates,
441
+ offset,
442
+ end,
443
+ stride,
444
+ m,
445
+ extrapolate,
446
+ ) {
447
+ if (end == offset) {
448
+ return null;
449
+ }
450
+ let coordinate;
451
+ if (m < flatCoordinates[offset + stride - 1]) {
452
+ if (extrapolate) {
453
+ coordinate = flatCoordinates.slice(offset, offset + stride);
454
+ coordinate[stride - 1] = m;
455
+ return coordinate;
456
+ }
457
+ return null;
458
+ }
459
+ if (flatCoordinates[end - 1] < m) {
460
+ if (extrapolate) {
461
+ coordinate = flatCoordinates.slice(end - stride, end);
462
+ coordinate[stride - 1] = m;
463
+ return coordinate;
464
+ }
465
+ return null;
466
+ }
467
+ // FIXME use O(1) search
468
+ if (m == flatCoordinates[offset + stride - 1]) {
469
+ return flatCoordinates.slice(offset, offset + stride);
470
+ }
471
+ let lo = offset / stride;
472
+ let hi = end / stride;
473
+ while (lo < hi) {
474
+ const mid = (lo + hi) >> 1;
475
+ if (m < flatCoordinates[(mid + 1) * stride - 1]) {
476
+ hi = mid;
477
+ } else {
478
+ lo = mid + 1;
479
+ }
480
+ }
481
+ const m0 = flatCoordinates[lo * stride - 1];
482
+ if (m == m0) {
483
+ return flatCoordinates.slice((lo - 1) * stride, (lo - 1) * stride + stride);
484
+ }
485
+ const m1 = flatCoordinates[(lo + 1) * stride - 1];
486
+ const t = (m - m0) / (m1 - m0);
487
+ coordinate = [];
488
+ for (let i = 0; i < stride - 1; ++i) {
489
+ coordinate.push(
490
+ (0,_math_js__WEBPACK_IMPORTED_MODULE_1__.lerp)(
491
+ flatCoordinates[(lo - 1) * stride + i],
492
+ flatCoordinates[lo * stride + i],
493
+ t,
494
+ ),
495
+ );
496
+ }
497
+ coordinate.push(m);
498
+ return coordinate;
499
+ }
500
+
501
+ /**
502
+ * @param {Array<number>} flatCoordinates Flat coordinates.
503
+ * @param {number} offset Offset.
504
+ * @param {Array<number>} ends Ends.
505
+ * @param {number} stride Stride.
506
+ * @param {number} m M.
507
+ * @param {boolean} extrapolate Extrapolate.
508
+ * @param {boolean} interpolate Interpolate.
509
+ * @return {import("../../coordinate.js").Coordinate|null} Coordinate.
510
+ */
511
+ function lineStringsCoordinateAtM(
512
+ flatCoordinates,
513
+ offset,
514
+ ends,
515
+ stride,
516
+ m,
517
+ extrapolate,
518
+ interpolate,
519
+ ) {
520
+ if (interpolate) {
521
+ return lineStringCoordinateAtM(
522
+ flatCoordinates,
523
+ offset,
524
+ ends[ends.length - 1],
525
+ stride,
526
+ m,
527
+ extrapolate,
528
+ );
529
+ }
530
+ let coordinate;
531
+ if (m < flatCoordinates[stride - 1]) {
532
+ if (extrapolate) {
533
+ coordinate = flatCoordinates.slice(0, stride);
534
+ coordinate[stride - 1] = m;
535
+ return coordinate;
536
+ }
537
+ return null;
538
+ }
539
+ if (flatCoordinates[flatCoordinates.length - 1] < m) {
540
+ if (extrapolate) {
541
+ coordinate = flatCoordinates.slice(flatCoordinates.length - stride);
542
+ coordinate[stride - 1] = m;
543
+ return coordinate;
544
+ }
545
+ return null;
546
+ }
547
+ for (let i = 0, ii = ends.length; i < ii; ++i) {
548
+ const end = ends[i];
549
+ if (offset == end) {
550
+ continue;
551
+ }
552
+ if (m < flatCoordinates[offset + stride - 1]) {
553
+ return null;
554
+ }
555
+ if (m <= flatCoordinates[end - 1]) {
556
+ return lineStringCoordinateAtM(
557
+ flatCoordinates,
558
+ offset,
559
+ end,
560
+ stride,
561
+ m,
562
+ false,
563
+ );
564
+ }
565
+ offset = end;
566
+ }
567
+ return null;
568
+ }
569
+
570
+
571
+ /***/ })
572
+
573
+ }])
574
+ //# sourceMappingURL=vendors-node_modules_ol_geom_LineString_js.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vendors-node_modules_ol_geom_LineString_js.js","mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACmC;AACmB;AACL;AACqB;AACjB;AACA;AAC2B;AAChB;AACd;AACW;AACX;;AAElD;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,0DAAc;AACvC;AACA,aAAa,4DAA4D;AACzE;AACA,aAAa,wCAAwC;AACrD;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,eAAe;AAClC;AACA,MAAM;AACN;AACA,mBAAmB,8CAA8C;AACjE;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,uCAAuC;AACpD;AACA;AACA;AACA,IAAI,iDAAM;AACV;AACA;;AAEA;AACA;AACA,cAAc,aAAa;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,uCAAuC;AACpD,aAAa,QAAQ;AACrB,cAAc,QAAQ;AACtB;AACA;AACA;AACA,6BAA6B,oEAAwB;AACrD;AACA;AACA;AACA;AACA,QAAQ,iEAAe;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,oEAAkB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,oGAAoG;AACjH;AACA,cAAc,WAAW;AACzB;AACA;AACA;AACA;AACA,WAAW,0DAAc;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,SAAS;AACtB,cAAc,4CAA4C;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,6EAAuB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,8CAA8C;AAC5D;AACA;AACA;AACA;AACA,WAAW,oEAAkB;AAC7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,uCAAuC;AACpD;AACA,cAAc,uCAAuC;AACrD;AACA;AACA;AACA,WAAW,sEAAgB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,QAAQ;AACtB;AACA;AACA;AACA,WAAW,iEAAgB;AAC3B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc,eAAe;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,eAAe;AACrC;;AAEA;AACA,aAAa,QAAQ;AACrB,cAAc,YAAY;AAC1B;AACA;AACA;AACA;AACA,eAAe,eAAe;AAC9B;AACA,uCAAuC,iEAAc;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,8BAA8B;AAC5C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,+BAA+B;AAC5C,cAAc,SAAS;AACvB;AACA;AACA;AACA;AACA,WAAW,+EAAoB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,+CAA+C;AAC5D,aAAa,wCAAwC;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,qEAAkB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iEAAe,UAAU,EAAC;;;;;;;;;;;;;;;;;;;AC9T1B;AACA;AACA;AAC4C;AACT;;AAEnC;AACA,WAAW,eAAe;AAC1B,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,eAAe;AAC1B,WAAW,QAAQ;AACnB,YAAY,eAAe;AAC3B;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,kCAAkC,SAAS;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,uDAAY;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,kBAAkB,eAAe;AACjC;AACA;AACA;AACA;AACA;AACA,YAAY,8CAAI;AAChB;AACA;AACA;;AAEA;AACA,WAAW,eAAe;AAC1B,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,SAAS;AACpB,YAAY,+CAA+C;AAC3D;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,gBAAgB;AAClC;AACA,MAAM,8CAAI;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,eAAe;AAC1B,WAAW,QAAQ;AACnB,WAAW,eAAe;AAC1B,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,YAAY,+CAA+C;AAC3D;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,QAAQ;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","sources":["webpack://@vaadin/bundles/./node_modules/ol/geom/LineString.js","webpack://@vaadin/bundles/./node_modules/ol/geom/flat/interpolate.js"],"sourcesContent":["/**\n * @module ol/geom/LineString\n */\nimport {extend} from '../array.js';\nimport {closestSquaredDistanceXY} from '../extent.js';\nimport SimpleGeometry from './SimpleGeometry.js';\nimport {assignClosestPoint, maxSquaredDelta} from './flat/closest.js';\nimport {deflateCoordinates} from './flat/deflate.js';\nimport {inflateCoordinates} from './flat/inflate.js';\nimport {interpolatePoint, lineStringCoordinateAtM} from './flat/interpolate.js';\nimport {intersectsLineString} from './flat/intersectsextent.js';\nimport {lineStringLength} from './flat/length.js';\nimport {forEach as forEachSegment} from './flat/segments.js';\nimport {douglasPeucker} from './flat/simplify.js';\n\n/**\n * @classdesc\n * Linestring geometry.\n *\n * @api\n */\nclass LineString extends SimpleGeometry {\n /**\n * @param {Array<import(\"../coordinate.js\").Coordinate>|Array<number>} coordinates Coordinates.\n * For internal use, flat coordinates in combination with `layout` are also accepted.\n * @param {import(\"./Geometry.js\").GeometryLayout} [layout] Layout.\n */\n constructor(coordinates, layout) {\n super();\n\n /**\n * @private\n * @type {import(\"../coordinate.js\").Coordinate|null}\n */\n this.flatMidpoint_ = null;\n\n /**\n * @private\n * @type {number}\n */\n this.flatMidpointRevision_ = -1;\n\n /**\n * @private\n * @type {number}\n */\n this.maxDelta_ = -1;\n\n /**\n * @private\n * @type {number}\n */\n this.maxDeltaRevision_ = -1;\n\n if (layout !== undefined && !Array.isArray(coordinates[0])) {\n this.setFlatCoordinates(\n layout,\n /** @type {Array<number>} */ (coordinates),\n );\n } else {\n this.setCoordinates(\n /** @type {Array<import(\"../coordinate.js\").Coordinate>} */ (\n coordinates\n ),\n layout,\n );\n }\n }\n\n /**\n * Append the passed coordinate to the coordinates of the linestring.\n * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n * @api\n */\n appendCoordinate(coordinate) {\n extend(this.flatCoordinates, coordinate);\n this.changed();\n }\n\n /**\n * Make a complete copy of the geometry.\n * @return {!LineString} Clone.\n * @api\n * @override\n */\n clone() {\n const lineString = new LineString(\n this.flatCoordinates.slice(),\n this.layout,\n );\n lineString.applyProperties(this);\n return lineString;\n }\n\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @param {import(\"../coordinate.js\").Coordinate} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @return {number} Minimum squared distance.\n * @override\n */\n closestPointXY(x, y, closestPoint, minSquaredDistance) {\n if (minSquaredDistance < closestSquaredDistanceXY(this.getExtent(), x, y)) {\n return minSquaredDistance;\n }\n if (this.maxDeltaRevision_ != this.getRevision()) {\n this.maxDelta_ = Math.sqrt(\n maxSquaredDelta(\n this.flatCoordinates,\n 0,\n this.flatCoordinates.length,\n this.stride,\n 0,\n ),\n );\n this.maxDeltaRevision_ = this.getRevision();\n }\n return assignClosestPoint(\n this.flatCoordinates,\n 0,\n this.flatCoordinates.length,\n this.stride,\n this.maxDelta_,\n false,\n x,\n y,\n closestPoint,\n minSquaredDistance,\n );\n }\n\n /**\n * Iterate over each segment, calling the provided callback.\n * If the callback returns a truthy value the function returns that\n * value immediately. Otherwise the function returns `false`.\n *\n * @param {function(this: S, import(\"../coordinate.js\").Coordinate, import(\"../coordinate.js\").Coordinate): T} callback Function\n * called for each segment. The function will receive two arguments, the start and end coordinates of the segment.\n * @return {T|boolean} Value.\n * @template T,S\n * @api\n */\n forEachSegment(callback) {\n return forEachSegment(\n this.flatCoordinates,\n 0,\n this.flatCoordinates.length,\n this.stride,\n callback,\n );\n }\n\n /**\n * Returns the coordinate at `m` using linear interpolation, or `null` if no\n * such coordinate exists.\n *\n * `extrapolate` controls extrapolation beyond the range of Ms in the\n * MultiLineString. If `extrapolate` is `true` then Ms less than the first\n * M will return the first coordinate and Ms greater than the last M will\n * return the last coordinate.\n *\n * @param {number} m M.\n * @param {boolean} [extrapolate] Extrapolate. Default is `false`.\n * @return {import(\"../coordinate.js\").Coordinate|null} Coordinate.\n * @api\n */\n getCoordinateAtM(m, extrapolate) {\n if (this.layout != 'XYM' && this.layout != 'XYZM') {\n return null;\n }\n extrapolate = extrapolate !== undefined ? extrapolate : false;\n return lineStringCoordinateAtM(\n this.flatCoordinates,\n 0,\n this.flatCoordinates.length,\n this.stride,\n m,\n extrapolate,\n );\n }\n\n /**\n * Return the coordinates of the linestring.\n * @return {Array<import(\"../coordinate.js\").Coordinate>} Coordinates.\n * @api\n * @override\n */\n getCoordinates() {\n return inflateCoordinates(\n this.flatCoordinates,\n 0,\n this.flatCoordinates.length,\n this.stride,\n );\n }\n\n /**\n * Return the coordinate at the provided fraction along the linestring.\n * The `fraction` is a number between 0 and 1, where 0 is the start of the\n * linestring and 1 is the end.\n * @param {number} fraction Fraction.\n * @param {import(\"../coordinate.js\").Coordinate} [dest] Optional coordinate whose values will\n * be modified. If not provided, a new coordinate will be returned.\n * @return {import(\"../coordinate.js\").Coordinate} Coordinate of the interpolated point.\n * @api\n */\n getCoordinateAt(fraction, dest) {\n return interpolatePoint(\n this.flatCoordinates,\n 0,\n this.flatCoordinates.length,\n this.stride,\n fraction,\n dest,\n this.stride,\n );\n }\n\n /**\n * Return the length of the linestring on projected plane.\n * @return {number} Length (on projected plane).\n * @api\n */\n getLength() {\n return lineStringLength(\n this.flatCoordinates,\n 0,\n this.flatCoordinates.length,\n this.stride,\n );\n }\n\n /**\n * @return {Array<number>} Flat midpoint.\n */\n getFlatMidpoint() {\n if (this.flatMidpointRevision_ != this.getRevision()) {\n this.flatMidpoint_ = this.getCoordinateAt(\n 0.5,\n this.flatMidpoint_ ?? undefined,\n );\n this.flatMidpointRevision_ = this.getRevision();\n }\n return /** @type {Array<number>} */ (this.flatMidpoint_);\n }\n\n /**\n * @param {number} squaredTolerance Squared tolerance.\n * @return {LineString} Simplified LineString.\n * @protected\n * @override\n */\n getSimplifiedGeometryInternal(squaredTolerance) {\n /** @type {Array<number>} */\n const simplifiedFlatCoordinates = [];\n simplifiedFlatCoordinates.length = douglasPeucker(\n this.flatCoordinates,\n 0,\n this.flatCoordinates.length,\n this.stride,\n squaredTolerance,\n simplifiedFlatCoordinates,\n 0,\n );\n return new LineString(simplifiedFlatCoordinates, 'XY');\n }\n\n /**\n * Get the type of this geometry.\n * @return {import(\"./Geometry.js\").Type} Geometry type.\n * @api\n * @override\n */\n getType() {\n return 'LineString';\n }\n\n /**\n * Test if the geometry and the passed extent intersect.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @return {boolean} `true` if the geometry and the extent intersect.\n * @api\n * @override\n */\n intersectsExtent(extent) {\n return intersectsLineString(\n this.flatCoordinates,\n 0,\n this.flatCoordinates.length,\n this.stride,\n extent,\n this.getExtent(),\n );\n }\n\n /**\n * Set the coordinates of the linestring.\n * @param {!Array<import(\"../coordinate.js\").Coordinate>} coordinates Coordinates.\n * @param {import(\"./Geometry.js\").GeometryLayout} [layout] Layout.\n * @api\n * @override\n */\n setCoordinates(coordinates, layout) {\n this.setLayout(layout, coordinates, 1);\n if (!this.flatCoordinates) {\n this.flatCoordinates = [];\n }\n this.flatCoordinates.length = deflateCoordinates(\n this.flatCoordinates,\n 0,\n coordinates,\n this.stride,\n );\n this.changed();\n }\n}\n\nexport default LineString;\n","/**\n * @module ol/geom/flat/interpolate\n */\nimport {binarySearch} from '../../array.js';\nimport {lerp} from '../../math.js';\n\n/**\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} fraction Fraction.\n * @param {Array<number>} [dest] Destination.\n * @param {number} [dimension] Destination dimension (default is `2`)\n * @return {Array<number>} Destination.\n */\nexport function interpolatePoint(\n flatCoordinates,\n offset,\n end,\n stride,\n fraction,\n dest,\n dimension,\n) {\n let o, t;\n const n = (end - offset) / stride;\n if (n === 1) {\n o = offset;\n } else if (n === 2) {\n o = offset;\n t = fraction;\n } else if (n !== 0) {\n let x1 = flatCoordinates[offset];\n let y1 = flatCoordinates[offset + 1];\n let length = 0;\n const cumulativeLengths = [0];\n for (let i = offset + stride; i < end; i += stride) {\n const x2 = flatCoordinates[i];\n const y2 = flatCoordinates[i + 1];\n length += Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n cumulativeLengths.push(length);\n x1 = x2;\n y1 = y2;\n }\n const target = fraction * length;\n const index = binarySearch(cumulativeLengths, target);\n if (index < 0) {\n t =\n (target - cumulativeLengths[-index - 2]) /\n (cumulativeLengths[-index - 1] - cumulativeLengths[-index - 2]);\n o = offset + (-index - 2) * stride;\n } else {\n o = offset + index * stride;\n }\n }\n dimension = dimension > 1 ? dimension : 2;\n dest = dest ? dest : new Array(dimension);\n for (let i = 0; i < dimension; ++i) {\n dest[i] =\n o === undefined\n ? NaN\n : t === undefined\n ? flatCoordinates[o + i]\n : lerp(flatCoordinates[o + i], flatCoordinates[o + stride + i], t);\n }\n return dest;\n}\n\n/**\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} m M.\n * @param {boolean} extrapolate Extrapolate.\n * @return {import(\"../../coordinate.js\").Coordinate|null} Coordinate.\n */\nexport function lineStringCoordinateAtM(\n flatCoordinates,\n offset,\n end,\n stride,\n m,\n extrapolate,\n) {\n if (end == offset) {\n return null;\n }\n let coordinate;\n if (m < flatCoordinates[offset + stride - 1]) {\n if (extrapolate) {\n coordinate = flatCoordinates.slice(offset, offset + stride);\n coordinate[stride - 1] = m;\n return coordinate;\n }\n return null;\n }\n if (flatCoordinates[end - 1] < m) {\n if (extrapolate) {\n coordinate = flatCoordinates.slice(end - stride, end);\n coordinate[stride - 1] = m;\n return coordinate;\n }\n return null;\n }\n // FIXME use O(1) search\n if (m == flatCoordinates[offset + stride - 1]) {\n return flatCoordinates.slice(offset, offset + stride);\n }\n let lo = offset / stride;\n let hi = end / stride;\n while (lo < hi) {\n const mid = (lo + hi) >> 1;\n if (m < flatCoordinates[(mid + 1) * stride - 1]) {\n hi = mid;\n } else {\n lo = mid + 1;\n }\n }\n const m0 = flatCoordinates[lo * stride - 1];\n if (m == m0) {\n return flatCoordinates.slice((lo - 1) * stride, (lo - 1) * stride + stride);\n }\n const m1 = flatCoordinates[(lo + 1) * stride - 1];\n const t = (m - m0) / (m1 - m0);\n coordinate = [];\n for (let i = 0; i < stride - 1; ++i) {\n coordinate.push(\n lerp(\n flatCoordinates[(lo - 1) * stride + i],\n flatCoordinates[lo * stride + i],\n t,\n ),\n );\n }\n coordinate.push(m);\n return coordinate;\n}\n\n/**\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array<number>} ends Ends.\n * @param {number} stride Stride.\n * @param {number} m M.\n * @param {boolean} extrapolate Extrapolate.\n * @param {boolean} interpolate Interpolate.\n * @return {import(\"../../coordinate.js\").Coordinate|null} Coordinate.\n */\nexport function lineStringsCoordinateAtM(\n flatCoordinates,\n offset,\n ends,\n stride,\n m,\n extrapolate,\n interpolate,\n) {\n if (interpolate) {\n return lineStringCoordinateAtM(\n flatCoordinates,\n offset,\n ends[ends.length - 1],\n stride,\n m,\n extrapolate,\n );\n }\n let coordinate;\n if (m < flatCoordinates[stride - 1]) {\n if (extrapolate) {\n coordinate = flatCoordinates.slice(0, stride);\n coordinate[stride - 1] = m;\n return coordinate;\n }\n return null;\n }\n if (flatCoordinates[flatCoordinates.length - 1] < m) {\n if (extrapolate) {\n coordinate = flatCoordinates.slice(flatCoordinates.length - stride);\n coordinate[stride - 1] = m;\n return coordinate;\n }\n return null;\n }\n for (let i = 0, ii = ends.length; i < ii; ++i) {\n const end = ends[i];\n if (offset == end) {\n continue;\n }\n if (m < flatCoordinates[offset + stride - 1]) {\n return null;\n }\n if (m <= flatCoordinates[end - 1]) {\n return lineStringCoordinateAtM(\n flatCoordinates,\n offset,\n end,\n stride,\n m,\n false,\n );\n }\n offset = end;\n }\n return null;\n}\n"],"names":[],"sourceRoot":""}