From 187750481b1536ad1bad2454f2021fac4a87dca6 Mon Sep 17 00:00:00 2001 From: Socorro Dominguez Date: Tue, 27 Feb 2024 16:35:45 -0800 Subject: [PATCH] built files --- inst/doc/images/neotomaUML_as.svg | 2654 ------ inst/doc/images/site_collunit_dataset.svg | 616 -- inst/doc/images/siteboundarydiagram.svg | 536 -- inst/doc/images/siteshot.png | Bin 182879 -> 0 bytes inst/doc/images/understandingAgeRanges.svg | 955 -- .../doc/images/understanding_S4_structure.svg | 604 -- ...nderstanding_S4_structure_get_datasets.svg | 565 -- .../understanding_S4_structure_get_sites.svg | 423 - inst/doc/index.html | 86 - inst/doc/neotoma2-package.html | 8448 ----------------- .../Proj4Leaflet-1.0.1/proj4leaflet.js | 272 - .../htmlwidgets-1.5.4/htmlwidgets.js | 903 -- .../leaflet-1.3.1/images/layers-2x.png | Bin 1259 -> 0 bytes .../leaflet-1.3.1/images/layers.png | Bin 696 -> 0 bytes .../leaflet-1.3.1/images/marker-icon-2x.png | Bin 2464 -> 0 bytes .../leaflet-1.3.1/images/marker-icon.png | Bin 1466 -> 0 bytes .../leaflet-1.3.1/images/marker-shadow.png | Bin 618 -> 0 bytes .../leaflet-1.3.1/leaflet.css | 636 -- .../leaflet-1.3.1/leaflet.js | 5 - .../leaflet-binding-2.1.2/leaflet.js | 2785 ------ .../MIT-LICENCE.txt | 20 - .../MarkerCluster.Default.css | 60 - .../MarkerCluster.css | 14 - .../leaflet.markercluster.freezable.js | 6 - .../leaflet.markercluster.js | 7 - .../leaflet.markercluster.layersupport.js | 6 - .../leaflet-markercluster-1.0.5/package.json | 22 - .../leaflet-providers_1.9.0.js | 855 -- .../leaflet-providers-plugin.js | 3 - .../leafletfix-1.0.0/leafletfix.css | 36 - .../proj4-2.6.2/proj4.min.js | 1 - .../rstudio_leaflet-1.3.1/images/1px.png | Bin 68 -> 0 bytes .../rstudio_leaflet-1.3.1/rstudio_leaflet.css | 41 - 33 files changed, 20559 deletions(-) delete mode 100644 inst/doc/images/neotomaUML_as.svg delete mode 100644 inst/doc/images/site_collunit_dataset.svg delete mode 100644 inst/doc/images/siteboundarydiagram.svg delete mode 100644 inst/doc/images/siteshot.png delete mode 100644 inst/doc/images/understandingAgeRanges.svg delete mode 100644 inst/doc/images/understanding_S4_structure.svg delete mode 100644 inst/doc/images/understanding_S4_structure_get_datasets.svg delete mode 100644 inst/doc/images/understanding_S4_structure_get_sites.svg delete mode 100644 inst/doc/index.html delete mode 100644 inst/doc/neotoma2-package.html delete mode 100644 inst/doc/neotoma2-package_files/Proj4Leaflet-1.0.1/proj4leaflet.js delete mode 100644 inst/doc/neotoma2-package_files/htmlwidgets-1.5.4/htmlwidgets.js delete mode 100644 inst/doc/neotoma2-package_files/leaflet-1.3.1/images/layers-2x.png delete mode 100644 inst/doc/neotoma2-package_files/leaflet-1.3.1/images/layers.png delete mode 100644 inst/doc/neotoma2-package_files/leaflet-1.3.1/images/marker-icon-2x.png delete mode 100644 inst/doc/neotoma2-package_files/leaflet-1.3.1/images/marker-icon.png delete mode 100644 inst/doc/neotoma2-package_files/leaflet-1.3.1/images/marker-shadow.png delete mode 100644 inst/doc/neotoma2-package_files/leaflet-1.3.1/leaflet.css delete mode 100644 inst/doc/neotoma2-package_files/leaflet-1.3.1/leaflet.js delete mode 100644 inst/doc/neotoma2-package_files/leaflet-binding-2.1.2/leaflet.js delete mode 100644 inst/doc/neotoma2-package_files/leaflet-markercluster-1.0.5/MIT-LICENCE.txt delete mode 100644 inst/doc/neotoma2-package_files/leaflet-markercluster-1.0.5/MarkerCluster.Default.css delete mode 100644 inst/doc/neotoma2-package_files/leaflet-markercluster-1.0.5/MarkerCluster.css delete mode 100644 inst/doc/neotoma2-package_files/leaflet-markercluster-1.0.5/leaflet.markercluster.freezable.js delete mode 100644 inst/doc/neotoma2-package_files/leaflet-markercluster-1.0.5/leaflet.markercluster.js delete mode 100644 inst/doc/neotoma2-package_files/leaflet-markercluster-1.0.5/leaflet.markercluster.layersupport.js delete mode 100644 inst/doc/neotoma2-package_files/leaflet-markercluster-1.0.5/package.json delete mode 100644 inst/doc/neotoma2-package_files/leaflet-providers-1.9.0/leaflet-providers_1.9.0.js delete mode 100644 inst/doc/neotoma2-package_files/leaflet-providers-plugin-2.1.2/leaflet-providers-plugin.js delete mode 100644 inst/doc/neotoma2-package_files/leafletfix-1.0.0/leafletfix.css delete mode 100644 inst/doc/neotoma2-package_files/proj4-2.6.2/proj4.min.js delete mode 100644 inst/doc/neotoma2-package_files/rstudio_leaflet-1.3.1/images/1px.png delete mode 100644 inst/doc/neotoma2-package_files/rstudio_leaflet-1.3.1/rstudio_leaflet.css diff --git a/inst/doc/images/neotomaUML_as.svg b/inst/doc/images/neotomaUML_as.svg deleted file mode 100644 index 4fc1cc1..0000000 --- a/inst/doc/images/neotomaUML_as.svg +++ /dev/null @@ -1,2654 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/inst/doc/images/site_collunit_dataset.svg b/inst/doc/images/site_collunit_dataset.svg deleted file mode 100644 index 52bc876..0000000 --- a/inst/doc/images/site_collunit_dataset.svg +++ /dev/null @@ -1,616 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Site: Nath Sagar - Collection Unit 1 - Collection Unit 2 - - - - - Chronology - Chronology - - - - - - - AnalysisUnit - Sample - - - CharcoalDataset - - - - PollenDataset - - - - DiatomDataset - - diff --git a/inst/doc/images/siteboundarydiagram.svg b/inst/doc/images/siteboundarydiagram.svg deleted file mode 100644 index 7cfd59b..0000000 --- a/inst/doc/images/siteboundarydiagram.svg +++ /dev/null @@ -1,536 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - c. - - - - - - - - - - - - - - - - - b. - site - - - - - - - - - - a. - bounding box - site - - collection unit - - - diff --git a/inst/doc/images/siteshot.png b/inst/doc/images/siteshot.png deleted file mode 100644 index 7268347cf3daf376b4b90ad61cf967f9be862dba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 182879 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�z!6$b}GbI-W316XxmE65@qSB{8}fLo1n8 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 IM6N<$f - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Neotoma Dataset Age Range Searches - - - Time (calibrated ybp) - - - - - - - - - - 0 - 10000 - 5000 - 7500 - 2500 - - - - - - - - - We are looking for datasets/sites that span some specific point in time.• ageof: The dataset spans a range that includes ageof. - - ageof = NULLageof = 5000 (in all examples, empty circles are not selected)ageof = 1250 - - - - - - - - - - - - - - - - - - - - - Each rectange represents a dataset that spans an age range (x-axis). The filled circles at the end are used to represent the datasets in examples below.Dashed red lines represent ages used in the examples below. - - We are looking for datasets that completely span an age range.• ageyounger: Defines the minimum age that must be covered by the dataset.• ageolder: Defines the maximum age that must be covered by the dataset. - - ageyounger/ageolder = NULLageyounger = 5000, ageolder=7500ageyounger = 1250, ageolder = 2500 - - - - - - - - - - - - - - - - - - - - - We are looking for datasets with any samples that fall within an age bound.• minage: Defines the minimum age bound for searched datasets.• maxage: Defines the maximum age bound for searched datasets. - - minage/maxage = NULLminage = 5000, maxage=7500minage = 1250, maxage = 2500 - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/inst/doc/images/understanding_S4_structure.svg b/inst/doc/images/understanding_S4_structure.svg deleted file mode 100644 index f9062b2..0000000 --- a/inst/doc/images/understanding_S4_structure.svg +++ /dev/null @@ -1,604 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - sites - - - - site - - - - collunits - - - - collunit - - - - chronologies - - - - chronology - - - - contacts - - - - contact - - - - datasets - - - - samples - - - - dataset - - - - diff --git a/inst/doc/images/understanding_S4_structure_get_datasets.svg b/inst/doc/images/understanding_S4_structure_get_datasets.svg deleted file mode 100644 index 1f98ac1..0000000 --- a/inst/doc/images/understanding_S4_structure_get_datasets.svg +++ /dev/null @@ -1,565 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - sites - - - - site - - - - collunits - - - - collunit - - - - chronologies - - - - chronology - - - - contacts - - - - contact - - - - datasets - - - - samples - - - - dataset - - - - diff --git a/inst/doc/images/understanding_S4_structure_get_sites.svg b/inst/doc/images/understanding_S4_structure_get_sites.svg deleted file mode 100644 index c05cac6..0000000 --- a/inst/doc/images/understanding_S4_structure_get_sites.svg +++ /dev/null @@ -1,423 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - sites - - - - site - - - - collunits - - - - collunit - - - - chronologies - - - - chronology - - - - contacts - - - - contact - - - - datasets - - - - samples - - - - dataset - - - - diff --git a/inst/doc/index.html b/inst/doc/index.html deleted file mode 100644 index b46bb28..0000000 --- a/inst/doc/index.html +++ /dev/null @@ -1,86 +0,0 @@ - -Articles • neotoma2 - - -
-
- - - -
-
- - -
-

All vignettes

-

- -
The neotoma2 R Package
-
-
-
-
- - -
- -
-

Site built with pkgdown 2.0.6.

-
- -
- - - - - - - - diff --git a/inst/doc/neotoma2-package.html b/inst/doc/neotoma2-package.html deleted file mode 100644 index 670d26d..0000000 --- a/inst/doc/neotoma2-package.html +++ /dev/null @@ -1,8448 +0,0 @@ - - - - - - - - - - - - - - -The neotoma2 R Package - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

The neotoma2 R Package

- - - -
-closeup of several Neotoma sites in the Caribbean. -
closeup of several Neotoma sites in the -Caribbean.
-
-
-

Neotoma Resources

-

The Neotoma Paleoecology -Database is a domain-specific data resource containing millions of -fossil records from around the globe, covering the last 5.4 million -years. The neotoma2 R package simplifies some of the data -structures and concepts to facilitate statistical analysis and -visualization. Users may wish to gain a deeper understanding of the -resource itself, or build more complex data objects and relationships. -For those users a partial list is provided here, including a table of -code examples focusing on different geographic regions, languages and -dataset types.

-
-

Resources

-
    -
  • Neotoma Homepage -
      -
    • The Neotoma homepage, with links to contacts, news and other tools -and resources.
    • -
  • -
  • Neotoma Database -Manual -
      -
    • Documentation for the database itself, with examples of SQL queries -and descriptions of Neotoma tables.
    • -
  • -
  • Neotoma (JSON) API -
      -
    • A tool to obtain data in JSON format directly through calls to -Neotoma.
    • -
  • -
  • Neotoma GitHub -Organization -
      -
    • Open code repositories to see how folks are using Neotoma and what -kinds of projects we’re working on.
    • -
  • -
  • Workshops and Code Examples (see the section below)
  • -
-
-
-
-

Neotoma Data Structure

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - c. - - - - - - - - - - - - - - - - - b. - site - - - - - - - - - - a. - bounding box - site - - collection unit - - - -
Three panels showing context for Neotoma’s -geographic representation of sites. In panel a a site is defined by the -boundaries of a lake. The site also has a bounding box, and the core -location is defined by a collection unit within the site that is defined -with precise coordinates. In panel b a site is defined as a single -point, for example, from a textual reference indicating the site is at -the intersection of two roads. Here the site and collection unit share -the unique point location. In panel c we show how that site location may -be obfuscated using a bounding box as the site delimiter. In this case -the collection unit would not be defined (but is represented as the -triangle for illustration). Figure obtained from the Neotoma Database -Manual.
-
-

Data in Neotoma is associated with sites, specific locations with -lat/long coordinates. Within a site, there may be one or more collection -units – locations at which samples are physically collected -within the site. For example, an archaeological site -may have one or more collection units, pits within a -broader dig site; a pollen sampling site on a lake may -have multiple collection units – core sites within the -lake basin. Collection units may have higher resolution GPS locations, -but are considered to be part of the broader site. Within a -collection unit data is collected at various -[analysis units] from which samples -are obtained.

-

Because Neotoma is made up of a number of constituent databases -(e.g., the Indo-Pacific Pollen Database, NANODe, FAUNMAP), a set of -samples associated with a collection -unit are assigned to a single dataset -associated with a particular dataset type (e.g., -pollen, diatom, vertebrate fauna) and constituent -database.

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Site: Nath Sagar - Collection Unit 1 - Collection Unit 2 - - - - - Chronology - Chronology - - - - - - - AnalysisUnit - Sample - - - CharcoalDataset - - - - PollenDataset - - - - DiatomDataset - - -
Figure. The structure of -sites, collection units and datasets within Neotoma. A site contains one -or more collection units. Chronologies are associated with collection -units. Data of a common type (pollen, diatoms, vertebrate fauna) are -assigned to a dataset.
-
-

Researchers often begin by searching for sites within a particular -study area, whether that is defined by geographic or political -boundaries. From there they interrogate the available datasets for their -particular dataset type of interest. When they find records of interest, -they will then often call for the data and associated chronologies.

-

The neotoma2 R package is intended to act as the -intermediary to support these research activities using the Neotoma -Paleoecology Database. Because R is not a relational database, we needed -to modify the data structures of the objects. To do this the package -uses a set of S4 objects to represent different elements within the -database.

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
A diagram showing the different major classes -within the neotoma2 R package, and the way the elements are -related to one another. Individual boxes represent the major classes -(sites, site, collectionunits, etc.). Each box then has a list of the -specific metadata contained within the class, and the variable type -(e.g., siteid: integer). Below these are the functions that can -be applied to the object (e.g., [[<-).
-
-

It is important to note, here and elsewhere: Almost -everything you will interact with is a sites -object. A sites object is the general currency of -this package. sites may have more or less metadata -associated with them, but they are the primary object, and, as you can -see in the diagram above, they have the most functions associated with -them.

-
-

Package Requirements

-

The earlier neotoma package tried to use base R as much -as possible. The neotoma2 package now draws primarily on -dplyr and purrr packages from the -tidyverse, and on the sf spatial data package. -The choice to integrate tidyverse packages was made largely -because of the current ubiquity of the tidyverse in R -education.

-
-
-
-

Site Searches

-

The highest level object in Neotoma is the site. -Sites have spatial coordinates and, in many cases, additional metadata -related to lake parameters, or other site-specific properties.

-

Sites can be searched using the get_sites() function, -or, can be created using the set_site() function. A single -site object is a special object in R, that can be combined -with other sites into a sites object. A sites -object is effectively a list() of site objects -with special methods for printing, plotting and exporting -information.

-
-

Finding Sites

-

All sites in Neotoma have a unique numeric identifier. With the -neotoma2 package you can search for a site using the -get_sites() function by its unique site id -(siteid), by name (sitename), by altitude -(altmin, altmax), by geopolitical name -(gpid), location (loc) or age bounds.

-

If we’re looking for a site and we know its specific identifier, we -can use the simplest implementation of get_sites(). Here we -are searching for a site (Alexander Lake), where we know that the siteid -for the record in Neotoma is 24. We can get these siteids -using the Neotoma -Explorer web application, or if we have some familiarity with the -site records already.

-
# Search for site by a single numeric ID:
-alex <- get_sites(24)
-alex
-#>  siteid       sitename      lat      long altitude
-#>      24 Alexander Lake 53.33333 -60.58333      143
-
-# Search for sites with multiple IDs using c():
-multiple_sites <- get_sites(c(24, 47))
-multiple_sites
-#>  siteid       sitename      lat      long altitude
-#>      24 Alexander Lake 53.33333 -60.58333      143
-#>      47        Liberty 43.52000 -90.78000      305
-

Once you search for a site, the neotoma2 R package makes -a call to the Neotoma Database, and returns a structured -sites object that contains metadata about the sites, and -some additional metadata about collection units and datasets at those -sites. This limited metadata helps speed up further searches, but is not -complete, for the purposes of analysis.

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - sites - - - - site - - - - collunits - - - - collunit - - - - chronologies - - - - chronology - - - - contacts - - - - contact - - - - datasets - - - - samples - - - - dataset - - - - -
The result of a hypothetical -get_sites() call, is a sites object containing -two individual site objects. Each site object -contains a collunits object with some limited metadata. The -top site appears to have two collection units, while the -lower site has only a single collection unit. Each of the top two -collection units appear to contain two datasets, while the bottom site -has only the one collection unit with only one dataset.
-
-
-

Searching for Sites by Name

-

Often we do not know the particular siteid. If we’re -looking for a site and we know its name or a part of its name, we can -search using the function with the sitename argument, -get_site(sitename = 'XXX'), where 'XXX' is the -site name. This does not support multiple text strings (i.e., you can’t -use c()).

-
alex <- get_sites(sitename = "Alexander Lake")
-alex
-#>  siteid       sitename      lat      long altitude
-#>      24 Alexander Lake 53.33333 -60.58333      143
-

Neotoma uses a Postgres Database to manage data. Postgres uses the -% sign as a general wildcard, so we can use the -% in the sitename argument operator to help us -find sites when we’re not sure the exact match. Note that the search is -case insensitive so a search for alex% or -Alex% will return the same results.

-
alex <- get_sites(sitename = 'Alex%')
-alex
-#>  siteid           sitename      lat      long altitude
-#>      24     Alexander Lake 53.33333 -60.58333      143
-#>      25        Alexis Lake 52.51667 -57.03333      200
-#>    4478 Alexander [3CN117] 35.25000 -92.61667       88
-#>   26226     Alexandra Lake 43.29030 -74.16966      354
- -
-
-

Searching for Sites by Age

-

There are several ways of searching for sites using age parameters. -These are represented below:

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - Neotoma Dataset Age Range Searches - - - Time (calibrated ybp) - - - - - - - - - - 0 - 10000 - 5000 - 7500 - 2500 - - - - - - - - - We are looking for datasets/sites that span some specific point in time.• ageof: The dataset spans a range that includes ageof. - - ageof = NULLageof = 5000 (in all examples, empty circles are not selected)ageof = 1250 - - - - - - - - - - - - - - - - - - - - - Each rectange represents a dataset that spans an age range (x-axis). The filled circles at the end are used to represent the datasets in examples below.Dashed red lines represent ages used in the examples below. - - We are looking for datasets that completely span an age range.• ageyounger: Defines the minimum age that must be covered by the dataset.• ageolder: Defines the maximum age that must be covered by the dataset. - - ageyounger/ageolder = NULLageyounger = 5000, ageolder=7500ageyounger = 1250, ageolder = 2500 - - - - - - - - - - - - - - - - - - - - - We are looking for datasets with any samples that fall within an age bound.• minage: Defines the minimum age bound for searched datasets.• maxage: Defines the maximum age bound for searched datasets. - - minage/maxage = NULLminage = 5000, maxage=7500minage = 1250, maxage = 2500 - - - - - - - - - - - - - - - - - - - - - - - - - -
Site searches using age parameters including -ageof, ageyoung, ageold, -maxage and minage.
-
-

We offer several methods of searching because different users have -different requirements. A user might be only interested in one specific -point in time in the past, for example the 8.2ka event. In this instance -they would search get_sites(ageof = 8200). They may want -sites with records that completely span a time period, for example the -Atlantic chronozone of the Holocene: -get_sites(ageyounger = 5000, ageolder = 8000). These sites -would have samples both within and outside the defined age range, so -that the user could track change into and out of the time period. A user -may also be interested in any record within a time bin, regardless of -whether the site spans that time zone or not. They would query -get_sites(minage = 5000, maxage = 8000).

-

We can see how these age bounds differ:

-
# Note, we are using the `all_data = TRUE` flag here to avoid the default limit of 25 records, discussed below.
-# Because these queries are searching through every record they are slow and and are not
-# run in knitting this vignette.
-get_sites(ageof = 8200, all_data = TRUE) %>% length()
-get_sites(ageyounger = 5000, ageolder = 8000, all_data = TRUE) %>% length()
-get_sites(minage = 5000, maxage = 8000, all_data = TRUE) %>% length()
-

It is possible to pass all parameters (ageof, -minage, maxage, ageyounger, . . . -), but it is likely that these will conflict and result in an empty set -of records. To avoid this, be aware of the relationships among these -search parameters, and how they might affect your search window.

-
-
-
-

Accessing sites metadata

-

Although the sites are structured using S4 objects (see -Hadley Wickham’s S4 -documentation), we’ve added helper functions to make accessing -elements easier for users.

-

The alex object is composed of several smaller objects -of class site. We can call any individual site using -[[ ]], placing the index of the desired object between the -brackets. Then we can also call the particular variable we want using -the $ symbol.

-
alex <- get_sites(sitename = "Alexander Lake")
-alex[[1]]$siteid
-#> [1] 24
-

The elements within a site are the same as the defined -columns within the Neotoma ndb.sites -table, with the exception of the collunits slot, which -contains the collection units and associated datasets that are found -within a site. You can see all the site slots using the -names() function. You can select individual elements of a -site, and you can assign values to these parameters:

-
names(alex[[1]])
-#> [1] "siteid"       "sitename"     "geography"    "altitude"     "geopolitical"
-#> [6] "area"         "notes"        "description"  "collunits"
-
-# Modify a value using $<- assignment:
-alex[[1]]$area
-#> [1] NA
-alex[[1]]$area <- 100
-alex[[1]]$area
-#> [1] 100
-
-# Modify a value using [<- assignment:
-alex[[1]]["area"] <- 30
-# alex[[1]][7] <- 30  This fails because the `Notes` field expects a character string.
-

Using assignment, we can add information programmatically, for -example, by working interactively with a digital elevation model or -hydrographic data to obtain lake area measurements. Although not -currently implemented, the goal is to support direct upload of updated -information by users.

-
-
-

Creating a Site

-

As explained above, a site is the fundamental unit of -the Neotoma Database. If you are working with your own data, you might -want to create a site object to allow it to interact with -other data within Neotoma. You can create a site with the -set_site() function. It will ask you to provide important -information such as sitename, lat, and -long attributes.

-
my_site <- set_site(sitename = "My Lake", 
-                    geography = st_sf(a = 3, st_sfc(st_point(1:2))), 
-                    description = "my lake", 
-                    altitude = 30)
-my_site
-#>                                siteid sitename lat long altitude
-#>  24fcaf8f-239a-4c40-a221-c6e33f270404  My Lake   2    1       30
-

If we have a set of sites that we are analyzing, we can add the new -site to the set of sites, either by appending it to the end, using -c(), or by replacing a particular element using -[[<-.

-

This method allows us to begin modifying site information for -existing sites if we have updated knowledge about site properties.

-
# Add a new site that's been edited using set_site()
-longer_alex <- c(alex, my_site)
-# Or replace an element within the existing list of sites
-# with the newly created site.
-longer_alex[[2]] <- my_site
-
-# Or append to the `sites` list with assignment:
-longer_alex[[3]] <- my_site
-

We can also use set_sites() as a tool to update the -metadata associated with an existing site object:

-
# Update a value within an existing `sites` object:
-longer_alex[[3]] <- set_site(longer_alex[[3]],
-  altitude = 3000)
-longer_alex
-
-
-
-

Datasets

-

If you need to get to a deeper level of the sites object, you may -want to look at the get_datasets() function. You can use -get_datasets() using search parameters, or you can use it -on an existing sites object, such as our prior -alex dataset.

-

get_datasets() adds additional metadata to the -site objects, letting us know which -datasettypes are associated with a site, and the dataset -sample locations at the site.

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - sites - - - - site - - - - collunits - - - - collunit - - - - chronologies - - - - chronology - - - - contacts - - - - contact - - - - datasets - - - - samples - - - - dataset - - - - -
Using get_datasets() provides more -complete metadata about a record, including the addition of -chronological information, and more complete metadata about the -datasets, compared to the get_sites() call, shown above. -The objects here are the same as above, but now have chronology -metadata, and contact metadata for the records. Note that there is still -no sample or taxonomic information about these records. This comes from -the get_downloads() function.
-
-

Getting the datasets by id is the easiest call, you can also pass a -vector of IDs or, if you already have a sites object, you -can pass a sites object.

-
# Getting datasets by ID
-my_datasets <- get_datasets(c(5, 10, 15, 20))
-my_datasets
-#>  siteid                   sitename       lat      long altitude
-#>       5                       17/2  55.25000 -74.93333      335
-#>      10 Site 1 (Cohen unpublished)  30.83000 -82.33000       37
-#>      15                    Aguilar -23.83333 -65.75000     4000
-#>      20                   Akuvaara  69.12326  27.67406      170
-

You can also retrieve datasets by type directly from the API.

-
# Getting datasets by type
-my_pollen_datasets <- get_datasets(datasettype = "pollen", limit = 25)
-my_pollen_datasets
-#>  siteid                            sitename       lat       long altitude
-#>       7                     Three Pines Bog  47.00000  -80.11667      294
-#>       8                 Abalone Rocks Marsh  33.95639 -119.97667        0
-#>       9                              Adange  43.30556   41.33333     1750
-#>      11        Konus Exposure, Adycha River  67.75000  135.58333      130
-#>      12                       Ageröds Mosse  55.93329   13.42559       58
-#>      13                     Aguas Calientes -23.08333  -67.40000     4210
-#>      14                   Aguas Calientes 2 -23.50000  -67.58333     4210
-#>      15                             Aguilar -23.83333  -65.75000     4000
-#>      16                           Ahlenmoor  53.69908    8.74688        2
-#>      17                               Ajata -18.25000  -69.20000     4700
-#>      18                    South Soefje Bog  29.60000  -97.51694       97
-#>      19             Akulinin Exposure P1282  47.11667  138.55000       20
-#>      20                            Akuvaara  69.12326   27.67406      170
-#>      21 Alazeya River Exposure, 8 m Terrace  68.50000  154.50000       40
-#>      22 Alazeya River Exposure, 9 m Terrace  64.33333  154.50000       40
-#>      24                      Alexander Lake  53.33333  -60.58333      143
-#>      25                         Alexis Lake  52.51667  -57.03333      200
-#>      27                          Aliuk Pond  54.58333  -57.36667       25
-#>      29                          Lake Allie  44.80156  -94.55982      328
-#>      30                         Almora Lake  46.20611  -95.29361      437
-#>      31                           Alut Lake  60.13667  152.31278      480
-#>      32                             Amarete -15.23333  -68.98333     4000
-#>      33             Amba River Exposure 596  43.31667  131.81667        5
-#>      68     Amguema River Valley Exposure 1  67.75000  178.70000      175
-#>      69     Amguema River Valley Exposure 2  67.66667  178.60000       87
-

It can be computationally intensive to obtain the full set of records -for sites or datasets. By default the -limit for all queries is 25. The default -offset is 0. To capture all results we can use -the all_data = TRUE flag in our calls. -However, this is hard on the Neotoma servers. We tend -to prefer that users use all_data = TRUE once their -analytic workflow is mostly complete.

-

We can use that all_data = TRUE in R in the following -way:

-
allSites_dt <- get_sites(datasettype = "diatom")
-allSites_dt_all <- get_sites(datasettype = "diatom", all_data = TRUE)
-
-# Because we used the `all_data = TRUE` flag, there will be more sites
-# in allSites_dt_all, because it represents all sites containing diatom datasets.
-length(allSites_dt_all) > length(allSites_dt)
-
-

Spatial Searches

-

You can get the coordinates to create a GeoJson bounding box from here, or you can use -pre-existing objects within R, for example, country-level data within -the spData package:

-

Accessing datasets by bounding box:

-
brazil <- '{"type": "Polygon", 
-            "coordinates": [[
-                [-73.125, -9.102],
-                [-56.953, -33.138],
-                [-36.563, -7.711],
-                [-68.203, 13.923],
-                [-73.125, -9.102]
-              ]]}'
-
-# We can make the geojson a spatial object if we want to use the
-# functionality of the `sf` package.
-brazil_sf <- geojsonsf::geojson_sf(brazil)
-
-brazil_datasets <- get_datasets(loc = brazil_sf)
-brazil_datasets
-#>  siteid                   sitename       lat      long altitude
-#>      32                    Amarete -15.23333 -68.98333     4000
-#>     211             Lago do Aquiri  -3.16667 -44.98333       10
-#>     323                 Cala Conto -17.56667 -65.93333     2700
-#>     347               Chacaltaya 1 -16.36667 -68.15000     4750
-#>     348               Chacaltaya 2 -16.36667 -68.15000     4350
-#>     523             Cumbre Unduavi -16.35000 -68.04167     4620
-#>     532            Lagoa das Patas   0.26667 -66.68333      300
-#>     843        Serra Campos Gerais -24.66667 -50.21667     1200
-#>    1406                  Katantica -14.80000 -69.18333     4820
-#>    1994                 Río Kaluyo -16.43333 -68.13333     4070
-#>    2827                  Wasa Mayu -17.53333 -65.81667     2720
-#>    9685              Laguna Granja -13.26341 -63.71025      138
-#>    9686             Laguna Orícore -13.34833 -63.52796      139
-#>   11923              Lake Valencia  10.16576 -67.76755      410
-#>   13964              Lake Chalalán -14.42868 -67.92125      330
-#>     526            Lagoa da Curuça  -0.76667 -47.85000       35
-#>    1717               Monte Blanco -17.02500 -67.35000     4780
-#>    2248 Lagoa Campestre de Salitre -19.00000 -46.76667      980
-#>   11877              Lake Consuelo -13.95125 -68.99162     1333
-

Now we have an object called brazil_datasets that -contains 19.

-

You can plot these findings!

-
plotLeaflet(brazil_datasets)
-
- -
-
-
-

Filtering Records

-

Sometimes we take a large number of records, do some analysis, and -then choose to select a subset. For example, we may want to select all -sites in a region, and then subset those by dataset type. If we want to -look at only the geochronological datasets from Brazil, we can start -with the set of records returned from our get_datasets() -query, and then use the filter function in -neotoma2 to select only those datasets that are -geochronologic:

-
brazil_dates <- neotoma2::filter(brazil_datasets,
-  datasettype == "geochronologic")
-
-# or:
-
-brazil_dates <- brazil_datasets %>%
-  neotoma2::filter(datasettype == "geochronologic")
-
-# With boolean operators:
-
-brazil_space <- brazil_datasets %>% neotoma2::filter(lat > -18 & lat < -16)
-

The filter() function takes as the first argument, a -datasets object, followed by the criteria we want to use to filter. -Current supported criteria includes:

-
    -
  • lat
  • -
  • long
  • -
  • elev
  • -
  • datasettype
  • -
-

You also need to make sure that you accompany any of these terms with -the following boolean operators: <, > or -==, !=. datasettype has to be of -type string, while the other terms must be numeric. If you need to -filter by the same argument, let’s say, you need to filter -“geochronologic” and “pollen data types, then you will also make use of -& and | operators.

-
-
-

Sample and Taxonomic data

-

Once we have the set of records we wish to examine, we then want to -recover the actual sample data. This will provide us with information -about the kinds of elements found at the site, within the dataset, their -sample ages, and their counts or measurements. To do this we use the -get_downloads() call. Note, as before, we are returning a -sites objects, but this time with the most complete -metadata.

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - sites - - - - site - - - - collunits - - - - collunit - - - - chronologies - - - - chronology - - - - contacts - - - - contact - - - - datasets - - - - samples - - - - dataset - - - - -
Using get_downloads() returns a -sites object, but one that contains dataset objects with -filled samples slots. The samples slot is -often very large relative to the other metadata associated with -sites, and so it is commonly held back until a direct -request is provided. Helper functions at the sites level -can pull out sample data once get_downloads() -has been called.
-
-

Assuming we continue with our example from Brazil, we want to extract -records from the country, filter to only pollen records with samples -covering the last 10,000 years, and then look at the relative frequency -of taxa across sites. We might do something like this:

-
brazil <- '{"type": "Polygon", 
-            "coordinates": [[
-                [-73.125, -9.102],
-                [-56.953, -33.138],
-                [-36.563, -7.711],
-                [-68.203, 13.923],
-                [-73.125, -9.102]
-              ]]}'
-
-# We can make the geojson a spatial object if we want to use the
-# functionality of the `sf` package.
-brazil_sf <- geojsonsf::geojson_sf(brazil)
-
-brazil_records <- get_datasets(loc = brazil_sf) %>%
-  neotoma2::filter(datasettype == "pollen" & age_range_young <= 1000 & age_range_old >= 10000) %>%
-  get_downloads(verbose = FALSE)
-
-count_by_site <- samples(brazil_records) %>%
-  dplyr::filter(elementtype == "pollen" & units == "NISP") %>%
-  group_by(siteid, variablename) %>%
-  summarise(n = n()) %>%
-  group_by(variablename) %>%
-  summarise(n = n()) %>%
-  arrange(desc(n))
-#> `summarise()` has grouped output by 'siteid'. You can override using the
-#> `.groups` argument.
-

In this code chunk we define the bounding polygon for our sites, -filter by time and dataset type, and then return the full records for -those sites. We get a sites object with dataset and sample -information (because we used get_downloads()). We execute -the samples() function to extract all the samples from the -sites objects, and then filter the resulting -data.frame to pull only pollen (a pollen dataset may -contain spores and other elements that are not, strictly speaking, -pollen) that are counted using the number of identified specimens (or -NISP). We then group_by() the unique site identifiers -(siteid) and the taxa (variablename) to get a -count of the number of times each taxon appears in each site. We then -want to summarize() to a higher level, just trying to -understand how many sites each taxon appears in. After that we -arrange() so that the records show the most common taxa -first in the resulting variable count_by_site.

-
-
-

Publications

-

Many Neotoma records have publications associated with them. The -publication object (and the publications -collection) provide the opportunity to do this. The publication -table in Neotoma contains an extensive number of fields. The methods for -publications in the neotoma2 package provide -us with tools to retrieve publication data from Neotoma, to set and -manipulate publication data locally, and to retrieve publication data -from external sources (e.g., using a DOI).

-
-

get_publications() from Neotoma

-

The most simple case is a search for a publication based on one or -more publication IDs. Most people do not know the unique publication ID -of individual articles, but this provides a simple method to highlight -the way Neotoma retrieves and presents publication information.

-
-

Get Publication By ID

-

We can use a single publication ID or multiple IDs. In either case -the API returns the publication(s) and creates a new -publications object (which consists of multiple individual -publications).

-
one <- get_publications(12)
-two <- get_publications(c(12, 14))
-

From there we can then then subset and extract elements from the list -using the standard [[ format. For example:

-
two[[2]]
-#>   publicationid
-#> 1            14
-#>                                                                                                                                                                                                      citation
-#> 1 Baker, R.G., R.S. Rhodes II, D.P. Schwert, A.C. Ashworth, T.J. Frest, G.R. Hallberg, and J.A. Janssens. 1986. A full- glacial biota from southeastern Iowa, USA. Journal of Quaternary Science 1(2):91-107.
-#>                      doi
-#> 1 10.1002/jqs.3390010202
-

Will return the second publication in the list, corresponding to the -publication with publicationid 14 in this case.

-
- -
-

Create (or Import) New Publications

-

Just as we can use the set_sites() function to set new -site information, we can also create new publication information using -set_publications(). With set_publications() -you can enter as much or as little of the article metadata as you’d -like, but it’s designed (in part) to use the CrossRef API to return -information from a DOI.

-
new_pub <- set_publications(
-  articletitle = "Myrtle Lake: a late- and post-glacial pollen diagram from northern Minnesota",
-  journal = "Canadian Journal of Botany",
-  volume = 46)
-

A publication has a large number of slots that can be -defined. These may be left blank, they may be set directly after the -publication is defined:

-
new_pub@pages <- "1397-1410"
-
-
-
-
-

Workshops and Code Examples

-
    -
  • 2022 International AL/IPA Meeting; Bariloche, Argentina -
  • -
  • 2022 European Pollen Database Meeting; Prague, Czech Republic -
  • -
  • 2022 American Quaternary Association Meeting -
  • -
  • Neotoma-charcoal Workshop, Göttingen, Germany. Authors: Petr Kuneš -& Thomas Giesecke -
      -
    • English -Language Workflow -
        -
      • Topics: Simple Search, PCA, DCA, Charcoal/Pollen Correlation
      • -
      • Spatial Domain: Global/Czech Republic
      • -
      • Dataset Types: Pollen, Charcoal
      • -
    • -
  • -
-
- - - - - - - - - - - diff --git a/inst/doc/neotoma2-package_files/Proj4Leaflet-1.0.1/proj4leaflet.js b/inst/doc/neotoma2-package_files/Proj4Leaflet-1.0.1/proj4leaflet.js deleted file mode 100644 index eaa650c..0000000 --- a/inst/doc/neotoma2-package_files/Proj4Leaflet-1.0.1/proj4leaflet.js +++ /dev/null @@ -1,272 +0,0 @@ -(function (factory) { - var L, proj4; - if (typeof define === 'function' && define.amd) { - // AMD - define(['leaflet', 'proj4'], factory); - } else if (typeof module === 'object' && typeof module.exports === "object") { - // Node/CommonJS - L = require('leaflet'); - proj4 = require('proj4'); - module.exports = factory(L, proj4); - } else { - // Browser globals - if (typeof window.L === 'undefined' || typeof window.proj4 === 'undefined') - throw 'Leaflet and proj4 must be loaded first'; - factory(window.L, window.proj4); - } -}(function (L, proj4) { - if (proj4.__esModule && proj4.default) { - // If proj4 was bundled as an ES6 module, unwrap it to get - // to the actual main proj4 object. - // See discussion in https://github.com/kartena/Proj4Leaflet/pull/147 - proj4 = proj4.default; - } - - L.Proj = {}; - - L.Proj._isProj4Obj = function(a) { - return (typeof a.inverse !== 'undefined' && - typeof a.forward !== 'undefined'); - }; - - L.Proj.Projection = L.Class.extend({ - initialize: function(code, def, bounds) { - var isP4 = L.Proj._isProj4Obj(code); - this._proj = isP4 ? code : this._projFromCodeDef(code, def); - this.bounds = isP4 ? def : bounds; - }, - - project: function (latlng) { - var point = this._proj.forward([latlng.lng, latlng.lat]); - return new L.Point(point[0], point[1]); - }, - - unproject: function (point, unbounded) { - var point2 = this._proj.inverse([point.x, point.y]); - return new L.LatLng(point2[1], point2[0], unbounded); - }, - - _projFromCodeDef: function(code, def) { - if (def) { - proj4.defs(code, def); - } else if (proj4.defs[code] === undefined) { - var urn = code.split(':'); - if (urn.length > 3) { - code = urn[urn.length - 3] + ':' + urn[urn.length - 1]; - } - if (proj4.defs[code] === undefined) { - throw 'No projection definition for code ' + code; - } - } - - return proj4(code); - } - }); - - L.Proj.CRS = L.Class.extend({ - includes: L.CRS, - - options: { - transformation: new L.Transformation(1, 0, -1, 0) - }, - - initialize: function(a, b, c) { - var code, - proj, - def, - options; - - if (L.Proj._isProj4Obj(a)) { - proj = a; - code = proj.srsCode; - options = b || {}; - - this.projection = new L.Proj.Projection(proj, options.bounds); - } else { - code = a; - def = b; - options = c || {}; - this.projection = new L.Proj.Projection(code, def, options.bounds); - } - - L.Util.setOptions(this, options); - this.code = code; - this.transformation = this.options.transformation; - - if (this.options.origin) { - this.transformation = - new L.Transformation(1, -this.options.origin[0], - -1, this.options.origin[1]); - } - - if (this.options.scales) { - this._scales = this.options.scales; - } else if (this.options.resolutions) { - this._scales = []; - for (var i = this.options.resolutions.length - 1; i >= 0; i--) { - if (this.options.resolutions[i]) { - this._scales[i] = 1 / this.options.resolutions[i]; - } - } - } - - this.infinite = !this.options.bounds; - - }, - - scale: function(zoom) { - var iZoom = Math.floor(zoom), - baseScale, - nextScale, - scaleDiff, - zDiff; - if (zoom === iZoom) { - return this._scales[zoom]; - } else { - // Non-integer zoom, interpolate - baseScale = this._scales[iZoom]; - nextScale = this._scales[iZoom + 1]; - scaleDiff = nextScale - baseScale; - zDiff = (zoom - iZoom); - return baseScale + scaleDiff * zDiff; - } - }, - - zoom: function(scale) { - // Find closest number in this._scales, down - var downScale = this._closestElement(this._scales, scale), - downZoom = this._scales.indexOf(downScale), - nextScale, - nextZoom, - scaleDiff; - // Check if scale is downScale => return array index - if (scale === downScale) { - return downZoom; - } - if (downScale === undefined) { - return -Infinity; - } - // Interpolate - nextZoom = downZoom + 1; - nextScale = this._scales[nextZoom]; - if (nextScale === undefined) { - return Infinity; - } - scaleDiff = nextScale - downScale; - return (scale - downScale) / scaleDiff + downZoom; - }, - - distance: L.CRS.Earth.distance, - - R: L.CRS.Earth.R, - - /* Get the closest lowest element in an array */ - _closestElement: function(array, element) { - var low; - for (var i = array.length; i--;) { - if (array[i] <= element && (low === undefined || low < array[i])) { - low = array[i]; - } - } - return low; - } - }); - - L.Proj.GeoJSON = L.GeoJSON.extend({ - initialize: function(geojson, options) { - this._callLevel = 0; - L.GeoJSON.prototype.initialize.call(this, geojson, options); - }, - - addData: function(geojson) { - var crs; - - if (geojson) { - if (geojson.crs && geojson.crs.type === 'name') { - crs = new L.Proj.CRS(geojson.crs.properties.name); - } else if (geojson.crs && geojson.crs.type) { - crs = new L.Proj.CRS(geojson.crs.type + ':' + geojson.crs.properties.code); - } - - if (crs !== undefined) { - this.options.coordsToLatLng = function(coords) { - var point = L.point(coords[0], coords[1]); - return crs.projection.unproject(point); - }; - } - } - - // Base class' addData might call us recursively, but - // CRS shouldn't be cleared in that case, since CRS applies - // to the whole GeoJSON, inluding sub-features. - this._callLevel++; - try { - L.GeoJSON.prototype.addData.call(this, geojson); - } finally { - this._callLevel--; - if (this._callLevel === 0) { - delete this.options.coordsToLatLng; - } - } - } - }); - - L.Proj.geoJson = function(geojson, options) { - return new L.Proj.GeoJSON(geojson, options); - }; - - L.Proj.ImageOverlay = L.ImageOverlay.extend({ - initialize: function (url, bounds, options) { - L.ImageOverlay.prototype.initialize.call(this, url, null, options); - this._projectedBounds = bounds; - }, - - // Danger ahead: Overriding internal methods in Leaflet. - // Decided to do this rather than making a copy of L.ImageOverlay - // and doing very tiny modifications to it. - // Future will tell if this was wise or not. - _animateZoom: function (event) { - var scale = this._map.getZoomScale(event.zoom); - var northWest = L.point(this._projectedBounds.min.x, this._projectedBounds.max.y); - var offset = this._projectedToNewLayerPoint(northWest, event.zoom, event.center); - - L.DomUtil.setTransform(this._image, offset, scale); - }, - - _reset: function () { - var zoom = this._map.getZoom(); - var pixelOrigin = this._map.getPixelOrigin(); - var bounds = L.bounds( - this._transform(this._projectedBounds.min, zoom)._subtract(pixelOrigin), - this._transform(this._projectedBounds.max, zoom)._subtract(pixelOrigin) - ); - var size = bounds.getSize(); - - L.DomUtil.setPosition(this._image, bounds.min); - this._image.style.width = size.x + 'px'; - this._image.style.height = size.y + 'px'; - }, - - _projectedToNewLayerPoint: function (point, zoom, center) { - var viewHalf = this._map.getSize()._divideBy(2); - var newTopLeft = this._map.project(center, zoom)._subtract(viewHalf)._round(); - var topLeft = newTopLeft.add(this._map._getMapPanePos()); - - return this._transform(point, zoom)._subtract(topLeft); - }, - - _transform: function (point, zoom) { - var crs = this._map.options.crs; - var transformation = crs.transformation; - var scale = crs.scale(zoom); - - return transformation.transform(point, scale); - } - }); - - L.Proj.imageOverlay = function (url, bounds, options) { - return new L.Proj.ImageOverlay(url, bounds, options); - }; - - return L.Proj; -})); diff --git a/inst/doc/neotoma2-package_files/htmlwidgets-1.5.4/htmlwidgets.js b/inst/doc/neotoma2-package_files/htmlwidgets-1.5.4/htmlwidgets.js deleted file mode 100644 index da8b236..0000000 --- a/inst/doc/neotoma2-package_files/htmlwidgets-1.5.4/htmlwidgets.js +++ /dev/null @@ -1,903 +0,0 @@ -(function() { - // If window.HTMLWidgets is already defined, then use it; otherwise create a - // new object. This allows preceding code to set options that affect the - // initialization process (though none currently exist). - window.HTMLWidgets = window.HTMLWidgets || {}; - - // See if we're running in a viewer pane. If not, we're in a web browser. - var viewerMode = window.HTMLWidgets.viewerMode = - /\bviewer_pane=1\b/.test(window.location); - - // See if we're running in Shiny mode. If not, it's a static document. - // Note that static widgets can appear in both Shiny and static modes, but - // obviously, Shiny widgets can only appear in Shiny apps/documents. - var shinyMode = window.HTMLWidgets.shinyMode = - typeof(window.Shiny) !== "undefined" && !!window.Shiny.outputBindings; - - // We can't count on jQuery being available, so we implement our own - // version if necessary. - function querySelectorAll(scope, selector) { - if (typeof(jQuery) !== "undefined" && scope instanceof jQuery) { - return scope.find(selector); - } - if (scope.querySelectorAll) { - return scope.querySelectorAll(selector); - } - } - - function asArray(value) { - if (value === null) - return []; - if ($.isArray(value)) - return value; - return [value]; - } - - // Implement jQuery's extend - function extend(target /*, ... */) { - if (arguments.length == 1) { - return target; - } - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i]; - for (var prop in source) { - if (source.hasOwnProperty(prop)) { - target[prop] = source[prop]; - } - } - } - return target; - } - - // IE8 doesn't support Array.forEach. - function forEach(values, callback, thisArg) { - if (values.forEach) { - values.forEach(callback, thisArg); - } else { - for (var i = 0; i < values.length; i++) { - callback.call(thisArg, values[i], i, values); - } - } - } - - // Replaces the specified method with the return value of funcSource. - // - // Note that funcSource should not BE the new method, it should be a function - // that RETURNS the new method. funcSource receives a single argument that is - // the overridden method, it can be called from the new method. The overridden - // method can be called like a regular function, it has the target permanently - // bound to it so "this" will work correctly. - function overrideMethod(target, methodName, funcSource) { - var superFunc = target[methodName] || function() {}; - var superFuncBound = function() { - return superFunc.apply(target, arguments); - }; - target[methodName] = funcSource(superFuncBound); - } - - // Add a method to delegator that, when invoked, calls - // delegatee.methodName. If there is no such method on - // the delegatee, but there was one on delegator before - // delegateMethod was called, then the original version - // is invoked instead. - // For example: - // - // var a = { - // method1: function() { console.log('a1'); } - // method2: function() { console.log('a2'); } - // }; - // var b = { - // method1: function() { console.log('b1'); } - // }; - // delegateMethod(a, b, "method1"); - // delegateMethod(a, b, "method2"); - // a.method1(); - // a.method2(); - // - // The output would be "b1", "a2". - function delegateMethod(delegator, delegatee, methodName) { - var inherited = delegator[methodName]; - delegator[methodName] = function() { - var target = delegatee; - var method = delegatee[methodName]; - - // The method doesn't exist on the delegatee. Instead, - // call the method on the delegator, if it exists. - if (!method) { - target = delegator; - method = inherited; - } - - if (method) { - return method.apply(target, arguments); - } - }; - } - - // Implement a vague facsimilie of jQuery's data method - function elementData(el, name, value) { - if (arguments.length == 2) { - return el["htmlwidget_data_" + name]; - } else if (arguments.length == 3) { - el["htmlwidget_data_" + name] = value; - return el; - } else { - throw new Error("Wrong number of arguments for elementData: " + - arguments.length); - } - } - - // http://stackoverflow.com/questions/3446170/escape-string-for-use-in-javascript-regex - function escapeRegExp(str) { - return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"); - } - - function hasClass(el, className) { - var re = new RegExp("\\b" + escapeRegExp(className) + "\\b"); - return re.test(el.className); - } - - // elements - array (or array-like object) of HTML elements - // className - class name to test for - // include - if true, only return elements with given className; - // if false, only return elements *without* given className - function filterByClass(elements, className, include) { - var results = []; - for (var i = 0; i < elements.length; i++) { - if (hasClass(elements[i], className) == include) - results.push(elements[i]); - } - return results; - } - - function on(obj, eventName, func) { - if (obj.addEventListener) { - obj.addEventListener(eventName, func, false); - } else if (obj.attachEvent) { - obj.attachEvent(eventName, func); - } - } - - function off(obj, eventName, func) { - if (obj.removeEventListener) - obj.removeEventListener(eventName, func, false); - else if (obj.detachEvent) { - obj.detachEvent(eventName, func); - } - } - - // Translate array of values to top/right/bottom/left, as usual with - // the "padding" CSS property - // https://developer.mozilla.org/en-US/docs/Web/CSS/padding - function unpackPadding(value) { - if (typeof(value) === "number") - value = [value]; - if (value.length === 1) { - return {top: value[0], right: value[0], bottom: value[0], left: value[0]}; - } - if (value.length === 2) { - return {top: value[0], right: value[1], bottom: value[0], left: value[1]}; - } - if (value.length === 3) { - return {top: value[0], right: value[1], bottom: value[2], left: value[1]}; - } - if (value.length === 4) { - return {top: value[0], right: value[1], bottom: value[2], left: value[3]}; - } - } - - // Convert an unpacked padding object to a CSS value - function paddingToCss(paddingObj) { - return paddingObj.top + "px " + paddingObj.right + "px " + paddingObj.bottom + "px " + paddingObj.left + "px"; - } - - // Makes a number suitable for CSS - function px(x) { - if (typeof(x) === "number") - return x + "px"; - else - return x; - } - - // Retrieves runtime widget sizing information for an element. - // The return value is either null, or an object with fill, padding, - // defaultWidth, defaultHeight fields. - function sizingPolicy(el) { - var sizingEl = document.querySelector("script[data-for='" + el.id + "'][type='application/htmlwidget-sizing']"); - if (!sizingEl) - return null; - var sp = JSON.parse(sizingEl.textContent || sizingEl.text || "{}"); - if (viewerMode) { - return sp.viewer; - } else { - return sp.browser; - } - } - - // @param tasks Array of strings (or falsy value, in which case no-op). - // Each element must be a valid JavaScript expression that yields a - // function. Or, can be an array of objects with "code" and "data" - // properties; in this case, the "code" property should be a string - // of JS that's an expr that yields a function, and "data" should be - // an object that will be added as an additional argument when that - // function is called. - // @param target The object that will be "this" for each function - // execution. - // @param args Array of arguments to be passed to the functions. (The - // same arguments will be passed to all functions.) - function evalAndRun(tasks, target, args) { - if (tasks) { - forEach(tasks, function(task) { - var theseArgs = args; - if (typeof(task) === "object") { - theseArgs = theseArgs.concat([task.data]); - task = task.code; - } - var taskFunc = tryEval(task); - if (typeof(taskFunc) !== "function") { - throw new Error("Task must be a function! Source:\n" + task); - } - taskFunc.apply(target, theseArgs); - }); - } - } - - // Attempt eval() both with and without enclosing in parentheses. - // Note that enclosing coerces a function declaration into - // an expression that eval() can parse - // (otherwise, a SyntaxError is thrown) - function tryEval(code) { - var result = null; - try { - result = eval("(" + code + ")"); - } catch(error) { - if (!(error instanceof SyntaxError)) { - throw error; - } - try { - result = eval(code); - } catch(e) { - if (e instanceof SyntaxError) { - throw error; - } else { - throw e; - } - } - } - return result; - } - - function initSizing(el) { - var sizing = sizingPolicy(el); - if (!sizing) - return; - - var cel = document.getElementById("htmlwidget_container"); - if (!cel) - return; - - if (typeof(sizing.padding) !== "undefined") { - document.body.style.margin = "0"; - document.body.style.padding = paddingToCss(unpackPadding(sizing.padding)); - } - - if (sizing.fill) { - document.body.style.overflow = "hidden"; - document.body.style.width = "100%"; - document.body.style.height = "100%"; - document.documentElement.style.width = "100%"; - document.documentElement.style.height = "100%"; - if (cel) { - cel.style.position = "absolute"; - var pad = unpackPadding(sizing.padding); - cel.style.top = pad.top + "px"; - cel.style.right = pad.right + "px"; - cel.style.bottom = pad.bottom + "px"; - cel.style.left = pad.left + "px"; - el.style.width = "100%"; - el.style.height = "100%"; - } - - return { - getWidth: function() { return cel.offsetWidth; }, - getHeight: function() { return cel.offsetHeight; } - }; - - } else { - el.style.width = px(sizing.width); - el.style.height = px(sizing.height); - - return { - getWidth: function() { return el.offsetWidth; }, - getHeight: function() { return el.offsetHeight; } - }; - } - } - - // Default implementations for methods - var defaults = { - find: function(scope) { - return querySelectorAll(scope, "." + this.name); - }, - renderError: function(el, err) { - var $el = $(el); - - this.clearError(el); - - // Add all these error classes, as Shiny does - var errClass = "shiny-output-error"; - if (err.type !== null) { - // use the classes of the error condition as CSS class names - errClass = errClass + " " + $.map(asArray(err.type), function(type) { - return errClass + "-" + type; - }).join(" "); - } - errClass = errClass + " htmlwidgets-error"; - - // Is el inline or block? If inline or inline-block, just display:none it - // and add an inline error. - var display = $el.css("display"); - $el.data("restore-display-mode", display); - - if (display === "inline" || display === "inline-block") { - $el.hide(); - if (err.message !== "") { - var errorSpan = $("").addClass(errClass); - errorSpan.text(err.message); - $el.after(errorSpan); - } - } else if (display === "block") { - // If block, add an error just after the el, set visibility:none on the - // el, and position the error to be on top of the el. - // Mark it with a unique ID and CSS class so we can remove it later. - $el.css("visibility", "hidden"); - if (err.message !== "") { - var errorDiv = $("
").addClass(errClass).css("position", "absolute") - .css("top", el.offsetTop) - .css("left", el.offsetLeft) - // setting width can push out the page size, forcing otherwise - // unnecessary scrollbars to appear and making it impossible for - // the element to shrink; so use max-width instead - .css("maxWidth", el.offsetWidth) - .css("height", el.offsetHeight); - errorDiv.text(err.message); - $el.after(errorDiv); - - // Really dumb way to keep the size/position of the error in sync with - // the parent element as the window is resized or whatever. - var intId = setInterval(function() { - if (!errorDiv[0].parentElement) { - clearInterval(intId); - return; - } - errorDiv - .css("top", el.offsetTop) - .css("left", el.offsetLeft) - .css("maxWidth", el.offsetWidth) - .css("height", el.offsetHeight); - }, 500); - } - } - }, - clearError: function(el) { - var $el = $(el); - var display = $el.data("restore-display-mode"); - $el.data("restore-display-mode", null); - - if (display === "inline" || display === "inline-block") { - if (display) - $el.css("display", display); - $(el.nextSibling).filter(".htmlwidgets-error").remove(); - } else if (display === "block"){ - $el.css("visibility", "inherit"); - $(el.nextSibling).filter(".htmlwidgets-error").remove(); - } - }, - sizing: {} - }; - - // Called by widget bindings to register a new type of widget. The definition - // object can contain the following properties: - // - name (required) - A string indicating the binding name, which will be - // used by default as the CSS classname to look for. - // - initialize (optional) - A function(el) that will be called once per - // widget element; if a value is returned, it will be passed as the third - // value to renderValue. - // - renderValue (required) - A function(el, data, initValue) that will be - // called with data. Static contexts will cause this to be called once per - // element; Shiny apps will cause this to be called multiple times per - // element, as the data changes. - window.HTMLWidgets.widget = function(definition) { - if (!definition.name) { - throw new Error("Widget must have a name"); - } - if (!definition.type) { - throw new Error("Widget must have a type"); - } - // Currently we only support output widgets - if (definition.type !== "output") { - throw new Error("Unrecognized widget type '" + definition.type + "'"); - } - // TODO: Verify that .name is a valid CSS classname - - // Support new-style instance-bound definitions. Old-style class-bound - // definitions have one widget "object" per widget per type/class of - // widget; the renderValue and resize methods on such widget objects - // take el and instance arguments, because the widget object can't - // store them. New-style instance-bound definitions have one widget - // object per widget instance; the definition that's passed in doesn't - // provide renderValue or resize methods at all, just the single method - // factory(el, width, height) - // which returns an object that has renderValue(x) and resize(w, h). - // This enables a far more natural programming style for the widget - // author, who can store per-instance state using either OO-style - // instance fields or functional-style closure variables (I guess this - // is in contrast to what can only be called C-style pseudo-OO which is - // what we required before). - if (definition.factory) { - definition = createLegacyDefinitionAdapter(definition); - } - - if (!definition.renderValue) { - throw new Error("Widget must have a renderValue function"); - } - - // For static rendering (non-Shiny), use a simple widget registration - // scheme. We also use this scheme for Shiny apps/documents that also - // contain static widgets. - window.HTMLWidgets.widgets = window.HTMLWidgets.widgets || []; - // Merge defaults into the definition; don't mutate the original definition. - var staticBinding = extend({}, defaults, definition); - overrideMethod(staticBinding, "find", function(superfunc) { - return function(scope) { - var results = superfunc(scope); - // Filter out Shiny outputs, we only want the static kind - return filterByClass(results, "html-widget-output", false); - }; - }); - window.HTMLWidgets.widgets.push(staticBinding); - - if (shinyMode) { - // Shiny is running. Register the definition with an output binding. - // The definition itself will not be the output binding, instead - // we will make an output binding object that delegates to the - // definition. This is because we foolishly used the same method - // name (renderValue) for htmlwidgets definition and Shiny bindings - // but they actually have quite different semantics (the Shiny - // bindings receive data that includes lots of metadata that it - // strips off before calling htmlwidgets renderValue). We can't - // just ignore the difference because in some widgets it's helpful - // to call this.renderValue() from inside of resize(), and if - // we're not delegating, then that call will go to the Shiny - // version instead of the htmlwidgets version. - - // Merge defaults with definition, without mutating either. - var bindingDef = extend({}, defaults, definition); - - // This object will be our actual Shiny binding. - var shinyBinding = new Shiny.OutputBinding(); - - // With a few exceptions, we'll want to simply use the bindingDef's - // version of methods if they are available, otherwise fall back to - // Shiny's defaults. NOTE: If Shiny's output bindings gain additional - // methods in the future, and we want them to be overrideable by - // HTMLWidget binding definitions, then we'll need to add them to this - // list. - delegateMethod(shinyBinding, bindingDef, "getId"); - delegateMethod(shinyBinding, bindingDef, "onValueChange"); - delegateMethod(shinyBinding, bindingDef, "onValueError"); - delegateMethod(shinyBinding, bindingDef, "renderError"); - delegateMethod(shinyBinding, bindingDef, "clearError"); - delegateMethod(shinyBinding, bindingDef, "showProgress"); - - // The find, renderValue, and resize are handled differently, because we - // want to actually decorate the behavior of the bindingDef methods. - - shinyBinding.find = function(scope) { - var results = bindingDef.find(scope); - - // Only return elements that are Shiny outputs, not static ones - var dynamicResults = results.filter(".html-widget-output"); - - // It's possible that whatever caused Shiny to think there might be - // new dynamic outputs, also caused there to be new static outputs. - // Since there might be lots of different htmlwidgets bindings, we - // schedule execution for later--no need to staticRender multiple - // times. - if (results.length !== dynamicResults.length) - scheduleStaticRender(); - - return dynamicResults; - }; - - // Wrap renderValue to handle initialization, which unfortunately isn't - // supported natively by Shiny at the time of this writing. - - shinyBinding.renderValue = function(el, data) { - Shiny.renderDependencies(data.deps); - // Resolve strings marked as javascript literals to objects - if (!(data.evals instanceof Array)) data.evals = [data.evals]; - for (var i = 0; data.evals && i < data.evals.length; i++) { - window.HTMLWidgets.evaluateStringMember(data.x, data.evals[i]); - } - if (!bindingDef.renderOnNullValue) { - if (data.x === null) { - el.style.visibility = "hidden"; - return; - } else { - el.style.visibility = "inherit"; - } - } - if (!elementData(el, "initialized")) { - initSizing(el); - - elementData(el, "initialized", true); - if (bindingDef.initialize) { - var result = bindingDef.initialize(el, el.offsetWidth, - el.offsetHeight); - elementData(el, "init_result", result); - } - } - bindingDef.renderValue(el, data.x, elementData(el, "init_result")); - evalAndRun(data.jsHooks.render, elementData(el, "init_result"), [el, data.x]); - }; - - // Only override resize if bindingDef implements it - if (bindingDef.resize) { - shinyBinding.resize = function(el, width, height) { - // Shiny can call resize before initialize/renderValue have been - // called, which doesn't make sense for widgets. - if (elementData(el, "initialized")) { - bindingDef.resize(el, width, height, elementData(el, "init_result")); - } - }; - } - - Shiny.outputBindings.register(shinyBinding, bindingDef.name); - } - }; - - var scheduleStaticRenderTimerId = null; - function scheduleStaticRender() { - if (!scheduleStaticRenderTimerId) { - scheduleStaticRenderTimerId = setTimeout(function() { - scheduleStaticRenderTimerId = null; - window.HTMLWidgets.staticRender(); - }, 1); - } - } - - // Render static widgets after the document finishes loading - // Statically render all elements that are of this widget's class - window.HTMLWidgets.staticRender = function() { - var bindings = window.HTMLWidgets.widgets || []; - forEach(bindings, function(binding) { - var matches = binding.find(document.documentElement); - forEach(matches, function(el) { - var sizeObj = initSizing(el, binding); - - if (hasClass(el, "html-widget-static-bound")) - return; - el.className = el.className + " html-widget-static-bound"; - - var initResult; - if (binding.initialize) { - initResult = binding.initialize(el, - sizeObj ? sizeObj.getWidth() : el.offsetWidth, - sizeObj ? sizeObj.getHeight() : el.offsetHeight - ); - elementData(el, "init_result", initResult); - } - - if (binding.resize) { - var lastSize = { - w: sizeObj ? sizeObj.getWidth() : el.offsetWidth, - h: sizeObj ? sizeObj.getHeight() : el.offsetHeight - }; - var resizeHandler = function(e) { - var size = { - w: sizeObj ? sizeObj.getWidth() : el.offsetWidth, - h: sizeObj ? sizeObj.getHeight() : el.offsetHeight - }; - if (size.w === 0 && size.h === 0) - return; - if (size.w === lastSize.w && size.h === lastSize.h) - return; - lastSize = size; - binding.resize(el, size.w, size.h, initResult); - }; - - on(window, "resize", resizeHandler); - - // This is needed for cases where we're running in a Shiny - // app, but the widget itself is not a Shiny output, but - // rather a simple static widget. One example of this is - // an rmarkdown document that has runtime:shiny and widget - // that isn't in a render function. Shiny only knows to - // call resize handlers for Shiny outputs, not for static - // widgets, so we do it ourselves. - if (window.jQuery) { - window.jQuery(document).on( - "shown.htmlwidgets shown.bs.tab.htmlwidgets shown.bs.collapse.htmlwidgets", - resizeHandler - ); - window.jQuery(document).on( - "hidden.htmlwidgets hidden.bs.tab.htmlwidgets hidden.bs.collapse.htmlwidgets", - resizeHandler - ); - } - - // This is needed for the specific case of ioslides, which - // flips slides between display:none and display:block. - // Ideally we would not have to have ioslide-specific code - // here, but rather have ioslides raise a generic event, - // but the rmarkdown package just went to CRAN so the - // window to getting that fixed may be long. - if (window.addEventListener) { - // It's OK to limit this to window.addEventListener - // browsers because ioslides itself only supports - // such browsers. - on(document, "slideenter", resizeHandler); - on(document, "slideleave", resizeHandler); - } - } - - var scriptData = document.querySelector("script[data-for='" + el.id + "'][type='application/json']"); - if (scriptData) { - var data = JSON.parse(scriptData.textContent || scriptData.text); - // Resolve strings marked as javascript literals to objects - if (!(data.evals instanceof Array)) data.evals = [data.evals]; - for (var k = 0; data.evals && k < data.evals.length; k++) { - window.HTMLWidgets.evaluateStringMember(data.x, data.evals[k]); - } - binding.renderValue(el, data.x, initResult); - evalAndRun(data.jsHooks.render, initResult, [el, data.x]); - } - }); - }); - - invokePostRenderHandlers(); - } - - - function has_jQuery3() { - if (!window.jQuery) { - return false; - } - var $version = window.jQuery.fn.jquery; - var $major_version = parseInt($version.split(".")[0]); - return $major_version >= 3; - } - - /* - / Shiny 1.4 bumped jQuery from 1.x to 3.x which means jQuery's - / on-ready handler (i.e., $(fn)) is now asyncronous (i.e., it now - / really means $(setTimeout(fn)). - / https://jquery.com/upgrade-guide/3.0/#breaking-change-document-ready-handlers-are-now-asynchronous - / - / Since Shiny uses $() to schedule initShiny, shiny>=1.4 calls initShiny - / one tick later than it did before, which means staticRender() is - / called renderValue() earlier than (advanced) widget authors might be expecting. - / https://github.com/rstudio/shiny/issues/2630 - / - / For a concrete example, leaflet has some methods (e.g., updateBounds) - / which reference Shiny methods registered in initShiny (e.g., setInputValue). - / Since leaflet is privy to this life-cycle, it knows to use setTimeout() to - / delay execution of those methods (until Shiny methods are ready) - / https://github.com/rstudio/leaflet/blob/18ec981/javascript/src/index.js#L266-L268 - / - / Ideally widget authors wouldn't need to use this setTimeout() hack that - / leaflet uses to call Shiny methods on a staticRender(). In the long run, - / the logic initShiny should be broken up so that method registration happens - / right away, but binding happens later. - */ - function maybeStaticRenderLater() { - if (shinyMode && has_jQuery3()) { - window.jQuery(window.HTMLWidgets.staticRender); - } else { - window.HTMLWidgets.staticRender(); - } - } - - if (document.addEventListener) { - document.addEventListener("DOMContentLoaded", function() { - document.removeEventListener("DOMContentLoaded", arguments.callee, false); - maybeStaticRenderLater(); - }, false); - } else if (document.attachEvent) { - document.attachEvent("onreadystatechange", function() { - if (document.readyState === "complete") { - document.detachEvent("onreadystatechange", arguments.callee); - maybeStaticRenderLater(); - } - }); - } - - - window.HTMLWidgets.getAttachmentUrl = function(depname, key) { - // If no key, default to the first item - if (typeof(key) === "undefined") - key = 1; - - var link = document.getElementById(depname + "-" + key + "-attachment"); - if (!link) { - throw new Error("Attachment " + depname + "/" + key + " not found in document"); - } - return link.getAttribute("href"); - }; - - window.HTMLWidgets.dataframeToD3 = function(df) { - var names = []; - var length; - for (var name in df) { - if (df.hasOwnProperty(name)) - names.push(name); - if (typeof(df[name]) !== "object" || typeof(df[name].length) === "undefined") { - throw new Error("All fields must be arrays"); - } else if (typeof(length) !== "undefined" && length !== df[name].length) { - throw new Error("All fields must be arrays of the same length"); - } - length = df[name].length; - } - var results = []; - var item; - for (var row = 0; row < length; row++) { - item = {}; - for (var col = 0; col < names.length; col++) { - item[names[col]] = df[names[col]][row]; - } - results.push(item); - } - return results; - }; - - window.HTMLWidgets.transposeArray2D = function(array) { - if (array.length === 0) return array; - var newArray = array[0].map(function(col, i) { - return array.map(function(row) { - return row[i] - }) - }); - return newArray; - }; - // Split value at splitChar, but allow splitChar to be escaped - // using escapeChar. Any other characters escaped by escapeChar - // will be included as usual (including escapeChar itself). - function splitWithEscape(value, splitChar, escapeChar) { - var results = []; - var escapeMode = false; - var currentResult = ""; - for (var pos = 0; pos < value.length; pos++) { - if (!escapeMode) { - if (value[pos] === splitChar) { - results.push(currentResult); - currentResult = ""; - } else if (value[pos] === escapeChar) { - escapeMode = true; - } else { - currentResult += value[pos]; - } - } else { - currentResult += value[pos]; - escapeMode = false; - } - } - if (currentResult !== "") { - results.push(currentResult); - } - return results; - } - // Function authored by Yihui/JJ Allaire - window.HTMLWidgets.evaluateStringMember = function(o, member) { - var parts = splitWithEscape(member, '.', '\\'); - for (var i = 0, l = parts.length; i < l; i++) { - var part = parts[i]; - // part may be a character or 'numeric' member name - if (o !== null && typeof o === "object" && part in o) { - if (i == (l - 1)) { // if we are at the end of the line then evalulate - if (typeof o[part] === "string") - o[part] = tryEval(o[part]); - } else { // otherwise continue to next embedded object - o = o[part]; - } - } - } - }; - - // Retrieve the HTMLWidget instance (i.e. the return value of an - // HTMLWidget binding's initialize() or factory() function) - // associated with an element, or null if none. - window.HTMLWidgets.getInstance = function(el) { - return elementData(el, "init_result"); - }; - - // Finds the first element in the scope that matches the selector, - // and returns the HTMLWidget instance (i.e. the return value of - // an HTMLWidget binding's initialize() or factory() function) - // associated with that element, if any. If no element matches the - // selector, or the first matching element has no HTMLWidget - // instance associated with it, then null is returned. - // - // The scope argument is optional, and defaults to window.document. - window.HTMLWidgets.find = function(scope, selector) { - if (arguments.length == 1) { - selector = scope; - scope = document; - } - - var el = scope.querySelector(selector); - if (el === null) { - return null; - } else { - return window.HTMLWidgets.getInstance(el); - } - }; - - // Finds all elements in the scope that match the selector, and - // returns the HTMLWidget instances (i.e. the return values of - // an HTMLWidget binding's initialize() or factory() function) - // associated with the elements, in an array. If elements that - // match the selector don't have an associated HTMLWidget - // instance, the returned array will contain nulls. - // - // The scope argument is optional, and defaults to window.document. - window.HTMLWidgets.findAll = function(scope, selector) { - if (arguments.length == 1) { - selector = scope; - scope = document; - } - - var nodes = scope.querySelectorAll(selector); - var results = []; - for (var i = 0; i < nodes.length; i++) { - results.push(window.HTMLWidgets.getInstance(nodes[i])); - } - return results; - }; - - var postRenderHandlers = []; - function invokePostRenderHandlers() { - while (postRenderHandlers.length) { - var handler = postRenderHandlers.shift(); - if (handler) { - handler(); - } - } - } - - // Register the given callback function to be invoked after the - // next time static widgets are rendered. - window.HTMLWidgets.addPostRenderHandler = function(callback) { - postRenderHandlers.push(callback); - }; - - // Takes a new-style instance-bound definition, and returns an - // old-style class-bound definition. This saves us from having - // to rewrite all the logic in this file to accomodate both - // types of definitions. - function createLegacyDefinitionAdapter(defn) { - var result = { - name: defn.name, - type: defn.type, - initialize: function(el, width, height) { - return defn.factory(el, width, height); - }, - renderValue: function(el, x, instance) { - return instance.renderValue(x); - }, - resize: function(el, width, height, instance) { - return instance.resize(width, height); - } - }; - - if (defn.find) - result.find = defn.find; - if (defn.renderError) - result.renderError = defn.renderError; - if (defn.clearError) - result.clearError = defn.clearError; - - return result; - } -})(); - diff --git a/inst/doc/neotoma2-package_files/leaflet-1.3.1/images/layers-2x.png b/inst/doc/neotoma2-package_files/leaflet-1.3.1/images/layers-2x.png deleted file mode 100644 index 200c333dca9652ac4cba004d609e5af4eee168c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1259 zcmVFhCYNy;#0irRPomHqW|G1C*;4?@4#E?jH>?v@U%cy?3dQAc-DchXVErpOh~ z-jbon+tNbnl6hoEb;)TVk+%hTDDi_G%i3*RZ&15!$Fjr^f;Ke&A@|?=`2&+{zr+3a z{D*=t(`AXyS%X7N z%a#RZw6vD^t_rnM`L4E>m=U&R!A-&}nZIi$BOPvkhrCuUe@BN~-lRD)f44;J%TwgE zcze8u!PQ_NR7?o(NylLXVTfDO zxs5=@|GsYEsNo4M#nT%N!UE(?dnS)t2+{ELYAFp*3=iF=|EQnTp`#vlSXuGVraYo? z+RCzXo6h3qA8{KG?S4nE(lM+;Eb4nT3XV;7gcAxUi5m)`k5tv}cPy()8ZR3TLW3I- zAS^}cq-IJvL7a4RgR!yk@~RT%$lA7{L5ES*hyx)M4(yxI$Ub(4f)K|^v1>zvwQY!_ zIrWw8q9GS^!Dp~}+?mbnB6jDF8mVlbQ!jFKDY;w=7;XO{9bq7>LXGK24WA`;rL)_Z z)&j}pbV(;6gY;VMhbxgvn`X;6x}VUEE-7 z%)7j-%t8S=ZL3yc)HbXDAqJZvBTPoiW_A-+a8m3_Z?v{DN7Tnr#O_VUMT0UBt$;p` zDh6JbGHN8JJ*JN%y2%msb97@_S>9!%Egwk;?PEkU9ntz&3uR}%Fj5d$JHQbQb3}a{ zSzFT^#n=VInPpcAS}CNxj?_ zVscANk5Cfz(51EI1pz};AWWb|kgbYNb4wCEGUn3+eMUMV?1-{=I4TlmLJMot@rd07 zZuo2hk1ccu{YmGkcYdWAVdk{Z4Nm?^cTD&}jGm+Q1SYIXMwmG*oO*83&#>l%nbR`G zhh=lZ%xIb7kU3#;TBbfECrnC9P=-XpL|TG2BoZdj61*XiFbW8?1Z_wp%#;>${SUIy V$8qr;L*)Pf002ovPDHLkV1hYLS~36t diff --git a/inst/doc/neotoma2-package_files/leaflet-1.3.1/images/layers.png b/inst/doc/neotoma2-package_files/leaflet-1.3.1/images/layers.png deleted file mode 100644 index 1a72e5784b2b456eac5d7670738db80697af3377..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 696 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 e-I|>x8~*?ZhF3snGbtJX0000cOl4 diff --git a/inst/doc/neotoma2-package_files/leaflet-1.3.1/images/marker-icon.png b/inst/doc/neotoma2-package_files/leaflet-1.3.1/images/marker-icon.png deleted file mode 100644 index 950edf24677ded147df13b26f91baa2b0fa70513..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1466 zcmV;r1x5OaP)P001cn1^@s6z>|W`000GnNklGNuHDcIX17Zdjl&3`L?0sTjIws<{((Dh&g-s0<@jYQyl?D*X^?%13;ml^gy> ziMrY_^1WI=(g@LMizu=zCoA>C`6|QEq1eV92k*7m>G65*&@&6)aC&e}G zI)pf-Za|N`DT&Cn1J|o`19mumxW~hiKiKyc-P`S@q)rdTo84@QI@;0yXrG%9uhI>A zG5QHb6s4=<6xy{1 z@NMxEkryp{LS44%z$3lP^cX!9+2-;CTt3wM4(k*#C{aiIiLuB>jJj;KPhPzIC00bL zU3a#;aJld94lCW=`4&aAy8M7PY=HQ>O%$YEP4c4UY#CRxfgbE~(|uiI=YS8q;O9y6 zmIkXzR`}p7ti|PrM3a}WMnR=3NVnWdAAR>b9X@)DKL6=YsvmH%?I24wdq?Gh54_;# z$?_LvgjEdspdQlft#4CQ z`2Zyvy?*)N1Ftw|{_hakhG9WjS?Az@I@+IZ8JbWewR!XUK4&6346+d#~gsE0SY(LX8&JfY>Aj)RxGy96nwhs2rv zzW6pTnMpFkDSkT*a*6Dx|u@ds6ISVn0@^RmIsKZ5Y;bazbc;tTSq(kg(=481ODrPyNB6n z-$+U}(w$m6U6H$w17Bw+wDaFIe~GvNMYvnw31MpY0eQKT9l>SU``8k7w4)z!GZKMI z#_cEKq7k~i%nlK@6c-K?+R;B#5$?T#YpKD`t_4bAs^#E+@5QW$@OX3*`;(#{U^d-vY)&xEE>n5lYl&T?Amke9$Lam@{1K@O ze*LXqlKQHiv=gx+V^Cbb2?z@ISBQ*3amF;9UJ3SBg(N|710TLamQmYZ&Qjn2LuO<* zCZlB4n%@pc&7NNnY1}x+NWpHlq`OJEo|`aYN9<`RBUB+79g;>dgb6YlfN#kGL?lO_ z!6~M^7sOnbsUkKk<@Ysie&`G>ruxH&Mgy&8;i=A zB9OO!xR{AyODw>DS-q5YM{0ExFEAzt zm>RdS+ssW(-8|?xr0(?$vBVB*%(xDLtq3Hf0I5yFm<_g=W2`QWAax{1rWVH=I!VrP zs(rTFX@W#t$hXNvbgX`gK&^w_YD;CQ!B@e0QbLIWaKAXQe2-kkloo;{iF#6}z!4=W zi$giRj1{ zt;2w`VSCF#WE&*ev7jpsC=6175@(~nTE2;7M-L((0bH@yG}-TB$R~WXd?tA$s3|%y zA`9$sA(>F%J3ioz<-LJl*^o1|w84l>HBR`>3l9c8$5Xr@xCiIQ7{x$fMCzOk_-M=% z+{a_Q#;42`#KfUte@$NT77uaTz?b-fBe)1s5XE$yA79fm?KqM^VgLXD07*qoM6N<$ Ef<_J(9smFU diff --git a/inst/doc/neotoma2-package_files/leaflet-1.3.1/leaflet.css b/inst/doc/neotoma2-package_files/leaflet-1.3.1/leaflet.css deleted file mode 100644 index 230e5ba..0000000 --- a/inst/doc/neotoma2-package_files/leaflet-1.3.1/leaflet.css +++ /dev/null @@ -1,636 +0,0 @@ -/* required styles */ - -.leaflet-pane, -.leaflet-tile, -.leaflet-marker-icon, -.leaflet-marker-shadow, -.leaflet-tile-container, -.leaflet-pane > svg, -.leaflet-pane > canvas, -.leaflet-zoom-box, -.leaflet-image-layer, -.leaflet-layer { - position: absolute; - left: 0; - top: 0; - } -.leaflet-container { - overflow: hidden; - } -.leaflet-tile, -.leaflet-marker-icon, -.leaflet-marker-shadow { - -webkit-user-select: none; - -moz-user-select: none; - user-select: none; - -webkit-user-drag: none; - } -/* Safari renders non-retina tile on retina better with this, but Chrome is worse */ -.leaflet-safari .leaflet-tile { - image-rendering: -webkit-optimize-contrast; - } -/* hack that prevents hw layers "stretching" when loading new tiles */ -.leaflet-safari .leaflet-tile-container { - width: 1600px; - height: 1600px; - -webkit-transform-origin: 0 0; - } -.leaflet-marker-icon, -.leaflet-marker-shadow { - display: block; - } -/* .leaflet-container svg: reset svg max-width decleration shipped in Joomla! (joomla.org) 3.x */ -/* .leaflet-container img: map is broken in FF if you have max-width: 100% on tiles */ -.leaflet-container .leaflet-overlay-pane svg, -.leaflet-container .leaflet-marker-pane img, -.leaflet-container .leaflet-shadow-pane img, -.leaflet-container .leaflet-tile-pane img, -.leaflet-container img.leaflet-image-layer { - max-width: none !important; - max-height: none !important; - } - -.leaflet-container.leaflet-touch-zoom { - -ms-touch-action: pan-x pan-y; - touch-action: pan-x pan-y; - } -.leaflet-container.leaflet-touch-drag { - -ms-touch-action: pinch-zoom; - /* Fallback for FF which doesn't support pinch-zoom */ - touch-action: none; - touch-action: pinch-zoom; -} -.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom { - -ms-touch-action: none; - touch-action: none; -} -.leaflet-container { - -webkit-tap-highlight-color: transparent; -} -.leaflet-container a { - -webkit-tap-highlight-color: rgba(51, 181, 229, 0.4); -} -.leaflet-tile { - filter: inherit; - visibility: hidden; - } -.leaflet-tile-loaded { - visibility: inherit; - } -.leaflet-zoom-box { - width: 0; - height: 0; - -moz-box-sizing: border-box; - box-sizing: border-box; - z-index: 800; - } -/* workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=888319 */ -.leaflet-overlay-pane svg { - -moz-user-select: none; - } - -.leaflet-pane { z-index: 400; } - -.leaflet-tile-pane { z-index: 200; } -.leaflet-overlay-pane { z-index: 400; } -.leaflet-shadow-pane { z-index: 500; } -.leaflet-marker-pane { z-index: 600; } -.leaflet-tooltip-pane { z-index: 650; } -.leaflet-popup-pane { z-index: 700; } - -.leaflet-map-pane canvas { z-index: 100; } -.leaflet-map-pane svg { z-index: 200; } - -.leaflet-vml-shape { - width: 1px; - height: 1px; - } -.lvml { - behavior: url(#default#VML); - display: inline-block; - position: absolute; - } - - -/* control positioning */ - -.leaflet-control { - position: relative; - z-index: 800; - pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */ - pointer-events: auto; - } -.leaflet-top, -.leaflet-bottom { - position: absolute; - z-index: 1000; - pointer-events: none; - } -.leaflet-top { - top: 0; - } -.leaflet-right { - right: 0; - } -.leaflet-bottom { - bottom: 0; - } -.leaflet-left { - left: 0; - } -.leaflet-control { - float: left; - clear: both; - } -.leaflet-right .leaflet-control { - float: right; - } -.leaflet-top .leaflet-control { - margin-top: 10px; - } -.leaflet-bottom .leaflet-control { - margin-bottom: 10px; - } -.leaflet-left .leaflet-control { - margin-left: 10px; - } -.leaflet-right .leaflet-control { - margin-right: 10px; - } - - -/* zoom and fade animations */ - -.leaflet-fade-anim .leaflet-tile { - will-change: opacity; - } -.leaflet-fade-anim .leaflet-popup { - opacity: 0; - -webkit-transition: opacity 0.2s linear; - -moz-transition: opacity 0.2s linear; - -o-transition: opacity 0.2s linear; - transition: opacity 0.2s linear; - } -.leaflet-fade-anim .leaflet-map-pane .leaflet-popup { - opacity: 1; - } -.leaflet-zoom-animated { - -webkit-transform-origin: 0 0; - -ms-transform-origin: 0 0; - transform-origin: 0 0; - } -.leaflet-zoom-anim .leaflet-zoom-animated { - will-change: transform; - } -.leaflet-zoom-anim .leaflet-zoom-animated { - -webkit-transition: -webkit-transform 0.25s cubic-bezier(0,0,0.25,1); - -moz-transition: -moz-transform 0.25s cubic-bezier(0,0,0.25,1); - -o-transition: -o-transform 0.25s cubic-bezier(0,0,0.25,1); - transition: transform 0.25s cubic-bezier(0,0,0.25,1); - } -.leaflet-zoom-anim .leaflet-tile, -.leaflet-pan-anim .leaflet-tile { - -webkit-transition: none; - -moz-transition: none; - -o-transition: none; - transition: none; - } - -.leaflet-zoom-anim .leaflet-zoom-hide { - visibility: hidden; - } - - -/* cursors */ - -.leaflet-interactive { - cursor: pointer; - } -.leaflet-grab { - cursor: -webkit-grab; - cursor: -moz-grab; - } -.leaflet-crosshair, -.leaflet-crosshair .leaflet-interactive { - cursor: crosshair; - } -.leaflet-popup-pane, -.leaflet-control { - cursor: auto; - } -.leaflet-dragging .leaflet-grab, -.leaflet-dragging .leaflet-grab .leaflet-interactive, -.leaflet-dragging .leaflet-marker-draggable { - cursor: move; - cursor: -webkit-grabbing; - cursor: -moz-grabbing; - } - -/* marker & overlays interactivity */ -.leaflet-marker-icon, -.leaflet-marker-shadow, -.leaflet-image-layer, -.leaflet-pane > svg path, -.leaflet-tile-container { - pointer-events: none; - } - -.leaflet-marker-icon.leaflet-interactive, -.leaflet-image-layer.leaflet-interactive, -.leaflet-pane > svg path.leaflet-interactive { - pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */ - pointer-events: auto; - } - -/* visual tweaks */ - -.leaflet-container { - background: #ddd; - outline: 0; - } -.leaflet-container a { - color: #0078A8; - } -.leaflet-container a.leaflet-active { - outline: 2px solid orange; - } -.leaflet-zoom-box { - border: 2px dotted #38f; - background: rgba(255,255,255,0.5); - } - - -/* general typography */ -.leaflet-container { - font: 12px/1.5 "Helvetica Neue", Arial, Helvetica, sans-serif; - } - - -/* general toolbar styles */ - -.leaflet-bar { - box-shadow: 0 1px 5px rgba(0,0,0,0.65); - border-radius: 4px; - } -.leaflet-bar a, -.leaflet-bar a:hover { - background-color: #fff; - border-bottom: 1px solid #ccc; - width: 26px; - height: 26px; - line-height: 26px; - display: block; - text-align: center; - text-decoration: none; - color: black; - } -.leaflet-bar a, -.leaflet-control-layers-toggle { - background-position: 50% 50%; - background-repeat: no-repeat; - display: block; - } -.leaflet-bar a:hover { - background-color: #f4f4f4; - } -.leaflet-bar a:first-child { - border-top-left-radius: 4px; - border-top-right-radius: 4px; - } -.leaflet-bar a:last-child { - border-bottom-left-radius: 4px; - border-bottom-right-radius: 4px; - border-bottom: none; - } -.leaflet-bar a.leaflet-disabled { - cursor: default; - background-color: #f4f4f4; - color: #bbb; - } - -.leaflet-touch .leaflet-bar a { - width: 30px; - height: 30px; - line-height: 30px; - } -.leaflet-touch .leaflet-bar a:first-child { - border-top-left-radius: 2px; - border-top-right-radius: 2px; - } -.leaflet-touch .leaflet-bar a:last-child { - border-bottom-left-radius: 2px; - border-bottom-right-radius: 2px; - } - -/* zoom control */ - -.leaflet-control-zoom-in, -.leaflet-control-zoom-out { - font: bold 18px 'Lucida Console', Monaco, monospace; - text-indent: 1px; - } - -.leaflet-touch .leaflet-control-zoom-in, .leaflet-touch .leaflet-control-zoom-out { - font-size: 22px; - } - - -/* layers control */ - -.leaflet-control-layers { - box-shadow: 0 1px 5px rgba(0,0,0,0.4); - background: #fff; - border-radius: 5px; - } -.leaflet-control-layers-toggle { - background-image: url(images/layers.png); - width: 36px; - height: 36px; - } -.leaflet-retina .leaflet-control-layers-toggle { - background-image: url(images/layers-2x.png); - background-size: 26px 26px; - } -.leaflet-touch .leaflet-control-layers-toggle { - width: 44px; - height: 44px; - } -.leaflet-control-layers .leaflet-control-layers-list, -.leaflet-control-layers-expanded .leaflet-control-layers-toggle { - display: none; - } -.leaflet-control-layers-expanded .leaflet-control-layers-list { - display: block; - position: relative; - } -.leaflet-control-layers-expanded { - padding: 6px 10px 6px 6px; - color: #333; - background: #fff; - } -.leaflet-control-layers-scrollbar { - overflow-y: scroll; - overflow-x: hidden; - padding-right: 5px; - } -.leaflet-control-layers-selector { - margin-top: 2px; - position: relative; - top: 1px; - } -.leaflet-control-layers label { - display: block; - } -.leaflet-control-layers-separator { - height: 0; - border-top: 1px solid #ddd; - margin: 5px -10px 5px -6px; - } - -/* Default icon URLs */ -.leaflet-default-icon-path { - background-image: url(images/marker-icon.png); - } - - -/* attribution and scale controls */ - -.leaflet-container .leaflet-control-attribution { - background: #fff; - background: rgba(255, 255, 255, 0.7); - margin: 0; - } -.leaflet-control-attribution, -.leaflet-control-scale-line { - padding: 0 5px; - color: #333; - } -.leaflet-control-attribution a { - text-decoration: none; - } -.leaflet-control-attribution a:hover { - text-decoration: underline; - } -.leaflet-container .leaflet-control-attribution, -.leaflet-container .leaflet-control-scale { - font-size: 11px; - } -.leaflet-left .leaflet-control-scale { - margin-left: 5px; - } -.leaflet-bottom .leaflet-control-scale { - margin-bottom: 5px; - } -.leaflet-control-scale-line { - border: 2px solid #777; - border-top: none; - line-height: 1.1; - padding: 2px 5px 1px; - font-size: 11px; - white-space: nowrap; - overflow: hidden; - -moz-box-sizing: border-box; - box-sizing: border-box; - - background: #fff; - background: rgba(255, 255, 255, 0.5); - } -.leaflet-control-scale-line:not(:first-child) { - border-top: 2px solid #777; - border-bottom: none; - margin-top: -2px; - } -.leaflet-control-scale-line:not(:first-child):not(:last-child) { - border-bottom: 2px solid #777; - } - -.leaflet-touch .leaflet-control-attribution, -.leaflet-touch .leaflet-control-layers, -.leaflet-touch .leaflet-bar { - box-shadow: none; - } -.leaflet-touch .leaflet-control-layers, -.leaflet-touch .leaflet-bar { - border: 2px solid rgba(0,0,0,0.2); - background-clip: padding-box; - } - - -/* popup */ - -.leaflet-popup { - position: absolute; - text-align: center; - margin-bottom: 20px; - } -.leaflet-popup-content-wrapper { - padding: 1px; - text-align: left; - border-radius: 12px; - } -.leaflet-popup-content { - margin: 13px 19px; - line-height: 1.4; - } -.leaflet-popup-content p { - margin: 18px 0; - } -.leaflet-popup-tip-container { - width: 40px; - height: 20px; - position: absolute; - left: 50%; - margin-left: -20px; - overflow: hidden; - pointer-events: none; - } -.leaflet-popup-tip { - width: 17px; - height: 17px; - padding: 1px; - - margin: -10px auto 0; - - -webkit-transform: rotate(45deg); - -moz-transform: rotate(45deg); - -ms-transform: rotate(45deg); - -o-transform: rotate(45deg); - transform: rotate(45deg); - } -.leaflet-popup-content-wrapper, -.leaflet-popup-tip { - background: white; - color: #333; - box-shadow: 0 3px 14px rgba(0,0,0,0.4); - } -.leaflet-container a.leaflet-popup-close-button { - position: absolute; - top: 0; - right: 0; - padding: 4px 4px 0 0; - border: none; - text-align: center; - width: 18px; - height: 14px; - font: 16px/14px Tahoma, Verdana, sans-serif; - color: #c3c3c3; - text-decoration: none; - font-weight: bold; - background: transparent; - } -.leaflet-container a.leaflet-popup-close-button:hover { - color: #999; - } -.leaflet-popup-scrolled { - overflow: auto; - border-bottom: 1px solid #ddd; - border-top: 1px solid #ddd; - } - -.leaflet-oldie .leaflet-popup-content-wrapper { - zoom: 1; - } -.leaflet-oldie .leaflet-popup-tip { - width: 24px; - margin: 0 auto; - - -ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)"; - filter: progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678); - } -.leaflet-oldie .leaflet-popup-tip-container { - margin-top: -1px; - } - -.leaflet-oldie .leaflet-control-zoom, -.leaflet-oldie .leaflet-control-layers, -.leaflet-oldie .leaflet-popup-content-wrapper, -.leaflet-oldie .leaflet-popup-tip { - border: 1px solid #999; - } - - -/* div icon */ - -.leaflet-div-icon { - background: #fff; - border: 1px solid #666; - } - - -/* Tooltip */ -/* Base styles for the element that has a tooltip */ -.leaflet-tooltip { - position: absolute; - padding: 6px; - background-color: #fff; - border: 1px solid #fff; - border-radius: 3px; - color: #222; - white-space: nowrap; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - pointer-events: none; - box-shadow: 0 1px 3px rgba(0,0,0,0.4); - } -.leaflet-tooltip.leaflet-clickable { - cursor: pointer; - pointer-events: auto; - } -.leaflet-tooltip-top:before, -.leaflet-tooltip-bottom:before, -.leaflet-tooltip-left:before, -.leaflet-tooltip-right:before { - position: absolute; - pointer-events: none; - border: 6px solid transparent; - background: transparent; - content: ""; - } - -/* Directions */ - -.leaflet-tooltip-bottom { - margin-top: 6px; -} -.leaflet-tooltip-top { - margin-top: -6px; -} -.leaflet-tooltip-bottom:before, -.leaflet-tooltip-top:before { - left: 50%; - margin-left: -6px; - } -.leaflet-tooltip-top:before { - bottom: 0; - margin-bottom: -12px; - border-top-color: #fff; - } -.leaflet-tooltip-bottom:before { - top: 0; - margin-top: -12px; - margin-left: -6px; - border-bottom-color: #fff; - } -.leaflet-tooltip-left { - margin-left: -6px; -} -.leaflet-tooltip-right { - margin-left: 6px; -} -.leaflet-tooltip-left:before, -.leaflet-tooltip-right:before { - top: 50%; - margin-top: -6px; - } -.leaflet-tooltip-left:before { - right: 0; - margin-right: -12px; - border-left-color: #fff; - } -.leaflet-tooltip-right:before { - left: 0; - margin-left: -12px; - border-right-color: #fff; - } diff --git a/inst/doc/neotoma2-package_files/leaflet-1.3.1/leaflet.js b/inst/doc/neotoma2-package_files/leaflet-1.3.1/leaflet.js deleted file mode 100644 index 4eca8af..0000000 --- a/inst/doc/neotoma2-package_files/leaflet-1.3.1/leaflet.js +++ /dev/null @@ -1,5 +0,0 @@ -/* @preserve - * Leaflet 1.3.1+Detached: ba6f97fff8647e724e4dfe66d2ed7da11f908989.ba6f97f, a JS library for interactive maps. https://leafletjs.com - * (c) 2010-2017 Vladimir Agafonkin, (c) 2010-2011 CloudMade - */ -!function(t,i){"object"==typeof exports&&"undefined"!=typeof module?i(exports):"function"==typeof define&&define.amd?define(["exports"],i):i(t.L={})}(this,function(t){"use strict";function i(t){var i,e,n,o;for(e=1,n=arguments.length;e=0}function I(t,i,e,n){return"touchstart"===i?O(t,e,n):"touchmove"===i?W(t,e,n):"touchend"===i&&H(t,e,n),this}function B(t,i,e){var n=t["_leaflet_"+i+e];return"touchstart"===i?t.removeEventListener(Qi,n,!1):"touchmove"===i?t.removeEventListener(te,n,!1):"touchend"===i&&(t.removeEventListener(ie,n,!1),t.removeEventListener(ee,n,!1)),this}function O(t,i,n){var o=e(function(t){if("mouse"!==t.pointerType&&t.MSPOINTER_TYPE_MOUSE&&t.pointerType!==t.MSPOINTER_TYPE_MOUSE){if(!(ne.indexOf(t.target.tagName)<0))return;$(t)}j(t,i)});t["_leaflet_touchstart"+n]=o,t.addEventListener(Qi,o,!1),se||(document.documentElement.addEventListener(Qi,R,!0),document.documentElement.addEventListener(te,D,!0),document.documentElement.addEventListener(ie,N,!0),document.documentElement.addEventListener(ee,N,!0),se=!0)}function R(t){oe[t.pointerId]=t,re++}function D(t){oe[t.pointerId]&&(oe[t.pointerId]=t)}function N(t){delete oe[t.pointerId],re--}function j(t,i){t.touches=[];for(var e in oe)t.touches.push(oe[e]);t.changedTouches=[t],i(t)}function W(t,i,e){var n=function(t){(t.pointerType!==t.MSPOINTER_TYPE_MOUSE&&"mouse"!==t.pointerType||0!==t.buttons)&&j(t,i)};t["_leaflet_touchmove"+e]=n,t.addEventListener(te,n,!1)}function H(t,i,e){var n=function(t){j(t,i)};t["_leaflet_touchend"+e]=n,t.addEventListener(ie,n,!1),t.addEventListener(ee,n,!1)}function F(t,i,e){function n(t){var i;if(Ui){if(!Pi||"mouse"===t.pointerType)return;i=re}else i=t.touches.length;if(!(i>1)){var e=Date.now(),n=e-(s||e);r=t.touches?t.touches[0]:t,a=n>0&&n<=h,s=e}}function o(t){if(a&&!r.cancelBubble){if(Ui){if(!Pi||"mouse"===t.pointerType)return;var e,n,o={};for(n in r)e=r[n],o[n]=e&&e.bind?e.bind(r):e;r=o}r.type="dblclick",i(r),s=null}}var s,r,a=!1,h=250;return t[ue+ae+e]=n,t[ue+he+e]=o,t[ue+"dblclick"+e]=i,t.addEventListener(ae,n,!1),t.addEventListener(he,o,!1),t.addEventListener("dblclick",i,!1),this}function U(t,i){var e=t[ue+ae+i],n=t[ue+he+i],o=t[ue+"dblclick"+i];return t.removeEventListener(ae,e,!1),t.removeEventListener(he,n,!1),Pi||t.removeEventListener("dblclick",o,!1),this}function V(t,i,e,n){if("object"==typeof i)for(var o in i)G(t,o,i[o],e);else for(var s=0,r=(i=u(i)).length;s100&&n<500||t.target._simulatedClick&&!t._simulated?Q(t):(pi=e,i(t))}function rt(t){return"string"==typeof t?document.getElementById(t):t}function at(t,i){var e=t.style[i]||t.currentStyle&&t.currentStyle[i];if((!e||"auto"===e)&&document.defaultView){var n=document.defaultView.getComputedStyle(t,null);e=n?n[i]:null}return"auto"===e?null:e}function ht(t,i,e){var n=document.createElement(t);return n.className=i||"",e&&e.appendChild(n),n}function ut(t){var i=t.parentNode;i&&i.removeChild(t)}function lt(t){for(;t.firstChild;)t.removeChild(t.firstChild)}function ct(t){var i=t.parentNode;i.lastChild!==t&&i.appendChild(t)}function _t(t){var i=t.parentNode;i.firstChild!==t&&i.insertBefore(t,i.firstChild)}function dt(t,i){if(void 0!==t.classList)return t.classList.contains(i);var e=gt(t);return e.length>0&&new RegExp("(^|\\s)"+i+"(\\s|$)").test(e)}function pt(t,i){if(void 0!==t.classList)for(var e=u(i),n=0,o=e.length;nh&&(s=r,h=a);h>e&&(i[s]=1,Et(t,i,e,n,s),Et(t,i,e,s,o))}function kt(t,i){for(var e=[t[0]],n=1,o=0,s=t.length;ni&&(e.push(t[n]),o=n);return oi.max.x&&(e|=2),t.yi.max.y&&(e|=8),e}function Ot(t,i){var e=i.x-t.x,n=i.y-t.y;return e*e+n*n}function Rt(t,i,e,n){var o,s=i.x,r=i.y,a=e.x-s,h=e.y-r,u=a*a+h*h;return u>0&&((o=((t.x-s)*a+(t.y-r)*h)/u)>1?(s=e.x,r=e.y):o>0&&(s+=a*o,r+=h*o)),a=t.x-s,h=t.y-r,n?a*a+h*h:new x(s,r)}function Dt(t){return!ei(t[0])||"object"!=typeof t[0][0]&&void 0!==t[0][0]}function Nt(t){return console.warn("Deprecated use of _flat, please use L.LineUtil.isFlat instead."),Dt(t)}function jt(t,i,e){var n,o,s,r,a,h,u,l,c,_=[1,4,2,8];for(o=0,u=t.length;o0?Math.floor(t):Math.ceil(t)};x.prototype={clone:function(){return new x(this.x,this.y)},add:function(t){return this.clone()._add(w(t))},_add:function(t){return this.x+=t.x,this.y+=t.y,this},subtract:function(t){return this.clone()._subtract(w(t))},_subtract:function(t){return this.x-=t.x,this.y-=t.y,this},divideBy:function(t){return this.clone()._divideBy(t)},_divideBy:function(t){return this.x/=t,this.y/=t,this},multiplyBy:function(t){return this.clone()._multiplyBy(t)},_multiplyBy:function(t){return this.x*=t,this.y*=t,this},scaleBy:function(t){return new x(this.x*t.x,this.y*t.y)},unscaleBy:function(t){return new x(this.x/t.x,this.y/t.y)},round:function(){return this.clone()._round()},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},floor:function(){return this.clone()._floor()},_floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this},ceil:function(){return this.clone()._ceil()},_ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this},trunc:function(){return this.clone()._trunc()},_trunc:function(){return this.x=li(this.x),this.y=li(this.y),this},distanceTo:function(t){var i=(t=w(t)).x-this.x,e=t.y-this.y;return Math.sqrt(i*i+e*e)},equals:function(t){return(t=w(t)).x===this.x&&t.y===this.y},contains:function(t){return t=w(t),Math.abs(t.x)<=Math.abs(this.x)&&Math.abs(t.y)<=Math.abs(this.y)},toString:function(){return"Point("+a(this.x)+", "+a(this.y)+")"}},P.prototype={extend:function(t){return t=w(t),this.min||this.max?(this.min.x=Math.min(t.x,this.min.x),this.max.x=Math.max(t.x,this.max.x),this.min.y=Math.min(t.y,this.min.y),this.max.y=Math.max(t.y,this.max.y)):(this.min=t.clone(),this.max=t.clone()),this},getCenter:function(t){return new x((this.min.x+this.max.x)/2,(this.min.y+this.max.y)/2,t)},getBottomLeft:function(){return new x(this.min.x,this.max.y)},getTopRight:function(){return new x(this.max.x,this.min.y)},getTopLeft:function(){return this.min},getBottomRight:function(){return this.max},getSize:function(){return this.max.subtract(this.min)},contains:function(t){var i,e;return(t="number"==typeof t[0]||t instanceof x?w(t):b(t))instanceof P?(i=t.min,e=t.max):i=e=t,i.x>=this.min.x&&e.x<=this.max.x&&i.y>=this.min.y&&e.y<=this.max.y},intersects:function(t){t=b(t);var i=this.min,e=this.max,n=t.min,o=t.max,s=o.x>=i.x&&n.x<=e.x,r=o.y>=i.y&&n.y<=e.y;return s&&r},overlaps:function(t){t=b(t);var i=this.min,e=this.max,n=t.min,o=t.max,s=o.x>i.x&&n.xi.y&&n.y=n.lat&&e.lat<=o.lat&&i.lng>=n.lng&&e.lng<=o.lng},intersects:function(t){t=z(t);var i=this._southWest,e=this._northEast,n=t.getSouthWest(),o=t.getNorthEast(),s=o.lat>=i.lat&&n.lat<=e.lat,r=o.lng>=i.lng&&n.lng<=e.lng;return s&&r},overlaps:function(t){t=z(t);var i=this._southWest,e=this._northEast,n=t.getSouthWest(),o=t.getNorthEast(),s=o.lat>i.lat&&n.lati.lng&&n.lng1,Yi=!!document.createElement("canvas").getContext,Xi=!(!document.createElementNS||!E("svg").createSVGRect),Ji=!Xi&&function(){try{var t=document.createElement("div");t.innerHTML='';var i=t.firstChild;return i.style.behavior="url(#default#VML)",i&&"object"==typeof i.adj}catch(t){return!1}}(),$i=(Object.freeze||Object)({ie:wi,ielt9:Li,edge:Pi,webkit:bi,android:Ti,android23:zi,androidStock:Ci,opera:Zi,chrome:Si,gecko:Ei,safari:ki,phantom:Ai,opera12:Ii,win:Bi,ie3d:Oi,webkit3d:Ri,gecko3d:Di,any3d:Ni,mobile:ji,mobileWebkit:Wi,mobileWebkit3d:Hi,msPointer:Fi,pointer:Ui,touch:Vi,mobileOpera:qi,mobileGecko:Gi,retina:Ki,canvas:Yi,svg:Xi,vml:Ji}),Qi=Fi?"MSPointerDown":"pointerdown",te=Fi?"MSPointerMove":"pointermove",ie=Fi?"MSPointerUp":"pointerup",ee=Fi?"MSPointerCancel":"pointercancel",ne=["INPUT","SELECT","OPTION"],oe={},se=!1,re=0,ae=Fi?"MSPointerDown":Ui?"pointerdown":"touchstart",he=Fi?"MSPointerUp":Ui?"pointerup":"touchend",ue="_leaflet_",le="_leaflet_events",ce=Bi&&Si?2*window.devicePixelRatio:Ei?window.devicePixelRatio:1,_e={},de=(Object.freeze||Object)({on:V,off:q,stopPropagation:Y,disableScrollPropagation:X,disableClickPropagation:J,preventDefault:$,stop:Q,getMousePosition:tt,getWheelDelta:it,fakeStop:et,skipped:nt,isExternalTarget:ot,addListener:V,removeListener:q}),pe=xt(["transform","WebkitTransform","OTransform","MozTransform","msTransform"]),me=xt(["webkitTransition","transition","OTransition","MozTransition","msTransition"]),fe="webkitTransition"===me||"OTransition"===me?me+"End":"transitionend";if("onselectstart"in document)mi=function(){V(window,"selectstart",$)},fi=function(){q(window,"selectstart",$)};else{var ge=xt(["userSelect","WebkitUserSelect","OUserSelect","MozUserSelect","msUserSelect"]);mi=function(){if(ge){var t=document.documentElement.style;gi=t[ge],t[ge]="none"}},fi=function(){ge&&(document.documentElement.style[ge]=gi,gi=void 0)}}var ve,ye,xe=(Object.freeze||Object)({TRANSFORM:pe,TRANSITION:me,TRANSITION_END:fe,get:rt,getStyle:at,create:ht,remove:ut,empty:lt,toFront:ct,toBack:_t,hasClass:dt,addClass:pt,removeClass:mt,setClass:ft,getClass:gt,setOpacity:vt,testProp:xt,setTransform:wt,setPosition:Lt,getPosition:Pt,disableTextSelection:mi,enableTextSelection:fi,disableImageDrag:bt,enableImageDrag:Tt,preventOutline:zt,restoreOutline:Mt}),we=ui.extend({run:function(t,i,e,n){this.stop(),this._el=t,this._inProgress=!0,this._duration=e||.25,this._easeOutPower=1/Math.max(n||.5,.2),this._startPos=Pt(t),this._offset=i.subtract(this._startPos),this._startTime=+new Date,this.fire("start"),this._animate()},stop:function(){this._inProgress&&(this._step(!0),this._complete())},_animate:function(){this._animId=f(this._animate,this),this._step()},_step:function(t){var i=+new Date-this._startTime,e=1e3*this._duration;ithis.options.maxZoom)?this.setZoom(t):this},panInsideBounds:function(t,i){this._enforcingBounds=!0;var e=this.getCenter(),n=this._limitCenter(e,this._zoom,z(t));return e.equals(n)||this.panTo(n,i),this._enforcingBounds=!1,this},invalidateSize:function(t){if(!this._loaded)return this;t=i({animate:!1,pan:!0},!0===t?{animate:!0}:t);var n=this.getSize();this._sizeChanged=!0,this._lastCenter=null;var o=this.getSize(),s=n.divideBy(2).round(),r=o.divideBy(2).round(),a=s.subtract(r);return a.x||a.y?(t.animate&&t.pan?this.panBy(a):(t.pan&&this._rawPanBy(a),this.fire("move"),t.debounceMoveend?(clearTimeout(this._sizeTimer),this._sizeTimer=setTimeout(e(this.fire,this,"moveend"),200)):this.fire("moveend")),this.fire("resize",{oldSize:n,newSize:o})):this},stop:function(){return this.setZoom(this._limitZoom(this._zoom)),this.options.zoomSnap||this.fire("viewreset"),this._stop()},locate:function(t){if(t=this._locateOptions=i({timeout:1e4,watch:!1},t),!("geolocation"in navigator))return this._handleGeolocationError({code:0,message:"Geolocation not supported."}),this;var n=e(this._handleGeolocationResponse,this),o=e(this._handleGeolocationError,this);return t.watch?this._locationWatchId=navigator.geolocation.watchPosition(n,o,t):navigator.geolocation.getCurrentPosition(n,o,t),this},stopLocate:function(){return navigator.geolocation&&navigator.geolocation.clearWatch&&navigator.geolocation.clearWatch(this._locationWatchId),this._locateOptions&&(this._locateOptions.setView=!1),this},_handleGeolocationError:function(t){var i=t.code,e=t.message||(1===i?"permission denied":2===i?"position unavailable":"timeout");this._locateOptions.setView&&!this._loaded&&this.fitWorld(),this.fire("locationerror",{code:i,message:"Geolocation error: "+e+"."})},_handleGeolocationResponse:function(t){var i=new M(t.coords.latitude,t.coords.longitude),e=i.toBounds(t.coords.accuracy),n=this._locateOptions;if(n.setView){var o=this.getBoundsZoom(e);this.setView(i,n.maxZoom?Math.min(o,n.maxZoom):o)}var s={latlng:i,bounds:e,timestamp:t.timestamp};for(var r in t.coords)"number"==typeof t.coords[r]&&(s[r]=t.coords[r]);this.fire("locationfound",s)},addHandler:function(t,i){if(!i)return this;var e=this[t]=new i(this);return this._handlers.push(e),this.options[t]&&e.enable(),this},remove:function(){if(this._initEvents(!0),this._containerId!==this._container._leaflet_id)throw new Error("Map container is being reused by another instance");try{delete this._container._leaflet_id,delete this._containerId}catch(t){this._container._leaflet_id=void 0,this._containerId=void 0}void 0!==this._locationWatchId&&this.stopLocate(),this._stop(),ut(this._mapPane),this._clearControlPos&&this._clearControlPos(),this._clearHandlers(),this._loaded&&this.fire("unload");var t;for(t in this._layers)this._layers[t].remove();for(t in this._panes)ut(this._panes[t]);return this._layers=[],this._panes=[],delete this._mapPane,delete this._renderer,this},createPane:function(t,i){var e=ht("div","leaflet-pane"+(t?" leaflet-"+t.replace("Pane","")+"-pane":""),i||this._mapPane);return t&&(this._panes[t]=e),e},getCenter:function(){return this._checkIfLoaded(),this._lastCenter&&!this._moved()?this._lastCenter:this.layerPointToLatLng(this._getCenterLayerPoint())},getZoom:function(){return this._zoom},getBounds:function(){var t=this.getPixelBounds();return new T(this.unproject(t.getBottomLeft()),this.unproject(t.getTopRight()))},getMinZoom:function(){return void 0===this.options.minZoom?this._layersMinZoom||0:this.options.minZoom},getMaxZoom:function(){return void 0===this.options.maxZoom?void 0===this._layersMaxZoom?1/0:this._layersMaxZoom:this.options.maxZoom},getBoundsZoom:function(t,i,e){t=z(t),e=w(e||[0,0]);var n=this.getZoom()||0,o=this.getMinZoom(),s=this.getMaxZoom(),r=t.getNorthWest(),a=t.getSouthEast(),h=this.getSize().subtract(e),u=b(this.project(a,n),this.project(r,n)).getSize(),l=Ni?this.options.zoomSnap:1,c=h.x/u.x,_=h.y/u.y,d=i?Math.max(c,_):Math.min(c,_);return n=this.getScaleZoom(d,n),l&&(n=Math.round(n/(l/100))*(l/100),n=i?Math.ceil(n/l)*l:Math.floor(n/l)*l),Math.max(o,Math.min(s,n))},getSize:function(){return this._size&&!this._sizeChanged||(this._size=new x(this._container.clientWidth||0,this._container.clientHeight||0),this._sizeChanged=!1),this._size.clone()},getPixelBounds:function(t,i){var e=this._getTopLeftPoint(t,i);return new P(e,e.add(this.getSize()))},getPixelOrigin:function(){return this._checkIfLoaded(),this._pixelOrigin},getPixelWorldBounds:function(t){return this.options.crs.getProjectedBounds(void 0===t?this.getZoom():t)},getPane:function(t){return"string"==typeof t?this._panes[t]:t},getPanes:function(){return this._panes},getContainer:function(){return this._container},getZoomScale:function(t,i){var e=this.options.crs;return i=void 0===i?this._zoom:i,e.scale(t)/e.scale(i)},getScaleZoom:function(t,i){var e=this.options.crs;i=void 0===i?this._zoom:i;var n=e.zoom(t*e.scale(i));return isNaN(n)?1/0:n},project:function(t,i){return i=void 0===i?this._zoom:i,this.options.crs.latLngToPoint(C(t),i)},unproject:function(t,i){return i=void 0===i?this._zoom:i,this.options.crs.pointToLatLng(w(t),i)},layerPointToLatLng:function(t){var i=w(t).add(this.getPixelOrigin());return this.unproject(i)},latLngToLayerPoint:function(t){return this.project(C(t))._round()._subtract(this.getPixelOrigin())},wrapLatLng:function(t){return this.options.crs.wrapLatLng(C(t))},wrapLatLngBounds:function(t){return this.options.crs.wrapLatLngBounds(z(t))},distance:function(t,i){return this.options.crs.distance(C(t),C(i))},containerPointToLayerPoint:function(t){return w(t).subtract(this._getMapPanePos())},layerPointToContainerPoint:function(t){return w(t).add(this._getMapPanePos())},containerPointToLatLng:function(t){var i=this.containerPointToLayerPoint(w(t));return this.layerPointToLatLng(i)},latLngToContainerPoint:function(t){return this.layerPointToContainerPoint(this.latLngToLayerPoint(C(t)))},mouseEventToContainerPoint:function(t){return tt(t,this._container)},mouseEventToLayerPoint:function(t){return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(t))},mouseEventToLatLng:function(t){return this.layerPointToLatLng(this.mouseEventToLayerPoint(t))},_initContainer:function(t){var i=this._container=rt(t);if(!i)throw new Error("Map container not found.");if(i._leaflet_id)throw new Error("Map container is already initialized.");V(i,"scroll",this._onScroll,this),this._containerId=n(i)},_initLayout:function(){var t=this._container;this._fadeAnimated=this.options.fadeAnimation&&Ni,pt(t,"leaflet-container"+(Vi?" leaflet-touch":"")+(Ki?" leaflet-retina":"")+(Li?" leaflet-oldie":"")+(ki?" leaflet-safari":"")+(this._fadeAnimated?" leaflet-fade-anim":""));var i=at(t,"position");"absolute"!==i&&"relative"!==i&&"fixed"!==i&&(t.style.position="relative"),this._initPanes(),this._initControlPos&&this._initControlPos()},_initPanes:function(){var t=this._panes={};this._paneRenderers={},this._mapPane=this.createPane("mapPane",this._container),Lt(this._mapPane,new x(0,0)),this.createPane("tilePane"),this.createPane("shadowPane"),this.createPane("overlayPane"),this.createPane("markerPane"),this.createPane("tooltipPane"),this.createPane("popupPane"),this.options.markerZoomAnimation||(pt(t.markerPane,"leaflet-zoom-hide"),pt(t.shadowPane,"leaflet-zoom-hide"))},_resetView:function(t,i){Lt(this._mapPane,new x(0,0));var e=!this._loaded;this._loaded=!0,i=this._limitZoom(i),this.fire("viewprereset");var n=this._zoom!==i;this._moveStart(n,!1)._move(t,i)._moveEnd(n),this.fire("viewreset"),e&&this.fire("load")},_moveStart:function(t,i){return t&&this.fire("zoomstart"),i||this.fire("movestart"),this},_move:function(t,i,e){void 0===i&&(i=this._zoom);var n=this._zoom!==i;return this._zoom=i,this._lastCenter=t,this._pixelOrigin=this._getNewPixelOrigin(t),(n||e&&e.pinch)&&this.fire("zoom",e),this.fire("move",e)},_moveEnd:function(t){return t&&this.fire("zoomend"),this.fire("moveend")},_stop:function(){return g(this._flyToFrame),this._panAnim&&this._panAnim.stop(),this},_rawPanBy:function(t){Lt(this._mapPane,this._getMapPanePos().subtract(t))},_getZoomSpan:function(){return this.getMaxZoom()-this.getMinZoom()},_panInsideMaxBounds:function(){this._enforcingBounds||this.panInsideBounds(this.options.maxBounds)},_checkIfLoaded:function(){if(!this._loaded)throw new Error("Set map center and zoom first.")},_initEvents:function(t){this._targets={},this._targets[n(this._container)]=this;var i=t?q:V;i(this._container,"click dblclick mousedown mouseup mouseover mouseout mousemove contextmenu keypress",this._handleDOMEvent,this),this.options.trackResize&&i(window,"resize",this._onResize,this),Ni&&this.options.transform3DLimit&&(t?this.off:this.on).call(this,"moveend",this._onMoveEnd)},_onResize:function(){g(this._resizeRequest),this._resizeRequest=f(function(){this.invalidateSize({debounceMoveend:!0})},this)},_onScroll:function(){this._container.scrollTop=0,this._container.scrollLeft=0},_onMoveEnd:function(){var t=this._getMapPanePos();Math.max(Math.abs(t.x),Math.abs(t.y))>=this.options.transform3DLimit&&this._resetView(this.getCenter(),this.getZoom())},_findEventTargets:function(t,i){for(var e,o=[],s="mouseout"===i||"mouseover"===i,r=t.target||t.srcElement,a=!1;r;){if((e=this._targets[n(r)])&&("click"===i||"preclick"===i)&&!t._simulated&&this._draggableMoved(e)){a=!0;break}if(e&&e.listens(i,!0)){if(s&&!ot(r,t))break;if(o.push(e),s)break}if(r===this._container)break;r=r.parentNode}return o.length||a||s||!ot(r,t)||(o=[this]),o},_handleDOMEvent:function(t){if(this._loaded&&!nt(t)){var i=t.type;"mousedown"!==i&&"keypress"!==i||zt(t.target||t.srcElement),this._fireDOMEvent(t,i)}},_mouseEvents:["click","dblclick","mouseover","mouseout","contextmenu"],_fireDOMEvent:function(t,e,n){if("click"===t.type){var o=i({},t);o.type="preclick",this._fireDOMEvent(o,o.type,n)}if(!t._stopped&&(n=(n||[]).concat(this._findEventTargets(t,e))).length){var s=n[0];"contextmenu"===e&&s.listens(e,!0)&&$(t);var r={originalEvent:t};if("keypress"!==t.type){var a=s.getLatLng&&(!s._radius||s._radius<=10);r.containerPoint=a?this.latLngToContainerPoint(s.getLatLng()):this.mouseEventToContainerPoint(t),r.layerPoint=this.containerPointToLayerPoint(r.containerPoint),r.latlng=a?s.getLatLng():this.layerPointToLatLng(r.layerPoint)}for(var h=0;h0?Math.round(t-i)/2:Math.max(0,Math.ceil(t))-Math.max(0,Math.floor(i))},_limitZoom:function(t){var i=this.getMinZoom(),e=this.getMaxZoom(),n=Ni?this.options.zoomSnap:1;return n&&(t=Math.round(t/n)*n),Math.max(i,Math.min(e,t))},_onPanTransitionStep:function(){this.fire("move")},_onPanTransitionEnd:function(){mt(this._mapPane,"leaflet-pan-anim"),this.fire("moveend")},_tryAnimatedPan:function(t,i){var e=this._getCenterOffset(t)._trunc();return!(!0!==(i&&i.animate)&&!this.getSize().contains(e))&&(this.panBy(e,i),!0)},_createAnimProxy:function(){var t=this._proxy=ht("div","leaflet-proxy leaflet-zoom-animated");this._panes.mapPane.appendChild(t),this.on("zoomanim",function(t){var i=pe,e=this._proxy.style[i];wt(this._proxy,this.project(t.center,t.zoom),this.getZoomScale(t.zoom,1)),e===this._proxy.style[i]&&this._animatingZoom&&this._onZoomTransitionEnd()},this),this.on("load moveend",function(){var t=this.getCenter(),i=this.getZoom();wt(this._proxy,this.project(t,i),this.getZoomScale(i,1))},this),this._on("unload",this._destroyAnimProxy,this)},_destroyAnimProxy:function(){ut(this._proxy),delete this._proxy},_catchTransitionEnd:function(t){this._animatingZoom&&t.propertyName.indexOf("transform")>=0&&this._onZoomTransitionEnd()},_nothingToAnimate:function(){return!this._container.getElementsByClassName("leaflet-zoom-animated").length},_tryAnimatedZoom:function(t,i,e){if(this._animatingZoom)return!0;if(e=e||{},!this._zoomAnimated||!1===e.animate||this._nothingToAnimate()||Math.abs(i-this._zoom)>this.options.zoomAnimationThreshold)return!1;var n=this.getZoomScale(i),o=this._getCenterOffset(t)._divideBy(1-1/n);return!(!0!==e.animate&&!this.getSize().contains(o))&&(f(function(){this._moveStart(!0,!1)._animateZoom(t,i,!0)},this),!0)},_animateZoom:function(t,i,n,o){this._mapPane&&(n&&(this._animatingZoom=!0,this._animateToCenter=t,this._animateToZoom=i,pt(this._mapPane,"leaflet-zoom-anim")),this.fire("zoomanim",{center:t,zoom:i,noUpdate:o}),setTimeout(e(this._onZoomTransitionEnd,this),250))},_onZoomTransitionEnd:function(){this._animatingZoom&&(this._mapPane&&mt(this._mapPane,"leaflet-zoom-anim"),this._animatingZoom=!1,this._move(this._animateToCenter,this._animateToZoom),f(function(){this._moveEnd(!0)},this))}}),Pe=v.extend({options:{position:"topright"},initialize:function(t){l(this,t)},getPosition:function(){return this.options.position},setPosition:function(t){var i=this._map;return i&&i.removeControl(this),this.options.position=t,i&&i.addControl(this),this},getContainer:function(){return this._container},addTo:function(t){this.remove(),this._map=t;var i=this._container=this.onAdd(t),e=this.getPosition(),n=t._controlCorners[e];return pt(i,"leaflet-control"),-1!==e.indexOf("bottom")?n.insertBefore(i,n.firstChild):n.appendChild(i),this},remove:function(){return this._map?(ut(this._container),this.onRemove&&this.onRemove(this._map),this._map=null,this):this},_refocusOnMap:function(t){this._map&&t&&t.screenX>0&&t.screenY>0&&this._map.getContainer().focus()}}),be=function(t){return new Pe(t)};Le.include({addControl:function(t){return t.addTo(this),this},removeControl:function(t){return t.remove(),this},_initControlPos:function(){function t(t,o){var s=e+t+" "+e+o;i[t+o]=ht("div",s,n)}var i=this._controlCorners={},e="leaflet-",n=this._controlContainer=ht("div",e+"control-container",this._container);t("top","left"),t("top","right"),t("bottom","left"),t("bottom","right")},_clearControlPos:function(){for(var t in this._controlCorners)ut(this._controlCorners[t]);ut(this._controlContainer),delete this._controlCorners,delete this._controlContainer}});var Te=Pe.extend({options:{collapsed:!0,position:"topright",autoZIndex:!0,hideSingleBase:!1,sortLayers:!1,sortFunction:function(t,i,e,n){return e1,this._baseLayersList.style.display=t?"":"none"),this._separator.style.display=i&&t?"":"none",this},_onLayerChange:function(t){this._handlingClick||this._update();var i=this._getLayer(n(t.target)),e=i.overlay?"add"===t.type?"overlayadd":"overlayremove":"add"===t.type?"baselayerchange":null;e&&this._map.fire(e,i)},_createRadioElement:function(t,i){var e='",n=document.createElement("div");return n.innerHTML=e,n.firstChild},_addItem:function(t){var i,e=document.createElement("label"),o=this._map.hasLayer(t.layer);t.overlay?((i=document.createElement("input")).type="checkbox",i.className="leaflet-control-layers-selector",i.defaultChecked=o):i=this._createRadioElement("leaflet-base-layers",o),this._layerControlInputs.push(i),i.layerId=n(t.layer),V(i,"click",this._onInputClick,this);var s=document.createElement("span");s.innerHTML=" "+t.name;var r=document.createElement("div");return e.appendChild(r),r.appendChild(i),r.appendChild(s),(t.overlay?this._overlaysList:this._baseLayersList).appendChild(e),this._checkDisabledLayers(),e},_onInputClick:function(){var t,i,e=this._layerControlInputs,n=[],o=[];this._handlingClick=!0;for(var s=e.length-1;s>=0;s--)t=e[s],i=this._getLayer(t.layerId).layer,t.checked?n.push(i):t.checked||o.push(i);for(s=0;s=0;o--)t=e[o],i=this._getLayer(t.layerId).layer,t.disabled=void 0!==i.options.minZoom&&ni.options.maxZoom},_expandIfNotCollapsed:function(){return this._map&&!this.options.collapsed&&this.expand(),this},_expand:function(){return this.expand()},_collapse:function(){return this.collapse()}}),ze=Pe.extend({options:{position:"topleft",zoomInText:"+",zoomInTitle:"Zoom in",zoomOutText:"−",zoomOutTitle:"Zoom out"},onAdd:function(t){var i="leaflet-control-zoom",e=ht("div",i+" leaflet-bar"),n=this.options;return this._zoomInButton=this._createButton(n.zoomInText,n.zoomInTitle,i+"-in",e,this._zoomIn),this._zoomOutButton=this._createButton(n.zoomOutText,n.zoomOutTitle,i+"-out",e,this._zoomOut),this._updateDisabled(),t.on("zoomend zoomlevelschange",this._updateDisabled,this),e},onRemove:function(t){t.off("zoomend zoomlevelschange",this._updateDisabled,this)},disable:function(){return this._disabled=!0,this._updateDisabled(),this},enable:function(){return this._disabled=!1,this._updateDisabled(),this},_zoomIn:function(t){!this._disabled&&this._map._zoomthis._map.getMinZoom()&&this._map.zoomOut(this._map.options.zoomDelta*(t.shiftKey?3:1))},_createButton:function(t,i,e,n,o){var s=ht("a",e,n);return s.innerHTML=t,s.href="#",s.title=i,s.setAttribute("role","button"),s.setAttribute("aria-label",i),J(s),V(s,"click",Q),V(s,"click",o,this),V(s,"click",this._refocusOnMap,this),s},_updateDisabled:function(){var t=this._map,i="leaflet-disabled";mt(this._zoomInButton,i),mt(this._zoomOutButton,i),(this._disabled||t._zoom===t.getMinZoom())&&pt(this._zoomOutButton,i),(this._disabled||t._zoom===t.getMaxZoom())&&pt(this._zoomInButton,i)}});Le.mergeOptions({zoomControl:!0}),Le.addInitHook(function(){this.options.zoomControl&&(this.zoomControl=new ze,this.addControl(this.zoomControl))});var Me=Pe.extend({options:{position:"bottomleft",maxWidth:100,metric:!0,imperial:!0},onAdd:function(t){var i=ht("div","leaflet-control-scale"),e=this.options;return this._addScales(e,"leaflet-control-scale-line",i),t.on(e.updateWhenIdle?"moveend":"move",this._update,this),t.whenReady(this._update,this),i},onRemove:function(t){t.off(this.options.updateWhenIdle?"moveend":"move",this._update,this)},_addScales:function(t,i,e){t.metric&&(this._mScale=ht("div",i,e)),t.imperial&&(this._iScale=ht("div",i,e))},_update:function(){var t=this._map,i=t.getSize().y/2,e=t.distance(t.containerPointToLatLng([0,i]),t.containerPointToLatLng([this.options.maxWidth,i]));this._updateScales(e)},_updateScales:function(t){this.options.metric&&t&&this._updateMetric(t),this.options.imperial&&t&&this._updateImperial(t)},_updateMetric:function(t){var i=this._getRoundNum(t),e=i<1e3?i+" m":i/1e3+" km";this._updateScale(this._mScale,e,i/t)},_updateImperial:function(t){var i,e,n,o=3.2808399*t;o>5280?(i=o/5280,e=this._getRoundNum(i),this._updateScale(this._iScale,e+" mi",e/i)):(n=this._getRoundNum(o),this._updateScale(this._iScale,n+" ft",n/o))},_updateScale:function(t,i,e){t.style.width=Math.round(this.options.maxWidth*e)+"px",t.innerHTML=i},_getRoundNum:function(t){var i=Math.pow(10,(Math.floor(t)+"").length-1),e=t/i;return e=e>=10?10:e>=5?5:e>=3?3:e>=2?2:1,i*e}}),Ce=Pe.extend({options:{position:"bottomright",prefix:'Leaflet'},initialize:function(t){l(this,t),this._attributions={}},onAdd:function(t){t.attributionControl=this,this._container=ht("div","leaflet-control-attribution"),J(this._container);for(var i in t._layers)t._layers[i].getAttribution&&this.addAttribution(t._layers[i].getAttribution());return this._update(),this._container},setPrefix:function(t){return this.options.prefix=t,this._update(),this},addAttribution:function(t){return t?(this._attributions[t]||(this._attributions[t]=0),this._attributions[t]++,this._update(),this):this},removeAttribution:function(t){return t?(this._attributions[t]&&(this._attributions[t]--,this._update()),this):this},_update:function(){if(this._map){var t=[];for(var i in this._attributions)this._attributions[i]&&t.push(i);var e=[];this.options.prefix&&e.push(this.options.prefix),t.length&&e.push(t.join(", ")),this._container.innerHTML=e.join(" | ")}}});Le.mergeOptions({attributionControl:!0}),Le.addInitHook(function(){this.options.attributionControl&&(new Ce).addTo(this)});Pe.Layers=Te,Pe.Zoom=ze,Pe.Scale=Me,Pe.Attribution=Ce,be.layers=function(t,i,e){return new Te(t,i,e)},be.zoom=function(t){return new ze(t)},be.scale=function(t){return new Me(t)},be.attribution=function(t){return new Ce(t)};var Ze=v.extend({initialize:function(t){this._map=t},enable:function(){return this._enabled?this:(this._enabled=!0,this.addHooks(),this)},disable:function(){return this._enabled?(this._enabled=!1,this.removeHooks(),this):this},enabled:function(){return!!this._enabled}});Ze.addTo=function(t,i){return t.addHandler(i,this),this};var Se,Ee={Events:hi},ke=Vi?"touchstart mousedown":"mousedown",Ae={mousedown:"mouseup",touchstart:"touchend",pointerdown:"touchend",MSPointerDown:"touchend"},Ie={mousedown:"mousemove",touchstart:"touchmove",pointerdown:"touchmove",MSPointerDown:"touchmove"},Be=ui.extend({options:{clickTolerance:3},initialize:function(t,i,e,n){l(this,n),this._element=t,this._dragStartTarget=i||t,this._preventOutline=e},enable:function(){this._enabled||(V(this._dragStartTarget,ke,this._onDown,this),this._enabled=!0)},disable:function(){this._enabled&&(Be._dragging===this&&this.finishDrag(),q(this._dragStartTarget,ke,this._onDown,this),this._enabled=!1,this._moved=!1)},_onDown:function(t){if(!t._simulated&&this._enabled&&(this._moved=!1,!dt(this._element,"leaflet-zoom-anim")&&!(Be._dragging||t.shiftKey||1!==t.which&&1!==t.button&&!t.touches||(Be._dragging=this,this._preventOutline&&zt(this._element),bt(),mi(),this._moving)))){this.fire("down");var i=t.touches?t.touches[0]:t;this._startPoint=new x(i.clientX,i.clientY),V(document,Ie[t.type],this._onMove,this),V(document,Ae[t.type],this._onUp,this)}},_onMove:function(t){if(!t._simulated&&this._enabled)if(t.touches&&t.touches.length>1)this._moved=!0;else{var i=t.touches&&1===t.touches.length?t.touches[0]:t,e=new x(i.clientX,i.clientY).subtract(this._startPoint);(e.x||e.y)&&(Math.abs(e.x)+Math.abs(e.y)1e-7;h++)i=s*Math.sin(a),i=Math.pow((1-i)/(1+i),s/2),a+=u=Math.PI/2-2*Math.atan(r*i)-a;return new M(a*e,t.x*e/n)}},je=(Object.freeze||Object)({LonLat:De,Mercator:Ne,SphericalMercator:di}),We=i({},_i,{code:"EPSG:3395",projection:Ne,transformation:function(){var t=.5/(Math.PI*Ne.R);return S(t,.5,-t,.5)}()}),He=i({},_i,{code:"EPSG:4326",projection:De,transformation:S(1/180,1,-1/180,.5)}),Fe=i({},ci,{projection:De,transformation:S(1,0,-1,0),scale:function(t){return Math.pow(2,t)},zoom:function(t){return Math.log(t)/Math.LN2},distance:function(t,i){var e=i.lng-t.lng,n=i.lat-t.lat;return Math.sqrt(e*e+n*n)},infinite:!0});ci.Earth=_i,ci.EPSG3395=We,ci.EPSG3857=vi,ci.EPSG900913=yi,ci.EPSG4326=He,ci.Simple=Fe;var Ue=ui.extend({options:{pane:"overlayPane",attribution:null,bubblingMouseEvents:!0},addTo:function(t){return t.addLayer(this),this},remove:function(){return this.removeFrom(this._map||this._mapToAdd)},removeFrom:function(t){return t&&t.removeLayer(this),this},getPane:function(t){return this._map.getPane(t?this.options[t]||t:this.options.pane)},addInteractiveTarget:function(t){return this._map._targets[n(t)]=this,this},removeInteractiveTarget:function(t){return delete this._map._targets[n(t)],this},getAttribution:function(){return this.options.attribution},_layerAdd:function(t){var i=t.target;if(i.hasLayer(this)){if(this._map=i,this._zoomAnimated=i._zoomAnimated,this.getEvents){var e=this.getEvents();i.on(e,this),this.once("remove",function(){i.off(e,this)},this)}this.onAdd(i),this.getAttribution&&i.attributionControl&&i.attributionControl.addAttribution(this.getAttribution()),this.fire("add"),i.fire("layeradd",{layer:this})}}});Le.include({addLayer:function(t){if(!t._layerAdd)throw new Error("The provided object is not a Layer.");var i=n(t);return this._layers[i]?this:(this._layers[i]=t,t._mapToAdd=this,t.beforeAdd&&t.beforeAdd(this),this.whenReady(t._layerAdd,t),this)},removeLayer:function(t){var i=n(t);return this._layers[i]?(this._loaded&&t.onRemove(this),t.getAttribution&&this.attributionControl&&this.attributionControl.removeAttribution(t.getAttribution()),delete this._layers[i],this._loaded&&(this.fire("layerremove",{layer:t}),t.fire("remove")),t._map=t._mapToAdd=null,this):this},hasLayer:function(t){return!!t&&n(t)in this._layers},eachLayer:function(t,i){for(var e in this._layers)t.call(i,this._layers[e]);return this},_addLayers:function(t){for(var i=0,e=(t=t?ei(t)?t:[t]:[]).length;ithis._layersMaxZoom&&this.setZoom(this._layersMaxZoom),void 0===this.options.minZoom&&this._layersMinZoom&&this.getZoom()i)return r=(n-i)/e,this._map.layerPointToLatLng([s.x-r*(s.x-o.x),s.y-r*(s.y-o.y)])},getBounds:function(){return this._bounds},addLatLng:function(t,i){return i=i||this._defaultShape(),t=C(t),i.push(t),this._bounds.extend(t),this.redraw()},_setLatLngs:function(t){this._bounds=new T,this._latlngs=this._convertLatLngs(t)},_defaultShape:function(){return Dt(this._latlngs)?this._latlngs:this._latlngs[0]},_convertLatLngs:function(t){for(var i=[],e=Dt(t),n=0,o=t.length;n=2&&i[0]instanceof M&&i[0].equals(i[e-1])&&i.pop(),i},_setLatLngs:function(t){tn.prototype._setLatLngs.call(this,t),Dt(this._latlngs)&&(this._latlngs=[this._latlngs])},_defaultShape:function(){return Dt(this._latlngs[0])?this._latlngs[0]:this._latlngs[0][0]},_clipPoints:function(){var t=this._renderer._bounds,i=this.options.weight,e=new x(i,i);if(t=new P(t.min.subtract(e),t.max.add(e)),this._parts=[],this._pxBounds&&this._pxBounds.intersects(t))if(this.options.noClip)this._parts=this._rings;else for(var n,o=0,s=this._rings.length;ot.y!=n.y>t.y&&t.x<(n.x-e.x)*(t.y-e.y)/(n.y-e.y)+e.x&&(u=!u);return u||tn.prototype._containsPoint.call(this,t,!0)}}),nn=qe.extend({initialize:function(t,i){l(this,i),this._layers={},t&&this.addData(t)},addData:function(t){var i,e,n,o=ei(t)?t:t.features;if(o){for(i=0,e=o.length;i0?o:[i.src]}else{ei(this._url)||(this._url=[this._url]),i.autoplay=!!this.options.autoplay,i.loop=!!this.options.loop;for(var a=0;ao?(i.height=o+"px",pt(t,"leaflet-popup-scrolled")):mt(t,"leaflet-popup-scrolled"),this._containerWidth=this._container.offsetWidth},_animateZoom:function(t){var i=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center),e=this._getAnchor();Lt(this._container,i.add(e))},_adjustPan:function(){if(!(!this.options.autoPan||this._map._panAnim&&this._map._panAnim._inProgress)){var t=this._map,i=parseInt(at(this._container,"marginBottom"),10)||0,e=this._container.offsetHeight+i,n=this._containerWidth,o=new x(this._containerLeft,-e-this._containerBottom);o._add(Pt(this._container));var s=t.layerPointToContainerPoint(o),r=w(this.options.autoPanPadding),a=w(this.options.autoPanPaddingTopLeft||r),h=w(this.options.autoPanPaddingBottomRight||r),u=t.getSize(),l=0,c=0;s.x+n+h.x>u.x&&(l=s.x+n-u.x+h.x),s.x-l-a.x<0&&(l=s.x-a.x),s.y+e+h.y>u.y&&(c=s.y+e-u.y+h.y),s.y-c-a.y<0&&(c=s.y-a.y),(l||c)&&t.fire("autopanstart").panBy([l,c])}},_onCloseButtonClick:function(t){this._close(),Q(t)},_getAnchor:function(){return w(this._source&&this._source._getPopupAnchor?this._source._getPopupAnchor():[0,0])}});Le.mergeOptions({closePopupOnClick:!0}),Le.include({openPopup:function(t,i,e){return t instanceof un||(t=new un(e).setContent(t)),i&&t.setLatLng(i),this.hasLayer(t)?this:(this._popup&&this._popup.options.autoClose&&this.closePopup(),this._popup=t,this.addLayer(t))},closePopup:function(t){return t&&t!==this._popup||(t=this._popup,this._popup=null),t&&this.removeLayer(t),this}}),Ue.include({bindPopup:function(t,i){return t instanceof un?(l(t,i),this._popup=t,t._source=this):(this._popup&&!i||(this._popup=new un(i,this)),this._popup.setContent(t)),this._popupHandlersAdded||(this.on({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!0),this},unbindPopup:function(){return this._popup&&(this.off({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!1,this._popup=null),this},openPopup:function(t,i){if(t instanceof Ue||(i=t,t=this),t instanceof qe)for(var e in this._layers){t=this._layers[e];break}return i||(i=t.getCenter?t.getCenter():t.getLatLng()),this._popup&&this._map&&(this._popup._source=t,this._popup.update(),this._map.openPopup(this._popup,i)),this},closePopup:function(){return this._popup&&this._popup._close(),this},togglePopup:function(t){return this._popup&&(this._popup._map?this.closePopup():this.openPopup(t)),this},isPopupOpen:function(){return!!this._popup&&this._popup.isOpen()},setPopupContent:function(t){return this._popup&&this._popup.setContent(t),this},getPopup:function(){return this._popup},_openPopup:function(t){var i=t.layer||t.target;this._popup&&this._map&&(Q(t),i instanceof Je?this.openPopup(t.layer||t.target,t.latlng):this._map.hasLayer(this._popup)&&this._popup._source===i?this.closePopup():this.openPopup(i,t.latlng))},_movePopup:function(t){this._popup.setLatLng(t.latlng)},_onKeyPress:function(t){13===t.originalEvent.keyCode&&this._openPopup(t)}});var ln=hn.extend({options:{pane:"tooltipPane",offset:[0,0],direction:"auto",permanent:!1,sticky:!1,interactive:!1,opacity:.9},onAdd:function(t){hn.prototype.onAdd.call(this,t),this.setOpacity(this.options.opacity),t.fire("tooltipopen",{tooltip:this}),this._source&&this._source.fire("tooltipopen",{tooltip:this},!0)},onRemove:function(t){hn.prototype.onRemove.call(this,t),t.fire("tooltipclose",{tooltip:this}),this._source&&this._source.fire("tooltipclose",{tooltip:this},!0)},getEvents:function(){var t=hn.prototype.getEvents.call(this);return Vi&&!this.options.permanent&&(t.preclick=this._close),t},_close:function(){this._map&&this._map.closeTooltip(this)},_initLayout:function(){var t="leaflet-tooltip "+(this.options.className||"")+" leaflet-zoom-"+(this._zoomAnimated?"animated":"hide");this._contentNode=this._container=ht("div",t)},_updateLayout:function(){},_adjustPan:function(){},_setPosition:function(t){var i=this._map,e=this._container,n=i.latLngToContainerPoint(i.getCenter()),o=i.layerPointToContainerPoint(t),s=this.options.direction,r=e.offsetWidth,a=e.offsetHeight,h=w(this.options.offset),u=this._getAnchor();"top"===s?t=t.add(w(-r/2+h.x,-a+h.y+u.y,!0)):"bottom"===s?t=t.subtract(w(r/2-h.x,-h.y,!0)):"center"===s?t=t.subtract(w(r/2+h.x,a/2-u.y+h.y,!0)):"right"===s||"auto"===s&&o.xthis.options.maxZoom||en&&this._retainParent(o,s,r,n))},_retainChildren:function(t,i,e,n){for(var o=2*t;o<2*t+2;o++)for(var s=2*i;s<2*i+2;s++){var r=new x(o,s);r.z=e+1;var a=this._tileCoordsToKey(r),h=this._tiles[a];h&&h.active?h.retain=!0:(h&&h.loaded&&(h.retain=!0),e+1this.options.maxZoom||void 0!==this.options.minZoom&&o1)this._setView(t,e);else{for(var c=o.min.y;c<=o.max.y;c++)for(var _=o.min.x;_<=o.max.x;_++){var d=new x(_,c);if(d.z=this._tileZoom,this._isValidTile(d)){var p=this._tiles[this._tileCoordsToKey(d)];p?p.current=!0:r.push(d)}}if(r.sort(function(t,i){return t.distanceTo(s)-i.distanceTo(s)}),0!==r.length){this._loading||(this._loading=!0,this.fire("loading"));var m=document.createDocumentFragment();for(_=0;_e.max.x)||!i.wrapLat&&(t.ye.max.y))return!1}if(!this.options.bounds)return!0;var n=this._tileCoordsToBounds(t);return z(this.options.bounds).overlaps(n)},_keyToBounds:function(t){return this._tileCoordsToBounds(this._keyToTileCoords(t))},_tileCoordsToNwSe:function(t){var i=this._map,e=this.getTileSize(),n=t.scaleBy(e),o=n.add(e);return[i.unproject(n,t.z),i.unproject(o,t.z)]},_tileCoordsToBounds:function(t){var i=this._tileCoordsToNwSe(t),e=new T(i[0],i[1]);return this.options.noWrap||(e=this._map.wrapLatLngBounds(e)),e},_tileCoordsToKey:function(t){return t.x+":"+t.y+":"+t.z},_keyToTileCoords:function(t){var i=t.split(":"),e=new x(+i[0],+i[1]);return e.z=+i[2],e},_removeTile:function(t){var i=this._tiles[t];i&&(Ci||i.el.setAttribute("src",ni),ut(i.el),delete this._tiles[t],this.fire("tileunload",{tile:i.el,coords:this._keyToTileCoords(t)}))},_initTile:function(t){pt(t,"leaflet-tile");var i=this.getTileSize();t.style.width=i.x+"px",t.style.height=i.y+"px",t.onselectstart=r,t.onmousemove=r,Li&&this.options.opacity<1&&vt(t,this.options.opacity),Ti&&!zi&&(t.style.WebkitBackfaceVisibility="hidden")},_addTile:function(t,i){var n=this._getTilePos(t),o=this._tileCoordsToKey(t),s=this.createTile(this._wrapCoords(t),e(this._tileReady,this,t));this._initTile(s),this.createTile.length<2&&f(e(this._tileReady,this,t,null,s)),Lt(s,n),this._tiles[o]={el:s,coords:t,current:!0},i.appendChild(s),this.fire("tileloadstart",{tile:s,coords:t})},_tileReady:function(t,i,n){if(this._map){i&&this.fire("tileerror",{error:i,tile:n,coords:t});var o=this._tileCoordsToKey(t);(n=this._tiles[o])&&(n.loaded=+new Date,this._map._fadeAnimated?(vt(n.el,0),g(this._fadeFrame),this._fadeFrame=f(this._updateOpacity,this)):(n.active=!0,this._pruneTiles()),i||(pt(n.el,"leaflet-tile-loaded"),this.fire("tileload",{tile:n.el,coords:t})),this._noTilesToLoad()&&(this._loading=!1,this.fire("load"),Li||!this._map._fadeAnimated?f(this._pruneTiles,this):setTimeout(e(this._pruneTiles,this),250)))}},_getTilePos:function(t){return t.scaleBy(this.getTileSize()).subtract(this._level.origin)},_wrapCoords:function(t){var i=new x(this._wrapX?s(t.x,this._wrapX):t.x,this._wrapY?s(t.y,this._wrapY):t.y);return i.z=t.z,i},_pxBoundsToTileRange:function(t){var i=this.getTileSize();return new P(t.min.unscaleBy(i).floor(),t.max.unscaleBy(i).ceil().subtract([1,1]))},_noTilesToLoad:function(){for(var t in this._tiles)if(!this._tiles[t].loaded)return!1;return!0}}),dn=_n.extend({options:{minZoom:0,maxZoom:18,subdomains:"abc",errorTileUrl:"",zoomOffset:0,tms:!1,zoomReverse:!1,detectRetina:!1,crossOrigin:!1},initialize:function(t,i){this._url=t,(i=l(this,i)).detectRetina&&Ki&&i.maxZoom>0&&(i.tileSize=Math.floor(i.tileSize/2),i.zoomReverse?(i.zoomOffset--,i.minZoom++):(i.zoomOffset++,i.maxZoom--),i.minZoom=Math.max(0,i.minZoom)),"string"==typeof i.subdomains&&(i.subdomains=i.subdomains.split("")),Ti||this.on("tileunload",this._onTileRemove)},setUrl:function(t,i){return this._url=t,i||this.redraw(),this},createTile:function(t,i){var n=document.createElement("img");return V(n,"load",e(this._tileOnLoad,this,i,n)),V(n,"error",e(this._tileOnError,this,i,n)),this.options.crossOrigin&&(n.crossOrigin=""),n.alt="",n.setAttribute("role","presentation"),n.src=this.getTileUrl(t),n},getTileUrl:function(t){var e={r:Ki?"@2x":"",s:this._getSubdomain(t),x:t.x,y:t.y,z:this._getZoomForUrl()};if(this._map&&!this._map.options.crs.infinite){var n=this._globalTileRange.max.y-t.y;this.options.tms&&(e.y=n),e["-y"]=n}return _(this._url,i(e,this.options))},_tileOnLoad:function(t,i){Li?setTimeout(e(t,this,null,i),0):t(null,i)},_tileOnError:function(t,i,e){var n=this.options.errorTileUrl;n&&i.getAttribute("src")!==n&&(i.src=n),t(e,i)},_onTileRemove:function(t){t.tile.onload=null},_getZoomForUrl:function(){var t=this._tileZoom,i=this.options.maxZoom,e=this.options.zoomReverse,n=this.options.zoomOffset;return e&&(t=i-t),t+n},_getSubdomain:function(t){var i=Math.abs(t.x+t.y)%this.options.subdomains.length;return this.options.subdomains[i]},_abortLoading:function(){var t,i;for(t in this._tiles)this._tiles[t].coords.z!==this._tileZoom&&((i=this._tiles[t].el).onload=r,i.onerror=r,i.complete||(i.src=ni,ut(i),delete this._tiles[t]))}}),pn=dn.extend({defaultWmsParams:{service:"WMS",request:"GetMap",layers:"",styles:"",format:"image/jpeg",transparent:!1,version:"1.1.1"},options:{crs:null,uppercase:!1},initialize:function(t,e){this._url=t;var n=i({},this.defaultWmsParams);for(var o in e)o in this.options||(n[o]=e[o]);var s=(e=l(this,e)).detectRetina&&Ki?2:1,r=this.getTileSize();n.width=r.x*s,n.height=r.y*s,this.wmsParams=n},onAdd:function(t){this._crs=this.options.crs||t.options.crs,this._wmsVersion=parseFloat(this.wmsParams.version);var i=this._wmsVersion>=1.3?"crs":"srs";this.wmsParams[i]=this._crs.code,dn.prototype.onAdd.call(this,t)},getTileUrl:function(t){var i=this._tileCoordsToNwSe(t),e=this._crs,n=b(e.project(i[0]),e.project(i[1])),o=n.min,s=n.max,r=(this._wmsVersion>=1.3&&this._crs===He?[o.y,o.x,s.y,s.x]:[o.x,o.y,s.x,s.y]).join(","),a=L.TileLayer.prototype.getTileUrl.call(this,t);return a+c(this.wmsParams,a,this.options.uppercase)+(this.options.uppercase?"&BBOX=":"&bbox=")+r},setParams:function(t,e){return i(this.wmsParams,t),e||this.redraw(),this}});dn.WMS=pn,Yt.wms=function(t,i){return new pn(t,i)};var mn=Ue.extend({options:{padding:.1,tolerance:0},initialize:function(t){l(this,t),n(this),this._layers=this._layers||{}},onAdd:function(){this._container||(this._initContainer(),this._zoomAnimated&&pt(this._container,"leaflet-zoom-animated")),this.getPane().appendChild(this._container),this._update(),this.on("update",this._updatePaths,this)},onRemove:function(){this.off("update",this._updatePaths,this),this._destroyContainer()},getEvents:function(){var t={viewreset:this._reset,zoom:this._onZoom,moveend:this._update,zoomend:this._onZoomEnd};return this._zoomAnimated&&(t.zoomanim=this._onAnimZoom),t},_onAnimZoom:function(t){this._updateTransform(t.center,t.zoom)},_onZoom:function(){this._updateTransform(this._map.getCenter(),this._map.getZoom())},_updateTransform:function(t,i){var e=this._map.getZoomScale(i,this._zoom),n=Pt(this._container),o=this._map.getSize().multiplyBy(.5+this.options.padding),s=this._map.project(this._center,i),r=this._map.project(t,i).subtract(s),a=o.multiplyBy(-e).add(n).add(o).subtract(r);Ni?wt(this._container,a,e):Lt(this._container,a)},_reset:function(){this._update(),this._updateTransform(this._center,this._zoom);for(var t in this._layers)this._layers[t]._reset()},_onZoomEnd:function(){for(var t in this._layers)this._layers[t]._project()},_updatePaths:function(){for(var t in this._layers)this._layers[t]._update()},_update:function(){var t=this.options.padding,i=this._map.getSize(),e=this._map.containerPointToLayerPoint(i.multiplyBy(-t)).round();this._bounds=new P(e,e.add(i.multiplyBy(1+2*t)).round()),this._center=this._map.getCenter(),this._zoom=this._map.getZoom()}}),fn=mn.extend({getEvents:function(){var t=mn.prototype.getEvents.call(this);return t.viewprereset=this._onViewPreReset,t},_onViewPreReset:function(){this._postponeUpdatePaths=!0},onAdd:function(){mn.prototype.onAdd.call(this),this._draw()},_initContainer:function(){var t=this._container=document.createElement("canvas");V(t,"mousemove",o(this._onMouseMove,32,this),this),V(t,"click dblclick mousedown mouseup contextmenu",this._onClick,this),V(t,"mouseout",this._handleMouseOut,this),this._ctx=t.getContext("2d")},_destroyContainer:function(){delete this._ctx,ut(this._container),q(this._container),delete this._container},_updatePaths:function(){if(!this._postponeUpdatePaths){this._redrawBounds=null;for(var t in this._layers)this._layers[t]._update();this._redraw()}},_update:function(){if(!this._map._animatingZoom||!this._bounds){this._drawnLayers={},mn.prototype._update.call(this);var t=this._bounds,i=this._container,e=t.getSize(),n=Ki?2:1;Lt(i,t.min),i.width=n*e.x,i.height=n*e.y,i.style.width=e.x+"px",i.style.height=e.y+"px",Ki&&this._ctx.scale(2,2),this._ctx.translate(-t.min.x,-t.min.y),this.fire("update")}},_reset:function(){mn.prototype._reset.call(this),this._postponeUpdatePaths&&(this._postponeUpdatePaths=!1,this._updatePaths())},_initPath:function(t){this._updateDashArray(t),this._layers[n(t)]=t;var i=t._order={layer:t,prev:this._drawLast,next:null};this._drawLast&&(this._drawLast.next=i),this._drawLast=i,this._drawFirst=this._drawFirst||this._drawLast},_addPath:function(t){this._requestRedraw(t)},_removePath:function(t){var i=t._order,e=i.next,n=i.prev;e?e.prev=n:this._drawLast=n,n?n.next=e:this._drawFirst=e,delete t._order,delete this._layers[L.stamp(t)],this._requestRedraw(t)},_updatePath:function(t){this._extendRedrawBounds(t),t._project(),t._update(),this._requestRedraw(t)},_updateStyle:function(t){this._updateDashArray(t),this._requestRedraw(t)},_updateDashArray:function(t){if(t.options.dashArray){var i,e=t.options.dashArray.split(","),n=[];for(i=0;i')}}catch(t){return function(t){return document.createElement("<"+t+' xmlns="urn:schemas-microsoft.com:vml" class="lvml">')}}}(),vn={_initContainer:function(){this._container=ht("div","leaflet-vml-container")},_update:function(){this._map._animatingZoom||(mn.prototype._update.call(this),this.fire("update"))},_initPath:function(t){var i=t._container=gn("shape");pt(i,"leaflet-vml-shape "+(this.options.className||"")),i.coordsize="1 1",t._path=gn("path"),i.appendChild(t._path),this._updateStyle(t),this._layers[n(t)]=t},_addPath:function(t){var i=t._container;this._container.appendChild(i),t.options.interactive&&t.addInteractiveTarget(i)},_removePath:function(t){var i=t._container;ut(i),t.removeInteractiveTarget(i),delete this._layers[n(t)]},_updateStyle:function(t){var i=t._stroke,e=t._fill,n=t.options,o=t._container;o.stroked=!!n.stroke,o.filled=!!n.fill,n.stroke?(i||(i=t._stroke=gn("stroke")),o.appendChild(i),i.weight=n.weight+"px",i.color=n.color,i.opacity=n.opacity,n.dashArray?i.dashStyle=ei(n.dashArray)?n.dashArray.join(" "):n.dashArray.replace(/( *, *)/g," "):i.dashStyle="",i.endcap=n.lineCap.replace("butt","flat"),i.joinstyle=n.lineJoin):i&&(o.removeChild(i),t._stroke=null),n.fill?(e||(e=t._fill=gn("fill")),o.appendChild(e),e.color=n.fillColor||n.color,e.opacity=n.fillOpacity):e&&(o.removeChild(e),t._fill=null)},_updateCircle:function(t){var i=t._point.round(),e=Math.round(t._radius),n=Math.round(t._radiusY||e);this._setPath(t,t._empty()?"M0 0":"AL "+i.x+","+i.y+" "+e+","+n+" 0,23592600")},_setPath:function(t,i){t._path.v=i},_bringToFront:function(t){ct(t._container)},_bringToBack:function(t){_t(t._container)}},yn=Ji?gn:E,xn=mn.extend({getEvents:function(){var t=mn.prototype.getEvents.call(this);return t.zoomstart=this._onZoomStart,t},_initContainer:function(){this._container=yn("svg"),this._container.setAttribute("pointer-events","none"),this._rootGroup=yn("g"),this._container.appendChild(this._rootGroup)},_destroyContainer:function(){ut(this._container),q(this._container),delete this._container,delete this._rootGroup,delete this._svgSize},_onZoomStart:function(){this._update()},_update:function(){if(!this._map._animatingZoom||!this._bounds){mn.prototype._update.call(this);var t=this._bounds,i=t.getSize(),e=this._container;this._svgSize&&this._svgSize.equals(i)||(this._svgSize=i,e.setAttribute("width",i.x),e.setAttribute("height",i.y)),Lt(e,t.min),e.setAttribute("viewBox",[t.min.x,t.min.y,i.x,i.y].join(" ")),this.fire("update")}},_initPath:function(t){var i=t._path=yn("path");t.options.className&&pt(i,t.options.className),t.options.interactive&&pt(i,"leaflet-interactive"),this._updateStyle(t),this._layers[n(t)]=t},_addPath:function(t){this._rootGroup||this._initContainer(),this._rootGroup.appendChild(t._path),t.addInteractiveTarget(t._path)},_removePath:function(t){ut(t._path),t.removeInteractiveTarget(t._path),delete this._layers[n(t)]},_updatePath:function(t){t._project(),t._update()},_updateStyle:function(t){var i=t._path,e=t.options;i&&(e.stroke?(i.setAttribute("stroke",e.color),i.setAttribute("stroke-opacity",e.opacity),i.setAttribute("stroke-width",e.weight),i.setAttribute("stroke-linecap",e.lineCap),i.setAttribute("stroke-linejoin",e.lineJoin),e.dashArray?i.setAttribute("stroke-dasharray",e.dashArray):i.removeAttribute("stroke-dasharray"),e.dashOffset?i.setAttribute("stroke-dashoffset",e.dashOffset):i.removeAttribute("stroke-dashoffset")):i.setAttribute("stroke","none"),e.fill?(i.setAttribute("fill",e.fillColor||e.color),i.setAttribute("fill-opacity",e.fillOpacity),i.setAttribute("fill-rule",e.fillRule||"evenodd")):i.setAttribute("fill","none"))},_updatePoly:function(t,i){this._setPath(t,k(t._parts,i))},_updateCircle:function(t){var i=t._point,e=Math.max(Math.round(t._radius),1),n="a"+e+","+(Math.max(Math.round(t._radiusY),1)||e)+" 0 1,0 ",o=t._empty()?"M0 0":"M"+(i.x-e)+","+i.y+n+2*e+",0 "+n+2*-e+",0 ";this._setPath(t,o)},_setPath:function(t,i){t._path.setAttribute("d",i)},_bringToFront:function(t){ct(t._path)},_bringToBack:function(t){_t(t._path)}});Ji&&xn.include(vn),Le.include({getRenderer:function(t){var i=t.options.renderer||this._getPaneRenderer(t.options.pane)||this.options.renderer||this._renderer;return i||(i=this._renderer=this.options.preferCanvas&&Xt()||Jt()),this.hasLayer(i)||this.addLayer(i),i},_getPaneRenderer:function(t){if("overlayPane"===t||void 0===t)return!1;var i=this._paneRenderers[t];return void 0===i&&(i=xn&&Jt({pane:t})||fn&&Xt({pane:t}),this._paneRenderers[t]=i),i}});var wn=en.extend({initialize:function(t,i){en.prototype.initialize.call(this,this._boundsToLatLngs(t),i)},setBounds:function(t){return this.setLatLngs(this._boundsToLatLngs(t))},_boundsToLatLngs:function(t){return t=z(t),[t.getSouthWest(),t.getNorthWest(),t.getNorthEast(),t.getSouthEast()]}});xn.create=yn,xn.pointsToPath=k,nn.geometryToLayer=Wt,nn.coordsToLatLng=Ht,nn.coordsToLatLngs=Ft,nn.latLngToCoords=Ut,nn.latLngsToCoords=Vt,nn.getFeature=qt,nn.asFeature=Gt,Le.mergeOptions({boxZoom:!0});var Ln=Ze.extend({initialize:function(t){this._map=t,this._container=t._container,this._pane=t._panes.overlayPane,this._resetStateTimeout=0,t.on("unload",this._destroy,this)},addHooks:function(){V(this._container,"mousedown",this._onMouseDown,this)},removeHooks:function(){q(this._container,"mousedown",this._onMouseDown,this)},moved:function(){return this._moved},_destroy:function(){ut(this._pane),delete this._pane},_resetState:function(){this._resetStateTimeout=0,this._moved=!1},_clearDeferredResetState:function(){0!==this._resetStateTimeout&&(clearTimeout(this._resetStateTimeout),this._resetStateTimeout=0)},_onMouseDown:function(t){if(!t.shiftKey||1!==t.which&&1!==t.button)return!1;this._clearDeferredResetState(),this._resetState(),mi(),bt(),this._startPoint=this._map.mouseEventToContainerPoint(t),V(document,{contextmenu:Q,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseMove:function(t){this._moved||(this._moved=!0,this._box=ht("div","leaflet-zoom-box",this._container),pt(this._container,"leaflet-crosshair"),this._map.fire("boxzoomstart")),this._point=this._map.mouseEventToContainerPoint(t);var i=new P(this._point,this._startPoint),e=i.getSize();Lt(this._box,i.min),this._box.style.width=e.x+"px",this._box.style.height=e.y+"px"},_finish:function(){this._moved&&(ut(this._box),mt(this._container,"leaflet-crosshair")),fi(),Tt(),q(document,{contextmenu:Q,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseUp:function(t){if((1===t.which||1===t.button)&&(this._finish(),this._moved)){this._clearDeferredResetState(),this._resetStateTimeout=setTimeout(e(this._resetState,this),0);var i=new T(this._map.containerPointToLatLng(this._startPoint),this._map.containerPointToLatLng(this._point));this._map.fitBounds(i).fire("boxzoomend",{boxZoomBounds:i})}},_onKeyDown:function(t){27===t.keyCode&&this._finish()}});Le.addInitHook("addHandler","boxZoom",Ln),Le.mergeOptions({doubleClickZoom:!0});var Pn=Ze.extend({addHooks:function(){this._map.on("dblclick",this._onDoubleClick,this)},removeHooks:function(){this._map.off("dblclick",this._onDoubleClick,this)},_onDoubleClick:function(t){var i=this._map,e=i.getZoom(),n=i.options.zoomDelta,o=t.originalEvent.shiftKey?e-n:e+n;"center"===i.options.doubleClickZoom?i.setZoom(o):i.setZoomAround(t.containerPoint,o)}});Le.addInitHook("addHandler","doubleClickZoom",Pn),Le.mergeOptions({dragging:!0,inertia:!zi,inertiaDeceleration:3400,inertiaMaxSpeed:1/0,easeLinearity:.2,worldCopyJump:!1,maxBoundsViscosity:0});var bn=Ze.extend({addHooks:function(){if(!this._draggable){var t=this._map;this._draggable=new Be(t._mapPane,t._container),this._draggable.on({dragstart:this._onDragStart,drag:this._onDrag,dragend:this._onDragEnd},this),this._draggable.on("predrag",this._onPreDragLimit,this),t.options.worldCopyJump&&(this._draggable.on("predrag",this._onPreDragWrap,this),t.on("zoomend",this._onZoomEnd,this),t.whenReady(this._onZoomEnd,this))}pt(this._map._container,"leaflet-grab leaflet-touch-drag"),this._draggable.enable(),this._positions=[],this._times=[]},removeHooks:function(){mt(this._map._container,"leaflet-grab"),mt(this._map._container,"leaflet-touch-drag"),this._draggable.disable()},moved:function(){return this._draggable&&this._draggable._moved},moving:function(){return this._draggable&&this._draggable._moving},_onDragStart:function(){var t=this._map;if(t._stop(),this._map.options.maxBounds&&this._map.options.maxBoundsViscosity){var i=z(this._map.options.maxBounds);this._offsetLimit=b(this._map.latLngToContainerPoint(i.getNorthWest()).multiplyBy(-1),this._map.latLngToContainerPoint(i.getSouthEast()).multiplyBy(-1).add(this._map.getSize())),this._viscosity=Math.min(1,Math.max(0,this._map.options.maxBoundsViscosity))}else this._offsetLimit=null;t.fire("movestart").fire("dragstart"),t.options.inertia&&(this._positions=[],this._times=[])},_onDrag:function(t){if(this._map.options.inertia){var i=this._lastTime=+new Date,e=this._lastPos=this._draggable._absPos||this._draggable._newPos;this._positions.push(e),this._times.push(i),this._prunePositions(i)}this._map.fire("move",t).fire("drag",t)},_prunePositions:function(t){for(;this._positions.length>1&&t-this._times[0]>50;)this._positions.shift(),this._times.shift()},_onZoomEnd:function(){var t=this._map.getSize().divideBy(2),i=this._map.latLngToLayerPoint([0,0]);this._initialWorldOffset=i.subtract(t).x,this._worldWidth=this._map.getPixelWorldBounds().getSize().x},_viscousLimit:function(t,i){return t-(t-i)*this._viscosity},_onPreDragLimit:function(){if(this._viscosity&&this._offsetLimit){var t=this._draggable._newPos.subtract(this._draggable._startPos),i=this._offsetLimit;t.xi.max.x&&(t.x=this._viscousLimit(t.x,i.max.x)),t.y>i.max.y&&(t.y=this._viscousLimit(t.y,i.max.y)),this._draggable._newPos=this._draggable._startPos.add(t)}},_onPreDragWrap:function(){var t=this._worldWidth,i=Math.round(t/2),e=this._initialWorldOffset,n=this._draggable._newPos.x,o=(n-i+e)%t+i-e,s=(n+i+e)%t-i-e,r=Math.abs(o+e)0?s:-s))-i;this._delta=0,this._startTime=null,r&&("center"===t.options.scrollWheelZoom?t.setZoom(i+r):t.setZoomAround(this._lastMousePos,i+r))}});Le.addInitHook("addHandler","scrollWheelZoom",zn),Le.mergeOptions({tap:!0,tapTolerance:15});var Mn=Ze.extend({addHooks:function(){V(this._map._container,"touchstart",this._onDown,this)},removeHooks:function(){q(this._map._container,"touchstart",this._onDown,this)},_onDown:function(t){if(t.touches){if($(t),this._fireClick=!0,t.touches.length>1)return this._fireClick=!1,void clearTimeout(this._holdTimeout);var i=t.touches[0],n=i.target;this._startPos=this._newPos=new x(i.clientX,i.clientY),n.tagName&&"a"===n.tagName.toLowerCase()&&pt(n,"leaflet-active"),this._holdTimeout=setTimeout(e(function(){this._isTapValid()&&(this._fireClick=!1,this._onUp(),this._simulateEvent("contextmenu",i))},this),1e3),this._simulateEvent("mousedown",i),V(document,{touchmove:this._onMove,touchend:this._onUp},this)}},_onUp:function(t){if(clearTimeout(this._holdTimeout),q(document,{touchmove:this._onMove,touchend:this._onUp},this),this._fireClick&&t&&t.changedTouches){var i=t.changedTouches[0],e=i.target;e&&e.tagName&&"a"===e.tagName.toLowerCase()&&mt(e,"leaflet-active"),this._simulateEvent("mouseup",i),this._isTapValid()&&this._simulateEvent("click",i)}},_isTapValid:function(){return this._newPos.distanceTo(this._startPos)<=this._map.options.tapTolerance},_onMove:function(t){var i=t.touches[0];this._newPos=new x(i.clientX,i.clientY),this._simulateEvent("mousemove",i)},_simulateEvent:function(t,i){var e=document.createEvent("MouseEvents");e._simulated=!0,i.target._simulatedClick=!0,e.initMouseEvent(t,!0,!0,window,1,i.screenX,i.screenY,i.clientX,i.clientY,!1,!1,!1,!1,0,null),i.target.dispatchEvent(e)}});Vi&&!Ui&&Le.addInitHook("addHandler","tap",Mn),Le.mergeOptions({touchZoom:Vi&&!zi,bounceAtZoomLimits:!0});var Cn=Ze.extend({addHooks:function(){pt(this._map._container,"leaflet-touch-zoom"),V(this._map._container,"touchstart",this._onTouchStart,this)},removeHooks:function(){mt(this._map._container,"leaflet-touch-zoom"),q(this._map._container,"touchstart",this._onTouchStart,this)},_onTouchStart:function(t){var i=this._map;if(t.touches&&2===t.touches.length&&!i._animatingZoom&&!this._zooming){var e=i.mouseEventToContainerPoint(t.touches[0]),n=i.mouseEventToContainerPoint(t.touches[1]);this._centerPoint=i.getSize()._divideBy(2),this._startLatLng=i.containerPointToLatLng(this._centerPoint),"center"!==i.options.touchZoom&&(this._pinchStartLatLng=i.containerPointToLatLng(e.add(n)._divideBy(2))),this._startDist=e.distanceTo(n),this._startZoom=i.getZoom(),this._moved=!1,this._zooming=!0,i._stop(),V(document,"touchmove",this._onTouchMove,this),V(document,"touchend",this._onTouchEnd,this),$(t)}},_onTouchMove:function(t){if(t.touches&&2===t.touches.length&&this._zooming){var i=this._map,n=i.mouseEventToContainerPoint(t.touches[0]),o=i.mouseEventToContainerPoint(t.touches[1]),s=n.distanceTo(o)/this._startDist;if(this._zoom=i.getScaleZoom(s,this._startZoom),!i.options.bounceAtZoomLimits&&(this._zoomi.getMaxZoom()&&s>1)&&(this._zoom=i._limitZoom(this._zoom)),"center"===i.options.touchZoom){if(this._center=this._startLatLng,1===s)return}else{var r=n._add(o)._divideBy(2)._subtract(this._centerPoint);if(1===s&&0===r.x&&0===r.y)return;this._center=i.unproject(i.project(this._pinchStartLatLng,this._zoom).subtract(r),this._zoom)}this._moved||(i._moveStart(!0,!1),this._moved=!0),g(this._animRequest);var a=e(i._move,i,this._center,this._zoom,{pinch:!0,round:!1});this._animRequest=f(a,this,!0),$(t)}},_onTouchEnd:function(){this._moved&&this._zooming?(this._zooming=!1,g(this._animRequest),q(document,"touchmove",this._onTouchMove),q(document,"touchend",this._onTouchEnd),this._map.options.zoomAnimation?this._map._animateZoom(this._center,this._map._limitZoom(this._zoom),!0,this._map.options.zoomSnap):this._map._resetView(this._center,this._map._limitZoom(this._zoom))):this._zooming=!1}});Le.addInitHook("addHandler","touchZoom",Cn),Le.BoxZoom=Ln,Le.DoubleClickZoom=Pn,Le.Drag=bn,Le.Keyboard=Tn,Le.ScrollWheelZoom=zn,Le.Tap=Mn,Le.TouchZoom=Cn;var Zn=window.L;window.L=t,Object.freeze=$t,t.version="1.3.1+HEAD.ba6f97f",t.noConflict=function(){return window.L=Zn,this},t.Control=Pe,t.control=be,t.Browser=$i,t.Evented=ui,t.Mixin=Ee,t.Util=ai,t.Class=v,t.Handler=Ze,t.extend=i,t.bind=e,t.stamp=n,t.setOptions=l,t.DomEvent=de,t.DomUtil=xe,t.PosAnimation=we,t.Draggable=Be,t.LineUtil=Oe,t.PolyUtil=Re,t.Point=x,t.point=w,t.Bounds=P,t.bounds=b,t.Transformation=Z,t.transformation=S,t.Projection=je,t.LatLng=M,t.latLng=C,t.LatLngBounds=T,t.latLngBounds=z,t.CRS=ci,t.GeoJSON=nn,t.geoJSON=Kt,t.geoJson=sn,t.Layer=Ue,t.LayerGroup=Ve,t.layerGroup=function(t,i){return new Ve(t,i)},t.FeatureGroup=qe,t.featureGroup=function(t){return new qe(t)},t.ImageOverlay=rn,t.imageOverlay=function(t,i,e){return new rn(t,i,e)},t.VideoOverlay=an,t.videoOverlay=function(t,i,e){return new an(t,i,e)},t.DivOverlay=hn,t.Popup=un,t.popup=function(t,i){return new un(t,i)},t.Tooltip=ln,t.tooltip=function(t,i){return new ln(t,i)},t.Icon=Ge,t.icon=function(t){return new Ge(t)},t.DivIcon=cn,t.divIcon=function(t){return new cn(t)},t.Marker=Xe,t.marker=function(t,i){return new Xe(t,i)},t.TileLayer=dn,t.tileLayer=Yt,t.GridLayer=_n,t.gridLayer=function(t){return new _n(t)},t.SVG=xn,t.svg=Jt,t.Renderer=mn,t.Canvas=fn,t.canvas=Xt,t.Path=Je,t.CircleMarker=$e,t.circleMarker=function(t,i){return new $e(t,i)},t.Circle=Qe,t.circle=function(t,i,e){return new Qe(t,i,e)},t.Polyline=tn,t.polyline=function(t,i){return new tn(t,i)},t.Polygon=en,t.polygon=function(t,i){return new en(t,i)},t.Rectangle=wn,t.rectangle=function(t,i){return new wn(t,i)},t.Map=Le,t.map=function(t,i){return new Le(t,i)}}); \ No newline at end of file diff --git a/inst/doc/neotoma2-package_files/leaflet-binding-2.1.2/leaflet.js b/inst/doc/neotoma2-package_files/leaflet-binding-2.1.2/leaflet.js deleted file mode 100644 index 1eafcbe..0000000 --- a/inst/doc/neotoma2-package_files/leaflet-binding-2.1.2/leaflet.js +++ /dev/null @@ -1,2785 +0,0 @@ -(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i this.effectiveLength) throw new Error("Row argument was out of bounds: " + row + " > " + this.effectiveLength); - var colIndex = -1; - - if (typeof col === "undefined") { - var rowData = {}; - this.colnames.forEach(function (name, i) { - rowData[name] = _this3.columns[i][row % _this3.columns[i].length]; - }); - return rowData; - } else if (typeof col === "string") { - colIndex = this._colIndex(col); - } else if (typeof col === "number") { - colIndex = col; - } - - if (colIndex < 0 || colIndex > this.columns.length) { - if (missingOK) return void 0;else throw new Error("Unknown column index: " + col); - } - - return this.columns[colIndex][row % this.columns[colIndex].length]; - } - }, { - key: "nrow", - value: function nrow() { - return this.effectiveLength; - } - }]); - - return DataFrame; -}(); - -exports["default"] = DataFrame; - - -},{"./util":17}],5:[function(require,module,exports){ -"use strict"; - -var _leaflet = require("./global/leaflet"); - -var _leaflet2 = _interopRequireDefault(_leaflet); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } - -// In RMarkdown's self-contained mode, we don't have a way to carry around the -// images that Leaflet needs but doesn't load into the page. Instead, we'll use -// the unpkg CDN. -if (typeof _leaflet2["default"].Icon.Default.imagePath === "undefined") { - _leaflet2["default"].Icon.Default.imagePath = "https://unpkg.com/leaflet@1.3.1/dist/images/"; -} - - -},{"./global/leaflet":10}],6:[function(require,module,exports){ -"use strict"; - -var _leaflet = require("./global/leaflet"); - -var _leaflet2 = _interopRequireDefault(_leaflet); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } - -// add texxtsize, textOnly, and style -_leaflet2["default"].Tooltip.prototype.options.textsize = "10px"; -_leaflet2["default"].Tooltip.prototype.options.textOnly = false; -_leaflet2["default"].Tooltip.prototype.options.style = null; // copy original layout to not completely stomp it. - -var initLayoutOriginal = _leaflet2["default"].Tooltip.prototype._initLayout; - -_leaflet2["default"].Tooltip.prototype._initLayout = function () { - initLayoutOriginal.call(this); - this._container.style.fontSize = this.options.textsize; - - if (this.options.textOnly) { - _leaflet2["default"].DomUtil.addClass(this._container, "leaflet-tooltip-text-only"); - } - - if (this.options.style) { - for (var property in this.options.style) { - this._container.style[property] = this.options.style[property]; - } - } -}; - - -},{"./global/leaflet":10}],7:[function(require,module,exports){ -"use strict"; - -var _leaflet = require("./global/leaflet"); - -var _leaflet2 = _interopRequireDefault(_leaflet); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } - -var protocolRegex = /^\/\//; - -var upgrade_protocol = function upgrade_protocol(urlTemplate) { - if (protocolRegex.test(urlTemplate)) { - if (window.location.protocol === "file:") { - // if in a local file, support http - // http should auto upgrade if necessary - urlTemplate = "http:" + urlTemplate; - } - } - - return urlTemplate; -}; - -var originalLTileLayerInitialize = _leaflet2["default"].TileLayer.prototype.initialize; - -_leaflet2["default"].TileLayer.prototype.initialize = function (urlTemplate, options) { - urlTemplate = upgrade_protocol(urlTemplate); - originalLTileLayerInitialize.call(this, urlTemplate, options); -}; - -var originalLTileLayerWMSInitialize = _leaflet2["default"].TileLayer.WMS.prototype.initialize; - -_leaflet2["default"].TileLayer.WMS.prototype.initialize = function (urlTemplate, options) { - urlTemplate = upgrade_protocol(urlTemplate); - originalLTileLayerWMSInitialize.call(this, urlTemplate, options); -}; - - -},{"./global/leaflet":10}],8:[function(require,module,exports){ -(function (global){(function (){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = global.HTMLWidgets; - - -}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{}],9:[function(require,module,exports){ -(function (global){(function (){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = global.jQuery; - - -}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{}],10:[function(require,module,exports){ -(function (global){(function (){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = global.L; - - -}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{}],11:[function(require,module,exports){ -(function (global){(function (){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = global.L.Proj; - - -}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{}],12:[function(require,module,exports){ -(function (global){(function (){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = global.Shiny; - - -}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{}],13:[function(require,module,exports){ -"use strict"; - -var _jquery = require("./global/jquery"); - -var _jquery2 = _interopRequireDefault(_jquery); - -var _leaflet = require("./global/leaflet"); - -var _leaflet2 = _interopRequireDefault(_leaflet); - -var _shiny = require("./global/shiny"); - -var _shiny2 = _interopRequireDefault(_shiny); - -var _htmlwidgets = require("./global/htmlwidgets"); - -var _htmlwidgets2 = _interopRequireDefault(_htmlwidgets); - -var _util = require("./util"); - -var _crs_utils = require("./crs_utils"); - -var _controlStore = require("./control-store"); - -var _controlStore2 = _interopRequireDefault(_controlStore); - -var _layerManager = require("./layer-manager"); - -var _layerManager2 = _interopRequireDefault(_layerManager); - -var _methods = require("./methods"); - -var _methods2 = _interopRequireDefault(_methods); - -require("./fixup-default-icon"); - -require("./fixup-default-tooltip"); - -require("./fixup-url-protocol"); - -var _dataframe = require("./dataframe"); - -var _dataframe2 = _interopRequireDefault(_dataframe); - -var _clusterLayerStore = require("./cluster-layer-store"); - -var _clusterLayerStore2 = _interopRequireDefault(_clusterLayerStore); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } - -window.LeafletWidget = {}; -window.LeafletWidget.utils = {}; - -var methods = window.LeafletWidget.methods = _jquery2["default"].extend({}, _methods2["default"]); - -window.LeafletWidget.DataFrame = _dataframe2["default"]; -window.LeafletWidget.ClusterLayerStore = _clusterLayerStore2["default"]; -window.LeafletWidget.utils.getCRS = _crs_utils.getCRS; // Send updated bounds back to app. Takes a leaflet event object as input. - -function updateBounds(map) { - var id = map.getContainer().id; - var bounds = map.getBounds(); - - _shiny2["default"].onInputChange(id + "_bounds", { - north: bounds.getNorthEast().lat, - east: bounds.getNorthEast().lng, - south: bounds.getSouthWest().lat, - west: bounds.getSouthWest().lng - }); - - _shiny2["default"].onInputChange(id + "_center", { - lng: map.getCenter().lng, - lat: map.getCenter().lat - }); - - _shiny2["default"].onInputChange(id + "_zoom", map.getZoom()); -} - -function preventUnintendedZoomOnScroll(map) { - // Prevent unwanted scroll capturing. Similar in purpose to - // https://github.com/CliffCloud/Leaflet.Sleep but with a - // different set of heuristics. - // The basic idea is that when a mousewheel/DOMMouseScroll - // event is seen, we disable scroll wheel zooming until the - // user moves their mouse cursor or clicks on the map. This - // is slightly trickier than just listening for mousemove, - // because mousemove is fired when the page is scrolled, - // even if the user did not physically move the mouse. We - // handle this by examining the mousemove event's screenX - // and screenY properties; if they change, we know it's a - // "true" move. - // lastScreen can never be null, but its x and y can. - var lastScreen = { - x: null, - y: null - }; - (0, _jquery2["default"])(document).on("mousewheel DOMMouseScroll", "*", function (e) { - // Disable zooming (until the mouse moves or click) - map.scrollWheelZoom.disable(); // Any mousemove events at this screen position will be ignored. - - lastScreen = { - x: e.originalEvent.screenX, - y: e.originalEvent.screenY - }; - }); - (0, _jquery2["default"])(document).on("mousemove", "*", function (e) { - // Did the mouse really move? - if (lastScreen.x !== null && e.screenX !== lastScreen.x || e.screenY !== lastScreen.y) { - // It really moved. Enable zooming. - map.scrollWheelZoom.enable(); - lastScreen = { - x: null, - y: null - }; - } - }); - (0, _jquery2["default"])(document).on("mousedown", ".leaflet", function (e) { - // Clicking always enables zooming. - map.scrollWheelZoom.enable(); - lastScreen = { - x: null, - y: null - }; - }); -} - -_htmlwidgets2["default"].widget({ - name: "leaflet", - type: "output", - factory: function factory(el, width, height) { - var map = null; - return { - // we need to store our map in our returned object. - getMap: function getMap() { - return map; - }, - renderValue: function renderValue(data) { - // Create an appropriate CRS Object if specified - if (data && data.options && data.options.crs) { - data.options.crs = (0, _crs_utils.getCRS)(data.options.crs); - } // As per https://github.com/rstudio/leaflet/pull/294#discussion_r79584810 - - - if (map) { - map.remove(); - - map = function () { - return; - }(); // undefine map - - } - - if (data.options.mapFactory && typeof data.options.mapFactory === "function") { - map = data.options.mapFactory(el, data.options); - } else { - map = _leaflet2["default"].map(el, data.options); - } - - preventUnintendedZoomOnScroll(map); // Store some state in the map object - - map.leafletr = { - // Has the map ever rendered successfully? - hasRendered: false, - // Data to be rendered when resize is called with area != 0 - pendingRenderData: null - }; // Check if the map is rendered statically (no output binding) - - if (_htmlwidgets2["default"].shinyMode && /\bshiny-bound-output\b/.test(el.className)) { - map.id = el.id; // Store the map on the element so we can find it later by ID - - (0, _jquery2["default"])(el).data("leaflet-map", map); // When the map is clicked, send the coordinates back to the app - - map.on("click", function (e) { - _shiny2["default"].onInputChange(map.id + "_click", { - lat: e.latlng.lat, - lng: e.latlng.lng, - ".nonce": Math.random() // Force reactivity if lat/lng hasn't changed - - }); - }); - var groupTimerId = null; - map.on("moveend", function (e) { - updateBounds(e.target); - }).on("layeradd layerremove", function (e) { - // If the layer that's coming or going is a group we created, tell - // the server. - if (map.layerManager.getGroupNameFromLayerGroup(e.layer)) { - // But to avoid chattiness, coalesce events - if (groupTimerId) { - clearTimeout(groupTimerId); - groupTimerId = null; - } - - groupTimerId = setTimeout(function () { - groupTimerId = null; - - _shiny2["default"].onInputChange(map.id + "_groups", map.layerManager.getVisibleGroups()); - }, 100); - } - }); - } - - this.doRenderValue(data, map); - }, - doRenderValue: function doRenderValue(data, map) { - // Leaflet does not behave well when you set up a bunch of layers when - // the map is not visible (width/height == 0). Popups get misaligned - // relative to their owning markers, and the fitBounds calculations - // are off. Therefore we wait until the map is actually showing to - // render the value (we rely on the resize() callback being invoked - // at the appropriate time). - if (el.offsetWidth === 0 || el.offsetHeight === 0) { - map.leafletr.pendingRenderData = data; - return; - } - - map.leafletr.pendingRenderData = null; // Merge data options into defaults - - var options = _jquery2["default"].extend({ - zoomToLimits: "always" - }, data.options); - - if (!map.layerManager) { - map.controls = new _controlStore2["default"](map); - map.layerManager = new _layerManager2["default"](map); - } else { - map.controls.clear(); - map.layerManager.clear(); - } - - var explicitView = false; - - if (data.setView) { - explicitView = true; - map.setView.apply(map, data.setView); - } - - if (data.fitBounds) { - explicitView = true; - methods.fitBounds.apply(map, data.fitBounds); - } - - if (data.flyTo) { - if (!explicitView && !map.leafletr.hasRendered) { - // must be done to give a initial starting point - map.fitWorld(); - } - - explicitView = true; - map.flyTo.apply(map, data.flyTo); - } - - if (data.flyToBounds) { - if (!explicitView && !map.leafletr.hasRendered) { - // must be done to give a initial starting point - map.fitWorld(); - } - - explicitView = true; - methods.flyToBounds.apply(map, data.flyToBounds); - } - - if (data.options.center) { - explicitView = true; - } // Returns true if the zoomToLimits option says that the map should be - // zoomed to map elements. - - - function needsZoom() { - return options.zoomToLimits === "always" || options.zoomToLimits === "first" && !map.leafletr.hasRendered; - } - - if (!explicitView && needsZoom() && !map.getZoom()) { - if (data.limits && !_jquery2["default"].isEmptyObject(data.limits)) { - // Use the natural limits of what's being drawn on the map - // If the size of the bounding box is 0, leaflet gets all weird - var pad = 0.006; - - if (data.limits.lat[0] === data.limits.lat[1]) { - data.limits.lat[0] = data.limits.lat[0] - pad; - data.limits.lat[1] = data.limits.lat[1] + pad; - } - - if (data.limits.lng[0] === data.limits.lng[1]) { - data.limits.lng[0] = data.limits.lng[0] - pad; - data.limits.lng[1] = data.limits.lng[1] + pad; - } - - map.fitBounds([[data.limits.lat[0], data.limits.lng[0]], [data.limits.lat[1], data.limits.lng[1]]]); - } else { - map.fitWorld(); - } - } - - for (var i = 0; data.calls && i < data.calls.length; i++) { - var call = data.calls[i]; - if (methods[call.method]) methods[call.method].apply(map, call.args);else (0, _util.log)("Unknown method " + call.method); - } - - map.leafletr.hasRendered = true; - - if (_htmlwidgets2["default"].shinyMode) { - setTimeout(function () { - updateBounds(map); - }, 1); - } - }, - resize: function resize(width, height) { - if (map) { - map.invalidateSize(); - - if (map.leafletr.pendingRenderData) { - this.doRenderValue(map.leafletr.pendingRenderData, map); - } - } - } - }; - } -}); - -if (_htmlwidgets2["default"].shinyMode) { - _shiny2["default"].addCustomMessageHandler("leaflet-calls", function (data) { - var id = data.id; - var el = document.getElementById(id); - var map = el ? (0, _jquery2["default"])(el).data("leaflet-map") : null; - - if (!map) { - (0, _util.log)("Couldn't find map with id " + id); - return; - } // If the map has not rendered, stash the proposed `leafletProxy()` calls - // in `pendingRenderData.calls` to be run on display via `doRenderValue()`. - // This is necessary if the map has not been rendered. - // If new pendingRenderData is set via a new `leaflet()`, the previous calls will be discarded. - - - if (!map.leafletr.hasRendered) { - map.leafletr.pendingRenderData.calls = map.leafletr.pendingRenderData.calls.concat(data.calls); - return; - } - - for (var i = 0; i < data.calls.length; i++) { - var call = data.calls[i]; - var args = call.args; - - for (var _i = 0; _i < call.evals.length; _i++) { - window.HTMLWidgets.evaluateStringMember(args, call.evals[_i]); - } - - if (call.dependencies) { - _shiny2["default"].renderDependencies(call.dependencies); - } - - if (methods[call.method]) methods[call.method].apply(map, args);else (0, _util.log)("Unknown method " + call.method); - } - }); -} - - -},{"./cluster-layer-store":1,"./control-store":2,"./crs_utils":3,"./dataframe":4,"./fixup-default-icon":5,"./fixup-default-tooltip":6,"./fixup-url-protocol":7,"./global/htmlwidgets":8,"./global/jquery":9,"./global/leaflet":10,"./global/shiny":12,"./layer-manager":14,"./methods":15,"./util":17}],14:[function(require,module,exports){ -(function (global){(function (){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = undefined; - -var _jquery = require("./global/jquery"); - -var _jquery2 = _interopRequireDefault(_jquery); - -var _leaflet = require("./global/leaflet"); - -var _leaflet2 = _interopRequireDefault(_leaflet); - -var _util = require("./util"); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - -var LayerManager = /*#__PURE__*/function () { - function LayerManager(map) { - _classCallCheck(this, LayerManager); - - this._map = map; // BEGIN layer indices - // {: {: layer}} - - this._byGroup = {}; // {: {: layer}} - - this._byCategory = {}; // {: layer} - - this._byLayerId = {}; // {: { - // "group": , - // "layerId": , - // "category": , - // "container": - // } - // } - - this._byStamp = {}; // {: {: [, , ...], ...}} - - this._byCrosstalkGroup = {}; // END layer indices - // {: L.layerGroup} - - this._categoryContainers = {}; // {: L.layerGroup} - - this._groupContainers = {}; - } - - _createClass(LayerManager, [{ - key: "addLayer", - value: function addLayer(layer, category, layerId, group, ctGroup, ctKey) { - var _this = this; - - // Was a group provided? - var hasId = typeof layerId === "string"; - var grouped = typeof group === "string"; - var stamp = _leaflet2["default"].Util.stamp(layer) + ""; // This will be the default layer group to add the layer to. - // We may overwrite this let before using it (i.e. if a group is assigned). - // This one liner creates the _categoryContainers[category] entry if it - // doesn't already exist. - - var container = this._categoryContainers[category] = this._categoryContainers[category] || _leaflet2["default"].layerGroup().addTo(this._map); - - var oldLayer = null; - - if (hasId) { - // First, remove any layer with the same category and layerId - var prefixedLayerId = this._layerIdKey(category, layerId); - - oldLayer = this._byLayerId[prefixedLayerId]; - - if (oldLayer) { - this._removeLayer(oldLayer); - } // Update layerId index - - - this._byLayerId[prefixedLayerId] = layer; - } // Update group index - - - if (grouped) { - this._byGroup[group] = this._byGroup[group] || {}; - this._byGroup[group][stamp] = layer; // Since a group is assigned, don't add the layer to the category's layer - // group; instead, use the group's layer group. - // This one liner creates the _groupContainers[group] entry if it doesn't - // already exist. - - container = this.getLayerGroup(group, true); - } // Update category index - - - this._byCategory[category] = this._byCategory[category] || {}; - this._byCategory[category][stamp] = layer; // Update stamp index - - var layerInfo = this._byStamp[stamp] = { - layer: layer, - group: group, - ctGroup: ctGroup, - ctKey: ctKey, - layerId: layerId, - category: category, - container: container, - hidden: false - }; // Update crosstalk group index - - if (ctGroup) { - if (layer.setStyle) { - // Need to save this info so we know what to set opacity to later - layer.options.origOpacity = typeof layer.options.opacity !== "undefined" ? layer.options.opacity : 0.5; - layer.options.origFillOpacity = typeof layer.options.fillOpacity !== "undefined" ? layer.options.fillOpacity : 0.2; - } - - var ctg = this._byCrosstalkGroup[ctGroup]; - - if (!ctg) { - ctg = this._byCrosstalkGroup[ctGroup] = {}; - var crosstalk = global.crosstalk; - - var handleFilter = function handleFilter(e) { - if (!e.value) { - var groupKeys = Object.keys(ctg); - - for (var i = 0; i < groupKeys.length; i++) { - var key = groupKeys[i]; - var _layerInfo = _this._byStamp[ctg[key]]; - - _this._setVisibility(_layerInfo, true); - } - } else { - var selectedKeys = {}; - - for (var _i = 0; _i < e.value.length; _i++) { - selectedKeys[e.value[_i]] = true; - } - - var _groupKeys = Object.keys(ctg); - - for (var _i2 = 0; _i2 < _groupKeys.length; _i2++) { - var _key = _groupKeys[_i2]; - var _layerInfo2 = _this._byStamp[ctg[_key]]; - - _this._setVisibility(_layerInfo2, selectedKeys[_groupKeys[_i2]]); - } - } - }; - - var filterHandle = new crosstalk.FilterHandle(ctGroup); - filterHandle.on("change", handleFilter); - - var handleSelection = function handleSelection(e) { - if (!e.value || !e.value.length) { - var groupKeys = Object.keys(ctg); - - for (var i = 0; i < groupKeys.length; i++) { - var key = groupKeys[i]; - var _layerInfo3 = _this._byStamp[ctg[key]]; - - _this._setOpacity(_layerInfo3, 1.0); - } - } else { - var selectedKeys = {}; - - for (var _i3 = 0; _i3 < e.value.length; _i3++) { - selectedKeys[e.value[_i3]] = true; - } - - var _groupKeys2 = Object.keys(ctg); - - for (var _i4 = 0; _i4 < _groupKeys2.length; _i4++) { - var _key2 = _groupKeys2[_i4]; - var _layerInfo4 = _this._byStamp[ctg[_key2]]; - - _this._setOpacity(_layerInfo4, selectedKeys[_groupKeys2[_i4]] ? 1.0 : 0.2); - } - } - }; - - var selHandle = new crosstalk.SelectionHandle(ctGroup); - selHandle.on("change", handleSelection); - setTimeout(function () { - handleFilter({ - value: filterHandle.filteredKeys - }); - handleSelection({ - value: selHandle.value - }); - }, 100); - } - - if (!ctg[ctKey]) ctg[ctKey] = []; - ctg[ctKey].push(stamp); - } // Add to container - - - if (!layerInfo.hidden) container.addLayer(layer); - return oldLayer; - } - }, { - key: "brush", - value: function brush(bounds, extraInfo) { - var _this2 = this; - - /* eslint-disable no-console */ - // For each Crosstalk group... - Object.keys(this._byCrosstalkGroup).forEach(function (ctGroupName) { - var ctg = _this2._byCrosstalkGroup[ctGroupName]; - var selection = []; // ...iterate over each Crosstalk key (each of which may have multiple - // layers)... - - Object.keys(ctg).forEach(function (ctKey) { - // ...and for each layer... - ctg[ctKey].forEach(function (stamp) { - var layerInfo = _this2._byStamp[stamp]; // ...if it's something with a point... - - if (layerInfo.layer.getLatLng) { - // ... and it's inside the selection bounds... - // TODO: Use pixel containment, not lat/lng containment - if (bounds.contains(layerInfo.layer.getLatLng())) { - // ...add the key to the selection. - selection.push(ctKey); - } - } - }); - }); - new global.crosstalk.SelectionHandle(ctGroupName).set(selection, extraInfo); - }); - } - }, { - key: "unbrush", - value: function unbrush(extraInfo) { - Object.keys(this._byCrosstalkGroup).forEach(function (ctGroupName) { - new global.crosstalk.SelectionHandle(ctGroupName).clear(extraInfo); - }); - } - }, { - key: "_setVisibility", - value: function _setVisibility(layerInfo, visible) { - if (layerInfo.hidden ^ visible) { - return; - } else if (visible) { - layerInfo.container.addLayer(layerInfo.layer); - layerInfo.hidden = false; - } else { - layerInfo.container.removeLayer(layerInfo.layer); - layerInfo.hidden = true; - } - } - }, { - key: "_setOpacity", - value: function _setOpacity(layerInfo, opacity) { - if (layerInfo.layer.setOpacity) { - layerInfo.layer.setOpacity(opacity); - } else if (layerInfo.layer.setStyle) { - layerInfo.layer.setStyle({ - opacity: opacity * layerInfo.layer.options.origOpacity, - fillOpacity: opacity * layerInfo.layer.options.origFillOpacity - }); - } - } - }, { - key: "getLayer", - value: function getLayer(category, layerId) { - return this._byLayerId[this._layerIdKey(category, layerId)]; - } - }, { - key: "removeLayer", - value: function removeLayer(category, layerIds) { - var _this3 = this; - - // Find layer info - _jquery2["default"].each((0, _util.asArray)(layerIds), function (i, layerId) { - var layer = _this3._byLayerId[_this3._layerIdKey(category, layerId)]; - - if (layer) { - _this3._removeLayer(layer); - } - }); - } - }, { - key: "clearLayers", - value: function clearLayers(category) { - var _this4 = this; - - // Find all layers in _byCategory[category] - var catTable = this._byCategory[category]; - - if (!catTable) { - return false; - } // Remove all layers. Make copy of keys to avoid mutating the collection - // behind the iterator you're accessing. - - - var stamps = []; - - _jquery2["default"].each(catTable, function (k, v) { - stamps.push(k); - }); - - _jquery2["default"].each(stamps, function (i, stamp) { - _this4._removeLayer(stamp); - }); - } - }, { - key: "getLayerGroup", - value: function getLayerGroup(group, ensureExists) { - var g = this._groupContainers[group]; - - if (ensureExists && !g) { - this._byGroup[group] = this._byGroup[group] || {}; - g = this._groupContainers[group] = _leaflet2["default"].featureGroup(); - g.groupname = group; - g.addTo(this._map); - } - - return g; - } - }, { - key: "getGroupNameFromLayerGroup", - value: function getGroupNameFromLayerGroup(layerGroup) { - return layerGroup.groupname; - } - }, { - key: "getVisibleGroups", - value: function getVisibleGroups() { - var _this5 = this; - - var result = []; - - _jquery2["default"].each(this._groupContainers, function (k, v) { - if (_this5._map.hasLayer(v)) { - result.push(k); - } - }); - - return result; - } - }, { - key: "getAllGroupNames", - value: function getAllGroupNames() { - var result = []; - - _jquery2["default"].each(this._groupContainers, function (k, v) { - result.push(k); - }); - - return result; - } - }, { - key: "clearGroup", - value: function clearGroup(group) { - var _this6 = this; - - // Find all layers in _byGroup[group] - var groupTable = this._byGroup[group]; - - if (!groupTable) { - return false; - } // Remove all layers. Make copy of keys to avoid mutating the collection - // behind the iterator you're accessing. - - - var stamps = []; - - _jquery2["default"].each(groupTable, function (k, v) { - stamps.push(k); - }); - - _jquery2["default"].each(stamps, function (i, stamp) { - _this6._removeLayer(stamp); - }); - } - }, { - key: "clear", - value: function clear() { - function clearLayerGroup(key, layerGroup) { - layerGroup.clearLayers(); - } // Clear all indices and layerGroups - - - this._byGroup = {}; - this._byCategory = {}; - this._byLayerId = {}; - this._byStamp = {}; - this._byCrosstalkGroup = {}; - - _jquery2["default"].each(this._categoryContainers, clearLayerGroup); - - this._categoryContainers = {}; - - _jquery2["default"].each(this._groupContainers, clearLayerGroup); - - this._groupContainers = {}; - } - }, { - key: "_removeLayer", - value: function _removeLayer(layer) { - var stamp; - - if (typeof layer === "string") { - stamp = layer; - } else { - stamp = _leaflet2["default"].Util.stamp(layer); - } - - var layerInfo = this._byStamp[stamp]; - - if (!layerInfo) { - return false; - } - - layerInfo.container.removeLayer(stamp); - - if (typeof layerInfo.group === "string") { - delete this._byGroup[layerInfo.group][stamp]; - } - - if (typeof layerInfo.layerId === "string") { - delete this._byLayerId[this._layerIdKey(layerInfo.category, layerInfo.layerId)]; - } - - delete this._byCategory[layerInfo.category][stamp]; - delete this._byStamp[stamp]; - - if (layerInfo.ctGroup) { - var ctGroup = this._byCrosstalkGroup[layerInfo.ctGroup]; - var layersForKey = ctGroup[layerInfo.ctKey]; - var idx = layersForKey ? layersForKey.indexOf(stamp) : -1; - - if (idx >= 0) { - if (layersForKey.length === 1) { - delete ctGroup[layerInfo.ctKey]; - } else { - layersForKey.splice(idx, 1); - } - } - } - } - }, { - key: "_layerIdKey", - value: function _layerIdKey(category, layerId) { - return category + "\n" + layerId; - } - }]); - - return LayerManager; -}(); - -exports["default"] = LayerManager; - - -}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"./global/jquery":9,"./global/leaflet":10,"./util":17}],15:[function(require,module,exports){ -(function (global){(function (){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _jquery = require("./global/jquery"); - -var _jquery2 = _interopRequireDefault(_jquery); - -var _leaflet = require("./global/leaflet"); - -var _leaflet2 = _interopRequireDefault(_leaflet); - -var _shiny = require("./global/shiny"); - -var _shiny2 = _interopRequireDefault(_shiny); - -var _htmlwidgets = require("./global/htmlwidgets"); - -var _htmlwidgets2 = _interopRequireDefault(_htmlwidgets); - -var _util = require("./util"); - -var _crs_utils = require("./crs_utils"); - -var _dataframe = require("./dataframe"); - -var _dataframe2 = _interopRequireDefault(_dataframe); - -var _clusterLayerStore = require("./cluster-layer-store"); - -var _clusterLayerStore2 = _interopRequireDefault(_clusterLayerStore); - -var _mipmapper = require("./mipmapper"); - -var _mipmapper2 = _interopRequireDefault(_mipmapper); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } - -var methods = {}; -exports["default"] = methods; - -function mouseHandler(mapId, layerId, group, eventName, extraInfo) { - return function (e) { - if (!_htmlwidgets2["default"].shinyMode) return; - var latLng = e.target.getLatLng ? e.target.getLatLng() : e.latlng; - - if (latLng) { - // retrieve only lat, lon values to remove prototype - // and extra parameters added by 3rd party modules - // these objects are for json serialization, not javascript - var latLngVal = _leaflet2["default"].latLng(latLng); // make sure it has consistent shape - - - latLng = { - lat: latLngVal.lat, - lng: latLngVal.lng - }; - } - - var eventInfo = _jquery2["default"].extend({ - id: layerId, - ".nonce": Math.random() // force reactivity - - }, group !== null ? { - group: group - } : null, latLng, extraInfo); - - _shiny2["default"].onInputChange(mapId + "_" + eventName, eventInfo); - }; -} - -methods.mouseHandler = mouseHandler; - -methods.clearGroup = function (group) { - var _this = this; - - _jquery2["default"].each((0, _util.asArray)(group), function (i, v) { - _this.layerManager.clearGroup(v); - }); -}; - -methods.setView = function (center, zoom, options) { - this.setView(center, zoom, options); -}; - -methods.fitBounds = function (lat1, lng1, lat2, lng2, options) { - this.fitBounds([[lat1, lng1], [lat2, lng2]], options); -}; - -methods.flyTo = function (center, zoom, options) { - this.flyTo(center, zoom, options); -}; - -methods.flyToBounds = function (lat1, lng1, lat2, lng2, options) { - this.flyToBounds([[lat1, lng1], [lat2, lng2]], options); -}; - -methods.setMaxBounds = function (lat1, lng1, lat2, lng2) { - this.setMaxBounds([[lat1, lng1], [lat2, lng2]]); -}; - -methods.addPopups = function (lat, lng, popup, layerId, group, options) { - var _this2 = this; - - var df = new _dataframe2["default"]().col("lat", lat).col("lng", lng).col("popup", popup).col("layerId", layerId).col("group", group).cbind(options); - - var _loop = function _loop(i) { - if (_jquery2["default"].isNumeric(df.get(i, "lat")) && _jquery2["default"].isNumeric(df.get(i, "lng"))) { - (function () { - var popup = _leaflet2["default"].popup(df.get(i)).setLatLng([df.get(i, "lat"), df.get(i, "lng")]).setContent(df.get(i, "popup")); - - var thisId = df.get(i, "layerId"); - var thisGroup = df.get(i, "group"); - this.layerManager.addLayer(popup, "popup", thisId, thisGroup); - }).call(_this2); - } - }; - - for (var i = 0; i < df.nrow(); i++) { - _loop(i); - } -}; - -methods.removePopup = function (layerId) { - this.layerManager.removeLayer("popup", layerId); -}; - -methods.clearPopups = function () { - this.layerManager.clearLayers("popup"); -}; - -methods.addTiles = function (urlTemplate, layerId, group, options) { - this.layerManager.addLayer(_leaflet2["default"].tileLayer(urlTemplate, options), "tile", layerId, group); -}; - -methods.removeTiles = function (layerId) { - this.layerManager.removeLayer("tile", layerId); -}; - -methods.clearTiles = function () { - this.layerManager.clearLayers("tile"); -}; - -methods.addWMSTiles = function (baseUrl, layerId, group, options) { - if (options && options.crs) { - options.crs = (0, _crs_utils.getCRS)(options.crs); - } - - this.layerManager.addLayer(_leaflet2["default"].tileLayer.wms(baseUrl, options), "tile", layerId, group); -}; // Given: -// {data: ["a", "b", "c"], index: [0, 1, 0, 2]} -// returns: -// ["a", "b", "a", "c"] - - -function unpackStrings(iconset) { - if (!iconset) { - return iconset; - } - - if (typeof iconset.index === "undefined") { - return iconset; - } - - iconset.data = (0, _util.asArray)(iconset.data); - iconset.index = (0, _util.asArray)(iconset.index); - return _jquery2["default"].map(iconset.index, function (e, i) { - return iconset.data[e]; - }); -} - -function addMarkers(map, df, group, clusterOptions, clusterId, markerFunc) { - (function () { - var _this3 = this; - - var clusterGroup = this.layerManager.getLayer("cluster", clusterId), - cluster = clusterOptions !== null; - - if (cluster && !clusterGroup) { - clusterGroup = _leaflet2["default"].markerClusterGroup.layerSupport(clusterOptions); - - if (clusterOptions.freezeAtZoom) { - var freezeAtZoom = clusterOptions.freezeAtZoom; - delete clusterOptions.freezeAtZoom; - clusterGroup.freezeAtZoom(freezeAtZoom); - } - - clusterGroup.clusterLayerStore = new _clusterLayerStore2["default"](clusterGroup); - } - - var extraInfo = cluster ? { - clusterId: clusterId - } : {}; - - var _loop2 = function _loop2(i) { - if (_jquery2["default"].isNumeric(df.get(i, "lat")) && _jquery2["default"].isNumeric(df.get(i, "lng"))) { - (function () { - var marker = markerFunc(df, i); - var thisId = df.get(i, "layerId"); - var thisGroup = cluster ? null : df.get(i, "group"); - - if (cluster) { - clusterGroup.clusterLayerStore.add(marker, thisId); - } else { - this.layerManager.addLayer(marker, "marker", thisId, thisGroup, df.get(i, "ctGroup", true), df.get(i, "ctKey", true)); - } - - var popup = df.get(i, "popup"); - var popupOptions = df.get(i, "popupOptions"); - - if (popup !== null) { - if (popupOptions !== null) { - marker.bindPopup(popup, popupOptions); - } else { - marker.bindPopup(popup); - } - } - - var label = df.get(i, "label"); - var labelOptions = df.get(i, "labelOptions"); - - if (label !== null) { - if (labelOptions !== null) { - if (labelOptions.permanent) { - marker.bindTooltip(label, labelOptions).openTooltip(); - } else { - marker.bindTooltip(label, labelOptions); - } - } else { - marker.bindTooltip(label); - } - } - - marker.on("click", mouseHandler(this.id, thisId, thisGroup, "marker_click", extraInfo), this); - marker.on("mouseover", mouseHandler(this.id, thisId, thisGroup, "marker_mouseover", extraInfo), this); - marker.on("mouseout", mouseHandler(this.id, thisId, thisGroup, "marker_mouseout", extraInfo), this); - marker.on("dragend", mouseHandler(this.id, thisId, thisGroup, "marker_dragend", extraInfo), this); - }).call(_this3); - } - }; - - for (var i = 0; i < df.nrow(); i++) { - _loop2(i); - } - - if (cluster) { - this.layerManager.addLayer(clusterGroup, "cluster", clusterId, group); - } - }).call(map); -} - -methods.addGenericMarkers = addMarkers; - -methods.addMarkers = function (lat, lng, icon, layerId, group, options, popup, popupOptions, clusterOptions, clusterId, label, labelOptions, crosstalkOptions) { - var icondf; - var getIcon; - - if (icon) { - // Unpack icons - icon.iconUrl = unpackStrings(icon.iconUrl); - icon.iconRetinaUrl = unpackStrings(icon.iconRetinaUrl); - icon.shadowUrl = unpackStrings(icon.shadowUrl); - icon.shadowRetinaUrl = unpackStrings(icon.shadowRetinaUrl); // This cbinds the icon URLs and any other icon options; they're all - // present on the icon object. - - icondf = new _dataframe2["default"]().cbind(icon); // Constructs an icon from a specified row of the icon dataframe. - - getIcon = function getIcon(i) { - var opts = icondf.get(i); - - if (!opts.iconUrl) { - return new _leaflet2["default"].Icon.Default(); - } // Composite options (like points or sizes) are passed from R with each - // individual component as its own option. We need to combine them now - // into their composite form. - - - if (opts.iconWidth) { - opts.iconSize = [opts.iconWidth, opts.iconHeight]; - } - - if (opts.shadowWidth) { - opts.shadowSize = [opts.shadowWidth, opts.shadowHeight]; - } - - if (opts.iconAnchorX) { - opts.iconAnchor = [opts.iconAnchorX, opts.iconAnchorY]; - } - - if (opts.shadowAnchorX) { - opts.shadowAnchor = [opts.shadowAnchorX, opts.shadowAnchorY]; - } - - if (opts.popupAnchorX) { - opts.popupAnchor = [opts.popupAnchorX, opts.popupAnchorY]; - } - - return new _leaflet2["default"].Icon(opts); - }; - } - - if (!(_jquery2["default"].isEmptyObject(lat) || _jquery2["default"].isEmptyObject(lng)) || _jquery2["default"].isNumeric(lat) && _jquery2["default"].isNumeric(lng)) { - var df = new _dataframe2["default"]().col("lat", lat).col("lng", lng).col("layerId", layerId).col("group", group).col("popup", popup).col("popupOptions", popupOptions).col("label", label).col("labelOptions", labelOptions).cbind(options).cbind(crosstalkOptions || {}); - if (icon) icondf.effectiveLength = df.nrow(); - addMarkers(this, df, group, clusterOptions, clusterId, function (df, i) { - var options = df.get(i); - if (icon) options.icon = getIcon(i); - return _leaflet2["default"].marker([df.get(i, "lat"), df.get(i, "lng")], options); - }); - } -}; - -methods.addAwesomeMarkers = function (lat, lng, icon, layerId, group, options, popup, popupOptions, clusterOptions, clusterId, label, labelOptions, crosstalkOptions) { - var icondf; - var getIcon; - - if (icon) { - // This cbinds the icon URLs and any other icon options; they're all - // present on the icon object. - icondf = new _dataframe2["default"]().cbind(icon); // Constructs an icon from a specified row of the icon dataframe. - - getIcon = function getIcon(i) { - var opts = icondf.get(i); - - if (!opts) { - return new _leaflet2["default"].AwesomeMarkers.icon(); - } - - if (opts.squareMarker) { - opts.className = "awesome-marker awesome-marker-square"; - } - - return new _leaflet2["default"].AwesomeMarkers.icon(opts); - }; - } - - if (!(_jquery2["default"].isEmptyObject(lat) || _jquery2["default"].isEmptyObject(lng)) || _jquery2["default"].isNumeric(lat) && _jquery2["default"].isNumeric(lng)) { - var df = new _dataframe2["default"]().col("lat", lat).col("lng", lng).col("layerId", layerId).col("group", group).col("popup", popup).col("popupOptions", popupOptions).col("label", label).col("labelOptions", labelOptions).cbind(options).cbind(crosstalkOptions || {}); - if (icon) icondf.effectiveLength = df.nrow(); - addMarkers(this, df, group, clusterOptions, clusterId, function (df, i) { - var options = df.get(i); - if (icon) options.icon = getIcon(i); - return _leaflet2["default"].marker([df.get(i, "lat"), df.get(i, "lng")], options); - }); - } -}; - -function addLayers(map, category, df, layerFunc) { - var _loop3 = function _loop3(i) { - (function () { - var layer = layerFunc(df, i); - - if (!_jquery2["default"].isEmptyObject(layer)) { - var thisId = df.get(i, "layerId"); - var thisGroup = df.get(i, "group"); - this.layerManager.addLayer(layer, category, thisId, thisGroup, df.get(i, "ctGroup", true), df.get(i, "ctKey", true)); - - if (layer.bindPopup) { - var popup = df.get(i, "popup"); - var popupOptions = df.get(i, "popupOptions"); - - if (popup !== null) { - if (popupOptions !== null) { - layer.bindPopup(popup, popupOptions); - } else { - layer.bindPopup(popup); - } - } - } - - if (layer.bindTooltip) { - var label = df.get(i, "label"); - var labelOptions = df.get(i, "labelOptions"); - - if (label !== null) { - if (labelOptions !== null) { - layer.bindTooltip(label, labelOptions); - } else { - layer.bindTooltip(label); - } - } - } - - layer.on("click", mouseHandler(this.id, thisId, thisGroup, category + "_click"), this); - layer.on("mouseover", mouseHandler(this.id, thisId, thisGroup, category + "_mouseover"), this); - layer.on("mouseout", mouseHandler(this.id, thisId, thisGroup, category + "_mouseout"), this); - var highlightStyle = df.get(i, "highlightOptions"); - - if (!_jquery2["default"].isEmptyObject(highlightStyle)) { - var defaultStyle = {}; - - _jquery2["default"].each(highlightStyle, function (k, v) { - if (k != "bringToFront" && k != "sendToBack") { - if (df.get(i, k)) { - defaultStyle[k] = df.get(i, k); - } - } - }); - - layer.on("mouseover", function (e) { - this.setStyle(highlightStyle); - - if (highlightStyle.bringToFront) { - this.bringToFront(); - } - }); - layer.on("mouseout", function (e) { - this.setStyle(defaultStyle); - - if (highlightStyle.sendToBack) { - this.bringToBack(); - } - }); - } - } - }).call(map); - }; - - for (var i = 0; i < df.nrow(); i++) { - _loop3(i); - } -} - -methods.addGenericLayers = addLayers; - -methods.addCircles = function (lat, lng, radius, layerId, group, options, popup, popupOptions, label, labelOptions, highlightOptions, crosstalkOptions) { - if (!(_jquery2["default"].isEmptyObject(lat) || _jquery2["default"].isEmptyObject(lng)) || _jquery2["default"].isNumeric(lat) && _jquery2["default"].isNumeric(lng)) { - var df = new _dataframe2["default"]().col("lat", lat).col("lng", lng).col("radius", radius).col("layerId", layerId).col("group", group).col("popup", popup).col("popupOptions", popupOptions).col("label", label).col("labelOptions", labelOptions).col("highlightOptions", highlightOptions).cbind(options).cbind(crosstalkOptions || {}); - addLayers(this, "shape", df, function (df, i) { - if (_jquery2["default"].isNumeric(df.get(i, "lat")) && _jquery2["default"].isNumeric(df.get(i, "lng")) && _jquery2["default"].isNumeric(df.get(i, "radius"))) { - return _leaflet2["default"].circle([df.get(i, "lat"), df.get(i, "lng")], df.get(i, "radius"), df.get(i)); - } else { - return null; - } - }); - } -}; - -methods.addCircleMarkers = function (lat, lng, radius, layerId, group, options, clusterOptions, clusterId, popup, popupOptions, label, labelOptions, crosstalkOptions) { - if (!(_jquery2["default"].isEmptyObject(lat) || _jquery2["default"].isEmptyObject(lng)) || _jquery2["default"].isNumeric(lat) && _jquery2["default"].isNumeric(lng)) { - var df = new _dataframe2["default"]().col("lat", lat).col("lng", lng).col("radius", radius).col("layerId", layerId).col("group", group).col("popup", popup).col("popupOptions", popupOptions).col("label", label).col("labelOptions", labelOptions).cbind(crosstalkOptions || {}).cbind(options); - addMarkers(this, df, group, clusterOptions, clusterId, function (df, i) { - return _leaflet2["default"].circleMarker([df.get(i, "lat"), df.get(i, "lng")], df.get(i)); - }); - } -}; -/* - * @param lat Array of arrays of latitude coordinates for polylines - * @param lng Array of arrays of longitude coordinates for polylines - */ - - -methods.addPolylines = function (polygons, layerId, group, options, popup, popupOptions, label, labelOptions, highlightOptions) { - if (polygons.length > 0) { - var df = new _dataframe2["default"]().col("shapes", polygons).col("layerId", layerId).col("group", group).col("popup", popup).col("popupOptions", popupOptions).col("label", label).col("labelOptions", labelOptions).col("highlightOptions", highlightOptions).cbind(options); - addLayers(this, "shape", df, function (df, i) { - var shapes = df.get(i, "shapes"); - shapes = shapes.map(function (shape) { - return _htmlwidgets2["default"].dataframeToD3(shape[0]); - }); - - if (shapes.length > 1) { - return _leaflet2["default"].polyline(shapes, df.get(i)); - } else { - return _leaflet2["default"].polyline(shapes[0], df.get(i)); - } - }); - } -}; - -methods.removeMarker = function (layerId) { - this.layerManager.removeLayer("marker", layerId); -}; - -methods.clearMarkers = function () { - this.layerManager.clearLayers("marker"); -}; - -methods.removeMarkerCluster = function (layerId) { - this.layerManager.removeLayer("cluster", layerId); -}; - -methods.removeMarkerFromCluster = function (layerId, clusterId) { - var cluster = this.layerManager.getLayer("cluster", clusterId); - if (!cluster) return; - cluster.clusterLayerStore.remove(layerId); -}; - -methods.clearMarkerClusters = function () { - this.layerManager.clearLayers("cluster"); -}; - -methods.removeShape = function (layerId) { - this.layerManager.removeLayer("shape", layerId); -}; - -methods.clearShapes = function () { - this.layerManager.clearLayers("shape"); -}; - -methods.addRectangles = function (lat1, lng1, lat2, lng2, layerId, group, options, popup, popupOptions, label, labelOptions, highlightOptions) { - var df = new _dataframe2["default"]().col("lat1", lat1).col("lng1", lng1).col("lat2", lat2).col("lng2", lng2).col("layerId", layerId).col("group", group).col("popup", popup).col("popupOptions", popupOptions).col("label", label).col("labelOptions", labelOptions).col("highlightOptions", highlightOptions).cbind(options); - addLayers(this, "shape", df, function (df, i) { - if (_jquery2["default"].isNumeric(df.get(i, "lat1")) && _jquery2["default"].isNumeric(df.get(i, "lng1")) && _jquery2["default"].isNumeric(df.get(i, "lat2")) && _jquery2["default"].isNumeric(df.get(i, "lng2"))) { - return _leaflet2["default"].rectangle([[df.get(i, "lat1"), df.get(i, "lng1")], [df.get(i, "lat2"), df.get(i, "lng2")]], df.get(i)); - } else { - return null; - } - }); -}; -/* - * @param lat Array of arrays of latitude coordinates for polygons - * @param lng Array of arrays of longitude coordinates for polygons - */ - - -methods.addPolygons = function (polygons, layerId, group, options, popup, popupOptions, label, labelOptions, highlightOptions) { - if (polygons.length > 0) { - var df = new _dataframe2["default"]().col("shapes", polygons).col("layerId", layerId).col("group", group).col("popup", popup).col("popupOptions", popupOptions).col("label", label).col("labelOptions", labelOptions).col("highlightOptions", highlightOptions).cbind(options); - addLayers(this, "shape", df, function (df, i) { - // This code used to use L.multiPolygon, but that caused - // double-click on a multipolygon to fail to zoom in on the - // map. Surprisingly, putting all the rings in a single - // polygon seems to still work; complicated multipolygons - // are still rendered correctly. - var shapes = df.get(i, "shapes").map(function (polygon) { - return polygon.map(_htmlwidgets2["default"].dataframeToD3); - }).reduce(function (acc, val) { - return acc.concat(val); - }, []); - return _leaflet2["default"].polygon(shapes, df.get(i)); - }); - } -}; - -methods.addGeoJSON = function (data, layerId, group, style) { - // This time, self is actually needed because the callbacks below need - // to access both the inner and outer senses of "this" - var self = this; - - if (typeof data === "string") { - data = JSON.parse(data); - } - - var globalStyle = _jquery2["default"].extend({}, style, data.style || {}); - - var gjlayer = _leaflet2["default"].geoJson(data, { - style: function style(feature) { - if (feature.style || feature.properties.style) { - return _jquery2["default"].extend({}, globalStyle, feature.style, feature.properties.style); - } else { - return globalStyle; - } - }, - onEachFeature: function onEachFeature(feature, layer) { - var extraInfo = { - featureId: feature.id, - properties: feature.properties - }; - var popup = feature.properties ? feature.properties.popup : null; - if (typeof popup !== "undefined" && popup !== null) layer.bindPopup(popup); - layer.on("click", mouseHandler(self.id, layerId, group, "geojson_click", extraInfo), this); - layer.on("mouseover", mouseHandler(self.id, layerId, group, "geojson_mouseover", extraInfo), this); - layer.on("mouseout", mouseHandler(self.id, layerId, group, "geojson_mouseout", extraInfo), this); - } - }); - - this.layerManager.addLayer(gjlayer, "geojson", layerId, group); -}; - -methods.removeGeoJSON = function (layerId) { - this.layerManager.removeLayer("geojson", layerId); -}; - -methods.clearGeoJSON = function () { - this.layerManager.clearLayers("geojson"); -}; - -methods.addTopoJSON = function (data, layerId, group, style) { - // This time, self is actually needed because the callbacks below need - // to access both the inner and outer senses of "this" - var self = this; - - if (typeof data === "string") { - data = JSON.parse(data); - } - - var globalStyle = _jquery2["default"].extend({}, style, data.style || {}); - - var gjlayer = _leaflet2["default"].geoJson(null, { - style: function style(feature) { - if (feature.style || feature.properties.style) { - return _jquery2["default"].extend({}, globalStyle, feature.style, feature.properties.style); - } else { - return globalStyle; - } - }, - onEachFeature: function onEachFeature(feature, layer) { - var extraInfo = { - featureId: feature.id, - properties: feature.properties - }; - var popup = feature.properties.popup; - if (typeof popup !== "undefined" && popup !== null) layer.bindPopup(popup); - layer.on("click", mouseHandler(self.id, layerId, group, "topojson_click", extraInfo), this); - layer.on("mouseover", mouseHandler(self.id, layerId, group, "topojson_mouseover", extraInfo), this); - layer.on("mouseout", mouseHandler(self.id, layerId, group, "topojson_mouseout", extraInfo), this); - } - }); - - global.omnivore.topojson.parse(data, null, gjlayer); - this.layerManager.addLayer(gjlayer, "topojson", layerId, group); -}; - -methods.removeTopoJSON = function (layerId) { - this.layerManager.removeLayer("topojson", layerId); -}; - -methods.clearTopoJSON = function () { - this.layerManager.clearLayers("topojson"); -}; - -methods.addControl = function (html, position, layerId, classes) { - function onAdd(map) { - var div = _leaflet2["default"].DomUtil.create("div", classes); - - if (typeof layerId !== "undefined" && layerId !== null) { - div.setAttribute("id", layerId); - } - - this._div = div; // It's possible for window.Shiny to be true but Shiny.initializeInputs to - // not be, when a static leaflet widget is included as part of the shiny - // UI directly (not through leafletOutput or uiOutput). In this case we - // don't do the normal Shiny stuff as that will all happen when Shiny - // itself loads and binds the entire doc. - - if (window.Shiny && _shiny2["default"].initializeInputs) { - _shiny2["default"].renderHtml(html, this._div); - - _shiny2["default"].initializeInputs(this._div); - - _shiny2["default"].bindAll(this._div); - } else { - this._div.innerHTML = html; - } - - return this._div; - } - - function onRemove(map) { - if (window.Shiny && _shiny2["default"].unbindAll) { - _shiny2["default"].unbindAll(this._div); - } - } - - var Control = _leaflet2["default"].Control.extend({ - options: { - position: position - }, - onAdd: onAdd, - onRemove: onRemove - }); - - this.controls.add(new Control(), layerId, html); -}; - -methods.addCustomControl = function (control, layerId) { - this.controls.add(control, layerId); -}; - -methods.removeControl = function (layerId) { - this.controls.remove(layerId); -}; - -methods.getControl = function (layerId) { - this.controls.get(layerId); -}; - -methods.clearControls = function () { - this.controls.clear(); -}; - -methods.addLegend = function (options) { - var legend = _leaflet2["default"].control({ - position: options.position - }); - - var gradSpan; - - legend.onAdd = function (map) { - var div = _leaflet2["default"].DomUtil.create("div", options.className), - colors = options.colors, - labels = options.labels, - legendHTML = ""; - - if (options.type === "numeric") { - // # Formatting constants. - var singleBinHeight = 20; // The distance between tick marks, in px - - var vMargin = 8; // If 1st tick mark starts at top of gradient, how - // many extra px are needed for the top half of the - // 1st label? (ditto for last tick mark/label) - - var tickWidth = 4; // How wide should tick marks be, in px? - - var labelPadding = 6; // How much distance to reserve for tick mark? - // (Must be >= tickWidth) - // # Derived formatting parameters. - // What's the height of a single bin, in percentage (of gradient height)? - // It might not just be 1/(n-1), if the gradient extends past the tick - // marks (which can be the case for pretty cut points). - - var singleBinPct = (options.extra.p_n - options.extra.p_1) / (labels.length - 1); // Each bin is `singleBinHeight` high. How tall is the gradient? - - var totalHeight = 1 / singleBinPct * singleBinHeight + 1; // How far should the first tick be shifted down, relative to the top - // of the gradient? - - var tickOffset = singleBinHeight / singleBinPct * options.extra.p_1; - gradSpan = (0, _jquery2["default"])("").css({ - "background": "linear-gradient(" + colors + ")", - "opacity": options.opacity, - "height": totalHeight + "px", - "width": "18px", - "display": "block", - "margin-top": vMargin + "px" - }); - var leftDiv = (0, _jquery2["default"])("
").css("float", "left"), - rightDiv = (0, _jquery2["default"])("
").css("float", "left"); - leftDiv.append(gradSpan); - (0, _jquery2["default"])(div).append(leftDiv).append(rightDiv).append((0, _jquery2["default"])("
")); // Have to attach the div to the body at this early point, so that the - // svg text getComputedTextLength() actually works, below. - - document.body.appendChild(div); - var ns = "http://www.w3.org/2000/svg"; - var svg = document.createElementNS(ns, "svg"); - rightDiv.append(svg); - var g = document.createElementNS(ns, "g"); - (0, _jquery2["default"])(g).attr("transform", "translate(0, " + vMargin + ")"); - svg.appendChild(g); // max label width needed to set width of svg, and right-justify text - - var maxLblWidth = 0; // Create tick marks and labels - - _jquery2["default"].each(labels, function (i, label) { - var y = tickOffset + i * singleBinHeight + 0.5; - var thisLabel = document.createElementNS(ns, "text"); - (0, _jquery2["default"])(thisLabel).text(labels[i]).attr("y", y).attr("dx", labelPadding).attr("dy", "0.5ex"); - g.appendChild(thisLabel); - maxLblWidth = Math.max(maxLblWidth, thisLabel.getComputedTextLength()); - var thisTick = document.createElementNS(ns, "line"); - (0, _jquery2["default"])(thisTick).attr("x1", 0).attr("x2", tickWidth).attr("y1", y).attr("y2", y).attr("stroke-width", 1); - g.appendChild(thisTick); - }); // Now that we know the max label width, we can right-justify - - - (0, _jquery2["default"])(svg).find("text").attr("dx", labelPadding + maxLblWidth).attr("text-anchor", "end"); // Final size for - - (0, _jquery2["default"])(svg).css({ - width: maxLblWidth + labelPadding + "px", - height: totalHeight + vMargin * 2 + "px" - }); - - if (options.na_color && _jquery2["default"].inArray(options.na_label, labels) < 0) { - (0, _jquery2["default"])(div).append("
" + options.na_label + "
"); - } - } else { - if (options.na_color && _jquery2["default"].inArray(options.na_label, labels) < 0) { - colors.push(options.na_color); - labels.push(options.na_label); - } - - for (var i = 0; i < colors.length; i++) { - legendHTML += " " + labels[i] + "
"; - } - - div.innerHTML = legendHTML; - } - - if (options.title) (0, _jquery2["default"])(div).prepend("
" + options.title + "
"); - return div; - }; - - if (options.group) { - // Auto generate a layerID if not provided - if (!options.layerId) { - options.layerId = _leaflet2["default"].Util.stamp(legend); - } - - var map = this; - map.on("overlayadd", function (e) { - if (e.name === options.group) { - map.controls.add(legend, options.layerId); - } - }); - map.on("overlayremove", function (e) { - if (e.name === options.group) { - map.controls.remove(options.layerId); - } - }); - map.on("groupadd", function (e) { - if (e.name === options.group) { - map.controls.add(legend, options.layerId); - } - }); - map.on("groupremove", function (e) { - if (e.name === options.group) { - map.controls.remove(options.layerId); - } - }); - } - - this.controls.add(legend, options.layerId); -}; - -methods.addLayersControl = function (baseGroups, overlayGroups, options) { - var _this4 = this; - - // Only allow one layers control at a time - methods.removeLayersControl.call(this); - var firstLayer = true; - var base = {}; - - _jquery2["default"].each((0, _util.asArray)(baseGroups), function (i, g) { - var layer = _this4.layerManager.getLayerGroup(g, true); - - if (layer) { - base[g] = layer; // Check if >1 base layers are visible; if so, hide all but the first one - - if (_this4.hasLayer(layer)) { - if (firstLayer) { - firstLayer = false; - } else { - _this4.removeLayer(layer); - } - } - } - }); - - var overlay = {}; - - _jquery2["default"].each((0, _util.asArray)(overlayGroups), function (i, g) { - var layer = _this4.layerManager.getLayerGroup(g, true); - - if (layer) { - overlay[g] = layer; - } - }); - - this.currentLayersControl = _leaflet2["default"].control.layers(base, overlay, options); - this.addControl(this.currentLayersControl); -}; - -methods.removeLayersControl = function () { - if (this.currentLayersControl) { - this.removeControl(this.currentLayersControl); - this.currentLayersControl = null; - } -}; - -methods.addScaleBar = function (options) { - // Only allow one scale bar at a time - methods.removeScaleBar.call(this); - - var scaleBar = _leaflet2["default"].control.scale(options).addTo(this); - - this.currentScaleBar = scaleBar; -}; - -methods.removeScaleBar = function () { - if (this.currentScaleBar) { - this.currentScaleBar.remove(); - this.currentScaleBar = null; - } -}; - -methods.hideGroup = function (group) { - var _this5 = this; - - _jquery2["default"].each((0, _util.asArray)(group), function (i, g) { - var layer = _this5.layerManager.getLayerGroup(g, true); - - if (layer) { - _this5.removeLayer(layer); - } - }); -}; - -methods.showGroup = function (group) { - var _this6 = this; - - _jquery2["default"].each((0, _util.asArray)(group), function (i, g) { - var layer = _this6.layerManager.getLayerGroup(g, true); - - if (layer) { - _this6.addLayer(layer); - } - }); -}; - -function setupShowHideGroupsOnZoom(map) { - if (map.leafletr._hasInitializedShowHideGroups) { - return; - } - - map.leafletr._hasInitializedShowHideGroups = true; - - function setVisibility(layer, visible, group) { - if (visible !== map.hasLayer(layer)) { - if (visible) { - map.addLayer(layer); - map.fire("groupadd", { - "name": group, - "layer": layer - }); - } else { - map.removeLayer(layer); - map.fire("groupremove", { - "name": group, - "layer": layer - }); - } - } - } - - function showHideGroupsOnZoom() { - if (!map.layerManager) return; - var zoom = map.getZoom(); - map.layerManager.getAllGroupNames().forEach(function (group) { - var layer = map.layerManager.getLayerGroup(group, false); - - if (layer && typeof layer.zoomLevels !== "undefined") { - setVisibility(layer, layer.zoomLevels === true || layer.zoomLevels.indexOf(zoom) >= 0, group); - } - }); - } - - map.showHideGroupsOnZoom = showHideGroupsOnZoom; - map.on("zoomend", showHideGroupsOnZoom); -} - -methods.setGroupOptions = function (group, options) { - var _this7 = this; - - _jquery2["default"].each((0, _util.asArray)(group), function (i, g) { - var layer = _this7.layerManager.getLayerGroup(g, true); // This slightly tortured check is because 0 is a valid value for zoomLevels - - - if (typeof options.zoomLevels !== "undefined" && options.zoomLevels !== null) { - layer.zoomLevels = (0, _util.asArray)(options.zoomLevels); - } - }); - - setupShowHideGroupsOnZoom(this); - this.showHideGroupsOnZoom(); -}; - -methods.addRasterImage = function (uri, bounds, opacity, attribution, layerId, group) { - // uri is a data URI containing an image. We want to paint this image as a - // layer at (top-left) bounds[0] to (bottom-right) bounds[1]. - // We can't simply use ImageOverlay, as it uses bilinear scaling which looks - // awful as you zoom in (and sometimes shifts positions or disappears). - // Instead, we'll use a TileLayer.Canvas to draw pieces of the image. - // First, some helper functions. - // degree2tile converts latitude, longitude, and zoom to x and y tile - // numbers. The tile numbers returned can be non-integral, as there's no - // reason to expect that the lat/lng inputs are exactly on the border of two - // tiles. - // - // We'll use this to convert the bounds we got from the server, into coords - // in tile-space at a given zoom level. Note that once we do the conversion, - // we don't to do any more trigonometry to convert between pixel coordinates - // and tile coordinates; the source image pixel coords, destination canvas - // pixel coords, and tile coords all can be scaled linearly. - function degree2tile(lat, lng, zoom) { - // See http://wiki.openstreetmap.org/wiki/Slippy_map_tilenames - var latRad = lat * Math.PI / 180; - var n = Math.pow(2, zoom); - var x = (lng + 180) / 360 * n; - var y = (1 - Math.log(Math.tan(latRad) + 1 / Math.cos(latRad)) / Math.PI) / 2 * n; - return { - x: x, - y: y - }; - } // Given a range [from,to) and either one or two numbers, returns true if - // there is any overlap between [x,x1) and the range--or if x1 is omitted, - // then returns true if x is within [from,to). - - - function overlap(from, to, x, - /* optional */ - x1) { - if (arguments.length == 3) x1 = x; - return x < to && x1 >= from; - } - - function getCanvasSmoothingProperty(ctx) { - var candidates = ["imageSmoothingEnabled", "mozImageSmoothingEnabled", "webkitImageSmoothingEnabled", "msImageSmoothingEnabled"]; - - for (var i = 0; i < candidates.length; i++) { - if (typeof ctx[candidates[i]] !== "undefined") { - return candidates[i]; - } - } - - return null; - } // Our general strategy is to: - // 1. Load the data URI in an Image() object, so we can get its pixel - // dimensions and the underlying image data. (We could have done this - // by not encoding as PNG at all but just send an array of RGBA values - // from the server, but that would inflate the JSON too much.) - // 2. Create a hidden canvas that we use just to extract the image data - // from the Image (using Context2D.getImageData()). - // 3. Create a TileLayer.Canvas and add it to the map. - // We want to synchronously create and attach the TileLayer.Canvas (so an - // immediate call to clearRasters() will be respected, for example), but - // Image loads its data asynchronously. Fortunately we can resolve this - // by putting TileLayer.Canvas into async mode, which will let us create - // and attach the layer but have it wait until the image is loaded before - // it actually draws anything. - // These are the variables that we will populate once the image is loaded. - - - var imgData = null; // 1d row-major array, four [0-255] integers per pixel - - var imgDataMipMapper = null; - var w = null; // image width in pixels - - var h = null; // image height in pixels - // We'll use this array to store callbacks that need to be invoked once - // imgData, w, and h have been resolved. - - var imgDataCallbacks = []; // Consumers of imgData, w, and h can call this to be notified when data - // is available. - - function getImageData(callback) { - if (imgData != null) { - // Must not invoke the callback immediately; it's too confusing and - // fragile to have a function invoke the callback *either* immediately - // or in the future. Better to be consistent here. - setTimeout(function () { - callback(imgData, w, h, imgDataMipMapper); - }, 0); - } else { - imgDataCallbacks.push(callback); - } - } - - var img = new Image(); - - img.onload = function () { - // Save size - w = img.width; - h = img.height; // Create a dummy canvas to extract the image data - - var imgDataCanvas = document.createElement("canvas"); - imgDataCanvas.width = w; - imgDataCanvas.height = h; - imgDataCanvas.style.display = "none"; - document.body.appendChild(imgDataCanvas); - var imgDataCtx = imgDataCanvas.getContext("2d"); - imgDataCtx.drawImage(img, 0, 0); // Save the image data. - - imgData = imgDataCtx.getImageData(0, 0, w, h).data; - imgDataMipMapper = new _mipmapper2["default"](img); // Done with the canvas, remove it from the page so it can be gc'd. - - document.body.removeChild(imgDataCanvas); // Alert any getImageData callers who are waiting. - - for (var i = 0; i < imgDataCallbacks.length; i++) { - imgDataCallbacks[i](imgData, w, h, imgDataMipMapper); - } - - imgDataCallbacks = []; - }; - - img.src = uri; - - var canvasTiles = _leaflet2["default"].gridLayer({ - opacity: opacity, - attribution: attribution, - detectRetina: true, - async: true - }); // NOTE: The done() function MUST NOT be invoked until after the current - // tick; done() looks in Leaflet's tile cache for the current tile, and - // since it's still being constructed, it won't be found. - - - canvasTiles.createTile = function (tilePoint, done) { - var zoom = tilePoint.z; - - var canvas = _leaflet2["default"].DomUtil.create("canvas"); - - var error; // setup tile width and height according to the options - - var size = this.getTileSize(); - canvas.width = size.x; - canvas.height = size.y; - getImageData(function (imgData, w, h, mipmapper) { - try { - // The Context2D we'll being drawing onto. It's always 256x256. - var ctx = canvas.getContext("2d"); // Convert our image data's top-left and bottom-right locations into - // x/y tile coordinates. This is essentially doing a spherical mercator - // projection, then multiplying by 2^zoom. - - var topLeft = degree2tile(bounds[0][0], bounds[0][1], zoom); - var bottomRight = degree2tile(bounds[1][0], bounds[1][1], zoom); // The size of the image in x/y tile coordinates. - - var extent = { - x: bottomRight.x - topLeft.x, - y: bottomRight.y - topLeft.y - }; // Short circuit if tile is totally disjoint from image. - - if (!overlap(tilePoint.x, tilePoint.x + 1, topLeft.x, bottomRight.x)) return; - if (!overlap(tilePoint.y, tilePoint.y + 1, topLeft.y, bottomRight.y)) return; // The linear resolution of the tile we're drawing is always 256px per tile unit. - // If the linear resolution (in either direction) of the image is less than 256px - // per tile unit, then use nearest neighbor; otherwise, use the canvas's built-in - // scaling. - - var imgRes = { - x: w / extent.x, - y: h / extent.y - }; // We can do the actual drawing in one of three ways: - // - Call drawImage(). This is easy and fast, and results in smooth - // interpolation (bilinear?). This is what we want when we are - // reducing the image from its native size. - // - Call drawImage() with imageSmoothingEnabled=false. This is easy - // and fast and gives us nearest-neighbor interpolation, which is what - // we want when enlarging the image. However, it's unsupported on many - // browsers (including QtWebkit). - // - Do a manual nearest-neighbor interpolation. This is what we'll fall - // back to when enlarging, and imageSmoothingEnabled isn't supported. - // In theory it's slower, but still pretty fast on my machine, and the - // results look the same AFAICT. - // Is imageSmoothingEnabled supported? If so, we can let canvas do - // nearest-neighbor interpolation for us. - - var smoothingProperty = getCanvasSmoothingProperty(ctx); - - if (smoothingProperty || imgRes.x >= 256 && imgRes.y >= 256) { - // Use built-in scaling - // Turn off anti-aliasing if necessary - if (smoothingProperty) { - ctx[smoothingProperty] = imgRes.x >= 256 && imgRes.y >= 256; - } // Don't necessarily draw with the full-size image; if we're - // downscaling, use the mipmapper to get a pre-downscaled image - // (see comments on Mipmapper class for why this matters). - - - mipmapper.getBySize(extent.x * 256, extent.y * 256, function (mip) { - // It's possible that the image will go off the edge of the canvas-- - // that's OK, the canvas should clip appropriately. - ctx.drawImage(mip, // Convert abs tile coords to rel tile coords, then *256 to convert - // to rel pixel coords - (topLeft.x - tilePoint.x) * 256, (topLeft.y - tilePoint.y) * 256, // Always draw the whole thing and let canvas clip; so we can just - // convert from size in tile coords straight to pixels - extent.x * 256, extent.y * 256); - }); - } else { - // Use manual nearest-neighbor interpolation - // Calculate the source image pixel coordinates that correspond with - // the top-left and bottom-right of this tile. (If the source image - // only partially overlaps the tile, we use max/min to limit the - // sourceStart/End to only reflect the overlapping portion.) - var sourceStart = { - x: Math.max(0, Math.floor((tilePoint.x - topLeft.x) * imgRes.x)), - y: Math.max(0, Math.floor((tilePoint.y - topLeft.y) * imgRes.y)) - }; - var sourceEnd = { - x: Math.min(w, Math.ceil((tilePoint.x + 1 - topLeft.x) * imgRes.x)), - y: Math.min(h, Math.ceil((tilePoint.y + 1 - topLeft.y) * imgRes.y)) - }; // The size, in dest pixels, that each source pixel should occupy. - // This might be greater or less than 1 (e.g. if x and y resolution - // are very different). - - var pixelSize = { - x: 256 / imgRes.x, - y: 256 / imgRes.y - }; // For each pixel in the source image that overlaps the tile... - - for (var row = sourceStart.y; row < sourceEnd.y; row++) { - for (var col = sourceStart.x; col < sourceEnd.x; col++) { - // ...extract the pixel data... - var i = (row * w + col) * 4; - var r = imgData[i]; - var g = imgData[i + 1]; - var b = imgData[i + 2]; - var a = imgData[i + 3]; - ctx.fillStyle = "rgba(" + [r, g, b, a / 255].join(",") + ")"; // ...calculate the corresponding pixel coord in the dest image - // where it should be drawn... - - var pixelPos = { - x: (col / imgRes.x + topLeft.x - tilePoint.x) * 256, - y: (row / imgRes.y + topLeft.y - tilePoint.y) * 256 - }; // ...and draw a rectangle there. - - ctx.fillRect(Math.round(pixelPos.x), Math.round(pixelPos.y), // Looks crazy, but this is necessary to prevent rounding from - // causing overlap between this rect and its neighbors. The - // minuend is the location of the next pixel, while the - // subtrahend is the position of the current pixel (to turn an - // absolute coordinate to a width/height). Yes, I had to look - // up minuend and subtrahend. - Math.round(pixelPos.x + pixelSize.x) - Math.round(pixelPos.x), Math.round(pixelPos.y + pixelSize.y) - Math.round(pixelPos.y)); - } - } - } - } catch (e) { - error = e; - } finally { - done(error, canvas); - } - }); - return canvas; - }; - - this.layerManager.addLayer(canvasTiles, "image", layerId, group); -}; - -methods.removeImage = function (layerId) { - this.layerManager.removeLayer("image", layerId); -}; - -methods.clearImages = function () { - this.layerManager.clearLayers("image"); -}; - -methods.addMeasure = function (options) { - // if a measureControl already exists, then remove it and - // replace with a new one - methods.removeMeasure.call(this); - this.measureControl = _leaflet2["default"].control.measure(options); - this.addControl(this.measureControl); -}; - -methods.removeMeasure = function () { - if (this.measureControl) { - this.removeControl(this.measureControl); - this.measureControl = null; - } -}; - -methods.addSelect = function (ctGroup) { - var _this8 = this; - - methods.removeSelect.call(this); - this._selectButton = _leaflet2["default"].easyButton({ - states: [{ - stateName: "select-inactive", - icon: "ion-qr-scanner", - title: "Make a selection", - onClick: function onClick(btn, map) { - btn.state("select-active"); - _this8._locationFilter = new _leaflet2["default"].LocationFilter2(); - - if (ctGroup) { - var selectionHandle = new global.crosstalk.SelectionHandle(ctGroup); - selectionHandle.on("change", function (e) { - if (e.sender !== selectionHandle) { - if (_this8._locationFilter) { - _this8._locationFilter.disable(); - - btn.state("select-inactive"); - } - } - }); - - var handler = function handler(e) { - _this8.layerManager.brush(_this8._locationFilter.getBounds(), { - sender: selectionHandle - }); - }; - - _this8._locationFilter.on("enabled", handler); - - _this8._locationFilter.on("change", handler); - - _this8._locationFilter.on("disabled", function () { - selectionHandle.close(); - _this8._locationFilter = null; - }); - } - - _this8._locationFilter.addTo(map); - } - }, { - stateName: "select-active", - icon: "ion-close-round", - title: "Dismiss selection", - onClick: function onClick(btn, map) { - btn.state("select-inactive"); - - _this8._locationFilter.disable(); // If explicitly dismissed, clear the crosstalk selections - - - _this8.layerManager.unbrush(); - } - }] - }); - - this._selectButton.addTo(this); -}; - -methods.removeSelect = function () { - if (this._locationFilter) { - this._locationFilter.disable(); - } - - if (this._selectButton) { - this.removeControl(this._selectButton); - this._selectButton = null; - } -}; - -methods.createMapPane = function (name, zIndex) { - this.createPane(name); - this.getPane(name).style.zIndex = zIndex; -}; - - -}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"./cluster-layer-store":1,"./crs_utils":3,"./dataframe":4,"./global/htmlwidgets":8,"./global/jquery":9,"./global/leaflet":10,"./global/shiny":12,"./mipmapper":16,"./util":17}],16:[function(require,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - -// This class simulates a mipmap, which shrinks images by powers of two. This -// stepwise reduction results in "pixel-perfect downscaling" (where every -// pixel of the original image has some contribution to the downscaled image) -// as opposed to a single-step downscaling which will discard a lot of data -// (and with sparse images at small scales can give very surprising results). -var Mipmapper = /*#__PURE__*/function () { - function Mipmapper(img) { - _classCallCheck(this, Mipmapper); - - this._layers = [img]; - } // The various functions on this class take a callback function BUT MAY OR MAY - // NOT actually behave asynchronously. - - - _createClass(Mipmapper, [{ - key: "getBySize", - value: function getBySize(desiredWidth, desiredHeight, callback) { - var _this = this; - - var i = 0; - var lastImg = this._layers[0]; - - var testNext = function testNext() { - _this.getByIndex(i, function (img) { - // If current image is invalid (i.e. too small to be rendered) or - // it's smaller than what we wanted, return the last known good image. - if (!img || img.width < desiredWidth || img.height < desiredHeight) { - callback(lastImg); - return; - } else { - lastImg = img; - i++; - testNext(); - return; - } - }); - }; - - testNext(); - } - }, { - key: "getByIndex", - value: function getByIndex(i, callback) { - var _this2 = this; - - if (this._layers[i]) { - callback(this._layers[i]); - return; - } - - this.getByIndex(i - 1, function (prevImg) { - if (!prevImg) { - // prevImg could not be calculated (too small, possibly) - callback(null); - return; - } - - if (prevImg.width < 2 || prevImg.height < 2) { - // Can't reduce this image any further - callback(null); - return; - } // If reduce ever becomes truly asynchronous, we should stuff a promise or - // something into this._layers[i] before calling this.reduce(), to prevent - // redundant reduce operations from happening. - - - _this2.reduce(prevImg, function (reducedImg) { - _this2._layers[i] = reducedImg; - callback(reducedImg); - return; - }); - }); - } - }, { - key: "reduce", - value: function reduce(img, callback) { - var imgDataCanvas = document.createElement("canvas"); - imgDataCanvas.width = Math.ceil(img.width / 2); - imgDataCanvas.height = Math.ceil(img.height / 2); - imgDataCanvas.style.display = "none"; - document.body.appendChild(imgDataCanvas); - - try { - var imgDataCtx = imgDataCanvas.getContext("2d"); - imgDataCtx.drawImage(img, 0, 0, img.width / 2, img.height / 2); - callback(imgDataCanvas); - } finally { - document.body.removeChild(imgDataCanvas); - } - } - }]); - - return Mipmapper; -}(); - -exports["default"] = Mipmapper; - - -},{}],17:[function(require,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.log = log; -exports.recycle = recycle; -exports.asArray = asArray; - -function log(message) { - /* eslint-disable no-console */ - if (console && console.log) console.log(message); - /* eslint-enable no-console */ -} - -function recycle(values, length, inPlace) { - if (length === 0 && !inPlace) return []; - - if (!(values instanceof Array)) { - if (inPlace) { - throw new Error("Can't do in-place recycling of a non-Array value"); - } - - values = [values]; - } - - if (typeof length === "undefined") length = values.length; - var dest = inPlace ? values : []; - var origLength = values.length; - - while (dest.length < length) { - dest.push(values[dest.length % origLength]); - } - - if (dest.length > length) { - dest.splice(length, dest.length - length); - } - - return dest; -} - -function asArray(value) { - if (value instanceof Array) return value;else return [value]; -} - - -},{}]},{},[13]); diff --git a/inst/doc/neotoma2-package_files/leaflet-markercluster-1.0.5/MIT-LICENCE.txt b/inst/doc/neotoma2-package_files/leaflet-markercluster-1.0.5/MIT-LICENCE.txt deleted file mode 100644 index 19af068..0000000 --- a/inst/doc/neotoma2-package_files/leaflet-markercluster-1.0.5/MIT-LICENCE.txt +++ /dev/null @@ -1,20 +0,0 @@ -Copyright 2012 David Leaver - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/inst/doc/neotoma2-package_files/leaflet-markercluster-1.0.5/MarkerCluster.Default.css b/inst/doc/neotoma2-package_files/leaflet-markercluster-1.0.5/MarkerCluster.Default.css deleted file mode 100644 index bbc8c9f..0000000 --- a/inst/doc/neotoma2-package_files/leaflet-markercluster-1.0.5/MarkerCluster.Default.css +++ /dev/null @@ -1,60 +0,0 @@ -.marker-cluster-small { - background-color: rgba(181, 226, 140, 0.6); - } -.marker-cluster-small div { - background-color: rgba(110, 204, 57, 0.6); - } - -.marker-cluster-medium { - background-color: rgba(241, 211, 87, 0.6); - } -.marker-cluster-medium div { - background-color: rgba(240, 194, 12, 0.6); - } - -.marker-cluster-large { - background-color: rgba(253, 156, 115, 0.6); - } -.marker-cluster-large div { - background-color: rgba(241, 128, 23, 0.6); - } - - /* IE 6-8 fallback colors */ -.leaflet-oldie .marker-cluster-small { - background-color: rgb(181, 226, 140); - } -.leaflet-oldie .marker-cluster-small div { - background-color: rgb(110, 204, 57); - } - -.leaflet-oldie .marker-cluster-medium { - background-color: rgb(241, 211, 87); - } -.leaflet-oldie .marker-cluster-medium div { - background-color: rgb(240, 194, 12); - } - -.leaflet-oldie .marker-cluster-large { - background-color: rgb(253, 156, 115); - } -.leaflet-oldie .marker-cluster-large div { - background-color: rgb(241, 128, 23); -} - -.marker-cluster { - background-clip: padding-box; - border-radius: 20px; - } -.marker-cluster div { - width: 30px; - height: 30px; - margin-left: 5px; - margin-top: 5px; - - text-align: center; - border-radius: 15px; - font: 12px "Helvetica Neue", Arial, Helvetica, sans-serif; - } -.marker-cluster span { - line-height: 30px; - } \ No newline at end of file diff --git a/inst/doc/neotoma2-package_files/leaflet-markercluster-1.0.5/MarkerCluster.css b/inst/doc/neotoma2-package_files/leaflet-markercluster-1.0.5/MarkerCluster.css deleted file mode 100644 index c60d71b..0000000 --- a/inst/doc/neotoma2-package_files/leaflet-markercluster-1.0.5/MarkerCluster.css +++ /dev/null @@ -1,14 +0,0 @@ -.leaflet-cluster-anim .leaflet-marker-icon, .leaflet-cluster-anim .leaflet-marker-shadow { - -webkit-transition: -webkit-transform 0.3s ease-out, opacity 0.3s ease-in; - -moz-transition: -moz-transform 0.3s ease-out, opacity 0.3s ease-in; - -o-transition: -o-transform 0.3s ease-out, opacity 0.3s ease-in; - transition: transform 0.3s ease-out, opacity 0.3s ease-in; -} - -.leaflet-cluster-spider-leg { - /* stroke-dashoffset (duration and function) should match with leaflet-marker-icon transform in order to track it exactly */ - -webkit-transition: -webkit-stroke-dashoffset 0.3s ease-out, -webkit-stroke-opacity 0.3s ease-in; - -moz-transition: -moz-stroke-dashoffset 0.3s ease-out, -moz-stroke-opacity 0.3s ease-in; - -o-transition: -o-stroke-dashoffset 0.3s ease-out, -o-stroke-opacity 0.3s ease-in; - transition: stroke-dashoffset 0.3s ease-out, stroke-opacity 0.3s ease-in; -} diff --git a/inst/doc/neotoma2-package_files/leaflet-markercluster-1.0.5/leaflet.markercluster.freezable.js b/inst/doc/neotoma2-package_files/leaflet-markercluster-1.0.5/leaflet.markercluster.freezable.js deleted file mode 100644 index 093a72a..0000000 --- a/inst/doc/neotoma2-package_files/leaflet-markercluster-1.0.5/leaflet.markercluster.freezable.js +++ /dev/null @@ -1,6 +0,0 @@ -/*! - Leaflet.MarkerCluster.Freezable 1.0.0+9db80a3 - (c) 2015-2016 Boris Seang - License MIT - */ -!function(e,i){"function"==typeof define&&define.amd?define(["leaflet"],i):i("object"==typeof module&&module.exports?require("leaflet"):e.L)}(this,function(e,i){e.MarkerClusterGroup.include({_originalOnAddFreezable:e.MarkerClusterGroup.prototype.onAdd,onAdd:function(e){var i=this._zoom;this._originalOnAddFreezable(e),this._frozen&&(i>=0&&i!==this._zoom&&(this._featureGroup.clearLayers(),this._zoom=i,this.addLayers([])),e.off("zoomend",this._zoomEnd,this),e.off("moveend",this._moveEnd,this),e.on("zoomend moveend",this._viewChangeEndNotClustering,this))},_originalOnRemove:e.MarkerClusterGroup.prototype.onRemove,onRemove:function(e){e.off("zoomend moveend",this._viewChangeEndNotClustering,this),this._originalOnRemove(e)},disableClustering:function(){return this.freezeAtZoom(this._maxZoom+1)},disableClusteringKeepSpiderfy:function(){return this.freezeAtZoom(this._maxZoom)},enableClustering:function(){return this.unfreeze()},unfreeze:function(){return this.freezeAtZoom(!1)},freezeAtZoom:function(e){this._processQueue();var o=this._map;e===i||e===!0||e!==e?e=o?Math.round(o.getZoom()):-1:"max"===e?e=this._maxZoom+1:"maxKeepSpiderfy"===e&&(e=this._maxZoom);var t="number"==typeof e;if(this._frozen){if(!t)return this._unfreeze(),this}else{if(!t)return this;this._initiateFreeze()}return this._artificialZoomSafe(this._zoom,e),this},_initiateFreeze:function(){var e=this._map;this._frozen=!0,e&&(e.off("zoomend",this._zoomEnd,this),e.off("moveend",this._moveEnd,this),e.on("zoomend moveend",this._viewChangeEndNotClustering,this))},_unfreeze:function(){var e=this._map;this._frozen=!1,e&&(e.off("zoomend moveend",this._viewChangeEndNotClustering,this),e.on("zoomend",this._zoomEnd,this),e.on("moveend",this._moveEnd,this),this._executeAfterUnspiderfy(function(){this._zoomEnd()},this))},_executeAfterUnspiderfy:function(e,i){return this._unspiderfy&&this._spiderfied?(this.once("animationend",function(){e.call(i)}),void this._unspiderfy()):void e.call(i)},_artificialZoomSafe:function(e,i){this._zoom=i,this._map&&e!==i&&this._executeAfterUnspiderfy(function(){this._artificialZoom(e,i)},this)},_artificialZoom:function(e,i){ei&&(this._animationStart(),this._animationZoomOut(e,i))},_viewChangeEndNotClustering:function(){var e=this._featureGroup,i=this._getExpandedVisibleBounds(),o=this._zoom;e.eachLayer(function(t){!i.contains(t._latlng)&&t.__parent&&t.__parent._zoom=i;)t=t.__parent;return this._currentShownBounds.contains(t.getLatLng())&&(this.options.animateAddingMarkers?this._animationAddLayer(e,t):this._animationAddLayerNonAnimated(e,t)),this},removeLayer:function(e){return e instanceof L.LayerGroup?this.removeLayers([e]):e.getLatLng?this._map?e.__parent?(this._unspiderfy&&(this._unspiderfy(),this._unspiderfyLayer(e)),this._removeLayer(e,!0),this.fire("layerremove",{layer:e}),this._topClusterLevel._recalculateBounds(),this._refreshClustersIcons(),e.off(this._childMarkerEventHandlers,this),this._featureGroup.hasLayer(e)&&(this._featureGroup.removeLayer(e),e.clusterShow&&e.clusterShow()),this):this:(!this._arraySplice(this._needsClustering,e)&&this.hasLayer(e)&&this._needsRemoving.push({layer:e,latlng:e._latlng}),this.fire("layerremove",{layer:e}),this):(this._nonPointGroup.removeLayer(e),this.fire("layerremove",{layer:e}),this)},addLayers:function(e,t){if(!L.Util.isArray(e))return this.addLayer(e);var i,n=this._featureGroup,r=this._nonPointGroup,s=this.options.chunkedLoading,o=this.options.chunkInterval,a=this.options.chunkProgress,h=e.length,l=0,u=!0;if(this._map){var _=(new Date).getTime(),d=L.bind(function(){for(var c=(new Date).getTime();h>l;l++){if(s&&0===l%200){var p=(new Date).getTime()-c;if(p>o)break}if(i=e[l],i instanceof L.LayerGroup)u&&(e=e.slice(),u=!1),this._extractNonGroupLayers(i,e),h=e.length;else if(i.getLatLng){if(!this.hasLayer(i)&&(this._addLayer(i,this._maxZoom),t||this.fire("layeradd",{layer:i}),i.__parent&&2===i.__parent.getChildCount())){var f=i.__parent.getAllChildMarkers(),m=f[0]===i?f[1]:f[0];n.removeLayer(m)}}else r.addLayer(i),t||this.fire("layeradd",{layer:i})}a&&a(l,h,(new Date).getTime()-_),l===h?(this._topClusterLevel._recalculateBounds(),this._refreshClustersIcons(),this._topClusterLevel._recursivelyAddChildrenToMap(null,this._zoom,this._currentShownBounds)):setTimeout(d,this.options.chunkDelay)},this);d()}else for(var c=this._needsClustering;h>l;l++)i=e[l],i instanceof L.LayerGroup?(u&&(e=e.slice(),u=!1),this._extractNonGroupLayers(i,e),h=e.length):i.getLatLng?this.hasLayer(i)||c.push(i):r.addLayer(i);return this},removeLayers:function(e){var t,i,n=e.length,r=this._featureGroup,s=this._nonPointGroup,o=!0;if(!this._map){for(t=0;n>t;t++)i=e[t],i instanceof L.LayerGroup?(o&&(e=e.slice(),o=!1),this._extractNonGroupLayers(i,e),n=e.length):(this._arraySplice(this._needsClustering,i),s.removeLayer(i),this.hasLayer(i)&&this._needsRemoving.push({layer:i,latlng:i._latlng}),this.fire("layerremove",{layer:i}));return this}if(this._unspiderfy){this._unspiderfy();var a=e.slice(),h=n;for(t=0;h>t;t++)i=a[t],i instanceof L.LayerGroup?(this._extractNonGroupLayers(i,a),h=a.length):this._unspiderfyLayer(i)}for(t=0;n>t;t++)i=e[t],i instanceof L.LayerGroup?(o&&(e=e.slice(),o=!1),this._extractNonGroupLayers(i,e),n=e.length):i.__parent?(this._removeLayer(i,!0,!0),this.fire("layerremove",{layer:i}),r.hasLayer(i)&&(r.removeLayer(i),i.clusterShow&&i.clusterShow())):(s.removeLayer(i),this.fire("layerremove",{layer:i}));return this._topClusterLevel._recalculateBounds(),this._refreshClustersIcons(),this._topClusterLevel._recursivelyAddChildrenToMap(null,this._zoom,this._currentShownBounds),this},clearLayers:function(){return this._map||(this._needsClustering=[],delete this._gridClusters,delete this._gridUnclustered),this._noanimationUnspiderfy&&this._noanimationUnspiderfy(),this._featureGroup.clearLayers(),this._nonPointGroup.clearLayers(),this.eachLayer(function(e){e.off(this._childMarkerEventHandlers,this),delete e.__parent},this),this._map&&this._generateInitialClusters(),this},getBounds:function(){var e=new L.LatLngBounds;this._topClusterLevel&&e.extend(this._topClusterLevel._bounds);for(var t=this._needsClustering.length-1;t>=0;t--)e.extend(this._needsClustering[t].getLatLng());return e.extend(this._nonPointGroup.getBounds()),e},eachLayer:function(e,t){var i,n,r,s=this._needsClustering.slice(),o=this._needsRemoving;for(this._topClusterLevel&&this._topClusterLevel.getAllChildMarkers(s),n=s.length-1;n>=0;n--){for(i=!0,r=o.length-1;r>=0;r--)if(o[r].layer===s[n]){i=!1;break}i&&e.call(t,s[n])}this._nonPointGroup.eachLayer(e,t)},getLayers:function(){var e=[];return this.eachLayer(function(t){e.push(t)}),e},getLayer:function(e){var t=null;return e=parseInt(e,10),this.eachLayer(function(i){L.stamp(i)===e&&(t=i)}),t},hasLayer:function(e){if(!e)return!1;var t,i=this._needsClustering;for(t=i.length-1;t>=0;t--)if(i[t]===e)return!0;for(i=this._needsRemoving,t=i.length-1;t>=0;t--)if(i[t].layer===e)return!1;return!(!e.__parent||e.__parent._group!==this)||this._nonPointGroup.hasLayer(e)},zoomToShowLayer:function(e,t){"function"!=typeof t&&(t=function(){});var i=function(){!e._icon&&!e.__parent._icon||this._inZoomAnimation||(this._map.off("moveend",i,this),this.off("animationend",i,this),e._icon?t():e.__parent._icon&&(this.once("spiderfied",t,this),e.__parent.spiderfy()))};e._icon&&this._map.getBounds().contains(e.getLatLng())?t():e.__parent._zoomt;t++)n=this._needsRemoving[t],n.newlatlng=n.layer._latlng,n.layer._latlng=n.latlng;for(t=0,i=this._needsRemoving.length;i>t;t++)n=this._needsRemoving[t],this._removeLayer(n.layer,!0),n.layer._latlng=n.newlatlng;this._needsRemoving=[],this._zoom=Math.round(this._map._zoom),this._currentShownBounds=this._getExpandedVisibleBounds(),this._map.on("zoomend",this._zoomEnd,this),this._map.on("moveend",this._moveEnd,this),this._spiderfierOnAdd&&this._spiderfierOnAdd(),this._bindEvents(),i=this._needsClustering,this._needsClustering=[],this.addLayers(i,!0)},onRemove:function(e){e.off("zoomend",this._zoomEnd,this),e.off("moveend",this._moveEnd,this),this._unbindEvents(),this._map._mapPane.className=this._map._mapPane.className.replace(" leaflet-cluster-anim",""),this._spiderfierOnRemove&&this._spiderfierOnRemove(),delete this._maxLat,this._hideCoverage(),this._featureGroup.remove(),this._nonPointGroup.remove(),this._featureGroup.clearLayers(),this._map=null},getVisibleParent:function(e){for(var t=e;t&&!t._icon;)t=t.__parent;return t||null},_arraySplice:function(e,t){for(var i=e.length-1;i>=0;i--)if(e[i]===t)return e.splice(i,1),!0},_removeFromGridUnclustered:function(e,t){for(var i=this._map,n=this._gridUnclustered,r=Math.floor(this._map.getMinZoom());t>=r&&n[t].removeObject(e,i.project(e.getLatLng(),t));t--);},_childMarkerDragStart:function(e){e.target.__dragStart=e.target._latlng},_childMarkerMoved:function(e){if(!this._ignoreMove&&!e.target.__dragStart){var t=e.target._popup&&e.target._popup.isOpen();this._moveChild(e.target,e.oldLatLng,e.latlng),t&&e.target.openPopup()}},_moveChild:function(e,t,i){e._latlng=t,this.removeLayer(e),e._latlng=i,this.addLayer(e)},_childMarkerDragEnd:function(e){e.target.__dragStart&&this._moveChild(e.target,e.target.__dragStart,e.target._latlng),delete e.target.__dragStart},_removeLayer:function(e,t,i){var n=this._gridClusters,r=this._gridUnclustered,s=this._featureGroup,o=this._map,a=Math.floor(this._map.getMinZoom());t&&this._removeFromGridUnclustered(e,this._maxZoom);var h,l=e.__parent,u=l._markers;for(this._arraySplice(u,e);l&&(l._childCount--,l._boundsNeedUpdate=!0,!(l._zoomt?"small":100>t?"medium":"large",new L.DivIcon({html:"
"+t+"
",className:"marker-cluster"+i,iconSize:new L.Point(40,40)})},_bindEvents:function(){var e=this._map,t=this.options.spiderfyOnMaxZoom,i=this.options.showCoverageOnHover,n=this.options.zoomToBoundsOnClick;(t||n)&&this.on("clusterclick",this._zoomOrSpiderfy,this),i&&(this.on("clustermouseover",this._showCoverage,this),this.on("clustermouseout",this._hideCoverage,this),e.on("zoomend",this._hideCoverage,this))},_zoomOrSpiderfy:function(e){for(var t=e.layer,i=t;1===i._childClusters.length;)i=i._childClusters[0];i._zoom===this._maxZoom&&i._childCount===t._childCount&&this.options.spiderfyOnMaxZoom?t.spiderfy():this.options.zoomToBoundsOnClick&&t.zoomToBounds(),e.originalEvent&&13===e.originalEvent.keyCode&&this._map._container.focus()},_showCoverage:function(e){var t=this._map;this._inZoomAnimation||(this._shownPolygon&&t.removeLayer(this._shownPolygon),e.layer.getChildCount()>2&&e.layer!==this._spiderfied&&(this._shownPolygon=new L.Polygon(e.layer.getConvexHull(),this.options.polygonOptions),t.addLayer(this._shownPolygon)))},_hideCoverage:function(){this._shownPolygon&&(this._map.removeLayer(this._shownPolygon),this._shownPolygon=null)},_unbindEvents:function(){var e=this.options.spiderfyOnMaxZoom,t=this.options.showCoverageOnHover,i=this.options.zoomToBoundsOnClick,n=this._map;(e||i)&&this.off("clusterclick",this._zoomOrSpiderfy,this),t&&(this.off("clustermouseover",this._showCoverage,this),this.off("clustermouseout",this._hideCoverage,this),n.off("zoomend",this._hideCoverage,this))},_zoomEnd:function(){this._map&&(this._mergeSplitClusters(),this._zoom=Math.round(this._map._zoom),this._currentShownBounds=this._getExpandedVisibleBounds())},_moveEnd:function(){if(!this._inZoomAnimation){var e=this._getExpandedVisibleBounds();this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds,Math.floor(this._map.getMinZoom()),this._zoom,e),this._topClusterLevel._recursivelyAddChildrenToMap(null,Math.round(this._map._zoom),e),this._currentShownBounds=e}},_generateInitialClusters:function(){var e=Math.ceil(this._map.getMaxZoom()),t=Math.floor(this._map.getMinZoom()),i=this.options.maxClusterRadius,n=i;"function"!=typeof i&&(n=function(){return i}),null!==this.options.disableClusteringAtZoom&&(e=this.options.disableClusteringAtZoom-1),this._maxZoom=e,this._gridClusters={},this._gridUnclustered={};for(var r=e;r>=t;r--)this._gridClusters[r]=new L.DistanceGrid(n(r)),this._gridUnclustered[r]=new L.DistanceGrid(n(r));this._topClusterLevel=new this._markerCluster(this,t-1)},_addLayer:function(e,t){var i,n,r=this._gridClusters,s=this._gridUnclustered,o=Math.floor(this._map.getMinZoom());for(this.options.singleMarkerMode&&this._overrideMarkerIcon(e),e.on(this._childMarkerEventHandlers,this);t>=o;t--){i=this._map.project(e.getLatLng(),t);var a=r[t].getNearObject(i);if(a)return a._addChild(e),e.__parent=a,void 0;if(a=s[t].getNearObject(i)){var h=a.__parent;h&&this._removeLayer(a,!1);var l=new this._markerCluster(this,t,a,e);r[t].addObject(l,this._map.project(l._cLatLng,t)),a.__parent=l,e.__parent=l;var u=l;for(n=t-1;n>h._zoom;n--)u=new this._markerCluster(this,n,u),r[n].addObject(u,this._map.project(a.getLatLng(),n));return h._addChild(u),this._removeFromGridUnclustered(a,t),void 0}s[t].addObject(e,i)}this._topClusterLevel._addChild(e),e.__parent=this._topClusterLevel},_refreshClustersIcons:function(){this._featureGroup.eachLayer(function(e){e instanceof L.MarkerCluster&&e._iconNeedsUpdate&&e._updateIcon()})},_enqueue:function(e){this._queue.push(e),this._queueTimeout||(this._queueTimeout=setTimeout(L.bind(this._processQueue,this),300))},_processQueue:function(){for(var e=0;ee?(this._animationStart(),this._animationZoomOut(this._zoom,e)):this._moveEnd()},_getExpandedVisibleBounds:function(){return this.options.removeOutsideVisibleBounds?L.Browser.mobile?this._checkBoundsMaxLat(this._map.getBounds()):this._checkBoundsMaxLat(this._map.getBounds().pad(1)):this._mapBoundsInfinite},_checkBoundsMaxLat:function(e){var t=this._maxLat;return t!==i&&(e.getNorth()>=t&&(e._northEast.lat=1/0),e.getSouth()<=-t&&(e._southWest.lat=-1/0)),e},_animationAddLayerNonAnimated:function(e,t){if(t===e)this._featureGroup.addLayer(e);else if(2===t._childCount){t._addToMap();var i=t.getAllChildMarkers();this._featureGroup.removeLayer(i[0]),this._featureGroup.removeLayer(i[1])}else t._updateIcon()},_extractNonGroupLayers:function(e,t){var i,n=e.getLayers(),r=0;for(t=t||[];r=0;i--)o=h[i],n.contains(o._latlng)||r.removeLayer(o)}),this._forceLayout(),this._topClusterLevel._recursivelyBecomeVisible(n,t),r.eachLayer(function(e){e instanceof L.MarkerCluster||!e._icon||e.clusterShow()}),this._topClusterLevel._recursively(n,e,t,function(e){e._recursivelyRestoreChildPositions(t)}),this._ignoreMove=!1,this._enqueue(function(){this._topClusterLevel._recursively(n,e,s,function(e){r.removeLayer(e),e.clusterShow()}),this._animationEnd()})},_animationZoomOut:function(e,t){this._animationZoomOutSingle(this._topClusterLevel,e-1,t),this._topClusterLevel._recursivelyAddChildrenToMap(null,t,this._getExpandedVisibleBounds()),this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds,Math.floor(this._map.getMinZoom()),e,this._getExpandedVisibleBounds())},_animationAddLayer:function(e,t){var i=this,n=this._featureGroup;n.addLayer(e),t!==e&&(t._childCount>2?(t._updateIcon(),this._forceLayout(),this._animationStart(),e._setPos(this._map.latLngToLayerPoint(t.getLatLng())),e.clusterHide(),this._enqueue(function(){n.removeLayer(e),e.clusterShow(),i._animationEnd()})):(this._forceLayout(),i._animationStart(),i._animationZoomOutSingle(t,this._map.getMaxZoom(),this._zoom)))}},_animationZoomOutSingle:function(e,t,i){var n=this._getExpandedVisibleBounds(),r=Math.floor(this._map.getMinZoom());e._recursivelyAnimateChildrenInAndAddSelfToMap(n,r,t+1,i);var s=this;this._forceLayout(),e._recursivelyBecomeVisible(n,i),this._enqueue(function(){if(1===e._childCount){var o=e._markers[0];this._ignoreMove=!0,o.setLatLng(o.getLatLng()),this._ignoreMove=!1,o.clusterShow&&o.clusterShow()}else e._recursively(n,i,r,function(e){e._recursivelyRemoveChildrenFromMap(n,r,t+1)});s._animationEnd()})},_animationEnd:function(){this._map&&(this._map._mapPane.className=this._map._mapPane.className.replace(" leaflet-cluster-anim","")),this._inZoomAnimation--,this.fire("animationend")},_forceLayout:function(){L.Util.falseFn(t.body.offsetWidth)}}),L.markerClusterGroup=function(e){return new L.MarkerClusterGroup(e)},L.MarkerCluster=L.Marker.extend({initialize:function(e,t,i,n){L.Marker.prototype.initialize.call(this,i?i._cLatLng||i.getLatLng():new L.LatLng(0,0),{icon:this,pane:e.options.clusterPane}),this._group=e,this._zoom=t,this._markers=[],this._childClusters=[],this._childCount=0,this._iconNeedsUpdate=!0,this._boundsNeedUpdate=!0,this._bounds=new L.LatLngBounds,i&&this._addChild(i),n&&this._addChild(n)},getAllChildMarkers:function(e){e=e||[];for(var t=this._childClusters.length-1;t>=0;t--)this._childClusters[t].getAllChildMarkers(e);for(var i=this._markers.length-1;i>=0;i--)e.push(this._markers[i]);return e},getChildCount:function(){return this._childCount},zoomToBounds:function(e){for(var t,i=this._childClusters.slice(),n=this._group._map,r=n.getBoundsZoom(this._bounds),s=this._zoom+1,o=n.getZoom();i.length>0&&r>s;){s++;var a=[];for(t=0;ts?this._group._map.setView(this._latlng,s):o>=r?this._group._map.setView(this._latlng,o+1):this._group._map.fitBounds(this._bounds,e)},getBounds:function(){var e=new L.LatLngBounds;return e.extend(this._bounds),e},_updateIcon:function(){this._iconNeedsUpdate=!0,this._icon&&this.setIcon(this)},createIcon:function(){return this._iconNeedsUpdate&&(this._iconObj=this._group.options.iconCreateFunction(this),this._iconNeedsUpdate=!1),this._iconObj.createIcon()},createShadow:function(){return this._iconObj.createShadow()},_addChild:function(e,t){this._iconNeedsUpdate=!0,this._boundsNeedUpdate=!0,this._setClusterCenter(e),e instanceof L.MarkerCluster?(t||(this._childClusters.push(e),e.__parent=this),this._childCount+=e._childCount):(t||this._markers.push(e),this._childCount++),this.__parent&&this.__parent._addChild(e,!0)},_setClusterCenter:function(e){this._cLatLng||(this._cLatLng=e._cLatLng||e._latlng)},_resetBounds:function(){var e=this._bounds;e._southWest&&(e._southWest.lat=1/0,e._southWest.lng=1/0),e._northEast&&(e._northEast.lat=-1/0,e._northEast.lng=-1/0)},_recalculateBounds:function(){var e,t,i,n,r=this._markers,s=this._childClusters,o=0,a=0,h=this._childCount;if(0!==h){for(this._resetBounds(),e=0;e=0;i--)n=r[i],n._icon&&(n._setPos(t),n.clusterHide())},function(e){var i,n,r=e._childClusters;for(i=r.length-1;i>=0;i--)n=r[i],n._icon&&(n._setPos(t),n.clusterHide())})},_recursivelyAnimateChildrenInAndAddSelfToMap:function(e,t,i,n){this._recursively(e,n,t,function(r){r._recursivelyAnimateChildrenIn(e,r._group._map.latLngToLayerPoint(r.getLatLng()).round(),i),r._isSingleParent()&&i-1===n?(r.clusterShow(),r._recursivelyRemoveChildrenFromMap(e,t,i)):r.clusterHide(),r._addToMap()})},_recursivelyBecomeVisible:function(e,t){this._recursively(e,this._group._map.getMinZoom(),t,null,function(e){e.clusterShow()})},_recursivelyAddChildrenToMap:function(e,t,i){this._recursively(i,this._group._map.getMinZoom()-1,t,function(n){if(t!==n._zoom)for(var r=n._markers.length-1;r>=0;r--){var s=n._markers[r];i.contains(s._latlng)&&(e&&(s._backupLatlng=s.getLatLng(),s.setLatLng(e),s.clusterHide&&s.clusterHide()),n._group._featureGroup.addLayer(s))}},function(t){t._addToMap(e)})},_recursivelyRestoreChildPositions:function(e){for(var t=this._markers.length-1;t>=0;t--){var i=this._markers[t];i._backupLatlng&&(i.setLatLng(i._backupLatlng),delete i._backupLatlng)}if(e-1===this._zoom)for(var n=this._childClusters.length-1;n>=0;n--)this._childClusters[n]._restorePosition();else for(var r=this._childClusters.length-1;r>=0;r--)this._childClusters[r]._recursivelyRestoreChildPositions(e)},_restorePosition:function(){this._backupLatlng&&(this.setLatLng(this._backupLatlng),delete this._backupLatlng)},_recursivelyRemoveChildrenFromMap:function(e,t,i,n){var r,s;this._recursively(e,t-1,i-1,function(e){for(s=e._markers.length-1;s>=0;s--)r=e._markers[s],n&&n.contains(r._latlng)||(e._group._featureGroup.removeLayer(r),r.clusterShow&&r.clusterShow())},function(e){for(s=e._childClusters.length-1;s>=0;s--)r=e._childClusters[s],n&&n.contains(r._latlng)||(e._group._featureGroup.removeLayer(r),r.clusterShow&&r.clusterShow())})},_recursively:function(e,t,i,n,r){var s,o,a=this._childClusters,h=this._zoom;if(h>=t&&(n&&n(this),r&&h===i&&r(this)),t>h||i>h)for(s=a.length-1;s>=0;s--)o=a[s],e.intersects(o._bounds)&&o._recursively(e,t,i,n,r)},_isSingleParent:function(){return this._childClusters.length>0&&this._childClusters[0]._childCount===this._childCount}}),L.Marker.include({clusterHide:function(){return this.options.opacityWhenUnclustered=this.options.opacity||1,this.setOpacity(0)},clusterShow:function(){var e=this.setOpacity(this.options.opacity||this.options.opacityWhenUnclustered);return delete this.options.opacityWhenUnclustered,e}}),L.DistanceGrid=function(e){this._cellSize=e,this._sqCellSize=e*e,this._grid={},this._objectPoint={}},L.DistanceGrid.prototype={addObject:function(e,t){var i=this._getCoord(t.x),n=this._getCoord(t.y),r=this._grid,s=r[n]=r[n]||{},o=s[i]=s[i]||[],a=L.Util.stamp(e);this._objectPoint[a]=t,o.push(e)},updateObject:function(e,t){this.removeObject(e),this.addObject(e,t)},removeObject:function(e,t){var i,n,r=this._getCoord(t.x),s=this._getCoord(t.y),o=this._grid,a=o[s]=o[s]||{},h=a[r]=a[r]||[];for(delete this._objectPoint[L.Util.stamp(e)],i=0,n=h.length;n>i;i++)if(h[i]===e)return h.splice(i,1),1===n&&delete a[r],!0},eachObject:function(e,t){var i,n,r,s,o,a,h,l=this._grid;for(i in l){o=l[i];for(n in o)for(a=o[n],r=0,s=a.length;s>r;r++)h=e.call(t,a[r]),h&&(r--,s--)}},getNearObject:function(e){var t,i,n,r,s,o,a,h,l=this._getCoord(e.x),u=this._getCoord(e.y),_=this._objectPoint,d=this._sqCellSize,c=null;for(t=u-1;u+1>=t;t++)if(r=this._grid[t])for(i=l-1;l+1>=i;i++)if(s=r[i])for(n=0,o=s.length;o>n;n++)a=s[n],h=this._sqDist(_[L.Util.stamp(a)],e),(d>h||d>=h&&null===c)&&(d=h,c=a);return c},_getCoord:function(e){var t=Math.floor(e/this._cellSize);return isFinite(t)?t:e},_sqDist:function(e,t){var i=t.x-e.x,n=t.y-e.y;return i*i+n*n}},function(){L.QuickHull={getDistant:function(e,t){var i=t[1].lat-t[0].lat,n=t[0].lng-t[1].lng;return n*(e.lat-t[0].lat)+i*(e.lng-t[0].lng)},findMostDistantPointFromBaseLine:function(e,t){var i,n,r,s=0,o=null,a=[];for(i=t.length-1;i>=0;i--)n=t[i],r=this.getDistant(n,e),r>0&&(a.push(n),r>s&&(s=r,o=n));return{maxPoint:o,newPoints:a}},buildConvexHull:function(e,t){var i=[],n=this.findMostDistantPointFromBaseLine(e,t);return n.maxPoint?(i=i.concat(this.buildConvexHull([e[0],n.maxPoint],n.newPoints)),i=i.concat(this.buildConvexHull([n.maxPoint,e[1]],n.newPoints))):[e[0]]},getConvexHull:function(e){var t,i=!1,n=!1,r=!1,s=!1,o=null,a=null,h=null,l=null,u=null,_=null;for(t=e.length-1;t>=0;t--){var d=e[t];(i===!1||d.lat>i)&&(o=d,i=d.lat),(n===!1||d.latr)&&(h=d,r=d.lng),(s===!1||d.lng=0;t--)e=i[t].getLatLng(),n.push(e);return L.QuickHull.getConvexHull(n)}}),L.MarkerCluster.include({_2PI:2*Math.PI,_circleFootSeparation:25,_circleStartAngle:Math.PI/6,_spiralFootSeparation:28,_spiralLengthStart:11,_spiralLengthFactor:5,_circleSpiralSwitchover:9,spiderfy:function(){if(this._group._spiderfied!==this&&!this._group._inZoomAnimation){var e,t=this.getAllChildMarkers(),i=this._group,n=i._map,r=n.latLngToLayerPoint(this._latlng);this._group._unspiderfy(),this._group._spiderfied=this,t.length>=this._circleSpiralSwitchover?e=this._generatePointsSpiral(t.length,r):(r.y+=10,e=this._generatePointsCircle(t.length,r)),this._animationSpiderfy(t,e)}},unspiderfy:function(e){this._group._inZoomAnimation||(this._animationUnspiderfy(e),this._group._spiderfied=null)},_generatePointsCircle:function(e,t){var i,n,r=this._group.options.spiderfyDistanceMultiplier*this._circleFootSeparation*(2+e),s=r/this._2PI,o=this._2PI/e,a=[];for(a.length=e,i=e-1;i>=0;i--)n=this._circleStartAngle+i*o,a[i]=new L.Point(t.x+s*Math.cos(n),t.y+s*Math.sin(n))._round();return a},_generatePointsSpiral:function(e,t){var i,n=this._group.options.spiderfyDistanceMultiplier,r=n*this._spiralLengthStart,s=n*this._spiralFootSeparation,o=n*this._spiralLengthFactor*this._2PI,a=0,h=[];for(h.length=e,i=e-1;i>=0;i--)a+=s/r+5e-4*i,h[i]=new L.Point(t.x+r*Math.cos(a),t.y+r*Math.sin(a))._round(),r+=o/a;return h},_noanimationUnspiderfy:function(){var e,t,i=this._group,n=i._map,r=i._featureGroup,s=this.getAllChildMarkers();for(i._ignoreMove=!0,this.setOpacity(1),t=s.length-1;t>=0;t--)e=s[t],r.removeLayer(e),e._preSpiderfyLatlng&&(e.setLatLng(e._preSpiderfyLatlng),delete e._preSpiderfyLatlng),e.setZIndexOffset&&e.setZIndexOffset(0),e._spiderLeg&&(n.removeLayer(e._spiderLeg),delete e._spiderLeg);i.fire("unspiderfied",{cluster:this,markers:s}),i._ignoreMove=!1,i._spiderfied=null}}),L.MarkerClusterNonAnimated=L.MarkerCluster.extend({_animationSpiderfy:function(e,t){var i,n,r,s,o=this._group,a=o._map,h=o._featureGroup,l=this._group.options.spiderLegPolylineOptions;for(o._ignoreMove=!0,i=0;i=0;n--)h=_.layerPointToLatLng(t[n]),r=e[n],r._preSpiderfyLatlng=r._latlng,r.setLatLng(h),r.clusterShow&&r.clusterShow(),f&&(s=r._spiderLeg,o=s._path,o.style.strokeDashoffset=0,s.setStyle({opacity:g}));this.setOpacity(.3),u._ignoreMove=!1,setTimeout(function(){u._animationEnd(),u.fire("spiderfied",{cluster:l,markers:e})},200)},_animationUnspiderfy:function(e){var t,i,n,r,s,o,a=this,h=this._group,l=h._map,u=h._featureGroup,_=e?l._latLngToNewLayerPoint(this._latlng,e.zoom,e.center):l.latLngToLayerPoint(this._latlng),d=this.getAllChildMarkers(),c=L.Path.SVG;for(h._ignoreMove=!0,h._animationStart(),this.setOpacity(1),i=d.length-1;i>=0;i--)t=d[i],t._preSpiderfyLatlng&&(t.closePopup(),t.setLatLng(t._preSpiderfyLatlng),delete t._preSpiderfyLatlng,o=!0,t._setPos&&(t._setPos(_),o=!1),t.clusterHide&&(t.clusterHide(),o=!1),o&&u.removeLayer(t),c&&(n=t._spiderLeg,r=n._path,s=r.getTotalLength()+.1,r.style.strokeDashoffset=s,n.setStyle({opacity:0})));h._ignoreMove=!1,setTimeout(function(){var e=0;for(i=d.length-1;i>=0;i--)t=d[i],t._spiderLeg&&e++;for(i=d.length-1;i>=0;i--)t=d[i],t._spiderLeg&&(t.clusterShow&&t.clusterShow(),t.setZIndexOffset&&t.setZIndexOffset(0),e>1&&u.removeLayer(t),l.removeLayer(t._spiderLeg),delete t._spiderLeg);h._animationEnd(),h.fire("unspiderfied",{cluster:a,markers:d})},200)}}),L.MarkerClusterGroup.include({_spiderfied:null,unspiderfy:function(){this._unspiderfy.apply(this,arguments)},_spiderfierOnAdd:function(){this._map.on("click",this._unspiderfyWrapper,this),this._map.options.zoomAnimation&&this._map.on("zoomstart",this._unspiderfyZoomStart,this),this._map.on("zoomend",this._noanimationUnspiderfy,this),L.Browser.touch||this._map.getRenderer(this)},_spiderfierOnRemove:function(){this._map.off("click",this._unspiderfyWrapper,this),this._map.off("zoomstart",this._unspiderfyZoomStart,this),this._map.off("zoomanim",this._unspiderfyZoomAnim,this),this._map.off("zoomend",this._noanimationUnspiderfy,this),this._noanimationUnspiderfy()},_unspiderfyZoomStart:function(){this._map&&this._map.on("zoomanim",this._unspiderfyZoomAnim,this)},_unspiderfyZoomAnim:function(e){L.DomUtil.hasClass(this._map._mapPane,"leaflet-touching")||(this._map.off("zoomanim",this._unspiderfyZoomAnim,this),this._unspiderfy(e))},_unspiderfyWrapper:function(){this._unspiderfy() -},_unspiderfy:function(e){this._spiderfied&&this._spiderfied.unspiderfy(e)},_noanimationUnspiderfy:function(){this._spiderfied&&this._spiderfied._noanimationUnspiderfy()},_unspiderfyLayer:function(e){e._spiderLeg&&(this._featureGroup.removeLayer(e),e.clusterShow&&e.clusterShow(),e.setZIndexOffset&&e.setZIndexOffset(0),this._map.removeLayer(e._spiderLeg),delete e._spiderLeg)}}),L.MarkerClusterGroup.include({refreshClusters:function(e){return e?e instanceof L.MarkerClusterGroup?e=e._topClusterLevel.getAllChildMarkers():e instanceof L.LayerGroup?e=e._layers:e instanceof L.MarkerCluster?e=e.getAllChildMarkers():e instanceof L.Marker&&(e=[e]):e=this._topClusterLevel.getAllChildMarkers(),this._flagParentsIconsNeedUpdate(e),this._refreshClustersIcons(),this.options.singleMarkerMode&&this._refreshSingleMarkerModeMarkers(e),this},_flagParentsIconsNeedUpdate:function(e){var t,i;for(t in e)for(i=e[t].__parent;i;)i._iconNeedsUpdate=!0,i=i.__parent},_refreshSingleMarkerModeMarkers:function(e){var t,i;for(t in e)i=e[t],this.hasLayer(i)&&i.setIcon(this._overrideMarkerIcon(i))}}),L.Marker.include({refreshIconOptions:function(e,t){var i=this.options.icon;return L.setOptions(i,e),this.setIcon(i),t&&this.__parent&&this.__parent._group.refreshClusters(this),this}})}(window,document); \ No newline at end of file diff --git a/inst/doc/neotoma2-package_files/leaflet-markercluster-1.0.5/leaflet.markercluster.layersupport.js b/inst/doc/neotoma2-package_files/leaflet-markercluster-1.0.5/leaflet.markercluster.layersupport.js deleted file mode 100644 index dd41e8c..0000000 --- a/inst/doc/neotoma2-package_files/leaflet-markercluster-1.0.5/leaflet.markercluster.layersupport.js +++ /dev/null @@ -1,6 +0,0 @@ -/*! - Leaflet.MarkerCluster.LayerSupport 1.0.5+87f3848 - (c) 2015-2017 Boris Seang - License MIT - */ -!function(e,r){"function"==typeof define&&define.amd?define(["leaflet"],r):r("object"==typeof module&&module.exports?require("leaflet"):e.L)}(this,function(e,r){e.MarkerClusterGroup.LayerSupport=e.MarkerClusterGroup.extend({options:{singleAddRemoveBufferDuration:100},initialize:function(r){e.MarkerClusterGroup.prototype.initialize.call(this,r),this._featureGroup=new o,this._featureGroup.addEventParent(this),this._nonPointGroup=new o,this._nonPointGroup.addEventParent(this),this._layers={},this._proxyLayerGroups={},this._proxyLayerGroupsNeedRemoving={},this._singleAddRemoveBuffer=[]},checkIn:function(e){var r=this._toArray(e);return this._checkInGetSeparated(r),this},checkOut:function(r){var o,t,i=this._toArray(r),a=this._separateSingleFromGroupLayers(i,{groups:[],singles:[]}),s=a.groups,n=a.singles;for(o=0;o0?(this._singleAddRemoveBuffer.push({type:o,layer:r}),this._singleAddRemoveBufferTimeout||(t=e.bind(this._processSingleAddRemoveBuffer,this),this._singleAddRemoveBufferTimeout=setTimeout(t,i))):this[o](r)},_processSingleAddRemoveBuffer:function(){for(var e,r,o=this._singleAddRemoveBuffer,t=0,i=[];tOpenStreetMap contributors' - }, - variants: { - Mapnik: {}, - DE: { - url: '//{s}.tile.openstreetmap.de/tiles/osmde/{z}/{x}/{y}.png', - options: { - maxZoom: 18 - } - }, - CH: { - url: '//tile.osm.ch/switzerland/{z}/{x}/{y}.png', - options: { - maxZoom: 18, - bounds: [[45, 5], [48, 11]] - } - }, - France: { - url: '//{s}.tile.openstreetmap.fr/osmfr/{z}/{x}/{y}.png', - options: { - maxZoom: 20, - attribution: '© Openstreetmap France | {attribution.OpenStreetMap}' - } - }, - HOT: { - url: '//{s}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png', - options: { - attribution: - '{attribution.OpenStreetMap}, ' + - 'Tiles style by Humanitarian OpenStreetMap Team ' + - 'hosted by OpenStreetMap France' - } - }, - BZH: { - url: '//tile.openstreetmap.bzh/br/{z}/{x}/{y}.png', - options: { - attribution: '{attribution.OpenStreetMap}, Tiles courtesy of Breton OpenStreetMap Team', - bounds: [[46.2, -5.5], [50, 0.7]] - } - } - } - }, - OpenSeaMap: { - url: '//tiles.openseamap.org/seamark/{z}/{x}/{y}.png', - options: { - attribution: 'Map data: © OpenSeaMap contributors' - } - }, - OpenPtMap: { - url: 'http://openptmap.org/tiles/{z}/{x}/{y}.png', - options: { - maxZoom: 17, - attribution: 'Map data: © OpenPtMap contributors' - } - }, - OpenTopoMap: { - url: 'https://{s}.tile.opentopomap.org/{z}/{x}/{y}.png', - options: { - maxZoom: 17, - attribution: 'Map data: {attribution.OpenStreetMap}, SRTM | Map style: © OpenTopoMap (CC-BY-SA)' - } - }, - OpenRailwayMap: { - url: 'https://{s}.tiles.openrailwaymap.org/standard/{z}/{x}/{y}.png', - options: { - maxZoom: 19, - attribution: 'Map data: {attribution.OpenStreetMap} | Map style: © OpenRailwayMap (CC-BY-SA)' - } - }, - OpenFireMap: { - url: 'http://openfiremap.org/hytiles/{z}/{x}/{y}.png', - options: { - maxZoom: 19, - attribution: 'Map data: {attribution.OpenStreetMap} | Map style: © OpenFireMap (CC-BY-SA)' - } - }, - SafeCast: { - url: '//s3.amazonaws.com/te512.safecast.org/{z}/{x}/{y}.png', - options: { - maxZoom: 16, - attribution: 'Map data: {attribution.OpenStreetMap} | Map style: © SafeCast (CC-BY-SA)' - } - }, - Thunderforest: { - url: 'https://{s}.tile.thunderforest.com/{variant}/{z}/{x}/{y}.png?apikey={apikey}', - options: { - attribution: - '© Thunderforest, {attribution.OpenStreetMap}', - variant: 'cycle', - apikey: '', - maxZoom: 22 - }, - variants: { - OpenCycleMap: 'cycle', - Transport: { - options: { - variant: 'transport' - } - }, - TransportDark: { - options: { - variant: 'transport-dark' - } - }, - SpinalMap: { - options: { - variant: 'spinal-map' - } - }, - Landscape: 'landscape', - Outdoors: 'outdoors', - Pioneer: 'pioneer', - MobileAtlas: 'mobile-atlas', - Neighbourhood: 'neighbourhood' - } - }, - OpenMapSurfer: { - url: 'https://maps.heigit.org/openmapsurfer/tiles/{variant}/webmercator/{z}/{x}/{y}.png', - options: { - maxZoom: 19, - variant: 'roads', - attribution: 'Imagery from GIScience Research Group @ University of Heidelberg | Map data ' - }, - variants: { - Roads: { - options: { - variant: 'roads', - attribution: '{attribution.OpenMapSurfer}{attribution.OpenStreetMap}' - } - }, - Hybrid: { - options: { - variant: 'hybrid', - attribution: '{attribution.OpenMapSurfer}{attribution.OpenStreetMap}' - } - }, - AdminBounds: { - options: { - variant: 'adminb', - maxZoom: 18, - attribution: '{attribution.OpenMapSurfer}{attribution.OpenStreetMap}' - } - }, - ContourLines: { - options: { - variant: 'asterc', - maxZoom: 18, - minZoom: 13, - attribution: '{attribution.OpenMapSurfer} ASTER GDEM' - } - }, - Hillshade: { - options: { - variant: 'asterh', - maxZoom: 18, - attribution: '{attribution.OpenMapSurfer} ASTER GDEM, SRTM' - } - }, - ElementsAtRisk: { - options: { - variant: 'elements_at_risk', - attribution: '{attribution.OpenMapSurfer}{attribution.OpenStreetMap}' - } - } - } - }, - Hydda: { - url: '//{s}.tile.openstreetmap.se/hydda/{variant}/{z}/{x}/{y}.png', - options: { - maxZoom: 18, - variant: 'full', - attribution: 'Tiles courtesy of OpenStreetMap Sweden — Map data {attribution.OpenStreetMap}' - }, - variants: { - Full: 'full', - Base: 'base', - RoadsAndLabels: 'roads_and_labels' - } - }, - MapBox: { - url: 'https://api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}{r}.png?access_token={accessToken}', - options: { - attribution: - '© Mapbox ' + - '{attribution.OpenStreetMap} ' + - 'Improve this map', - subdomains: 'abcd', - id: 'mapbox.streets', - accessToken: '', - } - }, - Stamen: { - url: '//stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}{r}.{ext}', - options: { - attribution: - 'Map tiles by Stamen Design, ' + - 'CC BY 3.0 — ' + - 'Map data {attribution.OpenStreetMap}', - subdomains: 'abcd', - minZoom: 0, - maxZoom: 20, - variant: 'toner', - ext: 'png' - }, - variants: { - Toner: 'toner', - TonerBackground: 'toner-background', - TonerHybrid: 'toner-hybrid', - TonerLines: 'toner-lines', - TonerLabels: 'toner-labels', - TonerLite: 'toner-lite', - Watercolor: { - url: '//stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}.{ext}', - options: { - variant: 'watercolor', - ext: 'jpg', - minZoom: 1, - maxZoom: 16 - } - }, - Terrain: { - options: { - variant: 'terrain', - minZoom: 0, - maxZoom: 18 - } - }, - TerrainBackground: { - options: { - variant: 'terrain-background', - minZoom: 0, - maxZoom: 18 - } - }, - TerrainLabels: { - options: { - variant: 'terrain-labels', - minZoom: 0, - maxZoom: 18 - } - }, - TopOSMRelief: { - url: '//stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}.{ext}', - options: { - variant: 'toposm-color-relief', - ext: 'jpg', - bounds: [[22, -132], [51, -56]] - } - }, - TopOSMFeatures: { - options: { - variant: 'toposm-features', - bounds: [[22, -132], [51, -56]], - opacity: 0.9 - } - } - } - }, - TomTom: { - url: 'https://{s}.api.tomtom.com/map/1/tile/{variant}/{style}/{z}/{x}/{y}.{ext}?key={apikey}', - options: { - variant: 'basic', - maxZoom: 22, - attribution: - '© 1992 - ' + new Date().getFullYear() + ' TomTom. ', - subdomains: 'abcd', - style: 'main', - ext: 'png', - apikey: '', - }, - variants: { - Basic: 'basic', - Hybrid: 'hybrid', - Labels: 'labels' - } - }, - Esri: { - url: '//server.arcgisonline.com/ArcGIS/rest/services/{variant}/MapServer/tile/{z}/{y}/{x}', - options: { - variant: 'World_Street_Map', - attribution: 'Tiles © Esri' - }, - variants: { - WorldStreetMap: { - options: { - attribution: - '{attribution.Esri} — ' + - 'Source: Esri, DeLorme, NAVTEQ, USGS, Intermap, iPC, NRCAN, Esri Japan, METI, Esri China (Hong Kong), Esri (Thailand), TomTom, 2012' - } - }, - DeLorme: { - options: { - variant: 'Specialty/DeLorme_World_Base_Map', - minZoom: 1, - maxZoom: 11, - attribution: '{attribution.Esri} — Copyright: ©2012 DeLorme' - } - }, - WorldTopoMap: { - options: { - variant: 'World_Topo_Map', - attribution: - '{attribution.Esri} — ' + - 'Esri, DeLorme, NAVTEQ, TomTom, Intermap, iPC, USGS, FAO, NPS, NRCAN, GeoBase, Kadaster NL, Ordnance Survey, Esri Japan, METI, Esri China (Hong Kong), and the GIS User Community' - } - }, - WorldImagery: { - options: { - variant: 'World_Imagery', - attribution: - '{attribution.Esri} — ' + - 'Source: Esri, i-cubed, USDA, USGS, AEX, GeoEye, Getmapping, Aerogrid, IGN, IGP, UPR-EGP, and the GIS User Community' - } - }, - WorldTerrain: { - options: { - variant: 'World_Terrain_Base', - maxZoom: 13, - attribution: - '{attribution.Esri} — ' + - 'Source: USGS, Esri, TANA, DeLorme, and NPS' - } - }, - WorldShadedRelief: { - options: { - variant: 'World_Shaded_Relief', - maxZoom: 13, - attribution: '{attribution.Esri} — Source: Esri' - } - }, - WorldPhysical: { - options: { - variant: 'World_Physical_Map', - maxZoom: 8, - attribution: '{attribution.Esri} — Source: US National Park Service' - } - }, - OceanBasemap: { - options: { - variant: 'Ocean_Basemap', - maxZoom: 13, - attribution: '{attribution.Esri} — Sources: GEBCO, NOAA, CHS, OSU, UNH, CSUMB, National Geographic, DeLorme, NAVTEQ, and Esri' - } - }, - NatGeoWorldMap: { - options: { - variant: 'NatGeo_World_Map', - maxZoom: 16, - attribution: '{attribution.Esri} — National Geographic, Esri, DeLorme, NAVTEQ, UNEP-WCMC, USGS, NASA, ESA, METI, NRCAN, GEBCO, NOAA, iPC' - } - }, - WorldGrayCanvas: { - options: { - variant: 'Canvas/World_Light_Gray_Base', - maxZoom: 16, - attribution: '{attribution.Esri} — Esri, DeLorme, NAVTEQ' - } - } - } - }, - OpenWeatherMap: { - url: 'http://{s}.tile.openweathermap.org/map/{variant}/{z}/{x}/{y}.png?appid={apiKey}', - options: { - maxZoom: 19, - attribution: 'Map data © OpenWeatherMap', - apiKey:'', - opacity: 0.5 - }, - variants: { - Clouds: 'clouds', - CloudsClassic: 'clouds_cls', - Precipitation: 'precipitation', - PrecipitationClassic: 'precipitation_cls', - Rain: 'rain', - RainClassic: 'rain_cls', - Pressure: 'pressure', - PressureContour: 'pressure_cntr', - Wind: 'wind', - Temperature: 'temp', - Snow: 'snow' - } - }, - HERE: { - /* - * HERE maps, formerly Nokia maps. - * These basemaps are free, but you need an API key. Please sign up at - * https://developer.here.com/plans - */ - url: - 'https://{s}.{base}.maps.api.here.com/maptile/2.1/' + - '{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?' + - 'app_id={app_id}&app_code={app_code}&lg={language}', - options: { - attribution: - 'Map © 1987-' + new Date().getFullYear() + ' HERE', - subdomains: '1234', - mapID: 'newest', - 'app_id': '', - 'app_code': '', - base: 'base', - variant: 'normal.day', - maxZoom: 20, - type: 'maptile', - language: 'eng', - format: 'png8', - size: '256' - }, - variants: { - normalDay: 'normal.day', - normalDayCustom: 'normal.day.custom', - normalDayGrey: 'normal.day.grey', - normalDayMobile: 'normal.day.mobile', - normalDayGreyMobile: 'normal.day.grey.mobile', - normalDayTransit: 'normal.day.transit', - normalDayTransitMobile: 'normal.day.transit.mobile', - normalDayTraffic: { - options: { - variant: 'normal.traffic.day', - base: 'traffic', - type: 'traffictile' - } - }, - normalNight: 'normal.night', - normalNightMobile: 'normal.night.mobile', - normalNightGrey: 'normal.night.grey', - normalNightGreyMobile: 'normal.night.grey.mobile', - normalNightTransit: 'normal.night.transit', - normalNightTransitMobile: 'normal.night.transit.mobile', - reducedDay: 'reduced.day', - reducedNight: 'reduced.night', - basicMap: { - options: { - type: 'basetile' - } - }, - mapLabels: { - options: { - type: 'labeltile', - format: 'png' - } - }, - trafficFlow: { - options: { - base: 'traffic', - type: 'flowtile' - } - }, - carnavDayGrey: 'carnav.day.grey', - hybridDay: { - options: { - base: 'aerial', - variant: 'hybrid.day' - } - }, - hybridDayMobile: { - options: { - base: 'aerial', - variant: 'hybrid.day.mobile' - } - }, - hybridDayTransit: { - options: { - base: 'aerial', - variant: 'hybrid.day.transit' - } - }, - hybridDayGrey: { - options: { - base: 'aerial', - variant: 'hybrid.grey.day' - } - }, - hybridDayTraffic: { - options: { - variant: 'hybrid.traffic.day', - base: 'traffic', - type: 'traffictile' - } - }, - pedestrianDay: 'pedestrian.day', - pedestrianNight: 'pedestrian.night', - satelliteDay: { - options: { - base: 'aerial', - variant: 'satellite.day' - } - }, - terrainDay: { - options: { - base: 'aerial', - variant: 'terrain.day' - } - }, - terrainDayMobile: { - options: { - base: 'aerial', - variant: 'terrain.day.mobile' - } - } - } - }, - FreeMapSK: { - url: 'http://t{s}.freemap.sk/T/{z}/{x}/{y}.jpeg', - options: { - minZoom: 8, - maxZoom: 16, - subdomains: '1234', - bounds: [[47.204642, 15.996093], [49.830896, 22.576904]], - attribution: - '{attribution.OpenStreetMap}, vizualization CC-By-SA 2.0 Freemap.sk' - } - }, - MtbMap: { - url: 'http://tile.mtbmap.cz/mtbmap_tiles/{z}/{x}/{y}.png', - options: { - attribution: - '{attribution.OpenStreetMap} & USGS' - } - }, - CartoDB: { - url: 'https://{s}.basemaps.cartocdn.com/{variant}/{z}/{x}/{y}{r}.png', - options: { - attribution: '{attribution.OpenStreetMap} © CARTO', - subdomains: 'abcd', - maxZoom: 19, - variant: 'light_all' - }, - variants: { - Positron: 'light_all', - PositronNoLabels: 'light_nolabels', - PositronOnlyLabels: 'light_only_labels', - DarkMatter: 'dark_all', - DarkMatterNoLabels: 'dark_nolabels', - DarkMatterOnlyLabels: 'dark_only_labels', - Voyager: 'rastertiles/voyager', - VoyagerNoLabels: 'rastertiles/voyager_nolabels', - VoyagerOnlyLabels: 'rastertiles/voyager_only_labels', - VoyagerLabelsUnder: 'rastertiles/voyager_labels_under' - } - }, - HikeBike: { - url: 'https://tiles.wmflabs.org/{variant}/{z}/{x}/{y}.png', - options: { - maxZoom: 19, - attribution: '{attribution.OpenStreetMap}', - variant: 'hikebike' - }, - variants: { - HikeBike: {}, - HillShading: { - options: { - maxZoom: 15, - variant: 'hillshading' - } - } - } - }, - BasemapAT: { - url: '//maps{s}.wien.gv.at/basemap/{variant}/normal/google3857/{z}/{y}/{x}.{format}', - options: { - maxZoom: 19, - attribution: 'Datenquelle: basemap.at', - subdomains: ['', '1', '2', '3', '4'], - format: 'png', - bounds: [[46.358770, 8.782379], [49.037872, 17.189532]], - variant: 'geolandbasemap' - }, - variants: { - basemap: { - options: { - maxZoom: 20, // currently only in Vienna - variant: 'geolandbasemap' - } - }, - grau: 'bmapgrau', - overlay: 'bmapoverlay', - highdpi: { - options: { - variant: 'bmaphidpi', - format: 'jpeg' - } - }, - orthofoto: { - options: { - maxZoom: 20, // currently only in Vienna - variant: 'bmaporthofoto30cm', - format: 'jpeg' - } - } - } - }, - nlmaps: { - url: '//geodata.nationaalgeoregister.nl/tiles/service/wmts/{variant}/EPSG:3857/{z}/{x}/{y}.png', - options: { - minZoom: 6, - maxZoom: 19, - bounds: [[50.5, 3.25], [54, 7.6]], - attribution: 'Kaartgegevens © Kadaster' - }, - variants: { - 'standaard': 'brtachtergrondkaart', - 'pastel': 'brtachtergrondkaartpastel', - 'grijs': 'brtachtergrondkaartgrijs', - 'luchtfoto': { - 'url': '//geodata.nationaalgeoregister.nl/luchtfoto/rgb/wmts/1.0.0/2016_ortho25/EPSG:3857/{z}/{x}/{y}.png', - } - } - }, - NASAGIBS: { - url: 'https://map1.vis.earthdata.nasa.gov/wmts-webmerc/{variant}/default/{time}/{tilematrixset}{maxZoom}/{z}/{y}/{x}.{format}', - options: { - attribution: - 'Imagery provided by services from the Global Imagery Browse Services (GIBS), operated by the NASA/GSFC/Earth Science Data and Information System ' + - '(ESDIS) with funding provided by NASA/HQ.', - bounds: [[-85.0511287776, -179.999999975], [85.0511287776, 179.999999975]], - minZoom: 1, - maxZoom: 9, - format: 'jpg', - time: '', - tilematrixset: 'GoogleMapsCompatible_Level' - }, - variants: { - ModisTerraTrueColorCR: 'MODIS_Terra_CorrectedReflectance_TrueColor', - ModisTerraBands367CR: 'MODIS_Terra_CorrectedReflectance_Bands367', - ViirsEarthAtNight2012: { - options: { - variant: 'VIIRS_CityLights_2012', - maxZoom: 8 - } - }, - ModisTerraLSTDay: { - options: { - variant: 'MODIS_Terra_Land_Surface_Temp_Day', - format: 'png', - maxZoom: 7, - opacity: 0.75 - } - }, - ModisTerraSnowCover: { - options: { - variant: 'MODIS_Terra_Snow_Cover', - format: 'png', - maxZoom: 8, - opacity: 0.75 - } - }, - ModisTerraAOD: { - options: { - variant: 'MODIS_Terra_Aerosol', - format: 'png', - maxZoom: 6, - opacity: 0.75 - } - }, - ModisTerraChlorophyll: { - options: { - variant: 'MODIS_Terra_Chlorophyll_A', - format: 'png', - maxZoom: 7, - opacity: 0.75 - } - } - } - }, - NLS: { - // NLS maps are copyright National library of Scotland. - // http://maps.nls.uk/projects/api/index.html - // Please contact NLS for anything other than non-commercial low volume usage - // - // Map sources: Ordnance Survey 1:1m to 1:63K, 1920s-1940s - // z0-9 - 1:1m - // z10-11 - quarter inch (1:253440) - // z12-18 - one inch (1:63360) - url: '//nls-{s}.tileserver.com/nls/{z}/{x}/{y}.jpg', - options: { - attribution: 'National Library of Scotland Historic Maps', - bounds: [[49.6, -12], [61.7, 3]], - minZoom: 1, - maxZoom: 18, - subdomains: '0123', - } - }, - JusticeMap: { - // Justice Map (http://www.justicemap.org/) - // Visualize race and income data for your community, county and country. - // Includes tools for data journalists, bloggers and community activists. - url: 'http://www.justicemap.org/tile/{size}/{variant}/{z}/{x}/{y}.png', - options: { - attribution: 'Justice Map', - // one of 'county', 'tract', 'block' - size: 'county', - // Bounds for USA, including Alaska and Hawaii - bounds: [[14, -180], [72, -56]] - }, - variants: { - income: 'income', - americanIndian: 'indian', - asian: 'asian', - black: 'black', - hispanic: 'hispanic', - multi: 'multi', - nonWhite: 'nonwhite', - white: 'white', - plurality: 'plural' - } - }, - Wikimedia: { - url: 'https://maps.wikimedia.org/osm-intl/{z}/{x}/{y}{r}.png', - options: { - attribution: 'Wikimedia', - minZoom: 1, - maxZoom: 19 - } - }, - GeoportailFrance: { - url: 'https://wxs.ign.fr/{apikey}/geoportail/wmts?REQUEST=GetTile&SERVICE=WMTS&VERSION=1.0.0&STYLE={style}&TILEMATRIXSET=PM&FORMAT={format}&LAYER={variant}&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}', - options: { - attribution: 'Geoportail France', - bounds: [[-75, -180], [81, 180]], - minZoom: 2, - maxZoom: 18, - // Get your own geoportail apikey here : http://professionnels.ign.fr/ign/contrats/ - // NB : 'choisirgeoportail' is a demonstration key that comes with no guarantee - apikey: 'choisirgeoportail', - format: 'image/jpeg', - style : 'normal', - variant: 'GEOGRAPHICALGRIDSYSTEMS.MAPS.SCAN-EXPRESS.STANDARD' - }, - variants: { - parcels: { - options : { - variant: 'CADASTRALPARCELS.PARCELS', - maxZoom: 20, - style : 'bdparcellaire', - format: 'image/png' - } - }, - ignMaps: 'GEOGRAPHICALGRIDSYSTEMS.MAPS', - maps: 'GEOGRAPHICALGRIDSYSTEMS.MAPS.SCAN-EXPRESS.STANDARD', - orthos: { - options: { - maxZoom: 19, - variant: 'ORTHOIMAGERY.ORTHOPHOTOS' - } - } - } - }, - OneMapSG: { - url: '//maps-{s}.onemap.sg/v3/{variant}/{z}/{x}/{y}.png', - options: { - variant: 'Default', - minZoom: 11, - maxZoom: 18, - bounds: [[1.56073, 104.11475], [1.16, 103.502]], - attribution: ' New OneMap | Map data © contributors, Singapore Land Authority' - }, - variants: { - Default: 'Default', - Night: 'Night', - Original: 'Original', - Grey: 'Grey', - LandLot: 'LandLot' - } - } - }; - - L.tileLayer.provider = function (provider, options) { - return new L.TileLayer.Provider(provider, options); - }; - - return L; -})); diff --git a/inst/doc/neotoma2-package_files/leaflet-providers-plugin-2.1.2/leaflet-providers-plugin.js b/inst/doc/neotoma2-package_files/leaflet-providers-plugin-2.1.2/leaflet-providers-plugin.js deleted file mode 100644 index 82cd630..0000000 --- a/inst/doc/neotoma2-package_files/leaflet-providers-plugin-2.1.2/leaflet-providers-plugin.js +++ /dev/null @@ -1,3 +0,0 @@ -LeafletWidget.methods.addProviderTiles = function(provider, layerId, group, options) { - this.layerManager.addLayer(L.tileLayer.provider(provider, options), "tile", layerId, group); -}; diff --git a/inst/doc/neotoma2-package_files/leafletfix-1.0.0/leafletfix.css b/inst/doc/neotoma2-package_files/leafletfix-1.0.0/leafletfix.css deleted file mode 100644 index 3ae60ff..0000000 --- a/inst/doc/neotoma2-package_files/leafletfix-1.0.0/leafletfix.css +++ /dev/null @@ -1,36 +0,0 @@ -/* Work around CSS properties introduced on img by bootstrap */ -img.leaflet-tile { - padding: 0; - margin: 0; - border-radius: 0; - border: none; -} -.info { - padding: 6px 8px; - font: 14px/16px Arial, Helvetica, sans-serif; - background: white; - background: rgba(255,255,255,0.8); - box-shadow: 0 0 15px rgba(0,0,0,0.2); - border-radius: 5px; -} -.legend { - line-height: 18px; - color: #555; -} -.legend svg text { - fill: #555; -} -.legend svg line { - stroke: #555; -} -.legend i { - width: 18px; - height: 18px; - margin-right: 4px; - opacity: 0.7; - display: inline-block; - vertical-align: top; - /*For IE 7*/ - zoom: 1; - *display: inline; -} diff --git a/inst/doc/neotoma2-package_files/proj4-2.6.2/proj4.min.js b/inst/doc/neotoma2-package_files/proj4-2.6.2/proj4.min.js deleted file mode 100644 index 99865a5..0000000 --- a/inst/doc/neotoma2-package_files/proj4-2.6.2/proj4.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(t,s){"object"==typeof exports&&"undefined"!=typeof module?module.exports=s():"function"==typeof define&&define.amd?define(s):t.proj4=s()}(this,function(){"use strict";function k(t,s){if(t[s])return t[s];for(var i,a=Object.keys(t),h=s.toLowerCase().replace(H,""),e=-1;++eMath.PI&&(r-=2*Math.PI),h=Math.sin(o),n=Math.cos(o),e=h*h,{x:((a=i/Math.sqrt(1-s*e))+l)*n*Math.cos(r),y:(a+l)*n*Math.sin(r),z:(a*(1-s)+l)*h}}function c(t,s,i,a){var h,e,n,r,o,l,M,c,u,f,m,p,d,y=t.x,_=t.y,x=t.z?t.z:0,g=Math.sqrt(y*y+_*_),b=Math.sqrt(y*y+_*_+x*x);if(g/i<1e-12){if(p=0,b/i<1e-12)return d=-a,{x:t.x,y:t.y,z:t.z}}else p=Math.atan2(_,y);for(h=x/b,l=(e=g/b)*(1-s)*(n=1/Math.sqrt(1-s*(2-s)*e*e)),M=h*n,m=0;m++,r=s*(o=i/Math.sqrt(1-s*M*M))/(o+(d=g*l+x*M-o*(1-s*M*M))),f=(u=h*(n=1/Math.sqrt(1-r*(2-r)*e*e)))*l-(c=e*(1-r)*n)*M,l=c,M=u,1e-24=this.text.length)return;t=this.text[this.place++]}switch(this.state){case K:return this.neutral(t);case 2:return this.keyword(t);case 4:return this.quoted(t);case 5:return this.afterquote(t);case 3:return this.number(t);case-1:return}},e.prototype.afterquote=function(t){if('"'===t)return this.word+='"',void(this.state=4);if($.test(t))return this.word=this.word.trim(),void this.afterItem(t);throw new Error("havn't handled \""+t+'" in afterquote yet, index '+this.place)},e.prototype.afterItem=function(t){return","===t?(null!==this.word&&this.currentObject.push(this.word),this.word=null,void(this.state=K)):"]"===t?(this.level--,null!==this.word&&(this.currentObject.push(this.word),this.word=null),this.state=K,this.currentObject=this.stack.pop(),void(this.currentObject||(this.state=-1))):void 0},e.prototype.number=function(t){if(!tt.test(t)){if($.test(t))return this.word=parseFloat(this.word),void this.afterItem(t);throw new Error("havn't handled \""+t+'" in number yet, index '+this.place)}this.word+=t},e.prototype.quoted=function(t){'"'!==t?this.word+=t:this.state=5},e.prototype.keyword=function(t){if(Y.test(t))this.word+=t;else{if("["===t){var s=[];return s.push(this.word),this.level++,null===this.root?this.root=s:this.currentObject.push(s),this.stack.push(this.currentObject),this.currentObject=s,void(this.state=K)}if(!$.test(t))throw new Error("havn't handled \""+t+'" in keyword yet, index '+this.place);this.afterItem(t)}},e.prototype.neutral=function(t){if(Z.test(t))return this.word=t,void(this.state=2);if('"'===t)return this.word="",void(this.state=4);if(tt.test(t))return this.word=t,void(this.state=3);if(!$.test(t))throw new Error("havn't handled \""+t+'" in neutral yet, index '+this.place);this.afterItem(t)},e.prototype.output=function(){for(;this.placeD?Math.tan(i):0,c=Math.pow(M,2),u=Math.pow(c,2),f=1-this.es*Math.pow(h,2);n/=Math.sqrt(f);var m=Gt(i,h,e,this.en),p=this.a*(this.k0*n*(1+r/6*(1-c+o+r/20*(5-18*c+u+14*o-58*c*o+r/42*(61+179*u-u*c-479*c)))))+this.x0,d=this.a*(this.k0*(m-this.ml0+h*a*n/2*(1+r/12*(5-c+9*o+4*l+r/30*(61+u-58*c+270*o-330*c*o+r/56*(1385+543*u-u*c-3111*c))))))+this.y0}else{var y=e*Math.sin(a);if(Math.abs(Math.abs(y)-1)D?Math.tan(s):0,e=this.ep2*Math.pow(a,2),n=Math.pow(e,2),r=Math.pow(h,2),o=Math.pow(r,2),l=1-this.es*Math.pow(i,2),M=_*Math.sqrt(l)/this.k0,u=s-(l*=h)*(c=Math.pow(M,2))/(1-this.es)*.5*(1-c/12*(5+3*r-9*e*r+e-4*n-c/30*(61+90*r-252*e*r+45*o+46*e-c/56*(1385+3633*r+4095*o+1574*o*r)))),nt(this.long0+M*(1-c/6*(1+2*r+e-c/20*(5+28*r+24*o+8*e*r+6*e-c/42*(61+662*r+1320*o+720*o*r))))/a)):(u=z*et(x),0)):(p=.5*((m=Math.exp(_/this.k0))-1/m),d=this.lat0+x/this.k0,y=Math.cos(d),l=Math.sqrt((1-Math.pow(y,2))/(1+Math.pow(p,2))),u=Math.asin(l),x<0&&(u=-u),0==p&&0===y?0:nt(Math.atan2(p,y)+this.long0)),t.x=f,t.y=u,t},names:["Transverse_Mercator","Transverse Mercator","tmerc"]},is={init:function(){if(void 0===this.es||this.es<=0)throw new Error("incorrect elliptical usage");this.x0=void 0!==this.x0?this.x0:0,this.y0=void 0!==this.y0?this.y0:0,this.long0=void 0!==this.long0?this.long0:0,this.lat0=void 0!==this.lat0?this.lat0:0,this.cgb=[],this.cbg=[],this.utg=[],this.gtu=[];var t=this.es/(1+Math.sqrt(1-this.es)),s=t/(2-t),i=s;this.cgb[0]=s*(2+s*(-2/3+s*(s*(116/45+s*(26/45+-2854/675*s))-2))),this.cbg[0]=s*(s*(2/3+s*(4/3+s*(-82/45+s*(32/45+4642/4725*s))))-2),i*=s,this.cgb[1]=i*(7/3+s*(s*(-227/45+s*(2704/315+2323/945*s))-1.6)),this.cbg[1]=i*(5/3+s*(-16/15+s*(-13/9+s*(904/315+-1522/945*s)))),i*=s,this.cgb[2]=i*(56/15+s*(-136/35+s*(-1262/105+73814/2835*s))),this.cbg[2]=i*(-26/15+s*(34/21+s*(1.6+-12686/2835*s))),i*=s,this.cgb[3]=i*(4279/630+s*(-332/35+-399572/14175*s)),this.cbg[3]=i*(1237/630+s*(-24832/14175*s-2.4)),i*=s,this.cgb[4]=i*(4174/315+-144838/6237*s),this.cbg[4]=i*(-734/315+109598/31185*s),i*=s,this.cgb[5]=i*(601676/22275),this.cbg[5]=i*(444337/155925),i=Math.pow(s,2),this.Qn=this.k0/(1+s)*(1+i*(.25+i*(1/64+i/256))),this.utg[0]=s*(s*(2/3+s*(-37/96+s*(1/360+s*(81/512+-96199/604800*s))))-.5),this.gtu[0]=s*(.5+s*(-2/3+s*(5/16+s*(41/180+s*(-127/288+7891/37800*s))))),this.utg[1]=i*(-1/48+s*(-1/15+s*(437/1440+s*(-46/105+1118711/3870720*s)))),this.gtu[1]=i*(13/48+s*(s*(557/1440+s*(281/630+-1983433/1935360*s))-.6)),i*=s,this.utg[2]=i*(-17/480+s*(37/840+s*(209/4480+-5569/90720*s))),this.gtu[2]=i*(61/240+s*(-103/140+s*(15061/26880+167603/181440*s))),i*=s,this.utg[3]=i*(-4397/161280+s*(11/504+830251/7257600*s)),this.gtu[3]=i*(49561/161280+s*(-179/168+6601661/7257600*s)),i*=s,this.utg[4]=i*(-4583/161280+108847/3991680*s),this.gtu[4]=i*(34729/80640+-3418889/1995840*s),i*=s,this.utg[5]=-.03233083094085698*i,this.gtu[5]=.6650675310896665*i;var a=Tt(this.cbg,this.lat0);this.Zb=-this.Qn*(a+function(t,s){for(var i,a=2*Math.cos(s),h=t.length-1,e=t[h],n=0;0<=--h;)i=a*e-n+t[h],n=e,e=i;return Math.sin(s)*i}(this.gtu,2*a))},forward:function(t){var s=nt(t.x-this.long0),i=t.y,i=Tt(this.cbg,i),a=Math.sin(i),h=Math.cos(i),e=Math.sin(s),n=Math.cos(s);i=Math.atan2(a,n*h),s=Math.atan2(e*h,Rt(a,h*n)),s=Lt(Math.tan(s));var r,o,l=Dt(this.gtu,2*i,2*s);return i+=l[0],s+=l[1],o=Math.abs(s)<=2.623395162778?(r=this.a*(this.Qn*s)+this.x0,this.a*(this.Qn*i+this.Zb)+this.y0):r=1/0,t.x=r,t.y=o,t},inverse:function(t){var s,i,a,h,e,n,r,o=(t.x-this.x0)*(1/this.a),l=(t.y-this.y0)*(1/this.a);return l=(l-this.Zb)/this.Qn,o/=this.Qn,r=Math.abs(o)<=2.623395162778?(l+=(s=Dt(this.utg,2*l,2*o))[0],o+=s[1],o=Math.atan(zt(o)),i=Math.sin(l),a=Math.cos(l),h=Math.sin(o),e=Math.cos(o),l=Math.atan2(i*e,Rt(h,e*a)),o=Math.atan2(h,e*a),n=nt(o+this.long0),Tt(this.cgb,l)):n=1/0,t.x=n,t.y=r,t},names:["Extended_Transverse_Mercator","Extended Transverse Mercator","etmerc"]},as={init:function(){var t=function(t,s){if(void 0===t){if((t=Math.floor(30*(nt(s)+Math.PI)/Math.PI)+1)<0)return 0;if(60D?this.ns=Math.log(a/r)/Math.log(h/o):this.ns=s,isNaN(this.ns)&&(this.ns=s),this.f0=a/(this.ns*Math.pow(h,this.ns)),this.rh=this.a*this.f0*Math.pow(l,this.ns),this.title||(this.title="Lambert Conformal Conic"))},forward:function(t){var s=t.x,i=t.y;Math.abs(2*Math.abs(i)-Math.PI)<=D&&(i=et(i)*(z-2*D));var a,h,e=Math.abs(Math.abs(i)-z);if(DD?this.ns0=(this.ms1*this.ms1-this.ms2*this.ms2)/(this.qs2-this.qs1):this.ns0=this.con,this.c=this.ms1*this.ms1+this.ns0*this.qs1,this.rh=this.a*Math.sqrt(this.c-this.ns0*this.qs0)/this.ns0)},forward:function(t){var s=t.x,i=t.y;this.sin_phi=Math.sin(i),this.cos_phi=Math.cos(i);var a=Vt(this.e3,this.sin_phi,this.cos_phi),h=this.a*Math.sqrt(this.c-this.ns0*a)/this.ns0,e=this.ns0*nt(s-this.long0),n=h*Math.sin(e)+this.x0,r=this.rh-h*Math.cos(e)+this.y0;return t.x=n,t.y=r,t},inverse:function(t){var s,i,a,h,e,n;return t.x-=this.x0,t.y=this.rh-t.y+this.y0,a=0<=this.ns0?(s=Math.sqrt(t.x*t.x+t.y*t.y),1):(s=-Math.sqrt(t.x*t.x+t.y*t.y),-1),(h=0)!==s&&(h=Math.atan2(a*t.x,a*t.y)),a=s*this.ns0/this.a,n=this.sphere?Math.asin((this.c-a*a)/(2*this.ns0)):(i=(this.c-a*a)/this.ns0,this.phi1z(this.e3,i)),e=nt(h/this.ns0+this.long0),t.x=e,t.y=n,t},names:["Albers_Conic_Equal_Area","Albers","aea"],phi1z:function(t,s){var i,a,h,e,n=Zt(.5*s);if(tMath.PI&&(a=Math.PI),i=(2*s+Math.sin(2*s))/Math.PI,12*z*this.a)return;return i=s/this.a,a=Math.sin(i),h=Math.cos(i),e=this.long0,Math.abs(s)<=D?n=this.lat0:(n=Zt(h*this.sin_p12+t.y*a*this.cos_p12/s),r=Math.abs(this.lat0)-z,e=nt(Math.abs(r)<=D?0<=this.lat0?this.long0+Math.atan2(t.x,-t.y):this.long0-Math.atan2(-t.x,t.y):this.long0+Math.atan2(t.x*a,s*this.cos_p12*h-t.y*this.sin_p12*a))),t.x=e,t.y=n,t}return o=Ft(this.es),l=Qt(this.es),M=Wt(this.es),c=Xt(this.es),Math.abs(this.sin_p12-1)<=D?(u=this.a*Ut(o,l,M,c,z),s=Math.sqrt(t.x*t.x+t.y*t.y),n=Kt((u-s)/this.a,o,l,M,c),e=nt(this.long0+Math.atan2(t.x,-1*t.y))):Math.abs(this.sin_p12+1)<=D?(u=this.a*Ut(o,l,M,c,z),s=Math.sqrt(t.x*t.x+t.y*t.y),n=Kt((s-u)/this.a,o,l,M,c),e=nt(this.long0+Math.atan2(t.x,t.y))):(s=Math.sqrt(t.x*t.x+t.y*t.y),p=Math.atan2(t.x,t.y),f=Ht(this.a,this.e,this.sin_p12),d=Math.cos(p),_=-(y=this.e*this.cos_p12*d)*y/(1-this.es),x=3*this.es*(1-_)*this.sin_p12*this.cos_p12*d/(1-this.es),v=1-_*(b=(g=s/f)-_*(1+_)*Math.pow(g,3)/6-x*(1+3*_)*Math.pow(g,4)/24)*b/2-g*b*b*b/6,m=Math.asin(this.sin_p12*Math.cos(b)+this.cos_p12*Math.sin(b)*d),e=nt(this.long0+Math.asin(Math.sin(p)*Math.sin(b)/Math.cos(m))),w=Math.sin(m),n=Math.atan2((w-this.es*v*this.sin_p12)*Math.tan(m),w*(1-this.es))),t.x=e,t.y=n,t},names:["Azimuthal_Equidistant","aeqd"]},Ps={init:function(){this.sin_p14=Math.sin(this.lat0),this.cos_p14=Math.cos(this.lat0)},forward:function(t){var s,i,a,h=t.x,e=t.y,n=nt(h-this.long0),r=Math.sin(e),o=Math.cos(e),l=Math.cos(n);return(0<(s=this.sin_p14*r+this.cos_p14*o*l)||Math.abs(s)<=D)&&(i=this.a*o*Math.sin(n),a=this.y0+this.a*(this.cos_p14*r-this.sin_p14*o*l)),t.x=i,t.y=a,t},inverse:function(t){var s,i,a,h,e,n,r;return t.x-=this.x0,t.y-=this.y0,s=Math.sqrt(t.x*t.x+t.y*t.y),i=Zt(s/this.a),a=Math.sin(i),h=Math.cos(i),n=this.long0,Math.abs(s)<=D?r=this.lat0:(r=Zt(h*this.sin_p14+t.y*a*this.cos_p14/s),e=Math.abs(this.lat0)-z,n=Math.abs(e)<=D?nt(0<=this.lat0?this.long0+Math.atan2(t.x,-t.y):this.long0-Math.atan2(-t.x,t.y)):nt(this.long0+Math.atan2(t.x*a,s*this.cos_p14*h-t.y*this.sin_p14*a))),t.x=n,t.y=r,t},names:["ortho"]},Ss=1,Ns=2,ks=3,Es=4,qs=5,Is=6,Os=1,As=2,Gs=3,js=4,zs={init:function(){this.x0=this.x0||0,this.y0=this.y0||0,this.lat0=this.lat0||0,this.long0=this.long0||0,this.lat_ts=this.lat_ts||0,this.title=this.title||"Quadrilateralized Spherical Cube",this.lat0>=z-U/2?this.face=qs:this.lat0<=-(z-U/2)?this.face=Is:Math.abs(this.long0)<=U?this.face=Ss:Math.abs(this.long0)<=z+U?this.face=0=Math.abs(t.y)?y.value=Os:0<=t.y&&t.y>=Math.abs(t.x)?(y.value=As,s-=z):t.x<0&&-t.x>=Math.abs(t.y)?(y.value=Gs,s=s<0?s+Q:s-Q):(y.value=js,s+=z),c=Q/12*Math.tan(s),e=Math.sin(c)/(Math.cos(c)-1/Math.sqrt(2)),n=Math.atan(e),(r=1-(a=Math.cos(s))*a*(h=Math.tan(i))*h*(1-Math.cos(Math.atan(1/Math.cos(n)))))<-1?r=-1:1a.y)--s;else{if(!(Ls[s+1][0]<=a.y))break;++s}var h=Ls[s],i=function(t,s,i,a){for(var h=s;a;--a){var e=t(h);if(h-=e,Math.abs(e)Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v diff --git a/inst/doc/neotoma2-package_files/rstudio_leaflet-1.3.1/rstudio_leaflet.css b/inst/doc/neotoma2-package_files/rstudio_leaflet-1.3.1/rstudio_leaflet.css deleted file mode 100644 index c10d2f1..0000000 --- a/inst/doc/neotoma2-package_files/rstudio_leaflet-1.3.1/rstudio_leaflet.css +++ /dev/null @@ -1,41 +0,0 @@ -.leaflet-tooltip.leaflet-tooltip-text-only, -.leaflet-tooltip.leaflet-tooltip-text-only:before, -.leaflet-tooltip.leaflet-tooltip-text-only:after { - background: none; - border: none; - box-shadow: none; -} - -.leaflet-tooltip.leaflet-tooltip-text-only.leaflet-tooltip-left { - margin-left: 5px; -} - -.leaflet-tooltip.leaflet-tooltip-text-only.leaflet-tooltip-right { - margin-left: -5px; -} - -.leaflet-tooltip:after { - border-right: 6px solid transparent; - /* right: -16px; */ -} - -.leaflet-popup-pane .leaflet-popup-tip-container { - /* when the tooltip container is clicked, it is closed */ - pointer-events: all; - /* tooltips should display the "hand" icon, just like .leaflet-interactive*/ - cursor: pointer; -} - -/* have the widget be displayed in the right 'layer' */ -.leaflet-map-pane { - z-index: auto; -} - -/* Add missing rule from leaflet for img. -This complete existing leaflet.css. -Fix for https://github.com/rstudio/rmarkdown/issues/1949 */ -.leaflet-container .leaflet-right-pane img, -.leaflet-container .leaflet-left-pane img { - max-width: none !important; - max-height: none !important; -}