geojs 1.15.5 → 1.16.0

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 (59) hide show
  1. package/.git-blame-ignore-revs +9 -0
  2. package/.github/workflows/main.yml +13 -2
  3. package/eslint.config.js +6 -1
  4. package/geo.js +418 -351
  5. package/geo.js.map +1 -0
  6. package/geo.lean.js +418 -351
  7. package/geo.lean.js.map +1 -0
  8. package/geo.lean.min.js +3 -3
  9. package/geo.lean.min.js.map +1 -0
  10. package/geo.min.js +3 -3
  11. package/geo.min.js.map +1 -0
  12. package/package.json +3 -2
  13. package/src/annotation/annotation.js +3 -3
  14. package/src/annotation/rectangleAnnotation.js +1 -1
  15. package/src/canvas/pixelmapFeature.js +84 -43
  16. package/src/canvas/quadFeature.js +3 -0
  17. package/src/choroplethFeature.js +7 -7
  18. package/src/contourFeature.js +4 -4
  19. package/src/event.js +3 -3
  20. package/src/feature.js +2 -2
  21. package/src/fetchQueue.js +2 -2
  22. package/src/fileReader.js +6 -6
  23. package/src/geojsonReader.js +5 -5
  24. package/src/graphFeature.js +2 -2
  25. package/src/gridFeature.js +4 -4
  26. package/src/heatmapFeature.js +6 -6
  27. package/src/isolineFeature.js +16 -16
  28. package/src/lineFeature.js +20 -20
  29. package/src/map.js +9 -9
  30. package/src/mapInteractor.js +3 -3
  31. package/src/markerFeature.js +15 -15
  32. package/src/meshFeature.js +3 -3
  33. package/src/object.js +5 -5
  34. package/src/pathFeature.js +7 -7
  35. package/src/pixelmapFeature.js +57 -10
  36. package/src/pixelmapLayer.js +1 -1
  37. package/src/pointFeature.js +12 -12
  38. package/src/polygonFeature.js +17 -17
  39. package/src/quadFeature.js +13 -13
  40. package/src/registry.js +7 -7
  41. package/src/svg/svgRenderer.js +6 -6
  42. package/src/svg/vectorFeature.js +4 -4
  43. package/src/textFeature.js +30 -30
  44. package/src/tile.js +1 -1
  45. package/src/tileCache.js +2 -2
  46. package/src/tileLayer.js +9 -9
  47. package/src/trackFeature.js +10 -10
  48. package/src/typedef.js +1 -1
  49. package/src/ui/colorLegendWidget.js +1 -1
  50. package/src/ui/legendWidget.js +7 -7
  51. package/src/ui/scaleWidget.js +1 -1
  52. package/src/util/clustering.js +1 -1
  53. package/src/util/color.js +1 -1
  54. package/src/util/common.js +1 -1
  55. package/src/util/polyops.js +1 -1
  56. package/src/util/throttle.js +6 -6
  57. package/src/vectorFeature.js +13 -13
  58. package/src/webgl/pixelmapFeature.js +2 -27
  59. package/src/webgl/quadFeature.js +1 -1
package/geo.js CHANGED
@@ -426,16 +426,16 @@ function scale(out, a, v) {
426
426
  * unspecified, callback will be executed one final time after the last
427
427
  * throttled-function call. (After the throttled-function has not been
428
428
  * called for `delay` milliseconds, the internal counter is reset)
429
- * @param {function} [callback] A function to be executed after `delay`
429
+ * @param {Function} [callback] A function to be executed after `delay`
430
430
  * milliseconds. The `this` context and all arguments are passed through,
431
431
  * as-is, to `callback` when the throttled-function is executed.
432
- * @param {function} [accumulator] A function to be executed (synchronously)
432
+ * @param {Function} [accumulator] A function to be executed (synchronously)
433
433
  * during **each** call to the wrapped function. Typically, this
434
434
  * this method is used to accumulate values that the callback uses
435
435
  * when it finally executes.
436
436
  * @param {boolean} [debounce_mode] See the `at_begin` parameter of the
437
437
  * {@link geo.util.debounce} function.
438
- * @returns {function} The throttled version of `callback`.
438
+ * @returns {Function} The throttled version of `callback`.
439
439
  *
440
440
  * @example
441
441
  * var throttled = geo.util.throttle( delay, [ no_trailing, ] callback );
@@ -551,15 +551,15 @@ var throttle = function throttle(delay, no_trailing, callback, accumulator, debo
551
551
  * executed only at the first debounced-function call. (After the
552
552
  * throttled-function has not been called for `delay` milliseconds, the
553
553
  * internal counter is reset)
554
- * @param {function} callback A function to be executed after delay milliseconds.
554
+ * @param {Function} callback A function to be executed after delay milliseconds.
555
555
  * The `this` context and all arguments are passed through, as-is, to
556
556
  * `callback` when the debounced-function is executed.
557
- * @param {function} [accumulator] A function to be executed (synchronously)
557
+ * @param {Function} [accumulator] A function to be executed (synchronously)
558
558
  * during **each** call to the wrapped function. Typically, this
559
559
  * this method is used to accumulate values that the callback uses
560
560
  * when it finally executes.
561
561
  *
562
- * @returns {function} A new, debounced, function.
562
+ * @returns {Function} A new, debounced, function.
563
563
  *
564
564
  * @example
565
565
  * var debounced = geo.util.debounce( delay, [ at_begin, ] callback );
@@ -1150,10 +1150,10 @@ var util = __webpack_require__(642);
1150
1150
  *
1151
1151
  * @typedef {geo.feature.spec} geo.trackFeature.spec
1152
1152
  * @extends geo.feature.spec
1153
- * @property {geo.geoPosition|function} [position] Position of the data.
1153
+ * @property {geo.geoPosition|Function} [position] Position of the data.
1154
1154
  * Default is (data).
1155
- * @property {number|function} [time] Time of the data. Default is `(data).t`.
1156
- * @property {object|function} [track] Tracks from the data. Default is
1155
+ * @property {number|Function} [time] Time of the data. Default is `(data).t`.
1156
+ * @property {object|Function} [track] Tracks from the data. Default is
1157
1157
  * (data). Typically, the data is an array of tracks, each of which is an
1158
1158
  * array of points, each of which has a position and time. The position and
1159
1159
  * time functions are called for each point as `position(trackPoint,
@@ -1166,7 +1166,7 @@ var util = __webpack_require__(642);
1166
1166
  * `null`, this is the maximum time in any track.
1167
1167
  * @property {number} [duration=null] Duration between start and end times.
1168
1168
  * Ignored if both start and end times are specified.
1169
- * @property {number|function} [text] Text to use for the head of the track.
1169
+ * @property {number|Function} [text] Text to use for the head of the track.
1170
1170
  * If specified, the track head is rendered as text. If `undefined` a marker
1171
1171
  * is used instead. If `null` or an empty string (`''`), neither a marker
1172
1172
  * nor text is used.
@@ -1243,7 +1243,7 @@ var _trackFeature = function trackFeature(arg) {
1243
1243
  * Return a function for position of a dependent line feature.
1244
1244
  *
1245
1245
  * @param {string} key One of `past`, `current` or `future`.
1246
- * @returns {function} The position function.
1246
+ * @returns {Function} The position function.
1247
1247
  */
1248
1248
  this._linePosition = function (key) {
1249
1249
  return function (d, i, l, j) {
@@ -1690,11 +1690,11 @@ var _trackFeature = function trackFeature(arg) {
1690
1690
  /**
1691
1691
  * Get/set track accessor.
1692
1692
  *
1693
- * @param {object|function} [val] If not specified, return the current track
1693
+ * @param {object|Function} [val] If not specified, return the current track
1694
1694
  * accessor. If specified, use this for the track accessor and return
1695
1695
  * `this`. If a function is given, the function is passed `(dataElement,
1696
1696
  * dataIndex)` and returns an array of vertex elements.
1697
- * @returns {object|function|this} The current track accessor or this feature.
1697
+ * @returns {object|Function|this} The current track accessor or this feature.
1698
1698
  */
1699
1699
  this.track = function (val) {
1700
1700
  if (val === undefined) {
@@ -1710,11 +1710,11 @@ var _trackFeature = function trackFeature(arg) {
1710
1710
  /**
1711
1711
  * Get/Set position accessor.
1712
1712
  *
1713
- * @param {geo.geoPosition|function} [val] If not specified, return the
1713
+ * @param {geo.geoPosition|Function} [val] If not specified, return the
1714
1714
  * current position accessor. If specified, use this for the position
1715
1715
  * accessor and return `this`. If a function is given, this is called
1716
1716
  * with `(vertexElement, vertexIndex, dataElement, dataIndex)`.
1717
- * @returns {geo.geoPosition|function|this} The current position or this
1717
+ * @returns {geo.geoPosition|Function|this} The current position or this
1718
1718
  * feature.
1719
1719
  */
1720
1720
  this.position = function (val) {
@@ -1735,7 +1735,7 @@ var _trackFeature = function trackFeature(arg) {
1735
1735
  * If specified, use this for the time accessor and return `this`. If a
1736
1736
  * function is given, this is called with `(vertexElement, vertexIndex,
1737
1737
  * dataElement, dataIndex)`.
1738
- * @returns {number|function|this} The current time or this feature.
1738
+ * @returns {number|Function|this} The current time or this feature.
1739
1739
  */
1740
1740
  this.time = function (val) {
1741
1741
  if (val === undefined) {
@@ -2832,7 +2832,7 @@ var util = __webpack_require__(642);
2832
2832
  *
2833
2833
  * @typedef {geo.tileLayer.spec} geo.pixelmapLayer.spec
2834
2834
  * @extends {geo.tileLayer.spec}
2835
- * @property {geo.geoColor|function} [color] The color that should be used
2835
+ * @property {geo.geoColor|Function} [color] The color that should be used
2836
2836
  * for each data element. Data elements correspond to the indices in the
2837
2837
  * pixel map. If an index is larger than the number of data elements, it will
2838
2838
  * be transparent. If there is more data than there are indices, it is
@@ -3469,10 +3469,10 @@ var _fileReader = function fileReader(arg) {
3469
3469
  * @param {File|Blob|string|object} file This is either a `File` object, a
3470
3470
  * `Blob` object, a string representation of a file, or an object
3471
3471
  * representing data from a file.
3472
- * @param {function} [done] An optional callback function when the read is
3472
+ * @param {Function} [done] An optional callback function when the read is
3473
3473
  * complete. This is called with `false` on error or the object that was
3474
3474
  * read and parsed by the reader.
3475
- * @param {function} [progress] A function which is passed `ProgressEvent`
3475
+ * @param {Function} [progress] A function which is passed `ProgressEvent`
3476
3476
  * information from a `FileReader`. This includes `loaded` and `total`
3477
3477
  * each with a number of bytes.
3478
3478
  * @returns {Promise} A `Promise` that resolves with object parsed by the
@@ -3492,9 +3492,9 @@ var _fileReader = function fileReader(arg) {
3492
3492
  /**
3493
3493
  * Return a `FileReader` with handlers attached.
3494
3494
  *
3495
- * @param {function} done A callback that receives either the string read
3495
+ * @param {Function} done A callback that receives either the string read
3496
3496
  * from the file or a `DOMException` with an error.
3497
- * @param {function} [progress] A function which is passed `ProgressEvent`
3497
+ * @param {Function} [progress] A function which is passed `ProgressEvent`
3498
3498
  * information from a `FileReader`. This includes `loaded` and `total`
3499
3499
  * each with a number of bytes.
3500
3500
  * @returns {FileReader} The `FileReader` with done and progress handles
@@ -3516,9 +3516,9 @@ var _fileReader = function fileReader(arg) {
3516
3516
  * when finished or an error object if unsuccessful.
3517
3517
  *
3518
3518
  * @param {File|Blob} file A `File` or `Blob` object to read.
3519
- * @param {function} done A callback that receives either the string read
3519
+ * @param {Function} done A callback that receives either the string read
3520
3520
  * from the file or a `DOMException` with an error.
3521
- * @param {function} [progress] A function which is passed `ProgressEvent`
3521
+ * @param {Function} [progress] A function which is passed `ProgressEvent`
3522
3522
  * information from a `FileReader`. This includes `loaded` and `total`
3523
3523
  * each with a number of bytes.
3524
3524
  */
@@ -4773,7 +4773,7 @@ var registry = {};
4773
4773
  * @alias geo.registerFileReader
4774
4774
  * @param {string} name Name of the reader to register. If the name already
4775
4775
  * exists, the class creation function is replaced.
4776
- * @param {function} func Class creation function.
4776
+ * @param {Function} func Class creation function.
4777
4777
  */
4778
4778
  registry.registerFileReader = function (name, func) {
4779
4779
  fileReaders[name] = func;
@@ -4801,7 +4801,7 @@ registry.createFileReader = function (name, opts) {
4801
4801
  * @alias geo.registerRenderer
4802
4802
  * @param {string} name Name of the renderer to register. If the name already
4803
4803
  * exists, the class creation function is replaced.
4804
- * @param {function} func Class creation function.
4804
+ * @param {Function} func Class creation function.
4805
4805
  */
4806
4806
  registry.registerRenderer = function (name, func) {
4807
4807
  renderers[name] = func;
@@ -4928,7 +4928,7 @@ registry.rendererForFeatures = function (featureList) {
4928
4928
  * @alias geo.registerFeature
4929
4929
  * @param {string} category The feature category -- this is the renderer name.
4930
4930
  * @param {string} name The feature name.
4931
- * @param {function} func A function to call to create the feature.
4931
+ * @param {Function} func A function to call to create the feature.
4932
4932
  * @param {object|undefined} capabilities A map of capabilities that this
4933
4933
  * feature supports. If the feature is implemented with different
4934
4934
  * capabilities in multiple categories (renderers), then the feature
@@ -4997,7 +4997,7 @@ registry.createFeature = function (name, layer, renderer, arg) {
4997
4997
  * the renderer name.
4998
4998
  * @param {string} name The name of the adjustment; this is commonly the layer
4999
4999
  * type, or `'all'` for the base layer class.
5000
- * @param {function} func The function to call when the adjustment is used.
5000
+ * @param {Function} func The function to call when the adjustment is used.
5001
5001
  * @returns {object} if this layer adjustment replaces an existing one, this
5002
5002
  * was the value that was replaced. In this case, a warning is issued.
5003
5003
  */
@@ -5036,7 +5036,7 @@ registry.adjustLayerForRenderer = function (name, layer) {
5036
5036
  * @alias geo.registerLayer
5037
5037
  * @param {string} name Name of the layer to register. If the name already
5038
5038
  * exists, the class creation function is replaced.
5039
- * @param {function} func Class creation function.
5039
+ * @param {Function} func Class creation function.
5040
5040
  * @param {string[]} [defaultFeatures] An optional list of feature capabilities
5041
5041
  * that are required to use this layer.
5042
5042
  */
@@ -5089,7 +5089,7 @@ registry.createLayer = function (name, map, arg) {
5089
5089
  * @param {string} category A category for this widget. This is usually
5090
5090
  * `'dom'`.
5091
5091
  * @param {string} name The name of the widget to register.
5092
- * @param {function} func Class creation function.
5092
+ * @param {Function} func Class creation function.
5093
5093
  * @returns {object} If this widget replaces an existing one, this was the
5094
5094
  * value that was replaced. In this case, a warning is issued.
5095
5095
  */
@@ -5132,7 +5132,7 @@ registry.createWidget = function (name, layer, arg) {
5132
5132
  *
5133
5133
  * @alias geo.registerAnnotation
5134
5134
  * @param {string} name The annotation name.
5135
- * @param {function} func A function to call to create the annotation.
5135
+ * @param {Function} func A function to call to create the annotation.
5136
5136
  * @param {object|undefined} features A map of features that are used by this
5137
5137
  * annotation. Each key is a feature that is used. If the value is true,
5138
5138
  * the that feature is always needed. If a list, then it is the set of
@@ -6257,7 +6257,7 @@ var _feature = function feature(arg) {
6257
6257
  * @instance
6258
6258
  * @param {string} [key] If defined, return a function for the named style.
6259
6259
  * Otherwise, return an object with a function for all defined styles.
6260
- * @returns {function|object} Either a function for the named style or an
6260
+ * @returns {Function|object} Either a function for the named style or an
6261
6261
  * object with functions for all defined styles.
6262
6262
  */
6263
6263
  this.style.get = function (key) {
@@ -6659,7 +6659,7 @@ var _feature = function feature(arg) {
6659
6659
  *
6660
6660
  * @param {string} event An event from {@link geo.event} or a user-defined
6661
6661
  * value.
6662
- * @param {function} handler A function that is called when `event` is
6662
+ * @param {Function} handler A function that is called when `event` is
6663
6663
  * triggered. The function is passed a {@link geo.event} object.
6664
6664
  * @returns {this}
6665
6665
  */
@@ -6786,7 +6786,7 @@ var _object = function object() {
6786
6786
  * resolved. If there are no outstanding promises, this is invoked
6787
6787
  * synchronously.
6788
6788
  *
6789
- * @param {function} handler A function taking no arguments.
6789
+ * @param {Function} handler A function taking no arguments.
6790
6790
  * @returns {this}
6791
6791
  */
6792
6792
  this.onIdle = function (handler) {
@@ -6886,7 +6886,7 @@ var _object = function object() {
6886
6886
  *
6887
6887
  * @param {string} event An event from {@link geo.event} or a user-defined
6888
6888
  * value.
6889
- * @param {function} handler A function that is called when `event` is
6889
+ * @param {Function} handler A function that is called when `event` is
6890
6890
  * triggered. The function is passed a {@link geo.event} object.
6891
6891
  * @returns {this}
6892
6892
  */
@@ -6914,9 +6914,9 @@ var _object = function object() {
6914
6914
  *
6915
6915
  * @param {string} event An event from {@link geo.event} or a user-defined
6916
6916
  * value.
6917
- * @param {function} handler A function that is called when `event` is
6917
+ * @param {Function} handler A function that is called when `event` is
6918
6918
  * triggered. The function is passed a {@link geo.event} object.
6919
- * @returns {function} The actual bound handler. This is a wrapper around
6919
+ * @returns {Function} The actual bound handler. This is a wrapper around
6920
6920
  * the handler that was passed to the function.
6921
6921
  */
6922
6922
  this.geoOnce = function (event, handler) {
@@ -6932,7 +6932,7 @@ var _object = function object() {
6932
6932
  * Report if an event handler is bound to this object.
6933
6933
  *
6934
6934
  * @param {string|string[]} event An event or list of events to check.
6935
- * @param {function} [handler] A function that might be bound. If
6935
+ * @param {Function} [handler] A function that might be bound. If
6936
6936
  * `undefined`, this will report `true` if there is any handler for the
6937
6937
  * specified event.
6938
6938
  * @returns {boolean} true if any of the specified events are bound to the
@@ -8389,7 +8389,7 @@ var util = {
8389
8389
  * Otherwise, return a function that returns the argument.
8390
8390
  *
8391
8391
  * @param {object} f An object that might be a function.
8392
- * @returns {function} A function. Either `f` or a function that returns
8392
+ * @returns {Function} A function. Either `f` or a function that returns
8393
8393
  * `f`.
8394
8394
  * @memberof geo.util
8395
8395
  */
@@ -11639,7 +11639,7 @@ var pointFeature = __webpack_require__(7541);
11639
11639
  *
11640
11640
  * @typedef {geo.feature.spec} geo.markerFeature.spec
11641
11641
  * @extends geo.feature.spec
11642
- * @property {geo.geoPosition|function} [position] Position of the data.
11642
+ * @property {geo.geoPosition|Function} [position] Position of the data.
11643
11643
  * Default is (data).
11644
11644
  * @property {geo.markerFeature.styleSpec} [style] Style object with default
11645
11645
  * style options.
@@ -11650,40 +11650,40 @@ var pointFeature = __webpack_require__(7541);
11650
11650
  *
11651
11651
  * @typedef {geo.feature.styleSpec} geo.markerFeature.styleSpec
11652
11652
  * @extends geo.feature.styleSpec
11653
- * @property {number|function} [radius=5] Radius of each marker in pixels.
11653
+ * @property {number|Function} [radius=5] Radius of each marker in pixels.
11654
11654
  * This includes the stroke width if `strokeOffset` is -1, excludes it if
11655
11655
  * `strokeOffset` is 1, and includes half the stroke width if `strokeOffset`
11656
11656
  * is 0. Note that is `radiusIncludesStroke` is `false`, this never
11657
11657
  * includes the stroke width.
11658
- * @property {geo.geoColor|function} [strokeColor] Color to stroke each marker.
11659
- * @property {number|function} [strokeOpacity=1] Opacity for each marker's
11658
+ * @property {geo.geoColor|Function} [strokeColor] Color to stroke each marker.
11659
+ * @property {number|Function} [strokeOpacity=1] Opacity for each marker's
11660
11660
  * stroke. Opacity is on a [0-1] scale. Set this or `strokeWidth` to zero
11661
11661
  * to not have a stroke.
11662
- * @property {number|function} [strokeWidth=1.25] The weight of the marker's
11662
+ * @property {number|Function} [strokeWidth=1.25] The weight of the marker's
11663
11663
  * stroke in pixels. Set this or `strokeOpacity` to zero to not have a
11664
11664
  * stroke.
11665
- * @property {number|function} [strokeOffset=-1] The position of the stroke
11665
+ * @property {number|Function} [strokeOffset=-1] The position of the stroke
11666
11666
  * compared to the radius. This can only be -1, 0, or 1 (the sign of the
11667
11667
  * value is used).
11668
- * @property {boolean|function} [radiusIncludesStroke=true] If truthy or
11668
+ * @property {boolean|Function} [radiusIncludesStroke=true] If truthy or
11669
11669
  * undefined, the `radius` includes the `strokeWidth` based on the
11670
11670
  * `strokeOffset`. If defined and falsy, the radius does not include the
11671
11671
  * `strokeWidth`.
11672
- * @property {geo.geoColor|function} [fillColor] Color to fill each marker.
11673
- * @property {number|function} [fillOpacity=1] Opacity for each marker.
11672
+ * @property {geo.geoColor|Function} [fillColor] Color to fill each marker.
11673
+ * @property {number|Function} [fillOpacity=1] Opacity for each marker.
11674
11674
  * Opacity is on a [0-1] scale. Set to zero to have no fill.
11675
- * @property {number|function} [symbol=0] One of the predefined symbol numbers.
11675
+ * @property {number|Function} [symbol=0] One of the predefined symbol numbers.
11676
11676
  * This is one of `geo.markerFeature.symbols`.
11677
- * @property {number|number[]|function} [symbolValue=0] A value the affects the
11677
+ * @property {number|number[]|Function} [symbolValue=0] A value the affects the
11678
11678
  * appearance of the symbol. Some symbols can take an array of numbers.
11679
- * @property {number|function} [rotation=0] The rotation of the symbol in
11679
+ * @property {number|Function} [rotation=0] The rotation of the symbol in
11680
11680
  * clockwise radians.
11681
- * @property {geo.markerFeature.scaleMode|function} [scaleWithZoom='none'] This
11681
+ * @property {geo.markerFeature.scaleMode|Function} [scaleWithZoom='none'] This
11682
11682
  * determines if the fill, stroke, or both scale with zoom. If set, the
11683
11683
  * values for radius and strokeWidth are the values at zoom-level zero.
11684
- * @property {boolean|function} [rotateWithMap=false] If truthy, rotate symbols
11684
+ * @property {boolean|Function} [rotateWithMap=false] If truthy, rotate symbols
11685
11685
  * with the map. If falsy, symbol orientation is absolute.
11686
- * @property {number[]|function} [origin] Origin in map gcs coordinates used
11686
+ * @property {number[]|Function} [origin] Origin in map gcs coordinates used
11687
11687
  * to ensure high precision drawing in this location. When called as a
11688
11688
  * function, this is passed the maker positions as a single continuous array
11689
11689
  * in map gcs coordinates. It defaults to the first marker's position.
@@ -12344,7 +12344,7 @@ var feature = __webpack_require__(1275);
12344
12344
  *
12345
12345
  * @typedef {geo.feature.spec} geo.pathFeature.spec
12346
12346
  * @extends {geo.feature.spec}
12347
- * @property {geo.geoPosition|function} [position] Position of the data.
12347
+ * @property {geo.geoPosition|Function} [position] Position of the data.
12348
12348
  * Default is (data).
12349
12349
  */
12350
12350
 
@@ -12357,12 +12357,12 @@ var feature = __webpack_require__(1275);
12357
12357
  *
12358
12358
  * @typedef {geo.feature.styleSpec} geo.pathFeature.styleSpec
12359
12359
  * @extends geo.feature.styleSpec
12360
- * @property {boolean|function} [stroke=true] True to stroke the path.
12361
- * @property {geo.geoColor|function} [strokeColor='white'] Color to stroke each
12360
+ * @property {boolean|Function} [stroke=true] True to stroke the path.
12361
+ * @property {geo.geoColor|Function} [strokeColor='white'] Color to stroke each
12362
12362
  * path.
12363
- * @property {number|function} [strokeOpacity=1] Opacity for each path's
12363
+ * @property {number|Function} [strokeOpacity=1] Opacity for each path's
12364
12364
  * stroke. Opacity is on a [0-1] scale.
12365
- * @property {number|function} [strokeWidth=1] The weight of the path's stroke
12365
+ * @property {number|Function} [strokeWidth=1] The weight of the path's stroke
12366
12366
  * in pixels.
12367
12367
  */
12368
12368
 
@@ -12390,9 +12390,9 @@ var _pathFeature = function pathFeature(arg) {
12390
12390
  /**
12391
12391
  * Get/Set position.
12392
12392
  *
12393
- * @param {function|geo.geoPosition} [val] If not specified, return the
12393
+ * @param {Function|geo.geoPosition} [val] If not specified, return the
12394
12394
  * position accessor. Otherwise, change the position accessor.
12395
- * @returns {this|function}
12395
+ * @returns {this|Function}
12396
12396
  */
12397
12397
  this.position = function (val) {
12398
12398
  if (val === undefined) {
@@ -12819,10 +12819,10 @@ var _svgRenderer = function svgRenderer(arg) {
12819
12819
  /**
12820
12820
  * Meta functions for converting from geojs styles to d3.
12821
12821
  *
12822
- * @param {object|function} f The style value or function to convert.
12823
- * @param {function} [g] An optional function that returns a boolean; if it
12822
+ * @param {object|Function} f The style value or function to convert.
12823
+ * @param {Function} [g] An optional function that returns a boolean; if it
12824
12824
  * returns false, the style is set to `'none'`.
12825
- * @returns {function} A function for converting styles.
12825
+ * @returns {Function} A function for converting styles.
12826
12826
  */
12827
12827
  this._convertColor = function (f, g) {
12828
12828
  f = util.ensureFunction(f);
@@ -12845,8 +12845,8 @@ var _svgRenderer = function svgRenderer(arg) {
12845
12845
  * Return a function for converting a size in pixels to an appropriate
12846
12846
  * d3 scale.
12847
12847
  *
12848
- * @param {object|function} f The style value or function to convert.
12849
- * @returns {function} A function for converting scale.
12848
+ * @param {object|Function} f The style value or function to convert.
12849
+ * @returns {Function} A function for converting scale.
12850
12850
  */
12851
12851
  this._convertScale = function (f) {
12852
12852
  f = util.ensureFunction(f);
@@ -13206,7 +13206,7 @@ var _svgRenderer = function svgRenderer(arg) {
13206
13206
  * @param {object} arg
13207
13207
  * @param {string} arg.id A unique string identifying the feature.
13208
13208
  * @param {array} arg.data Array of data objects used in a d3 data method.
13209
- * @param {function} [arg.dataIndex] A function that returns a unique id for
13209
+ * @param {Function} [arg.dataIndex] A function that returns a unique id for
13210
13210
  * each data element. This is passed to the data access function.
13211
13211
  * @param {object} arg.style An object with style values or functions.
13212
13212
  * @param {object} arg.attributes An object containing element attributes.
@@ -13459,17 +13459,17 @@ var meshFeature = __webpack_require__(6124);
13459
13459
  *
13460
13460
  * @typedef {geo.feature.styleSpec} geo.gridFeature.styleSpec
13461
13461
  * @extends geo.feature.styleSpec
13462
- * @property {geo.geoPosition|function} [position=data] The position of each
13462
+ * @property {geo.geoPosition|Function} [position=data] The position of each
13463
13463
  * data element. This defaults to just using `x`, `y`, and `z` properties
13464
13464
  * of the data element itself. The position is in the feature's gcs
13465
13465
  * coordinates.
13466
- * @property {number|function} [value=data.z] The value of each data element.
13466
+ * @property {number|Function} [value=data.z] The value of each data element.
13467
13467
  * This defaults to the `z` property of the data elements. If the value of
13468
13468
  * a grid point is `null` or `undefined`, the point and elements that use
13469
13469
  * that point won't be included in the results.
13470
- * @property {number|function} [opacity=1] The opacity for the whole feature on
13470
+ * @property {number|Function} [opacity=1] The opacity for the whole feature on
13471
13471
  * a scale of 0 to 1.
13472
- * @property {number[]|function} [origin] Origin in map gcs coordinates used
13472
+ * @property {number[]|Function} [origin] Origin in map gcs coordinates used
13473
13473
  * for to ensure high precision drawing in this location. When called as a
13474
13474
  * function, this is passed the vertex positions as a single continuous array
13475
13475
  * in map gcs coordinates. It defaults to the first vertex used in the
@@ -14096,29 +14096,29 @@ var util = __webpack_require__(642);
14096
14096
  * @extends geo.feature.styleSpec
14097
14097
  * @extends geo.textFeature.styleSpec
14098
14098
  * @extends geo.lineFeature.styleSpec
14099
- * @property {geo.geoPosition|function} [position=data] The position of each
14099
+ * @property {geo.geoPosition|Function} [position=data] The position of each
14100
14100
  * data element. This defaults to just using `x`, `y`, and `z` properties
14101
14101
  * of the data element itself. The position is in the feature's gcs
14102
14102
  * coordinates.
14103
- * @property {number|function} [value=data.z] The value of each data element.
14103
+ * @property {number|Function} [value=data.z] The value of each data element.
14104
14104
  * This defaults to the `z` property of the data elements. If the value of
14105
14105
  * a grid point is `null` or `undefined`, the point and elements that use
14106
14106
  * that point won't be included in the results.
14107
- * @property {geo.geoColor|function} [strokeColor='black'] Color to stroke each
14107
+ * @property {geo.geoColor|Function} [strokeColor='black'] Color to stroke each
14108
14108
  * line.
14109
- * @property {number|function} [strokeWidth] The weight of the line stroke in
14109
+ * @property {number|Function} [strokeWidth] The weight of the line stroke in
14110
14110
  * pixels. This defaults to the line value's level + 0.5.
14111
- * @property {boolean|function} [rotateWithMap=true] Rotate label text when the
14111
+ * @property {boolean|Function} [rotateWithMap=true] Rotate label text when the
14112
14112
  * map rotates.
14113
- * @property {number|function} [rotation] Text rotation in radians. This
14113
+ * @property {number|Function} [rotation] Text rotation in radians. This
14114
14114
  * defaults to the label oriented so that top of the text is toward the
14115
14115
  * higher value. There is a utility function that can be used for common
14116
14116
  * rotation preferences. See {@link geo.isolineFeature#rotationFunction}.
14117
14117
  * For instance, `rotation=geo.isolineFeature.rotationFunction('map')`.
14118
- * @property {string|function} [fontSize='12px'] The font size.
14119
- * @property {geo.geoColor|function} [textStrokeColor='white'] Text
14118
+ * @property {string|Function} [fontSize='12px'] The font size.
14119
+ * @property {geo.geoColor|Function} [textStrokeColor='white'] Text
14120
14120
  * stroke color. This adds contrast between the label and the isoline.
14121
- * @property {geo.geoColor|function} [textStrokeWidth=2] Text stroke width in
14121
+ * @property {geo.geoColor|Function} [textStrokeWidth=2] Text stroke width in
14122
14122
  * pixels.
14123
14123
  */
14124
14124
 
@@ -14146,27 +14146,27 @@ var util = __webpack_require__(642);
14146
14146
  * used to style lines distinctly. Most isolines will be level 0. If
14147
14147
  * `levels` is an array of [`n0`, `n1`, ...], every `n0`th line will be
14148
14148
  * level 1, every `n0 * n1`th line will be level 2, etc.
14149
- * @property {boolean|function} [label] Truthy if a label should be shown for a
14149
+ * @property {boolean|Function} [label] Truthy if a label should be shown for a
14150
14150
  * isoline value. If a function, this is called with
14151
14151
  * `(geo.isolineFeature.valueEntry, index)`. This defaults to
14152
14152
  * `valueEntry.level >= 1`.
14153
- * @property {string|function} [labelText] Text for a label. If a function,
14153
+ * @property {string|Function} [labelText] Text for a label. If a function,
14154
14154
  * this is called with `(geo.isolineFeature.valueEntry, index)`. This
14155
14155
  * defaults to `valueEntry.value`.
14156
- * @property {number|function} [labelSpacing=200] Minimum distance between
14156
+ * @property {number|Function} [labelSpacing=200] Minimum distance between
14157
14157
  * labels on an isoline in screen pixels. If a function, this is called
14158
14158
  * with `(geo.isolineFeature.valueEntry, index)`.
14159
- * @property {number|function} [labelOffset=0] Offset for labels along an
14159
+ * @property {number|Function} [labelOffset=0] Offset for labels along an
14160
14160
  * isoline relative to where they would be placed by default on a scale of
14161
14161
  * [-0.5, 0.5]. +/- 1 would move the text to the next repeated occurrence
14162
14162
  * of the label. If a function, this is called with
14163
14163
  * `(geo.isolineFeature.valueEntry, index)`.
14164
- * @property {number|function} [labelViewport=10000] If the main position of a
14164
+ * @property {number|Function} [labelViewport=10000] If the main position of a
14165
14165
  * label would be further than this many pixels from the current viewport,
14166
14166
  * don't create it. This prevents creating an excessive number of labels
14167
14167
  * when zoomed in, but requires regenerating labels occasionally when
14168
14168
  * panning. If <= 0, all labels are generated regardless of location.
14169
- * @property {boolean|function} [labelAutoUpdate=true] If truthy, when the map
14169
+ * @property {boolean|Function} [labelAutoUpdate=true] If truthy, when the map
14170
14170
  * is panned (including zoom, rotation, etc.), periodically regenerate
14171
14171
  * labels. This uses an internal function that has a threshold based on a
14172
14172
  * fixed change in zoom, size, and other parameters. Set `labelAutoUpdate`
@@ -15070,7 +15070,7 @@ var _isolineFeature = function isolineFeature(arg) {
15070
15070
  * text so it is aligned to the isoline and biased toward the top of the
15071
15071
  * display screen.
15072
15072
  * @param {geo.map} [map] The parent map. Required for `screen` mode.
15073
- * @returns {function} A function for the rotation style.
15073
+ * @returns {Function} A function for the rotation style.
15074
15074
  */
15075
15075
  _isolineFeature.rotationFunction = function (mode, map) {
15076
15076
  var functionList = {
@@ -16157,7 +16157,7 @@ __webpack_require__(615);
16157
16157
  * @property {string|geo.gui.scaleWidget.unit[]} [units='si'] One of either
16158
16158
  * `'si'` or `'miles'` or an array of units in ascending order. See the
16159
16159
  * `UnitsTable` for examples.
16160
- * @property {function} [distance] The function used to compute the length of
16160
+ * @property {Function} [distance] The function used to compute the length of
16161
16161
  * the scale bar. This defaults to `transform.sphericalDistance` for all
16162
16162
  * maps except those with a gcs of `'+proj=longlat +axis=enu'`, where
16163
16163
  * `math.sqrt(util.distance2dSquared(pt1, pt2))` is used instead.
@@ -18248,7 +18248,7 @@ module.exports = "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJo
18248
18248
  * @property {boolean} boundDocumentHandlers `true` if the mouse is down and
18249
18249
  * being tracked.
18250
18250
  * @property {Date} [start] The time when the action started.
18251
- * @property {function} [handler] A function to call on every animation from
18251
+ * @property {Function} [handler] A function to call on every animation from
18252
18252
  * while the action is occurring.
18253
18253
  * @property {geo.mouseState} [momentum] The mouse location when a momentum
18254
18254
  * action starts.
@@ -18460,10 +18460,10 @@ var _graphFeature = function graphFeature(arg) {
18460
18460
  /**
18461
18461
  * Get/Set links accessor.
18462
18462
  *
18463
- * @param {function|array} [arg] If specified, the list of links or a
18463
+ * @param {Function|array} [arg] If specified, the list of links or a
18464
18464
  * function that returns the list of links. If unspecified, return the
18465
18465
  * existing value.
18466
- * @returns {function|this} Either a function that returns the list of links,
18466
+ * @returns {Function|this} Either a function that returns the list of links,
18467
18467
  * or the feature.
18468
18468
  */
18469
18469
  this.links = function (arg) {
@@ -23463,12 +23463,12 @@ var feature = __webpack_require__(1275);
23463
23463
  * @extends geo.feature.spec
23464
23464
  * @property {geo.colorObject[]} [colorRange] Color lookup table. Default is
23465
23465
  * 9-step color table.
23466
- * @property {function} [scale] A scale converts a input domain into the
23466
+ * @property {Function} [scale] A scale converts a input domain into the
23467
23467
  * the colorRange. Default is `d3.scaleQuantize()`.
23468
- * @property {function} [geoId] Given a geometry feature, return an identifier.
23469
- * @property {function} [scalarId] Given a scalar element, return an
23468
+ * @property {Function} [geoId] Given a geometry feature, return an identifier.
23469
+ * @property {Function} [scalarId] Given a scalar element, return an
23470
23470
  * identifier.
23471
- * @property {function} [scalarValue] Given a scalar element, return a numeric
23471
+ * @property {Function} [scalarValue] Given a scalar element, return a numeric
23472
23472
  * values.
23473
23473
  */
23474
23474
 
@@ -23558,7 +23558,7 @@ var _choroplethFeature = function choroplethFeature(arg) {
23558
23558
  * @param {object[]} [data] An array of objects that are passed to the
23559
23559
  * `scalarId` and `scalarValue` functions to get the associated information
23560
23560
  * for each scalar.
23561
- * @param {function} [aggregator] The aggregator aggregates the scalar when
23561
+ * @param {Function} [aggregator] The aggregator aggregates the scalar when
23562
23562
  * there are multiple values with the same id. The default is `d3.mean`.
23563
23563
  * @returns {object[]|this} Either the current scalar data or the feature
23564
23564
  * instance.
@@ -23629,7 +23629,7 @@ var _choroplethFeature = function choroplethFeature(arg) {
23629
23629
  * @param {string} [key] If defined, return a function for the named
23630
23630
  * property. Otherwise, return an object with a function for all defined
23631
23631
  * properties.
23632
- * @returns {function|object} Either a function for the named property or an
23632
+ * @returns {Function|object} Either a function for the named property or an
23633
23633
  * object with functions for all defined properties.
23634
23634
  */
23635
23635
  this.choropleth.get = function (key) {
@@ -23687,7 +23687,7 @@ var _choroplethFeature = function choroplethFeature(arg) {
23687
23687
  /**
23688
23688
  * Set a choropleth scale's domain and range.
23689
23689
  *
23690
- * @param {function} valueAccessor A function that can be passed to
23690
+ * @param {Function} valueAccessor A function that can be passed to
23691
23691
  * `d3.extent`.
23692
23692
  * @returns {this}
23693
23693
  */
@@ -24952,7 +24952,7 @@ var feature = __webpack_require__(1275);
24952
24952
  *
24953
24953
  * @typedef {geo.feature.spec} geo.quadFeature.spec
24954
24954
  * @extends geo.feature.spec
24955
- * @property {geo.quadFeature.position|function} [position] Position of the
24955
+ * @property {geo.quadFeature.position|Function} [position] Position of the
24956
24956
  * quad. Default is (data). The position specifies the corners of the quad:
24957
24957
  * ll, lr, ur, ul. At least two opposite corners must be specified. The
24958
24958
  * corners do not have to physically correspond to the order specified, but
@@ -24982,27 +24982,27 @@ var feature = __webpack_require__(1275);
24982
24982
  *
24983
24983
  * @typedef {geo.feature.styleSpec} geo.quadFeature.styleSpec
24984
24984
  * @extends geo.feature.styleSpec
24985
- * @property {geo.geoColor|function} [color] Color for quads without images.
24985
+ * @property {geo.geoColor|Function} [color] Color for quads without images.
24986
24986
  * Default is white (`{r: 1, g: 1, b: 1}`).
24987
- * @property {number|function} [opacity=1] Opacity for the quads.
24988
- * @property {number|function} [depth=0] Default z-coordinate for positions
24987
+ * @property {number|Function} [opacity=1] Opacity for the quads.
24988
+ * @property {number|Function} [depth=0] Default z-coordinate for positions
24989
24989
  * that don't explicitly specify one.
24990
- * @property {boolean|function} [drawOnAsyncResourceLoaded=true] Redraw quads
24990
+ * @property {boolean|Function} [drawOnAsyncResourceLoaded=true] Redraw quads
24991
24991
  * when images or videos are loaded after initial render.
24992
- * @property {Image|string|function} [image] Image for each data item. If
24992
+ * @property {Image|string|Function} [image] Image for each data item. If
24993
24993
  * falsy and `video` is also falsy, the quad is a solid color. Default is
24994
24994
  * (data).image.
24995
- * @property {HTMLVideoElement|string|function} [video] Video for each data
24995
+ * @property {HTMLVideoElement|string|Function} [video] Video for each data
24996
24996
  * item. If falsy and `image` is also falsy, the quad is a solid color.
24997
24997
  * Default is (data).video.
24998
- * @property {boolean|function} [delayRenderWhenSeeking=true] If any video has a
24998
+ * @property {boolean|Function} [delayRenderWhenSeeking=true] If any video has a
24999
24999
  * truthy value and is seeking, delaying rendering the entire feature. This
25000
25000
  * prevents blinking when seeking a playing video, but may cause stuttering
25001
25001
  * when there are multiple videos.
25002
- * @property {geo.geoColor|function} [previewColor=null] If specified, a color
25002
+ * @property {geo.geoColor|Function} [previewColor=null] If specified, a color
25003
25003
  * to show on image and video quads while waiting for the image or video to
25004
25004
  * load.
25005
- * @property {Image|string|function} [previewImage=null] If specified, an image
25005
+ * @property {Image|string|Function} [previewImage=null] If specified, an image
25006
25006
  * to show on image quads while waiting for the quad-specific image to load.
25007
25007
  * This will only be shown if it (the preview image) is already loaded.
25008
25008
  */
@@ -25189,7 +25189,7 @@ var _quadFeature = function quadFeature(arg) {
25189
25189
  * Get/Set position.
25190
25190
  *
25191
25191
  * @memberof geo.quadFeature
25192
- * @param {object|function} [val] Object or function that returns the
25192
+ * @param {object|Function} [val] Object or function that returns the
25193
25193
  * position of each quad. `undefined` to get the current position value.
25194
25194
  * @returns {geo.quadFeature|this}
25195
25195
  */
@@ -25209,9 +25209,9 @@ var _quadFeature = function quadFeature(arg) {
25209
25209
  * complete information for the quad. This generates missing corners and z
25210
25210
  * values.
25211
25211
  *
25212
- * @param {function} posFunc A function to call to get the position of a data
25212
+ * @param {Function} posFunc A function to call to get the position of a data
25213
25213
  * item. It is passed (d, i).
25214
- * @param {function} depthFunc A function to call to get the z-value of a
25214
+ * @param {Function} depthFunc A function to call to get the z-value of a
25215
25215
  * data item. It is passed (d, i).
25216
25216
  * @param {object} d A data item. Used to fetch position and possibly depth.
25217
25217
  * @param {number} i The index within the data. Used to fetch position and
@@ -25843,7 +25843,7 @@ var annotationActionOwner = (__webpack_require__(6978).annotationActionOwner);
25843
25843
  * finished rectangle. This uses styles for {@link geo.polygonFeature}.
25844
25844
  * @property {geo.polygonFeature.styleSpec} [editStyle] The style to apply to a
25845
25845
  * rectangle in edit mode.
25846
- * @property {number|number[]|function} [constraint] If specified, an aspect
25846
+ * @property {number|number[]|Function} [constraint] If specified, an aspect
25847
25847
  * ratio or list of aspect ratios to constraint the rectangle to. If a
25848
25848
  * function, a selection constraint function to call to adjust the
25849
25849
  * rectangle.
@@ -26491,7 +26491,7 @@ module.exports = svg_tileLayer;
26491
26491
  * @constant
26492
26492
  * @type {string}
26493
26493
  */
26494
- module.exports = "1.15.5";
26494
+ module.exports = "0.0.0-semantically-released";
26495
26495
 
26496
26496
  /***/ }),
26497
26497
 
@@ -54753,10 +54753,10 @@ var _geojsonReader = function geojsonReader(arg) {
54753
54753
  * @param {File|Blob|string|object} file This is either a `File` object, a
54754
54754
  * `Blob` object, a string representation of a file, or an object
54755
54755
  * representing data from a file.
54756
- * @param {function} done A callback function when the read is complete.
54756
+ * @param {Function} done A callback function when the read is complete.
54757
54757
  * This is called with `false` on error or the object that was read but
54758
54758
  * not yet parsed.
54759
- * @param {function} [progress] A function which is passed `ProgressEvent`
54759
+ * @param {Function} [progress] A function which is passed `ProgressEvent`
54760
54760
  * information from a `FileReader`. This includes `loaded` and `total`
54761
54761
  * each with a number of bytes.
54762
54762
  */
@@ -54911,7 +54911,7 @@ var _geojsonReader = function geojsonReader(arg) {
54911
54911
  *
54912
54912
  * @param {string} prop The property name.
54913
54913
  * @param {object} _default The default value.
54914
- * @returns {function} A style function for the property.
54914
+ * @returns {Function} A style function for the property.
54915
54915
  */
54916
54916
  this._style = function (prop, _default) {
54917
54917
  var isColor = prop.toLowerCase().match(/color$/);
@@ -54940,10 +54940,10 @@ var _geojsonReader = function geojsonReader(arg) {
54940
54940
  * @param {File|Blob|string|object} file This is either a `File` object, a
54941
54941
  * `Blob` object, a string representation of a file, or an object
54942
54942
  * representing data from a file.
54943
- * @param {function} [done] An optional callback function when the read is
54943
+ * @param {Function} [done] An optional callback function when the read is
54944
54944
  * complete. This is called with `false` on error or a list of
54945
54945
  * {@link geo.feature} on success.
54946
- * @param {function} [progress] A function which is passed `ProgressEvent`
54946
+ * @param {Function} [progress] A function which is passed `ProgressEvent`
54947
54947
  * information from a `FileReader`. This includes `loaded` and `total`
54948
54948
  * each with a number of bytes.
54949
54949
  * @returns {Promise} A `Promise` that resolves with a list of
@@ -55407,7 +55407,7 @@ var _tile = function tile(spec) {
55407
55407
  /**
55408
55408
  * Add a method to be called with the data when the ajax fails.
55409
55409
  *
55410
- * @param {function} method The rejection handler.
55410
+ * @param {Function} method The rejection handler.
55411
55411
  * @returns {this}
55412
55412
  */
55413
55413
  this.catch = function (method) {
@@ -56772,6 +56772,7 @@ var _canvas_pixelmapFeature = function canvas_pixelmapFeature(arg) {
56772
56772
  var object = __webpack_require__(5895);
56773
56773
  object.call(this);
56774
56774
  var m_quadFeature,
56775
+ m_quadFeatureInit,
56775
56776
  s_exit = this._exit,
56776
56777
  m_this = this;
56777
56778
 
@@ -56787,23 +56788,27 @@ var _canvas_pixelmapFeature = function canvas_pixelmapFeature(arg) {
56787
56788
  * feature indices that are located at the specified point.
56788
56789
  */
56789
56790
  this.pointSearch = function (geo, gcs) {
56790
- if (m_quadFeature && m_this.m_info) {
56791
+ if (m_quadFeature) {
56791
56792
  var result = m_quadFeature.pointSearch(geo, gcs);
56792
- if (result.index.length === 1 && result.extra && result.extra[result.index[0]].basis) {
56793
- var basis = result.extra[result.index[0]].basis,
56794
- x,
56795
- y,
56796
- idx;
56797
- x = Math.floor(basis.x * m_this.m_info.width);
56798
- y = Math.floor(basis.y * m_this.m_info.height);
56799
- if (x >= 0 && x < m_this.m_info.width && y >= 0 && y < m_this.m_info.height) {
56800
- idx = m_this.m_info.indices[y * m_this.m_info.width + x];
56801
- result = {
56802
- index: [idx],
56803
- found: [m_this.data()[idx]]
56804
- };
56805
- return result;
56793
+ if (m_this.m_info) {
56794
+ if (result.index.length === 1 && result.extra && result.extra[result.index[0]].basis) {
56795
+ var basis = result.extra[result.index[0]].basis,
56796
+ x,
56797
+ y,
56798
+ idx;
56799
+ x = Math.floor(basis.x * m_this.m_info.width);
56800
+ y = Math.floor(basis.y * m_this.m_info.height);
56801
+ if (x >= 0 && x < m_this.m_info.width && y >= 0 && y < m_this.m_info.height) {
56802
+ idx = m_this.m_info.indices[y * m_this.m_info.width + x];
56803
+ result = {
56804
+ index: [idx],
56805
+ found: [m_this.data()[idx]]
56806
+ };
56807
+ return result;
56808
+ }
56806
56809
  }
56810
+ } else {
56811
+ return this._pointSearchProcess(result);
56807
56812
  }
56808
56813
  }
56809
56814
  return {
@@ -56817,38 +56822,44 @@ var _canvas_pixelmapFeature = function canvas_pixelmapFeature(arg) {
56817
56822
  * if the pixelmap has already been prepared (it is invalidated by a change
56818
56823
  * in the image).
56819
56824
  *
56825
+ * @param {object} [quad] A quad to use as the base instead of the class
56826
+ * instance.
56820
56827
  * @returns {geo.pixelmapFeature.info?}
56821
56828
  */
56822
- this._preparePixelmap = function () {
56829
+ this._preparePixelmap = function (quad) {
56830
+ var base = quad || m_this;
56831
+ if (quad && quad.m_info) {
56832
+ return quad.m_info;
56833
+ }
56823
56834
  var i, idx, pixelData;
56824
- if (!util.isReadyImage(m_this.m_srcImage)) {
56835
+ if (!util.isReadyImage(base.m_srcImage)) {
56825
56836
  return undefined;
56826
56837
  }
56827
- m_this.m_info = {
56828
- width: m_this.m_srcImage.naturalWidth,
56829
- height: m_this.m_srcImage.naturalHeight,
56838
+ base.m_info = {
56839
+ width: base.m_srcImage.naturalWidth,
56840
+ height: base.m_srcImage.naturalHeight,
56830
56841
  canvas: document.createElement('canvas')
56831
56842
  };
56832
- m_this.m_info.canvas.width = m_this.m_info.width;
56833
- m_this.m_info.canvas.height = m_this.m_info.height;
56834
- m_this.m_info.context = m_this.m_info.canvas.getContext('2d');
56835
- m_this.m_info.context.drawImage(m_this.m_srcImage, 0, 0);
56836
- m_this.m_info.imageData = m_this.m_info.context.getImageData(0, 0, m_this.m_info.canvas.width, m_this.m_info.canvas.height);
56837
- pixelData = m_this.m_info.imageData.data;
56838
- m_this.m_info.indices = new Array(pixelData.length / 4);
56839
- m_this.m_info.area = pixelData.length / 4;
56840
- m_this.m_info.mappedColors = {};
56843
+ base.m_info.canvas.width = base.m_info.width;
56844
+ base.m_info.canvas.height = base.m_info.height;
56845
+ base.m_info.context = base.m_info.canvas.getContext('2d');
56846
+ base.m_info.context.drawImage(base.m_srcImage, 0, 0);
56847
+ base.m_info.imageData = base.m_info.context.getImageData(0, 0, base.m_info.canvas.width, base.m_info.canvas.height);
56848
+ pixelData = base.m_info.imageData.data;
56849
+ base.m_info.indices = new Array(pixelData.length / 4);
56850
+ base.m_info.area = pixelData.length / 4;
56851
+ base.m_info.mappedColors = {};
56841
56852
  for (i = 0; i < pixelData.length; i += 4) {
56842
56853
  idx = pixelData[i] + (pixelData[i + 1] << 8) + (pixelData[i + 2] << 16);
56843
- m_this.m_info.indices[i / 4] = idx;
56844
- if (!m_this.m_info.mappedColors[idx]) {
56845
- m_this.m_info.mappedColors[idx] = {
56854
+ base.m_info.indices[i / 4] = idx;
56855
+ if (!base.m_info.mappedColors[idx]) {
56856
+ base.m_info.mappedColors[idx] = {
56846
56857
  first: i / 4
56847
56858
  };
56848
56859
  }
56849
- m_this.m_info.mappedColors[idx].last = i / 4;
56860
+ base.m_info.mappedColors[idx].last = i / 4;
56850
56861
  }
56851
- return m_this.m_info;
56862
+ return base.m_info;
56852
56863
  };
56853
56864
 
56854
56865
  /**
@@ -56857,8 +56868,11 @@ var _canvas_pixelmapFeature = function canvas_pixelmapFeature(arg) {
56857
56868
  * these colors, then draw the resultant image as a quad.
56858
56869
  *
56859
56870
  * @fires geo.event.pixelmap.prepared
56871
+ * @param {object} [quad] A quad to use as the base instead of the class
56872
+ * instance.
56860
56873
  */
56861
- this._computePixelmap = function () {
56874
+ this._computePixelmap = function (quad) {
56875
+ var base = quad || m_this;
56862
56876
  var data = m_this.data() || [],
56863
56877
  colorFunc = m_this.style.get('color'),
56864
56878
  i,
@@ -56872,16 +56886,33 @@ var _canvas_pixelmapFeature = function canvas_pixelmapFeature(arg) {
56872
56886
  updateLast = -1,
56873
56887
  update,
56874
56888
  prepared;
56875
- if (!m_this.m_info) {
56889
+ if (!m_quadFeatureInit && m_quadFeature && !quad) {
56890
+ m_quadFeature._hookRenderImageQuads = function (quads) {
56891
+ quads.forEach(function (quad) {
56892
+ if (!quad.m_srcImage) {
56893
+ quad.m_srcImage = quad.image;
56894
+ m_this._computePixelmap(quad);
56895
+ quad.image = quad.m_info.context.canvas;
56896
+ quad._build = m_this.buildTime().timestamp();
56897
+ } else if (m_this.buildTime().timestamp() > quad._build) {
56898
+ m_this._computePixelmap(quad);
56899
+ quad.image = quad.m_info.context.canvas;
56900
+ quad._build = m_this.buildTime().timestamp();
56901
+ }
56902
+ });
56903
+ };
56904
+ m_quadFeatureInit = true;
56905
+ }
56906
+ if (!base.m_info) {
56876
56907
  m_this.indexModified(undefined, 'clear');
56877
- if (!m_this._preparePixelmap()) {
56908
+ if (!m_this._preparePixelmap(quad)) {
56878
56909
  return;
56879
56910
  }
56880
56911
  prepared = true;
56881
56912
  }
56882
56913
  m_this.indexModified(undefined, 'clear');
56883
- mappedColors = m_this.m_info.mappedColors;
56884
- updateFirst = m_this.m_info.area;
56914
+ mappedColors = base.m_info.mappedColors;
56915
+ updateFirst = base.m_info.area;
56885
56916
  for (idx in mappedColors) {
56886
56917
  if (mappedColors.hasOwnProperty(idx)) {
56887
56918
  color = colorFunc(data[idx], +idx) || {};
@@ -56899,8 +56930,8 @@ var _canvas_pixelmapFeature = function canvas_pixelmapFeature(arg) {
56899
56930
  return;
56900
56931
  }
56901
56932
  /* Update only the extent that has changed */
56902
- pixelData = m_this.m_info.imageData.data;
56903
- indices = m_this.m_info.indices;
56933
+ pixelData = base.m_info.imageData.data;
56934
+ indices = base.m_info.indices;
56904
56935
  for (i = updateFirst; i <= updateLast; i += 1) {
56905
56936
  idx = indices[i];
56906
56937
  if (idx !== lastidx) {
@@ -56916,8 +56947,10 @@ var _canvas_pixelmapFeature = function canvas_pixelmapFeature(arg) {
56916
56947
  }
56917
56948
  }
56918
56949
  /* Place the updated area into the canvas */
56919
- m_this.m_info.context.putImageData(m_this.m_info.imageData, 0, 0, 0, Math.floor(updateFirst / m_this.m_info.width), m_this.m_info.width, Math.ceil((updateLast + 1) / m_this.m_info.width));
56920
-
56950
+ base.m_info.context.putImageData(base.m_info.imageData, 0, 0, 0, Math.floor(updateFirst / base.m_info.width), base.m_info.width, Math.ceil((updateLast + 1) / base.m_info.width));
56951
+ if (quad) {
56952
+ return;
56953
+ }
56921
56954
  /* If we haven't made a quad feature, make one now. The quad feature needs
56922
56955
  * to have the canvas capability. */
56923
56956
  if (!m_quadFeature) {
@@ -56931,6 +56964,7 @@ var _canvas_pixelmapFeature = function canvas_pixelmapFeature(arg) {
56931
56964
  image: m_this.m_info.canvas,
56932
56965
  position: m_this.style.get('position')
56933
56966
  }).data([{}]).draw();
56967
+ m_quadFeatureInit = true;
56934
56968
  }
56935
56969
  /* If we prepared the pixelmap and rendered it, send a prepared event */
56936
56970
  if (prepared) {
@@ -56954,13 +56988,18 @@ var _canvas_pixelmapFeature = function canvas_pixelmapFeature(arg) {
56954
56988
  s_exit();
56955
56989
  return m_this;
56956
56990
  };
56991
+ if (arg.quadFeature) {
56992
+ m_quadFeature = arg.quadFeature;
56993
+ }
56957
56994
  this._init(arg);
56958
56995
  return this;
56959
56996
  };
56960
56997
  inherit(_canvas_pixelmapFeature, pixelmapFeature);
56961
56998
 
56962
56999
  // Now register it
56963
- registerFeature('canvas', 'pixelmap', _canvas_pixelmapFeature);
57000
+ var capabilities = {};
57001
+ capabilities[pixelmapFeature.capabilities.lookup] = true;
57002
+ registerFeature('canvas', 'pixelmap', _canvas_pixelmapFeature, capabilities);
56964
57003
  module.exports = _canvas_pixelmapFeature;
56965
57004
 
56966
57005
  /***/ }),
@@ -58113,6 +58152,9 @@ var _canvas_quadFeature = function canvas_quadFeature(arg) {
58113
58152
  }
58114
58153
  context2d.imageSmoothingEnabled = !nearestPixel;
58115
58154
  }
58155
+ if (m_this._hookRenderImageQuads) {
58156
+ m_this._hookRenderImageQuads(m_quads.imgQuads);
58157
+ }
58116
58158
  $.each([m_quads.imgQuads, m_quads.vidQuads], function (listidx, quadlist) {
58117
58159
  if (!quadlist) {
58118
58160
  return;
@@ -69092,7 +69134,7 @@ colorName = colorName.__esModule ? colorName.default : colorName;
69092
69134
  * @property {string} name The name of the color conversion.
69093
69135
  * @property {RegExp} regex A regex that, if it matches the color string, will
69094
69136
  * cause the process function to be invoked.
69095
- * @property {function} process A function that takes (`color`, `match`) with
69137
+ * @property {Function} process A function that takes (`color`, `match`) with
69096
69138
  * the original color string and the results of matching the regex using
69097
69139
  * the regex's `exec` function. It outputs a {@link geo.geoColorObject}
69098
69140
  * color object or the original color string if there is still a parsing
@@ -69938,7 +69980,7 @@ function generalOperationProcess(op, poly1, poly2, opts) {
69938
69980
  * @private
69939
69981
  * @param {string} op The operation to handle. One of union, intersect,
69940
69982
  * difference, or xor.
69941
- * @returns {function} a function for the polygons.
69983
+ * @returns {Function} a function for the polygons.
69942
69984
  */
69943
69985
  function generalOperation(op) {
69944
69986
  return function (poly1, poly2, opts) {
@@ -70249,7 +70291,7 @@ var _colorLegendWidget = function colorLegendWidget(arg) {
70249
70291
  * @param {number[]} steps discrete input scale domain for d3 scale
70250
70292
  * @param {object} colorScale d3 scale for transform input into color
70251
70293
  * @param {number} width width of the svg element in pixel
70252
- * @param {function} getValue function that transforms raw domain into desired discrete range
70294
+ * @param {Function} getValue function that transforms raw domain into desired discrete range
70253
70295
  */
70254
70296
  this._renderDiscreteColors = function (svg, steps, colorScale, width, getValue) {
70255
70297
  svg.selectAll('rect').data(steps).enter().append('rect').attr('width', width / steps.length).attr('height', '20px').attr('fill', function (d) {
@@ -70529,10 +70571,10 @@ var _svg_vectorFeature = function svg_vectorFeature(arg) {
70529
70571
  * Add marker styles for vector arrows.
70530
70572
  *
70531
70573
  * @param {object[]} data The vector data array.
70532
- * @param {function} stroke The stroke accessor.
70533
- * @param {function} opacity The opacity accessor.
70534
- * @param {function} originStyle The marker style for the vector head.
70535
- * @param {function} endStyle The marker style for the vector tail.
70574
+ * @param {Function} stroke The stroke accessor.
70575
+ * @param {Function} opacity The opacity accessor.
70576
+ * @param {Function} originStyle The marker style for the vector head.
70577
+ * @param {Function} endStyle The marker style for the vector tail.
70536
70578
  */
70537
70579
  function updateMarkers(data, stroke, opacity, originStyle, endStyle) {
70538
70580
  //this allows for multiple vectorFeature in a layer
@@ -72401,7 +72443,7 @@ var $ = __webpack_require__(5616);
72401
72443
  * high number can increase memory. Ideally, it should reflect the number of
72402
72444
  * items that are kept in memory elsewhere. If `needed` is `null`, this is
72403
72445
  * ignored.
72404
- * @property {function} [needed=null] If set, this function is passed a
72446
+ * @property {Function} [needed=null] If set, this function is passed a
72405
72447
  * Deferred object and must return a truthy value if the object is still
72406
72448
  * needed.
72407
72449
  */
@@ -72538,7 +72580,7 @@ var _fetchQueue = function fetchQueue(options) {
72538
72580
  * Add a Deferred object to the queue.
72539
72581
  *
72540
72582
  * @param {jQuery.Deferred} defer Deferred object to add to the queue.
72541
- * @param {function} callback A function to call when the item's turn is
72583
+ * @param {Function} callback A function to call when the item's turn is
72542
72584
  * granted.
72543
72585
  * @param {boolean} atEnd If falsy, add the item to the front of the queue
72544
72586
  * if batching is turned off or at the end of the current batch if it is
@@ -72806,7 +72848,7 @@ ClusterTree.prototype.count = function () {
72806
72848
  * arguments to arguments the point object and the zoom level:
72807
72849
  * `func.call(this, point, zoom)`.
72808
72850
  *
72809
- * @param {function} func The function to call.
72851
+ * @param {Function} func The function to call.
72810
72852
  */
72811
72853
  ClusterTree.prototype.each = function (func) {
72812
72854
  var i;
@@ -73516,7 +73558,7 @@ var _meshFeature = function meshFeature(arg) {
73516
73558
  * @instance
73517
73559
  * @param {string|undefined} key The name of the mesh key or `undefined` to
73518
73560
  * return an object with all keys as functions.
73519
- * @returns {object|function} A function related to the key, or an object
73561
+ * @returns {object|Function} A function related to the key, or an object
73520
73562
  * with all mesh keys, each of which is a function.
73521
73563
  */
73522
73564
  this.mesh.get = function (key) {
@@ -73537,9 +73579,9 @@ var _meshFeature = function meshFeature(arg) {
73537
73579
  * Get/Set position accessor. This is identical to getting or setting the
73538
73580
  * `position` style.
73539
73581
  *
73540
- * @param {array|function} [val] If specified, set the position style. If
73582
+ * @param {array|Function} [val] If specified, set the position style. If
73541
73583
  * `undefined`, return the current value.
73542
- * @returns {array|function|this} Either the position style or this.
73584
+ * @returns {array|Function|this} Either the position style or this.
73543
73585
  */
73544
73586
  this.position = function (val) {
73545
73587
  if (val === undefined) {
@@ -74368,7 +74410,7 @@ var sceneObject = __webpack_require__(5402);
74368
74410
  * @property {number} [max=16] Maximum zoom level.
74369
74411
  * @property {boolean} [discreteZoom=false] If `true`, only allow integer zoom
74370
74412
  * levels. `false` for any zoom level.
74371
- * @property {boolean|function} [allowRotation=true] `false` prevents rotation,
74413
+ * @property {boolean|Function} [allowRotation=true] `false` prevents rotation,
74372
74414
  * `true` allows any rotation. If a function, the function is called with a
74373
74415
  * rotation (angle in radians) and returns a valid rotation. This can be
74374
74416
  * used to constrain the rotation to a range or specific values.
@@ -74645,12 +74687,12 @@ var _map2 = function map(arg) {
74645
74687
  * Get/set the `allowRotation` setting. If changed, adjust the map as
74646
74688
  * needed.
74647
74689
  *
74648
- * @param {boolean|function} [allowRotation] The new `allowRotation` value.
74690
+ * @param {boolean|Function} [allowRotation] The new `allowRotation` value.
74649
74691
  * `false` prevents rotation, `true` allows any rotation. If a function,
74650
74692
  * the function is called with a rotation (angle in radians) and returns a
74651
74693
  * valid rotation (this can be used to constrain the rotation to a range
74652
74694
  * or to specific values).
74653
- * @returns {boolean|function|this}
74695
+ * @returns {boolean|Function|this}
74654
74696
  */
74655
74697
  this.allowRotation = function (allowRotation) {
74656
74698
  if (allowRotation === undefined) {
@@ -75472,16 +75514,16 @@ var _map2 = function map(arg) {
75472
75514
  * to a new zoom level.
75473
75515
  * @param {number} [opts.rotation] A new map rotation.
75474
75516
  * @param {number} [opts.duration] Transition duration in milliseconds.
75475
- * @param {function} [opts.ease] Easing function for the transition. This is
75517
+ * @param {Function} [opts.ease] Easing function for the transition. This is
75476
75518
  * in the style of a d3 easing function.
75477
- * @param {function} [opts.interp] Function to use when interpolating
75519
+ * @param {Function} [opts.interp] Function to use when interpolating
75478
75520
  * between values. This gets passed two arrays, the start and end values
75479
75521
  * for [`x`, `y`, `z` or `zoom`, `rotation`], and returns a function that,
75480
75522
  * when passed a time value returns an array of the interpolated [`x`,
75481
75523
  * `y`, `z` or `zoom`, `rotation`] values.
75482
75524
  * @param {boolean} [opts.zCoord] If `true`, convert zoom values to z values
75483
75525
  * for interpolation.
75484
- * @param {function} [opts.done] If specified, call this function when a
75526
+ * @param {Function} [opts.done] If specified, call this function when a
75485
75527
  * transition completes. The function is called with an object that
75486
75528
  * contains `cancel`: a boolean if the transition was canceled, `source`:
75487
75529
  * a value based on what canceled a transition, `transition`: the current
@@ -75527,7 +75569,7 @@ var _map2 = function map(arg) {
75527
75569
  *
75528
75570
  * @param {array} p0 An array of numbers to interpolate from.
75529
75571
  * @param {array} p1 An array of numbers to interpolate to.
75530
- * @returns {function} A function that, given `t`, returns an array of
75572
+ * @returns {Function} A function that, given `t`, returns an array of
75531
75573
  * interpolated values.
75532
75574
  * @private
75533
75575
  */
@@ -75746,7 +75788,7 @@ var _map2 = function map(arg) {
75746
75788
  m_this.zoom(nav.zoom, undefined, undefined, undefined, 'pan');
75747
75789
  m_this.center(nav.center, null);
75748
75790
  }
75749
- return m_this.boundsFromZoomAndCenter(m_zoom, m_center, m_rotation, gcs, true);
75791
+ return m_this.boundsFromZoomAndCenter(m_zoom, m_center, m_rotation, gcs, true, true);
75750
75792
  };
75751
75793
 
75752
75794
  /**
@@ -76296,7 +76338,7 @@ var _map2 = function map(arg) {
76296
76338
  * callbacks will be called in a single time slice, providing better
76297
76339
  * synchronization.
76298
76340
  *
76299
- * @param {function} callback Function to call during the animation frame.
76341
+ * @param {Function} callback Function to call during the animation frame.
76300
76342
  * It is called with an animation epoch, exactly as
76301
76343
  * `requestAnimationFrame`.
76302
76344
  * @param {boolean|'remove'} [action] Falsy to only add the callback if
@@ -82698,7 +82740,7 @@ geo_event.keyaction = 'geo_keyaction';
82698
82740
  * @property {geo.geoPosition} center The target center.
82699
82741
  * @property {number} zoom The target zoom level.
82700
82742
  * @property {number} duration The duration of the transition in milliseconds.
82701
- * @property {function} ease The easing function.
82743
+ * @property {Function} ease The easing function.
82702
82744
  */
82703
82745
  geo_event.transitionstart = 'geo_transitionstart';
82704
82746
 
@@ -82710,7 +82752,7 @@ geo_event.transitionstart = 'geo_transitionstart';
82710
82752
  * @property {geo.geoPosition} center The target center.
82711
82753
  * @property {number} zoom The target zoom level.
82712
82754
  * @property {number} duration The duration of the transition in milliseconds.
82713
- * @property {function} ease The easing function.
82755
+ * @property {Function} ease The easing function.
82714
82756
  */
82715
82757
  geo_event.transitionend = 'geo_transitionend';
82716
82758
 
@@ -82722,7 +82764,7 @@ geo_event.transitionend = 'geo_transitionend';
82722
82764
  * @property {geo.geoPosition} center The target center.
82723
82765
  * @property {number} zoom The target zoom level.
82724
82766
  * @property {number} duration The duration of the transition in milliseconds.
82725
- * @property {function} ease The easing function.
82767
+ * @property {Function} ease The easing function.
82726
82768
  */
82727
82769
  geo_event.transitioncancel = 'geo_transitioncancel';
82728
82770
 
@@ -83724,10 +83766,10 @@ var feature = __webpack_require__(1275);
83724
83766
  *
83725
83767
  * @typedef {geo.feature.spec} geo.textFeature.spec
83726
83768
  * @extends geo.feature.spec
83727
- * @property {geo.geoPosition[]|function} [position] The position of each data
83769
+ * @property {geo.geoPosition[]|Function} [position] The position of each data
83728
83770
  * element. Defaults to the `x`, `y`, and `z` properties of the data
83729
83771
  * element.
83730
- * @property {string[]|function} [text] The text of each data element.
83772
+ * @property {string[]|Function} [text] The text of each data element.
83731
83773
  * Defaults to the `text` property of the data element.
83732
83774
  * @property {geo.textFeature.styleSpec} [style] The style to apply to each
83733
83775
  * data element.
@@ -83738,55 +83780,55 @@ var feature = __webpack_require__(1275);
83738
83780
  *
83739
83781
  * @typedef {geo.feature.styleSpec} geo.textFeature.styleSpec
83740
83782
  * @extends geo.feature.styleSpec
83741
- * @property {boolean|function} [visible=true] If falsy, don't show this data
83783
+ * @property {boolean|Function} [visible=true] If falsy, don't show this data
83742
83784
  * element.
83743
- * @property {string|function} [font] A css font specification. This is of the
83785
+ * @property {string|Function} [font] A css font specification. This is of the
83744
83786
  * form `[style] [variant] [weight] [stretch] size[/line-height] family`.
83745
83787
  * Individual font styles override this value if a style is specified in
83746
83788
  * each. See the individual font styles for details.
83747
- * @property {string|function} [fontStyle='normal'] The font style. One of
83789
+ * @property {string|Function} [fontStyle='normal'] The font style. One of
83748
83790
  * `normal`, `italic`, or `oblique`.
83749
- * @property {string|function} [fontVariant='normal'] The font variant. This
83791
+ * @property {string|Function} [fontVariant='normal'] The font variant. This
83750
83792
  * can have values such as `small-caps` or `slashed-zero`.
83751
- * @property {string|function} [fontWeight='normal'] The font weight. This may
83793
+ * @property {string|Function} [fontWeight='normal'] The font weight. This may
83752
83794
  * be a numeric value where 400 is normal and 700 is bold, or a string such
83753
83795
  * as `bold` or `lighter`.
83754
- * @property {string|function} [fontStretch='normal'] The font stretch, such as
83796
+ * @property {string|Function} [fontStretch='normal'] The font stretch, such as
83755
83797
  * `condensed`.
83756
- * @property {string|function} [fontSize='medium'] The font size.
83757
- * @property {string|function} [lineHeight='normal'] The font line height.
83758
- * @property {string|function} [fontFamily] The font family.
83759
- * @property {string|function} [textAlign='center'] The horizontal text
83798
+ * @property {string|Function} [fontSize='medium'] The font size.
83799
+ * @property {string|Function} [lineHeight='normal'] The font line height.
83800
+ * @property {string|Function} [fontFamily] The font family.
83801
+ * @property {string|Function} [textAlign='center'] The horizontal text
83760
83802
  * alignment. One of `start`, `end`, `left`, `right`, or `center`.
83761
- * @property {string|function} [textBaseline='middle'] The vertical text
83803
+ * @property {string|Function} [textBaseline='middle'] The vertical text
83762
83804
  * alignment. One of `top`, `hanging`, `middle`, `alphabetic`,
83763
83805
  * `ideographic`, or `bottom`.
83764
- * @property {geo.geoColor|function} [color='black'] Text color. May include
83806
+ * @property {geo.geoColor|Function} [color='black'] Text color. May include
83765
83807
  * opacity.
83766
- * @property {number|function} [textOpacity=1] The opacity of the text. If the
83808
+ * @property {number|Function} [textOpacity=1] The opacity of the text. If the
83767
83809
  * color includes opacity, this is combined with that value.
83768
- * @property {number|function} [rotation=0] Text rotation in radians.
83769
- * @property {boolean|function} [rotateWithMap=false] If truthy, rotate the
83810
+ * @property {number|Function} [rotation=0] Text rotation in radians.
83811
+ * @property {boolean|Function} [rotateWithMap=false] If truthy, rotate the
83770
83812
  * text when the map rotates. Otherwise, the text is always in the same
83771
83813
  * orientation.
83772
- * @property {number|function} [textScaled] If defined, the text is scaled when
83814
+ * @property {number|Function} [textScaled] If defined, the text is scaled when
83773
83815
  * the map zooms and this is the basis zoom for the fontSize.
83774
- * @property {geo.screenPosition|function} [offset] Offset from the default
83816
+ * @property {geo.screenPosition|Function} [offset] Offset from the default
83775
83817
  * position for the text. This is applied before rotation.
83776
- * @property {geo.geoColor|function} [shadowColor='black'] Text shadow color.
83818
+ * @property {geo.geoColor|Function} [shadowColor='black'] Text shadow color.
83777
83819
  * May include opacity.
83778
- * @property {geo.screenPosition|function} [shadowOffset] Offset for a text
83820
+ * @property {geo.screenPosition|Function} [shadowOffset] Offset for a text
83779
83821
  * shadow. This is applied before rotation.
83780
- * @property {number|null|function} [shadowBlur] If not null, add a text shadow
83822
+ * @property {number|null|Function} [shadowBlur] If not null, add a text shadow
83781
83823
  * with this much blur.
83782
- * @property {boolean|function} [shadowRotate=false] If truthy, rotate the
83824
+ * @property {boolean|Function} [shadowRotate=false] If truthy, rotate the
83783
83825
  * shadow offset based on the text rotation (the `shadowOffset` is the
83784
83826
  * offset if the text has a 0 rotation).
83785
- * @property {geo.geoColor|function} [textStrokeColor='transparent'] Text
83827
+ * @property {geo.geoColor|Function} [textStrokeColor='transparent'] Text
83786
83828
  * stroke color. May include opacity.
83787
- * @property {geo.geoColor|function} [textStrokeWidth=0] Text stroke width in
83829
+ * @property {geo.geoColor|Function} [textStrokeWidth=0] Text stroke width in
83788
83830
  * pixels.
83789
- * @property {number|function} [renderThreshold] If this is a positive number,
83831
+ * @property {number|Function} [renderThreshold] If this is a positive number,
83790
83832
  * text elements may not be rendered if their base position (before offset
83791
83833
  * and font effects are applied) is more than this distance in pixels
83792
83834
  * outside of the current viewport. If it is known that such text elements
@@ -83823,9 +83865,9 @@ var _textFeature = function textFeature(arg) {
83823
83865
  /**
83824
83866
  * Get/Set position.
83825
83867
  *
83826
- * @param {array|function} [val] If `undefined`, return the current position
83868
+ * @param {array|Function} [val] If `undefined`, return the current position
83827
83869
  * setting. Otherwise, modify the current position setting.
83828
- * @returns {array|function|this} The current position or this feature.
83870
+ * @returns {array|Function|this} The current position or this feature.
83829
83871
  */
83830
83872
  this.position = function (val) {
83831
83873
  if (val === undefined) {
@@ -83841,9 +83883,9 @@ var _textFeature = function textFeature(arg) {
83841
83883
  /**
83842
83884
  * Get/Set text.
83843
83885
  *
83844
- * @param {array|function} [val] If `undefined`, return the current text
83886
+ * @param {array|Function} [val] If `undefined`, return the current text
83845
83887
  * setting. Otherwise, modify the current text setting.
83846
- * @returns {array|function|this} The current text or this feature.
83888
+ * @returns {array|Function|this} The current text or this feature.
83847
83889
  */
83848
83890
  this.text = function (val) {
83849
83891
  if (val === undefined) {
@@ -84338,9 +84380,9 @@ var transform = __webpack_require__(5325);
84338
84380
  *
84339
84381
  * @typedef {geo.feature.spec} geo.polygonFeature.spec
84340
84382
  * @extends geo.feature.spec
84341
- * @property {geo.geoPosition|function} [position] Position of the data.
84383
+ * @property {geo.geoPosition|Function} [position] Position of the data.
84342
84384
  * Default is (data).
84343
- * @property {geo.polygon|function} [polygon] Polygons from the data. Default
84385
+ * @property {geo.polygon|Function} [polygon] Polygons from the data. Default
84344
84386
  * (data).
84345
84387
  * @property {geo.polygonFeature.styleSpec} [style] Style object with default
84346
84388
  * style options.
@@ -84351,17 +84393,17 @@ var transform = __webpack_require__(5325);
84351
84393
  *
84352
84394
  * @typedef {geo.lineFeature.styleSpec} geo.polygonFeature.styleSpec
84353
84395
  * @extends geo.lineFeature.styleSpec
84354
- * @property {boolean|function} [fill=true] True to fill polygon.
84355
- * @property {geo.geoColor|function} [fillColor] Color to fill each polygon.
84396
+ * @property {boolean|Function} [fill=true] True to fill polygon.
84397
+ * @property {geo.geoColor|Function} [fillColor] Color to fill each polygon.
84356
84398
  * The color can vary by vertex.
84357
- * @property {number|function} [fillOpacity] Opacity for each polygon. The
84399
+ * @property {number|Function} [fillOpacity] Opacity for each polygon. The
84358
84400
  * opacity can vary by vertex. Opacity is on a [0-1] scale.
84359
- * @property {boolean|function} [stroke=false] True to stroke polygon.
84360
- * @property {boolean|function} [uniformPolygon=false] Boolean indicating if
84401
+ * @property {boolean|Function} [stroke=false] True to stroke polygon.
84402
+ * @property {boolean|Function} [uniformPolygon=false] Boolean indicating if
84361
84403
  * each polygon has a uniform style (uniform fill color, fill opacity, stroke
84362
84404
  * color, and stroke opacity). Can vary by polygon.
84363
- * @property {boolean|function} [closed=true] Ignored. Always `true`.
84364
- * @property {number[]|function} [origin] Origin in map gcs coordinates used
84405
+ * @property {boolean|Function} [closed=true] Ignored. Always `true`.
84406
+ * @property {number[]|Function} [origin] Origin in map gcs coordinates used
84365
84407
  * for to ensure high precision drawing in this location. When called as a
84366
84408
  * function, this is passed an array of items, each of which has a vertices
84367
84409
  * property that is a single continuous array in map gcs coordinates. It
@@ -84434,9 +84476,9 @@ var _polygonFeature = function polygonFeature(arg) {
84434
84476
  *
84435
84477
  * @private
84436
84478
  * @param {object[]} [data] The data to process.
84437
- * @param {function} [posFunc] The function to
84479
+ * @param {Function} [posFunc] The function to
84438
84480
  * get the position of each vertex.
84439
- * @param {function} [polyFunc] The function to
84481
+ * @param {Function} [polyFunc] The function to
84440
84482
  * get each polygon.
84441
84483
  * @returns {geo.polygonObject[]} An array of polygon positions. Each has
84442
84484
  * `outer` and `inner` if it has any coordinates, or is `undefined`.
@@ -84559,7 +84601,7 @@ var _polygonFeature = function polygonFeature(arg) {
84559
84601
  * the stroke. This should be m_this.style(<name of style>) and not
84560
84602
  * m_this.style.get(<name of style>), as the result is more efficient if
84561
84603
  * the style is not a function.
84562
- * @returns {object|function} A style that can be used for the stroke.
84604
+ * @returns {object|Function} A style that can be used for the stroke.
84563
84605
  * @private
84564
84606
  */
84565
84607
  function linePolyStyle(styleValue) {
@@ -84575,11 +84617,11 @@ var _polygonFeature = function polygonFeature(arg) {
84575
84617
  /**
84576
84618
  * Get/set polygon accessor.
84577
84619
  *
84578
- * @param {object|function} [val] If not specified, return the current
84620
+ * @param {object|Function} [val] If not specified, return the current
84579
84621
  * polygon accessor. If specified, use this for the polygon accessor and
84580
84622
  * return `this`. If a function is given, the function is passed
84581
84623
  * `(dataElement, dataIndex)` and returns a {@link geo.polygon}.
84582
- * @returns {object|function|this} The current polygon accessor or this
84624
+ * @returns {object|Function|this} The current polygon accessor or this
84583
84625
  * feature.
84584
84626
  */
84585
84627
  this.polygon = function (val) {
@@ -84597,7 +84639,7 @@ var _polygonFeature = function polygonFeature(arg) {
84597
84639
  /**
84598
84640
  * Get/Set position accessor.
84599
84641
  *
84600
- * @param {geo.geoPosition|function} [val] If not specified, return the
84642
+ * @param {geo.geoPosition|Function} [val] If not specified, return the
84601
84643
  * current position accessor. If specified, use this for the position
84602
84644
  * accessor and return `this`. If a function is given, this is called
84603
84645
  * with `(vertexElement, vertexIndex, dataElement, dataIndex)`.
@@ -84961,9 +85003,9 @@ var _polygonFeature = function polygonFeature(arg) {
84961
85003
  * units. A value of zero will only remove perfectly collinear points.
84962
85004
  * If not specified, this is set to a half display pixel at the map's
84963
85005
  * current zoom level.
84964
- * @param {function} [posFunc] The function to
85006
+ * @param {Function} [posFunc] The function to
84965
85007
  * get the position of each vertex.
84966
- * @param {function} [polyFunc] The function to
85008
+ * @param {Function} [polyFunc] The function to
84967
85009
  * get each polygon.
84968
85010
  * @param {boolean} [returnData] If truthy, return the new data array
84969
85011
  * rather than modifying the feature.
@@ -85714,17 +85756,17 @@ var meshFeature = __webpack_require__(6124);
85714
85756
  *
85715
85757
  * @typedef {geo.feature.styleSpec} geo.contourFeature.styleSpec
85716
85758
  * @extends geo.feature.styleSpec
85717
- * @property {geo.geoPosition|function} [position=data] The position of each
85759
+ * @property {geo.geoPosition|Function} [position=data] The position of each
85718
85760
  * data element. This defaults to just using `x`, `y`, and `z` properties
85719
85761
  * of the data element itself. The position is in the feature's gcs
85720
85762
  * coordinates.
85721
- * @property {number|function} [value=data.z] The value of each data element.
85763
+ * @property {number|Function} [value=data.z] The value of each data element.
85722
85764
  * This defaults to the `z` property of the data elements. If the value of
85723
85765
  * a grid point is `null` or `undefined`, the point and elements that use
85724
85766
  * that point won't be included in the results.
85725
- * @property {number|function} [opacity=1] The opacity for the whole feature on
85767
+ * @property {number|Function} [opacity=1] The opacity for the whole feature on
85726
85768
  * a scale of 0 to 1.
85727
- * @property {number[]|function} [origin] Origin in map gcs coordinates used
85769
+ * @property {number[]|Function} [origin] Origin in map gcs coordinates used
85728
85770
  * for to ensure high precision drawing in this location. When called as a
85729
85771
  * function, this is passed the vertex positions as a single continuous array
85730
85772
  * in map gcs coordinates. It defaults to the first vertex used in the
@@ -86224,7 +86266,7 @@ var util = __webpack_require__(642);
86224
86266
  * @extends geo.feature.spec
86225
86267
  * @property {geo.vectorFeature.styleSpec} [style] Style object with default
86226
86268
  * style options.
86227
- * @property {function|object} [origin={x: 0, y: 0, z: 0}] Origin accessor.
86269
+ * @property {Function|object} [origin={x: 0, y: 0, z: 0}] Origin accessor.
86228
86270
  */
86229
86271
 
86230
86272
  /**
@@ -86232,22 +86274,22 @@ var util = __webpack_require__(642);
86232
86274
  *
86233
86275
  * @typedef {geo.feature.styleSpec} geo.vectorFeature.styleSpec
86234
86276
  * @extends geo.feature.styleSpec
86235
- * @property {geo.geoColor|function} [strokeColor] Color to stroke each vector.
86236
- * @property {number|function} [strokeOpacity] Opacity for each vector.
86277
+ * @property {geo.geoColor|Function} [strokeColor] Color to stroke each vector.
86278
+ * @property {number|Function} [strokeOpacity] Opacity for each vector.
86237
86279
  * Opacity is on a [0-1] scale.
86238
- * @property {number|function} [strokeWidth] The weight of the vector stroke in
86280
+ * @property {number|Function} [strokeWidth] The weight of the vector stroke in
86239
86281
  * pixels.
86240
- * @property {string|function} [originStyle='none'] The style at the origin of
86282
+ * @property {string|Function} [originStyle='none'] The style at the origin of
86241
86283
  * the vector. One of the marker styles or `'none'`. Marker styles are
86242
86284
  * usually `'arrow'`, `'point'`, `'bar'`, and `'wedge'`.
86243
- * @property {string|function} [endStyle='arrow'] The style at the far end of
86285
+ * @property {string|Function} [endStyle='arrow'] The style at the far end of
86244
86286
  * the vector. One of the marker styles or `'none'`. Marker styles are
86245
86287
  * usually `'arrow'`, `'point'`, `'bar'`, and `'wedge'`.
86246
- * @property {geo.geoPosition|function} [origin={x: 0, y: 0, z: 0}] The origin
86288
+ * @property {geo.geoPosition|Function} [origin={x: 0, y: 0, z: 0}] The origin
86247
86289
  * of the vector. One end of the vector will be at this point.
86248
- * @property {geo.geoPosition|function} [delta] The direction that the vector
86290
+ * @property {geo.geoPosition|Function} [delta] The direction that the vector
86249
86291
  * points in. The length of the vector is dependent on this and the `scale`.
86250
- * @property {number|function} [scale] The size of the vector relative to the
86292
+ * @property {number|Function} [scale] The size of the vector relative to the
86251
86293
  * delta. If `null`, `undefined`, or `0`, this is `75 / <maximum length of
86252
86294
  * any delta in x-y space>`.
86253
86295
  */
@@ -86281,9 +86323,9 @@ var _vectorFeature = function vectorFeature(arg) {
86281
86323
  * Get or set the accessor for the origin of the vector. This is the point
86282
86324
  * that the vector starts.
86283
86325
  *
86284
- * @param {geo.geoPosition|function} [val] The new origin if specified. If
86326
+ * @param {geo.geoPosition|Function} [val] The new origin if specified. If
86285
86327
  * not specified, return the current origin.
86286
- * @returns {geo.geoPosition|function|this} Either the current origin or
86328
+ * @returns {geo.geoPosition|Function|this} Either the current origin or
86287
86329
  * this feature.
86288
86330
  */
86289
86331
  this.origin = function (val) {
@@ -86300,9 +86342,9 @@ var _vectorFeature = function vectorFeature(arg) {
86300
86342
  * Get or set the accessor for the displacement (coordinates) of the vector.
86301
86343
  * This is the direction of the vector.
86302
86344
  *
86303
- * @param {geo.geoPosition|function} [val] The new delta if specified. If
86345
+ * @param {geo.geoPosition|Function} [val] The new delta if specified. If
86304
86346
  * not specified, return the current delta.
86305
- * @returns {geo.geoPosition|function|this} Either the current delta or this
86347
+ * @returns {geo.geoPosition|Function|this} Either the current delta or this
86306
86348
  * feature.
86307
86349
  */
86308
86350
  this.delta = function (val) {
@@ -87505,7 +87547,7 @@ var _annotation = function annotation(type, args) {
87505
87547
  * Apply a map function of a geo.polygon.
87506
87548
  *
87507
87549
  * @param {geo.polygon} coord The polygon to apply the function to.
87508
- * @param {function} func The function to apply.
87550
+ * @param {Function} func The function to apply.
87509
87551
  * @returns {array} The map results.
87510
87552
  */
87511
87553
  this._coordinatesMapFunc = function (coord, func) {
@@ -87770,7 +87812,7 @@ var _annotation = function annotation(type, args) {
87770
87812
  *
87771
87813
  * @private
87772
87814
  * @param {object} m_this The current annotation instance.
87773
- * @param {function} s_actions The parent actions method.
87815
+ * @param {Function} s_actions The parent actions method.
87774
87816
  * @param {string|undefined} state The state to return actions for. Defaults
87775
87817
  * to the current state.
87776
87818
  * @param {string} name The name of this annotation.
@@ -87870,7 +87912,7 @@ function continuousVerticesProcessAction(m_this, evt, name) {
87870
87912
  * that it is twice as wide as tall, [2, 1/2] would allow it to be twice as
87871
87913
  * wide or half as wide as it is tall. Sizes (e.g., {width: 400, height:
87872
87914
  * 500}) snap to that size.
87873
- * @returns {function} A function that can be passed to the mapIterator
87915
+ * @returns {Function} A function that can be passed to the mapIterator
87874
87916
  * selectionConstraint or to an annotation constraint function.
87875
87917
  */
87876
87918
  function constrainAspectRatio(ratio) {
@@ -89565,7 +89607,7 @@ var feature = __webpack_require__(1275);
89565
89607
  *
89566
89608
  * @typedef {geo.feature.spec} geo.pointFeature.spec
89567
89609
  * @extends geo.feature.spec
89568
- * @property {geo.geoPosition|function} [position] Position of the data.
89610
+ * @property {geo.geoPosition|Function} [position] Position of the data.
89569
89611
  * Default is (data).
89570
89612
  * @property {geo.pointFeature.styleSpec} [style] Style object with default
89571
89613
  * style options.
@@ -89591,19 +89633,19 @@ var feature = __webpack_require__(1275);
89591
89633
  *
89592
89634
  * @typedef {geo.feature.styleSpec} geo.pointFeature.styleSpec
89593
89635
  * @extends geo.feature.styleSpec
89594
- * @property {number|function} [radius=5] Radius of each point in pixels. This
89636
+ * @property {number|Function} [radius=5] Radius of each point in pixels. This
89595
89637
  * is the fill radius inside of the stroke.
89596
- * @property {boolean|function} [stroke=true] True to stroke point.
89597
- * @property {geo.geoColor|function} [strokeColor] Color to stroke each point.
89598
- * @property {number|function} [strokeOpacity=1] Opacity for each point's
89638
+ * @property {boolean|Function} [stroke=true] True to stroke point.
89639
+ * @property {geo.geoColor|Function} [strokeColor] Color to stroke each point.
89640
+ * @property {number|Function} [strokeOpacity=1] Opacity for each point's
89599
89641
  * stroke. Opacity is on a [0-1] scale.
89600
- * @property {number|function} [strokeWidth=1.25] The weight of the point's
89642
+ * @property {number|Function} [strokeWidth=1.25] The weight of the point's
89601
89643
  * stroke in pixels.
89602
- * @property {boolean|function} [fill=true] True to fill point.
89603
- * @property {geo.geoColor|function} [fillColor] Color to fill each point.
89604
- * @property {number|function} [fillOpacity=1] Opacity for each point. Opacity
89644
+ * @property {boolean|Function} [fill=true] True to fill point.
89645
+ * @property {geo.geoColor|Function} [fillColor] Color to fill each point.
89646
+ * @property {number|Function} [fillOpacity=1] Opacity for each point. Opacity
89605
89647
  * is on a [0-1] scale.
89606
- * @property {number[]|function} [origin] Origin in map gcs coordinates used
89648
+ * @property {number[]|Function} [origin] Origin in map gcs coordinates used
89607
89649
  * for to ensure high precision drawing in this location. When called as a
89608
89650
  * function, this is passed the point positions as a single continuous array
89609
89651
  * in map gcs coordinates. It defaults to the first point's position.
@@ -89775,11 +89817,11 @@ var _pointFeature = function pointFeature(arg) {
89775
89817
  /**
89776
89818
  * Get/Set position.
89777
89819
  *
89778
- * @param {function|geo.geoPosition} [val] If not specified, return the
89820
+ * @param {Function|geo.geoPosition} [val] If not specified, return the
89779
89821
  * position accessor, which is guaranteed to be a function. If specified,
89780
89822
  * wrap the value in an function that handles clustering if it is enabled
89781
89823
  * and set the position accessor to that function.
89782
- * @returns {this|function}
89824
+ * @returns {this|Function}
89783
89825
  */
89784
89826
  this.position = function (val) {
89785
89827
  if (val === undefined) {
@@ -91904,31 +91946,7 @@ var _webgl_pixelmapFeature = function webgl_pixelmapFeature(arg) {
91904
91946
  this.pointSearch = function (geo, gcs) {
91905
91947
  if (m_quadFeature && m_this.m_info) {
91906
91948
  var result = m_quadFeature.pointSearch(geo, gcs);
91907
- // use the last index by preference, since for tile layers, this is the
91908
- // topmosttile
91909
- var idxIdx = result.index.length - 1;
91910
- for (; idxIdx >= 0; idxIdx -= 1) {
91911
- if (result.extra[result.index[idxIdx]]._quad && result.extra[result.index[idxIdx]]._quad.image) {
91912
- var img = result.extra[result.index[idxIdx]]._quad.image;
91913
- var basis = result.extra[result.index[idxIdx]].basis;
91914
- var x = Math.floor(basis.x * img.width);
91915
- var y = Math.floor(basis.y * img.height);
91916
- var canvas = document.createElement('canvas');
91917
- canvas.width = canvas.height = 1;
91918
- var context = canvas.getContext('2d');
91919
- context.drawImage(img, x, y, 1, 1, 0, 0, 1, 1);
91920
- var pixel = context.getImageData(0, 0, 1, 1).data;
91921
- var idx = pixel[0] + pixel[1] * 256 + pixel[2] * 256 * 256;
91922
- if (idx === 16777215) {
91923
- continue;
91924
- }
91925
- result = {
91926
- index: [idx],
91927
- found: [m_this.data()[idx]]
91928
- };
91929
- return result;
91930
- }
91931
- }
91949
+ return this._pointSearchProcess(result);
91932
91950
  }
91933
91951
  return {
91934
91952
  index: [],
@@ -92074,16 +92092,16 @@ var util = __webpack_require__(642);
92074
92092
  *
92075
92093
  * @typedef {geo.feature.spec} geo.pixelmapFeature.spec
92076
92094
  * @extends geo.feature.spec
92077
- * @property {string|function|HTMLImageElement} [url] URL of a pixel map or an
92095
+ * @property {string|Function|HTMLImageElement} [url] URL of a pixel map or an
92078
92096
  * HTML Image element. The rgb data is interpreted as an index of the form
92079
92097
  * 0xbbggrr. The alpha channel is ignored. An index of 0xffffff is treated
92080
92098
  * as a no-data value for hit-tests.
92081
- * @property {geo.geoColor|function} [color] The color that should be used
92099
+ * @property {geo.geoColor|Function} [color] The color that should be used
92082
92100
  * for each data element. Data elements correspond to the indices in the
92083
92101
  * pixel map. If an index is larger than the number of data elements, it will
92084
92102
  * be transparent. If there is more data than there are indices, it is
92085
92103
  * ignored.
92086
- * @property {geo.geoPosition|function} [position] Position of the image.
92104
+ * @property {geo.geoPosition|Function} [position] Position of the image.
92087
92105
  * Default is (data). The position is an Object which specifies the corners
92088
92106
  * of the quad: ll, lr, ur, ul. At least two opposite corners must be
92089
92107
  * specified. The corners do not have to physically correspond to the order
@@ -92128,11 +92146,11 @@ var _pixelmapFeature = function pixelmapFeature(arg) {
92128
92146
  /**
92129
92147
  * Get/Set position accessor.
92130
92148
  *
92131
- * @param {geo.geoPosition|function} [val] If not specified, return the
92149
+ * @param {geo.geoPosition|Function} [val] If not specified, return the
92132
92150
  * current position accessor. If specified, use this for the position
92133
92151
  * accessor and return `this`. See {@link geo.quadFeature.position} for
92134
92152
  * for details on this position.
92135
- * @returns {geo.geoPosition|function|this}
92153
+ * @returns {geo.geoPosition|Function|this}
92136
92154
  */
92137
92155
  this.position = function (val) {
92138
92156
  if (val === undefined) {
@@ -92148,10 +92166,10 @@ var _pixelmapFeature = function pixelmapFeature(arg) {
92148
92166
  /**
92149
92167
  * Get/Set url accessor.
92150
92168
  *
92151
- * @param {string|function} [val] If not specified, return the current url
92169
+ * @param {string|Function} [val] If not specified, return the current url
92152
92170
  * accessor. If specified, use this for the url accessor and return
92153
92171
  * `this`.
92154
- * @returns {string|function|this}
92172
+ * @returns {string|Function|this}
92155
92173
  */
92156
92174
  this.url = function (val) {
92157
92175
  if (val === undefined) {
@@ -92168,9 +92186,9 @@ var _pixelmapFeature = function pixelmapFeature(arg) {
92168
92186
  /**
92169
92187
  * Get/Set color accessor.
92170
92188
  *
92171
- * @param {geo.geoColor|function} [val] The new color map accessor or
92189
+ * @param {geo.geoColor|Function} [val] The new color map accessor or
92172
92190
  * `undefined` to get the current accessor.
92173
- * @returns {geo.geoColor|function|this}
92191
+ * @returns {geo.geoColor|Function|this}
92174
92192
  */
92175
92193
  this.color = function (val) {
92176
92194
  if (val === undefined) {
@@ -92325,11 +92343,60 @@ var _pixelmapFeature = function pixelmapFeature(arg) {
92325
92343
  }
92326
92344
  } else if (m_this.m_info) {
92327
92345
  m_this._computePixelmap();
92328
- }
92346
+ } else {
92347
+ m_this._computePixelmap();
92348
+ } // else we need to regenerate the images for canvas
92329
92349
  m_this.buildTime().modified();
92330
92350
  return m_this;
92331
92351
  };
92332
92352
 
92353
+ /**
92354
+ * Given the results of the quad search, determine which pixel index is
92355
+ * found.
92356
+ *
92357
+ * @param {object} result An object with `index`: a list of quad indices,
92358
+ * `found`: a list of quads that contain the specified coordinate, and
92359
+ * `extra`: an object with keys that are quad indices and values that are
92360
+ * objects with `basis.x` and `basis.y`, values from 0 - 1 relative to
92361
+ * interior of the quad.
92362
+ * @returns {geo.feature.searchResult} An object with a list of features and
92363
+ * feature indices that are located at the specified point.
92364
+ */
92365
+ this._pointSearchProcess = function (result) {
92366
+ // use the last index by preference, since for tile layers, this is the
92367
+ // topmosttile
92368
+ var idxIdx = result.index.length - 1;
92369
+ for (; idxIdx >= 0; idxIdx -= 1) {
92370
+ if (result.extra[result.index[idxIdx]]._quad && result.extra[result.index[idxIdx]]._quad.image) {
92371
+ var img = result.extra[result.index[idxIdx]]._quad.image;
92372
+ if (result.extra[result.index[idxIdx]]._quad.m_srcImage) {
92373
+ img = result.extra[result.index[idxIdx]]._quad.m_srcImage;
92374
+ }
92375
+ var basis = result.extra[result.index[idxIdx]].basis;
92376
+ var x = Math.floor(basis.x * img.width);
92377
+ var y = Math.floor(basis.y * img.height);
92378
+ var canvas = document.createElement('canvas');
92379
+ canvas.width = canvas.height = 1;
92380
+ var context = canvas.getContext('2d');
92381
+ context.drawImage(img, x, y, 1, 1, 0, 0, 1, 1);
92382
+ var pixel = context.getImageData(0, 0, 1, 1).data;
92383
+ var idx = pixel[0] + pixel[1] * 256 + pixel[2] * 256 * 256;
92384
+ if (idx === 16777215) {
92385
+ continue;
92386
+ }
92387
+ result = {
92388
+ index: [idx],
92389
+ found: [m_this.data()[idx]]
92390
+ };
92391
+ return result;
92392
+ }
92393
+ }
92394
+ return {
92395
+ index: [],
92396
+ found: []
92397
+ };
92398
+ };
92399
+
92333
92400
  /**
92334
92401
  * Initialize.
92335
92402
  *
@@ -92608,7 +92675,7 @@ var Mousetrap = __webpack_require__(7549);
92608
92675
  * animation.
92609
92676
  * @property {number} [zoomAnimation.duration=500] The time it takes for the
92610
92677
  * final zoom to be reached.
92611
- * @property {function} [zoomAnimation.ease] The easing function for the zoom.
92678
+ * @property {Function} [zoomAnimation.ease] The easing function for the zoom.
92612
92679
  * The default is `(2 - t) * t`.
92613
92680
  */
92614
92681
 
@@ -94236,7 +94303,7 @@ var _mapInteractor = function mapInteractor(args) {
94236
94303
  * Private wrapper around the map zoom method that is debounced to support
94237
94304
  * discrete zoom interactions.
94238
94305
  *
94239
- * @returns {function} A function to handle zooms that debounces such
94306
+ * @returns {Function} A function to handle zooms that debounces such
94240
94307
  * events. This function is passed the zoom level and the mouse state.
94241
94308
  */
94242
94309
  function debounced_zoom() {
@@ -94336,7 +94403,7 @@ var _mapInteractor = function mapInteractor(args) {
94336
94403
  * throttling map interactions.
94337
94404
  * @private
94338
94405
  *
94339
- * @returns {function} A function that takes a jQuery.Event for mouse wheel
94406
+ * @returns {Function} A function that takes a jQuery.Event for mouse wheel
94340
94407
  * actions.
94341
94408
  * @fires geo.event.actionwheel
94342
94409
  */
@@ -98045,7 +98112,7 @@ module.exports = "/* quadFeature Color fragment shader */\n\nvarying mediump vec
98045
98112
  * @constant
98046
98113
  * @type {string}
98047
98114
  */
98048
- module.exports = "7e5d31a4b54e0b11df0181c56998d36dd8b8988d";
98115
+ module.exports = "7894862a9eb183e644094185fdc93a1f3f4008ba";
98049
98116
 
98050
98117
  /***/ }),
98051
98118
 
@@ -98184,7 +98251,7 @@ var _tileCache = function tileCache(options) {
98184
98251
  * Add a tile to the cache.
98185
98252
  *
98186
98253
  * @param {geo.tile} tile The tile to add.
98187
- * @param {function} removeFunc If specified and tiles must be purged from
98254
+ * @param {Function} removeFunc If specified and tiles must be purged from
98188
98255
  * the cache, call this function on each tile before purging.
98189
98256
  * @param {boolean} noPurge if true, don't purge tiles.
98190
98257
  */
@@ -98204,7 +98271,7 @@ var _tileCache = function tileCache(options) {
98204
98271
  /**
98205
98272
  * Purge tiles from the cache if it is full.
98206
98273
  *
98207
- * @param {function} removeFunc If specified and tiles must be purged from
98274
+ * @param {Function} removeFunc If specified and tiles must be purged from
98208
98275
  * the cache, call this function on each tile before purging.
98209
98276
  */
98210
98277
  this.purge = function (removeFunc) {
@@ -98776,9 +98843,9 @@ var util = __webpack_require__(642);
98776
98843
  *
98777
98844
  * @typedef {geo.feature.spec} geo.heatmapFeature.spec
98778
98845
  * @extends geo.feature.spec
98779
- * @property {geo.geoPosition|function} [position] Position of the data.
98846
+ * @property {geo.geoPosition|Function} [position] Position of the data.
98780
98847
  * Default is (data).
98781
- * @property {function} [intensity] Scalar value of each data point. The
98848
+ * @property {Function} [intensity] Scalar value of each data point. The
98782
98849
  * scalar value must be a positive real number and is used to compute the
98783
98850
  * weight for each data point.
98784
98851
  * @property {number} [maxIntensity=null] Maximum intensity of the data.
@@ -98948,11 +99015,11 @@ var _heatmapFeature = function heatmapFeature(arg) {
98948
99015
  /**
98949
99016
  * Get/Set position accessor.
98950
99017
  *
98951
- * @param {geo.geoPosition|function} [val] If not specified, return the
99018
+ * @param {geo.geoPosition|Function} [val] If not specified, return the
98952
99019
  * current position accessor. If specified, use this for the position
98953
99020
  * accessor and return `this`. If a function is given, this is called
98954
99021
  * with `(dataElement, dataIndex)`.
98955
- * @returns {geo.geoPosition|function|this} The current position or this
99022
+ * @returns {geo.geoPosition|Function|this} The current position or this
98956
99023
  * feature.
98957
99024
  */
98958
99025
  this.position = function (val) {
@@ -98979,9 +99046,9 @@ var _heatmapFeature = function heatmapFeature(arg) {
98979
99046
  /**
98980
99047
  * Get/Set intensity.
98981
99048
  *
98982
- * @param {function} [val] If not specified, the current intensity accessor.
99049
+ * @param {Function} [val] If not specified, the current intensity accessor.
98983
99050
  * Otherwise, a function that returns the intensity of each data point.
98984
- * @returns {function|this}
99051
+ * @returns {Function|this}
98985
99052
  */
98986
99053
  this.intensity = function (val) {
98987
99054
  if (val === undefined) {
@@ -99116,7 +99183,7 @@ var util = __webpack_require__(642);
99116
99183
  * @property {number} [tileOverlap.y] Vertical overlap.
99117
99184
  * @property {number} [tileWidth=256] The tile width without overlap.
99118
99185
  * @property {number} [tileHeight=256] The tile height without overlap.
99119
- * @property {function} [tilesAtZoom=null] A function that is given a zoom
99186
+ * @property {Function} [tilesAtZoom=null] A function that is given a zoom
99120
99187
  * level and returns `{x: (num), y: (num)}` with the number of tiles at that
99121
99188
  * zoom level.
99122
99189
  * @property {number} [cacheSize=600] The maximum number of tiles to cache.
@@ -99137,7 +99204,7 @@ var util = __webpack_require__(642);
99137
99204
  * results in smoother transitions.
99138
99205
  * @property {boolean} [wrapX=true] Wrap in the x-direction.
99139
99206
  * @property {boolean} [wrapY=false] Wrap in the y-direction.
99140
- * @property {string|function} [url=null] A function taking the current tile
99207
+ * @property {string|Function} [url=null] A function taking the current tile
99141
99208
  * indices `(x, y, level, subdomains)` and returning a URL or jquery ajax
99142
99209
  * config to be passed to the {geo.tile} constructor. Example:
99143
99210
  * ```
@@ -99160,13 +99227,13 @@ var util = __webpack_require__(642);
99160
99227
  * tile loading animation to occur. Only some renderers support this.
99161
99228
  * @property {string} [attribution] An attribution to display with the layer
99162
99229
  * (accepts HTML).
99163
- * @property {function} [tileRounding=Math.round] This function determines
99230
+ * @property {Function} [tileRounding=Math.round] This function determines
99164
99231
  * which tiles will be loaded when the map is at a non-integer zoom. For
99165
99232
  * example, `Math.floor`, will use tile level 2 when the map is at zoom 2.9.
99166
- * @property {function} [tileOffset] This function takes a zoom level argument
99233
+ * @property {Function} [tileOffset] This function takes a zoom level argument
99167
99234
  * and returns, in units of pixels, the coordinates of the point (0, 0) at
99168
99235
  * the given zoom level relative to the bottom left corner of the domain.
99169
- * @property {function} [tilesMaxBounds=null] This function takes a zoom level
99236
+ * @property {Function} [tilesMaxBounds=null] This function takes a zoom level
99170
99237
  * argument and returns an object with `x` and `y` in pixels which is used to
99171
99238
  * crop the last row and column of tiles. Note that if tiles wrap, only
99172
99239
  * complete tiles in the wrapping direction(s) are supported, and this max
@@ -99226,7 +99293,7 @@ function m_getTileSubdomain(x, y, z, subdomains) {
99226
99293
  *
99227
99294
  * @private
99228
99295
  * @param {string} base The tile format string
99229
- * @returns {function} A conversion function.
99296
+ * @returns {Function} A conversion function.
99230
99297
  */
99231
99298
  function m_tileUrlFromTemplate(base) {
99232
99299
  var xPattern = /\$?\{[xX]\}/g,
@@ -99993,7 +100060,7 @@ var _tileLayer = function tileLayer(arg) {
99993
100060
  * @param {object} center The center tile.
99994
100061
  * @param {number} center.x
99995
100062
  * @param {number} center.y
99996
- * @returns {function} A function accepted by `Array.prototype.sort`.
100063
+ * @returns {Function} A function accepted by `Array.prototype.sort`.
99997
100064
  */
99998
100065
  this._loadMetric = function (center) {
99999
100066
  return function (a, b) {
@@ -100737,8 +100804,8 @@ var _tileLayer = function tileLayer(arg) {
100737
100804
  * Get or set the tile url string or function. If changed, load the new
100738
100805
  * tiles.
100739
100806
  *
100740
- * @param {string|function} [url] The new tile url.
100741
- * @returns {string|function|this}
100807
+ * @param {string|Function} [url] The new tile url.
100808
+ * @returns {string|Function|this}
100742
100809
  */
100743
100810
  this.url = function (url) {
100744
100811
  if (url === undefined) {
@@ -101124,9 +101191,9 @@ var util = __webpack_require__(642);
101124
101191
  *
101125
101192
  * @typedef {geo.feature.spec} geo.lineFeature.spec
101126
101193
  * @extends geo.feature.spec
101127
- * @property {geo.geoPosition|function} [position] Position of the data.
101194
+ * @property {geo.geoPosition|Function} [position] Position of the data.
101128
101195
  * Default is (data).
101129
- * @property {object|function} [line] Lines from the data. Default is (data).
101196
+ * @property {object|Function} [line] Lines from the data. Default is (data).
101130
101197
  * Typically, the data is an array of lines, each of which is an array of
101131
101198
  * points. Only lines that have at least two points are rendered. The
101132
101199
  * position function is called for each point as `position(linePoint,
@@ -101140,39 +101207,39 @@ var util = __webpack_require__(642);
101140
101207
  *
101141
101208
  * @typedef {geo.feature.styleSpec} geo.lineFeature.styleSpec
101142
101209
  * @extends geo.feature.styleSpec
101143
- * @property {geo.geoColor|function} [strokeColor] Color to stroke each line.
101210
+ * @property {geo.geoColor|Function} [strokeColor] Color to stroke each line.
101144
101211
  * The color can vary by point.
101145
- * @property {number|function} [strokeOpacity] Opacity for each line stroke.
101212
+ * @property {number|Function} [strokeOpacity] Opacity for each line stroke.
101146
101213
  * The opacity can vary by point. Opacity is on a [0-1] scale.
101147
- * @property {number|function} [strokeWidth] The weight of the line stroke in
101214
+ * @property {number|Function} [strokeWidth] The weight of the line stroke in
101148
101215
  * pixels. The width can vary by point.
101149
- * @property {number|function} [strokeOffset] This is a value from -1 (left) to
101216
+ * @property {number|Function} [strokeOffset] This is a value from -1 (left) to
101150
101217
  * 1 (right), with 0 being centered. This can vary by point.
101151
- * @property {string|function} [lineCap='butt'] One of 'butt', 'square', or
101218
+ * @property {string|Function} [lineCap='butt'] One of 'butt', 'square', or
101152
101219
  * 'round'. This can vary by point.
101153
- * @property {string|function} [lineJoin='miter'] One of 'miter', 'bevel',
101220
+ * @property {string|Function} [lineJoin='miter'] One of 'miter', 'bevel',
101154
101221
  * 'round', or 'miter-clip'. This can vary by point.
101155
- * @property {boolean|function} [closed=false] If true and the renderer
101222
+ * @property {boolean|Function} [closed=false] If true and the renderer
101156
101223
  * supports it, connect the first and last points of a line if the line has
101157
101224
  * more than two points. This applies per line (if a function, it is called
101158
101225
  * with `(lineEntry, lineEntryIndex)`.
101159
- * @property {number|function} [miterLimit=10] For lines of more than two
101226
+ * @property {number|Function} [miterLimit=10] For lines of more than two
101160
101227
  * segments that are mitered, if the miter length exceeds the `strokeWidth`
101161
101228
  * divided by the sine of half the angle between segments, then a bevel join
101162
101229
  * is used instead. This is a single value that applies to all lines. If a
101163
101230
  * function, it is called with `(data)`.
101164
- * @property {boolean|string|function} [uniformLine=false] Boolean indicating
101231
+ * @property {boolean|string|Function} [uniformLine=false] Boolean indicating
101165
101232
  * if each line has a uniform style (uniform stroke color, opacity, and
101166
101233
  * width). Can vary by line. A value of `'drop'` will modify rendered
101167
101234
  * vertex order by dropping duplicates and setting later values to zero
101168
101235
  * opacity. This can be faster but makes it so updating the style array
101169
101236
  * can no longer be used.
101170
- * @property {number|function} [antialiasing] Antialiasing distance in pixels.
101237
+ * @property {number|Function} [antialiasing] Antialiasing distance in pixels.
101171
101238
  * Values must be non-negative. A value greater than 1 will produce a
101172
101239
  * visible gradient. This is a single value that applies to all lines.
101173
- * @property {string|function} [debug] If 'debug', render lines in debug mode.
101240
+ * @property {string|Function} [debug] If 'debug', render lines in debug mode.
101174
101241
  * This is a single value that applies to all lines.
101175
- * @property {number[]|function} [origin] Origin in map gcs coordinates used
101242
+ * @property {number[]|Function} [origin] Origin in map gcs coordinates used
101176
101243
  * for to ensure high precision drawing in this location. When called as a
101177
101244
  * function, this is passed the vertex positions as a single continuous array
101178
101245
  * in map gcs coordinates. It defaults to the first line's first vertex's
@@ -101217,11 +101284,11 @@ var _lineFeature = function lineFeature(arg) {
101217
101284
  /**
101218
101285
  * Get/set line accessor.
101219
101286
  *
101220
- * @param {object|function} [val] If not specified, return the current line
101287
+ * @param {object|Function} [val] If not specified, return the current line
101221
101288
  * accessor. If specified, use this for the line accessor and return
101222
101289
  * `this`. If a function is given, the function is passed `(dataElement,
101223
101290
  * dataIndex)` and returns an array of vertex elements.
101224
- * @returns {object|function|this} The current line accessor or this feature.
101291
+ * @returns {object|Function|this} The current line accessor or this feature.
101225
101292
  */
101226
101293
  this.line = function (val) {
101227
101294
  if (val === undefined) {
@@ -101237,11 +101304,11 @@ var _lineFeature = function lineFeature(arg) {
101237
101304
  /**
101238
101305
  * Get/Set position accessor.
101239
101306
  *
101240
- * @param {geo.geoPosition|function} [val] If not specified, return the
101307
+ * @param {geo.geoPosition|Function} [val] If not specified, return the
101241
101308
  * current position accessor. If specified, use this for the position
101242
101309
  * accessor and return `this`. If a function is given, this is called
101243
101310
  * with `(vertexElement, vertexIndex, dataElement, dataIndex)`.
101244
- * @returns {geo.geoPosition|function|this} The current position or this
101311
+ * @returns {geo.geoPosition|Function|this} The current position or this
101245
101312
  * feature.
101246
101313
  */
101247
101314
  this.position = function (val) {
@@ -101603,9 +101670,9 @@ var _lineFeature = function lineFeature(arg) {
101603
101670
  * units. A value of zero will only remove perfectly collinear points.
101604
101671
  * If not specified, this is set to a half display pixel at the map's
101605
101672
  * current zoom level.
101606
- * @param {function} [posFunc] The function to
101673
+ * @param {Function} [posFunc] The function to
101607
101674
  * get the position of each vertex.
101608
- * @param {function} [lineFunc] The function to get
101675
+ * @param {Function} [lineFunc] The function to get
101609
101676
  * each line.
101610
101677
  * @returns {this}
101611
101678
  */
@@ -101870,7 +101937,7 @@ var _webgl_quadFeature = function webgl_quadFeature(arg) {
101870
101937
  * function.
101871
101938
  *
101872
101939
  * @private
101873
- * @param {function} renderFunc Our own render function.
101940
+ * @param {Function} renderFunc Our own render function.
101874
101941
  * @returns {vgl.mapper} a vgl mapper object.
101875
101942
  */
101876
101943
  function getVGLMapper(renderFunc) {
@@ -102614,15 +102681,15 @@ var registerWidget = (__webpack_require__(1098).registerWidget);
102614
102681
  *
102615
102682
  * @typedef {geo.feature.styleSpec} geo.gui.legendWidget.styleSpec
102616
102683
  * @extends geo.feature.styleSpec
102617
- * @property {boolean|function} [stroke=true] True to stroke legend.
102618
- * @property {geo.geoColor|function} [strokeColor] Color to stroke each legend.
102619
- * @property {number|function} [strokeOpacity=1] Opacity for each legend's
102684
+ * @property {boolean|Function} [stroke=true] True to stroke legend.
102685
+ * @property {geo.geoColor|Function} [strokeColor] Color to stroke each legend.
102686
+ * @property {number|Function} [strokeOpacity=1] Opacity for each legend's
102620
102687
  * stroke. Opacity is on a [0-1] scale.
102621
- * @property {number|function} [strokeWidth=1.5] The weight of the legend's
102688
+ * @property {number|Function} [strokeWidth=1.5] The weight of the legend's
102622
102689
  * stroke in pixels.
102623
- * @property {boolean|function} [fill=true] True to fill legend.
102624
- * @property {geo.geoColor|function} [fillColor] Color to fill each legend.
102625
- * @property {number|function} [fillOpacity=1] Opacity for each legend.
102690
+ * @property {boolean|Function} [fill=true] True to fill legend.
102691
+ * @property {geo.geoColor|Function} [fillColor] Color to fill each legend.
102692
+ * @property {number|Function} [fillOpacity=1] Opacity for each legend.
102626
102693
  * Opacity is on a [0-1] scale.
102627
102694
  */
102628
102695
 
@@ -105090,7 +105157,7 @@ function random (out, scale) {
105090
105157
  /******/
105091
105158
  /******/ /* webpack/runtime/jsonp chunk loading */
105092
105159
  /******/ !function() {
105093
- /******/ __webpack_require__.b = document.baseURI || self.location.href;
105160
+ /******/ __webpack_require__.b = (typeof document !== 'undefined' && document.baseURI) || self.location.href;
105094
105161
  /******/
105095
105162
  /******/ // object to store loaded and loading chunks
105096
105163
  /******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched