From a61151287840d766dcbe42acc92968a12a5b4884 Mon Sep 17 00:00:00 2001 From: Bartek Fabiszewski Date: Sat, 19 Mar 2022 17:51:08 +0100 Subject: [PATCH] Add dist bundle --- css/dist/fonts.css | 2 +- css/dist/fonts.css.map | 2 +- css/dist/main.css | 2 +- css/dist/main.css.map | 2 +- css/dist/ol.css | 2 +- css/dist/ol.css.map | 2 +- js/dist/521.bundle.js | 2 +- js/dist/521.bundle.js.map | 2 +- js/dist/bundle.js | 2 +- js/dist/bundle.js.map | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/css/dist/fonts.css b/css/dist/fonts.css index 972ac77..5ee6719 100644 --- a/css/dist/fonts.css +++ b/css/dist/fonts.css @@ -1,2 +1,2 @@ -@font-face{font-family:'Open Sans';font-style:italic;font-weight:400;src:local('Open Sans Italic'),local('OpenSans-Italic'),url(../../fonts/mem6YaGs126MiZpBA-UFUK0Udc1GAK6bt6o.woff2) format('woff2');unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:'Open Sans';font-style:italic;font-weight:400;src:local('Open Sans Italic'),local('OpenSans-Italic'),url(../../fonts/mem6YaGs126MiZpBA-UFUK0ddc1GAK6bt6o.woff2) format('woff2');unicode-range:U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:'Open Sans';font-style:italic;font-weight:400;src:local('Open Sans Italic'),local('OpenSans-Italic'),url(../../fonts/mem6YaGs126MiZpBA-UFUK0Vdc1GAK6bt6o.woff2) format('woff2');unicode-range:U+1F00-1FFF}@font-face{font-family:'Open Sans';font-style:italic;font-weight:400;src:local('Open Sans Italic'),local('OpenSans-Italic'),url(../../fonts/mem6YaGs126MiZpBA-UFUK0adc1GAK6bt6o.woff2) format('woff2');unicode-range:U+0370-03FF}@font-face{font-family:'Open Sans';font-style:italic;font-weight:400;src:local('Open Sans Italic'),local('OpenSans-Italic'),url(../../fonts/mem6YaGs126MiZpBA-UFUK0Wdc1GAK6bt6o.woff2) format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+1EA0-1EF9,U+20AB}@font-face{font-family:'Open Sans';font-style:italic;font-weight:400;src:local('Open Sans Italic'),local('OpenSans-Italic'),url(../../fonts/mem6YaGs126MiZpBA-UFUK0Xdc1GAK6bt6o.woff2) format('woff2');unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:'Open Sans';font-style:italic;font-weight:400;src:local('Open Sans Italic'),local('OpenSans-Italic'),url(../../fonts/mem6YaGs126MiZpBA-UFUK0Zdc1GAK6b.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:'Open Sans';font-style:italic;font-weight:700;src:local('Open Sans Bold Italic'),local('OpenSans-BoldItalic'),url(../../fonts/memnYaGs126MiZpBA-UFUKWiUNhmIqOxjaPXZSk.woff2) format('woff2');unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:'Open Sans';font-style:italic;font-weight:700;src:local('Open Sans Bold Italic'),local('OpenSans-BoldItalic'),url(../../fonts/memnYaGs126MiZpBA-UFUKWiUNhvIqOxjaPXZSk.woff2) format('woff2');unicode-range:U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:'Open Sans';font-style:italic;font-weight:700;src:local('Open Sans Bold Italic'),local('OpenSans-BoldItalic'),url(../../fonts/memnYaGs126MiZpBA-UFUKWiUNhnIqOxjaPXZSk.woff2) format('woff2');unicode-range:U+1F00-1FFF}@font-face{font-family:'Open Sans';font-style:italic;font-weight:700;src:local('Open Sans Bold Italic'),local('OpenSans-BoldItalic'),url(../../fonts/memnYaGs126MiZpBA-UFUKWiUNhoIqOxjaPXZSk.woff2) format('woff2');unicode-range:U+0370-03FF}@font-face{font-family:'Open Sans';font-style:italic;font-weight:700;src:local('Open Sans Bold Italic'),local('OpenSans-BoldItalic'),url(../../fonts/memnYaGs126MiZpBA-UFUKWiUNhkIqOxjaPXZSk.woff2) format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+1EA0-1EF9,U+20AB}@font-face{font-family:'Open Sans';font-style:italic;font-weight:700;src:local('Open Sans Bold Italic'),local('OpenSans-BoldItalic'),url(../../fonts/memnYaGs126MiZpBA-UFUKWiUNhlIqOxjaPXZSk.woff2) format('woff2');unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:'Open Sans';font-style:italic;font-weight:700;src:local('Open Sans Bold Italic'),local('OpenSans-BoldItalic'),url(../../fonts/memnYaGs126MiZpBA-UFUKWiUNhrIqOxjaPX.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:'Open Sans';font-style:normal;font-weight:400;src:local('Open Sans Regular'),local('OpenSans-Regular'),url(../../fonts/mem8YaGs126MiZpBA-UFWJ0bf8pkAp6a.woff2) format('woff2');unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:'Open Sans';font-style:normal;font-weight:400;src:local('Open Sans Regular'),local('OpenSans-Regular'),url(../../fonts/mem8YaGs126MiZpBA-UFUZ0bf8pkAp6a.woff2) format('woff2');unicode-range:U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:'Open Sans';font-style:normal;font-weight:400;src:local('Open Sans Regular'),local('OpenSans-Regular'),url(../../fonts/mem8YaGs126MiZpBA-UFWZ0bf8pkAp6a.woff2) format('woff2');unicode-range:U+1F00-1FFF}@font-face{font-family:'Open Sans';font-style:normal;font-weight:400;src:local('Open Sans Regular'),local('OpenSans-Regular'),url(../../fonts/mem8YaGs126MiZpBA-UFVp0bf8pkAp6a.woff2) format('woff2');unicode-range:U+0370-03FF}@font-face{font-family:'Open Sans';font-style:normal;font-weight:400;src:local('Open Sans Regular'),local('OpenSans-Regular'),url(../../fonts/mem8YaGs126MiZpBA-UFWp0bf8pkAp6a.woff2) format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+1EA0-1EF9,U+20AB}@font-face{font-family:'Open Sans';font-style:normal;font-weight:400;src:local('Open Sans Regular'),local('OpenSans-Regular'),url(../../fonts/mem8YaGs126MiZpBA-UFW50bf8pkAp6a.woff2) format('woff2');unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:'Open Sans';font-style:normal;font-weight:400;src:local('Open Sans Regular'),local('OpenSans-Regular'),url(../../fonts/mem8YaGs126MiZpBA-UFVZ0bf8pkAg.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:'Open Sans';font-style:normal;font-weight:700;src:local('Open Sans Bold'),local('OpenSans-Bold'),url(../../fonts/mem5YaGs126MiZpBA-UN7rgOX-hpKKSTj5PW.woff2) format('woff2');unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:'Open Sans';font-style:normal;font-weight:700;src:local('Open Sans Bold'),local('OpenSans-Bold'),url(../../fonts/mem5YaGs126MiZpBA-UN7rgOVuhpKKSTj5PW.woff2) format('woff2');unicode-range:U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:'Open Sans';font-style:normal;font-weight:700;src:local('Open Sans Bold'),local('OpenSans-Bold'),url(../../fonts/mem5YaGs126MiZpBA-UN7rgOXuhpKKSTj5PW.woff2) format('woff2');unicode-range:U+1F00-1FFF}@font-face{font-family:'Open Sans';font-style:normal;font-weight:700;src:local('Open Sans Bold'),local('OpenSans-Bold'),url(../../fonts/mem5YaGs126MiZpBA-UN7rgOUehpKKSTj5PW.woff2) format('woff2');unicode-range:U+0370-03FF}@font-face{font-family:'Open Sans';font-style:normal;font-weight:700;src:local('Open Sans Bold'),local('OpenSans-Bold'),url(../../fonts/mem5YaGs126MiZpBA-UN7rgOXehpKKSTj5PW.woff2) format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+1EA0-1EF9,U+20AB}@font-face{font-family:'Open Sans';font-style:normal;font-weight:700;src:local('Open Sans Bold'),local('OpenSans-Bold'),url(../../fonts/mem5YaGs126MiZpBA-UN7rgOXOhpKKSTj5PW.woff2) format('woff2');unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:'Open Sans';font-style:normal;font-weight:700;src:local('Open Sans Bold'),local('OpenSans-Bold'),url(../../fonts/mem5YaGs126MiZpBA-UN7rgOUuhpKKSTjw.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD} +@font-face{font-family:"Open Sans";font-style:italic;font-weight:400;src:local("Open Sans Italic"),local("OpenSans-Italic"),url(../../fonts/mem6YaGs126MiZpBA-UFUK0Udc1GAK6bt6o.woff2)format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:"Open Sans";font-style:italic;font-weight:400;src:local("Open Sans Italic"),local("OpenSans-Italic"),url(../../fonts/mem6YaGs126MiZpBA-UFUK0ddc1GAK6bt6o.woff2)format("woff2");unicode-range:U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:"Open Sans";font-style:italic;font-weight:400;src:local("Open Sans Italic"),local("OpenSans-Italic"),url(../../fonts/mem6YaGs126MiZpBA-UFUK0Vdc1GAK6bt6o.woff2)format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:"Open Sans";font-style:italic;font-weight:400;src:local("Open Sans Italic"),local("OpenSans-Italic"),url(../../fonts/mem6YaGs126MiZpBA-UFUK0adc1GAK6bt6o.woff2)format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:"Open Sans";font-style:italic;font-weight:400;src:local("Open Sans Italic"),local("OpenSans-Italic"),url(../../fonts/mem6YaGs126MiZpBA-UFUK0Wdc1GAK6bt6o.woff2)format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+1EA0-1EF9,U+20AB}@font-face{font-family:"Open Sans";font-style:italic;font-weight:400;src:local("Open Sans Italic"),local("OpenSans-Italic"),url(../../fonts/mem6YaGs126MiZpBA-UFUK0Xdc1GAK6bt6o.woff2)format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:"Open Sans";font-style:italic;font-weight:400;src:local("Open Sans Italic"),local("OpenSans-Italic"),url(../../fonts/mem6YaGs126MiZpBA-UFUK0Zdc1GAK6b.woff2)format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:"Open Sans";font-style:italic;font-weight:700;src:local("Open Sans Bold Italic"),local("OpenSans-BoldItalic"),url(../../fonts/memnYaGs126MiZpBA-UFUKWiUNhmIqOxjaPXZSk.woff2)format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:"Open Sans";font-style:italic;font-weight:700;src:local("Open Sans Bold Italic"),local("OpenSans-BoldItalic"),url(../../fonts/memnYaGs126MiZpBA-UFUKWiUNhvIqOxjaPXZSk.woff2)format("woff2");unicode-range:U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:"Open Sans";font-style:italic;font-weight:700;src:local("Open Sans Bold Italic"),local("OpenSans-BoldItalic"),url(../../fonts/memnYaGs126MiZpBA-UFUKWiUNhnIqOxjaPXZSk.woff2)format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:"Open Sans";font-style:italic;font-weight:700;src:local("Open Sans Bold Italic"),local("OpenSans-BoldItalic"),url(../../fonts/memnYaGs126MiZpBA-UFUKWiUNhoIqOxjaPXZSk.woff2)format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:"Open Sans";font-style:italic;font-weight:700;src:local("Open Sans Bold Italic"),local("OpenSans-BoldItalic"),url(../../fonts/memnYaGs126MiZpBA-UFUKWiUNhkIqOxjaPXZSk.woff2)format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+1EA0-1EF9,U+20AB}@font-face{font-family:"Open Sans";font-style:italic;font-weight:700;src:local("Open Sans Bold Italic"),local("OpenSans-BoldItalic"),url(../../fonts/memnYaGs126MiZpBA-UFUKWiUNhlIqOxjaPXZSk.woff2)format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:"Open Sans";font-style:italic;font-weight:700;src:local("Open Sans Bold Italic"),local("OpenSans-BoldItalic"),url(../../fonts/memnYaGs126MiZpBA-UFUKWiUNhrIqOxjaPX.woff2)format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:"Open Sans";font-style:normal;font-weight:400;src:local("Open Sans Regular"),local("OpenSans-Regular"),url(../../fonts/mem8YaGs126MiZpBA-UFWJ0bf8pkAp6a.woff2)format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:"Open Sans";font-style:normal;font-weight:400;src:local("Open Sans Regular"),local("OpenSans-Regular"),url(../../fonts/mem8YaGs126MiZpBA-UFUZ0bf8pkAp6a.woff2)format("woff2");unicode-range:U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:"Open Sans";font-style:normal;font-weight:400;src:local("Open Sans Regular"),local("OpenSans-Regular"),url(../../fonts/mem8YaGs126MiZpBA-UFWZ0bf8pkAp6a.woff2)format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:"Open Sans";font-style:normal;font-weight:400;src:local("Open Sans Regular"),local("OpenSans-Regular"),url(../../fonts/mem8YaGs126MiZpBA-UFVp0bf8pkAp6a.woff2)format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:"Open Sans";font-style:normal;font-weight:400;src:local("Open Sans Regular"),local("OpenSans-Regular"),url(../../fonts/mem8YaGs126MiZpBA-UFWp0bf8pkAp6a.woff2)format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+1EA0-1EF9,U+20AB}@font-face{font-family:"Open Sans";font-style:normal;font-weight:400;src:local("Open Sans Regular"),local("OpenSans-Regular"),url(../../fonts/mem8YaGs126MiZpBA-UFW50bf8pkAp6a.woff2)format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:"Open Sans";font-style:normal;font-weight:400;src:local("Open Sans Regular"),local("OpenSans-Regular"),url(../../fonts/mem8YaGs126MiZpBA-UFVZ0bf8pkAg.woff2)format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:"Open Sans";font-style:normal;font-weight:700;src:local("Open Sans Bold"),local("OpenSans-Bold"),url(../../fonts/mem5YaGs126MiZpBA-UN7rgOX-hpKKSTj5PW.woff2)format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:"Open Sans";font-style:normal;font-weight:700;src:local("Open Sans Bold"),local("OpenSans-Bold"),url(../../fonts/mem5YaGs126MiZpBA-UN7rgOVuhpKKSTj5PW.woff2)format("woff2");unicode-range:U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:"Open Sans";font-style:normal;font-weight:700;src:local("Open Sans Bold"),local("OpenSans-Bold"),url(../../fonts/mem5YaGs126MiZpBA-UN7rgOXuhpKKSTj5PW.woff2)format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:"Open Sans";font-style:normal;font-weight:700;src:local("Open Sans Bold"),local("OpenSans-Bold"),url(../../fonts/mem5YaGs126MiZpBA-UN7rgOUehpKKSTj5PW.woff2)format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:"Open Sans";font-style:normal;font-weight:700;src:local("Open Sans Bold"),local("OpenSans-Bold"),url(../../fonts/mem5YaGs126MiZpBA-UN7rgOXehpKKSTj5PW.woff2)format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+1EA0-1EF9,U+20AB}@font-face{font-family:"Open Sans";font-style:normal;font-weight:700;src:local("Open Sans Bold"),local("OpenSans-Bold"),url(../../fonts/mem5YaGs126MiZpBA-UN7rgOXOhpKKSTj5PW.woff2)format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:"Open Sans";font-style:normal;font-weight:700;src:local("Open Sans Bold"),local("OpenSans-Bold"),url(../../fonts/mem5YaGs126MiZpBA-UN7rgOUuhpKKSTjw.woff2)format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD} /*# sourceMappingURL=fonts.css.map */ \ No newline at end of file diff --git a/css/dist/fonts.css.map b/css/dist/fonts.css.map index fd3685a..7b4061f 100644 --- a/css/dist/fonts.css.map +++ b/css/dist/fonts.css.map @@ -1 +1 @@ -{"version":3,"sources":["fonts.css"],"names":[],"mappings":"AACA,A,WACE,uB,CACA,iB,CACA,e,CACA,iI,CACA,iFAIF,A,WACE,uB,CACA,iB,CACA,e,CACA,iI,CACA,yDAIF,A,WACE,uB,CACA,iB,CACA,e,CACA,iI,CACA,0BAIF,A,WACE,uB,CACA,iB,CACA,e,CACA,iI,CACA,0BAIF,A,WACE,uB,CACA,iB,CACA,e,CACA,iI,CACA,yDAIF,A,WACE,uB,CACA,iB,CACA,e,CACA,iI,CACA,2GAIF,A,WACE,uB,CACA,iB,CACA,e,CACA,8H,CACA,yJAIF,A,WACE,uB,CACA,iB,CACA,e,CACA,8I,CACA,iFAIF,A,WACE,uB,CACA,iB,CACA,e,CACA,8I,CACA,yDAIF,A,WACE,uB,CACA,iB,CACA,e,CACA,8I,CACA,0BAIF,A,WACE,uB,CACA,iB,CACA,e,CACA,8I,CACA,0BAIF,A,WACE,uB,CACA,iB,CACA,e,CACA,8I,CACA,yDAIF,A,WACE,uB,CACA,iB,CACA,e,CACA,8I,CACA,2GAIF,A,WACE,uB,CACA,iB,CACA,e,CACA,2I,CACA,yJAIF,A,WACE,uB,CACA,iB,CACA,e,CACA,gI,CACA,iFAIF,A,WACE,uB,CACA,iB,CACA,e,CACA,gI,CACA,yDAIF,A,WACE,uB,CACA,iB,CACA,e,CACA,gI,CACA,0BAIF,A,WACE,uB,CACA,iB,CACA,e,CACA,gI,CACA,0BAIF,A,WACE,uB,CACA,iB,CACA,e,CACA,gI,CACA,yDAIF,A,WACE,uB,CACA,iB,CACA,e,CACA,gI,CACA,2GAIF,A,WACE,uB,CACA,iB,CACA,e,CACA,8H,CACA,yJAIF,A,WACE,uB,CACA,iB,CACA,e,CACA,8H,CACA,iFAIF,A,WACE,uB,CACA,iB,CACA,e,CACA,8H,CACA,yDAIF,A,WACE,uB,CACA,iB,CACA,e,CACA,8H,CACA,0BAIF,A,WACE,uB,CACA,iB,CACA,e,CACA,8H,CACA,0BAIF,A,WACE,uB,CACA,iB,CACA,e,CACA,8H,CACA,yDAIF,A,WACE,uB,CACA,iB,CACA,e,CACA,8H,CACA,2GAIF,A,WACE,uB,CACA,iB,CACA,e,CACA,4H,CACA,yJ","file":"fonts.css","sourcesContent":["/* cyrillic-ext */\n@font-face {\n font-family: 'Open Sans';\n font-style: italic;\n font-weight: 400;\n src: local('Open Sans Italic'), local('OpenSans-Italic'), url(../../fonts/mem6YaGs126MiZpBA-UFUK0Udc1GAK6bt6o.woff2) format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\n}\n\n/* cyrillic */\n@font-face {\n font-family: 'Open Sans';\n font-style: italic;\n font-weight: 400;\n src: local('Open Sans Italic'), local('OpenSans-Italic'), url(../../fonts/mem6YaGs126MiZpBA-UFUK0ddc1GAK6bt6o.woff2) format('woff2');\n unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n\n/* greek-ext */\n@font-face {\n font-family: 'Open Sans';\n font-style: italic;\n font-weight: 400;\n src: local('Open Sans Italic'), local('OpenSans-Italic'), url(../../fonts/mem6YaGs126MiZpBA-UFUK0Vdc1GAK6bt6o.woff2) format('woff2');\n unicode-range: U+1F00-1FFF;\n}\n\n/* greek */\n@font-face {\n font-family: 'Open Sans';\n font-style: italic;\n font-weight: 400;\n src: local('Open Sans Italic'), local('OpenSans-Italic'), url(../../fonts/mem6YaGs126MiZpBA-UFUK0adc1GAK6bt6o.woff2) format('woff2');\n unicode-range: U+0370-03FF;\n}\n\n/* vietnamese */\n@font-face {\n font-family: 'Open Sans';\n font-style: italic;\n font-weight: 400;\n src: local('Open Sans Italic'), local('OpenSans-Italic'), url(../../fonts/mem6YaGs126MiZpBA-UFUK0Wdc1GAK6bt6o.woff2) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;\n}\n\n/* latin-ext */\n@font-face {\n font-family: 'Open Sans';\n font-style: italic;\n font-weight: 400;\n src: local('Open Sans Italic'), local('OpenSans-Italic'), url(../../fonts/mem6YaGs126MiZpBA-UFUK0Xdc1GAK6bt6o.woff2) format('woff2');\n unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n\n/* latin */\n@font-face {\n font-family: 'Open Sans';\n font-style: italic;\n font-weight: 400;\n src: local('Open Sans Italic'), local('OpenSans-Italic'), url(../../fonts/mem6YaGs126MiZpBA-UFUK0Zdc1GAK6b.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n\n/* cyrillic-ext */\n@font-face {\n font-family: 'Open Sans';\n font-style: italic;\n font-weight: 700;\n src: local('Open Sans Bold Italic'), local('OpenSans-BoldItalic'), url(../../fonts/memnYaGs126MiZpBA-UFUKWiUNhmIqOxjaPXZSk.woff2) format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\n}\n\n/* cyrillic */\n@font-face {\n font-family: 'Open Sans';\n font-style: italic;\n font-weight: 700;\n src: local('Open Sans Bold Italic'), local('OpenSans-BoldItalic'), url(../../fonts/memnYaGs126MiZpBA-UFUKWiUNhvIqOxjaPXZSk.woff2) format('woff2');\n unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n\n/* greek-ext */\n@font-face {\n font-family: 'Open Sans';\n font-style: italic;\n font-weight: 700;\n src: local('Open Sans Bold Italic'), local('OpenSans-BoldItalic'), url(../../fonts/memnYaGs126MiZpBA-UFUKWiUNhnIqOxjaPXZSk.woff2) format('woff2');\n unicode-range: U+1F00-1FFF;\n}\n\n/* greek */\n@font-face {\n font-family: 'Open Sans';\n font-style: italic;\n font-weight: 700;\n src: local('Open Sans Bold Italic'), local('OpenSans-BoldItalic'), url(../../fonts/memnYaGs126MiZpBA-UFUKWiUNhoIqOxjaPXZSk.woff2) format('woff2');\n unicode-range: U+0370-03FF;\n}\n\n/* vietnamese */\n@font-face {\n font-family: 'Open Sans';\n font-style: italic;\n font-weight: 700;\n src: local('Open Sans Bold Italic'), local('OpenSans-BoldItalic'), url(../../fonts/memnYaGs126MiZpBA-UFUKWiUNhkIqOxjaPXZSk.woff2) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;\n}\n\n/* latin-ext */\n@font-face {\n font-family: 'Open Sans';\n font-style: italic;\n font-weight: 700;\n src: local('Open Sans Bold Italic'), local('OpenSans-BoldItalic'), url(../../fonts/memnYaGs126MiZpBA-UFUKWiUNhlIqOxjaPXZSk.woff2) format('woff2');\n unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n\n/* latin */\n@font-face {\n font-family: 'Open Sans';\n font-style: italic;\n font-weight: 700;\n src: local('Open Sans Bold Italic'), local('OpenSans-BoldItalic'), url(../../fonts/memnYaGs126MiZpBA-UFUKWiUNhrIqOxjaPX.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n\n/* cyrillic-ext */\n@font-face {\n font-family: 'Open Sans';\n font-style: normal;\n font-weight: 400;\n src: local('Open Sans Regular'), local('OpenSans-Regular'), url(../../fonts/mem8YaGs126MiZpBA-UFWJ0bf8pkAp6a.woff2) format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\n}\n\n/* cyrillic */\n@font-face {\n font-family: 'Open Sans';\n font-style: normal;\n font-weight: 400;\n src: local('Open Sans Regular'), local('OpenSans-Regular'), url(../../fonts/mem8YaGs126MiZpBA-UFUZ0bf8pkAp6a.woff2) format('woff2');\n unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n\n/* greek-ext */\n@font-face {\n font-family: 'Open Sans';\n font-style: normal;\n font-weight: 400;\n src: local('Open Sans Regular'), local('OpenSans-Regular'), url(../../fonts/mem8YaGs126MiZpBA-UFWZ0bf8pkAp6a.woff2) format('woff2');\n unicode-range: U+1F00-1FFF;\n}\n\n/* greek */\n@font-face {\n font-family: 'Open Sans';\n font-style: normal;\n font-weight: 400;\n src: local('Open Sans Regular'), local('OpenSans-Regular'), url(../../fonts/mem8YaGs126MiZpBA-UFVp0bf8pkAp6a.woff2) format('woff2');\n unicode-range: U+0370-03FF;\n}\n\n/* vietnamese */\n@font-face {\n font-family: 'Open Sans';\n font-style: normal;\n font-weight: 400;\n src: local('Open Sans Regular'), local('OpenSans-Regular'), url(../../fonts/mem8YaGs126MiZpBA-UFWp0bf8pkAp6a.woff2) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;\n}\n\n/* latin-ext */\n@font-face {\n font-family: 'Open Sans';\n font-style: normal;\n font-weight: 400;\n src: local('Open Sans Regular'), local('OpenSans-Regular'), url(../../fonts/mem8YaGs126MiZpBA-UFW50bf8pkAp6a.woff2) format('woff2');\n unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n\n/* latin */\n@font-face {\n font-family: 'Open Sans';\n font-style: normal;\n font-weight: 400;\n src: local('Open Sans Regular'), local('OpenSans-Regular'), url(../../fonts/mem8YaGs126MiZpBA-UFVZ0bf8pkAg.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n\n/* cyrillic-ext */\n@font-face {\n font-family: 'Open Sans';\n font-style: normal;\n font-weight: 700;\n src: local('Open Sans Bold'), local('OpenSans-Bold'), url(../../fonts/mem5YaGs126MiZpBA-UN7rgOX-hpKKSTj5PW.woff2) format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\n}\n\n/* cyrillic */\n@font-face {\n font-family: 'Open Sans';\n font-style: normal;\n font-weight: 700;\n src: local('Open Sans Bold'), local('OpenSans-Bold'), url(../../fonts/mem5YaGs126MiZpBA-UN7rgOVuhpKKSTj5PW.woff2) format('woff2');\n unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n\n/* greek-ext */\n@font-face {\n font-family: 'Open Sans';\n font-style: normal;\n font-weight: 700;\n src: local('Open Sans Bold'), local('OpenSans-Bold'), url(../../fonts/mem5YaGs126MiZpBA-UN7rgOXuhpKKSTj5PW.woff2) format('woff2');\n unicode-range: U+1F00-1FFF;\n}\n\n/* greek */\n@font-face {\n font-family: 'Open Sans';\n font-style: normal;\n font-weight: 700;\n src: local('Open Sans Bold'), local('OpenSans-Bold'), url(../../fonts/mem5YaGs126MiZpBA-UN7rgOUehpKKSTj5PW.woff2) format('woff2');\n unicode-range: U+0370-03FF;\n}\n\n/* vietnamese */\n@font-face {\n font-family: 'Open Sans';\n font-style: normal;\n font-weight: 700;\n src: local('Open Sans Bold'), local('OpenSans-Bold'), url(../../fonts/mem5YaGs126MiZpBA-UN7rgOXehpKKSTj5PW.woff2) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;\n}\n\n/* latin-ext */\n@font-face {\n font-family: 'Open Sans';\n font-style: normal;\n font-weight: 700;\n src: local('Open Sans Bold'), local('OpenSans-Bold'), url(../../fonts/mem5YaGs126MiZpBA-UN7rgOXOhpKKSTj5PW.woff2) format('woff2');\n unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n\n/* latin */\n@font-face {\n font-family: 'Open Sans';\n font-style: normal;\n font-weight: 700;\n src: local('Open Sans Bold'), local('OpenSans-Bold'), url(../../fonts/mem5YaGs126MiZpBA-UN7rgOUuhpKKSTjw.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n"]} \ No newline at end of file +{"version":3,"sources":["fonts.css"],"names":[],"mappings":"AACA,A,WACE,uB,CACA,iB,CACA,e,CACA,gI,CACA,iFAIF,A,WACE,uB,CACA,iB,CACA,e,CACA,gI,CACA,yDAIF,A,WACE,uB,CACA,iB,CACA,e,CACA,gI,CACA,0BAIF,A,WACE,uB,CACA,iB,CACA,e,CACA,gI,CACA,0BAIF,A,WACE,uB,CACA,iB,CACA,e,CACA,gI,CACA,yDAIF,A,WACE,uB,CACA,iB,CACA,e,CACA,gI,CACA,2GAIF,A,WACE,uB,CACA,iB,CACA,e,CACA,6H,CACA,yJAIF,A,WACE,uB,CACA,iB,CACA,e,CACA,6I,CACA,iFAIF,A,WACE,uB,CACA,iB,CACA,e,CACA,6I,CACA,yDAIF,A,WACE,uB,CACA,iB,CACA,e,CACA,6I,CACA,0BAIF,A,WACE,uB,CACA,iB,CACA,e,CACA,6I,CACA,0BAIF,A,WACE,uB,CACA,iB,CACA,e,CACA,6I,CACA,yDAIF,A,WACE,uB,CACA,iB,CACA,e,CACA,6I,CACA,2GAIF,A,WACE,uB,CACA,iB,CACA,e,CACA,0I,CACA,yJAIF,A,WACE,uB,CACA,iB,CACA,e,CACA,+H,CACA,iFAIF,A,WACE,uB,CACA,iB,CACA,e,CACA,+H,CACA,yDAIF,A,WACE,uB,CACA,iB,CACA,e,CACA,+H,CACA,0BAIF,A,WACE,uB,CACA,iB,CACA,e,CACA,+H,CACA,0BAIF,A,WACE,uB,CACA,iB,CACA,e,CACA,+H,CACA,yDAIF,A,WACE,uB,CACA,iB,CACA,e,CACA,+H,CACA,2GAIF,A,WACE,uB,CACA,iB,CACA,e,CACA,6H,CACA,yJAIF,A,WACE,uB,CACA,iB,CACA,e,CACA,6H,CACA,iFAIF,A,WACE,uB,CACA,iB,CACA,e,CACA,6H,CACA,yDAIF,A,WACE,uB,CACA,iB,CACA,e,CACA,6H,CACA,0BAIF,A,WACE,uB,CACA,iB,CACA,e,CACA,6H,CACA,0BAIF,A,WACE,uB,CACA,iB,CACA,e,CACA,6H,CACA,yDAIF,A,WACE,uB,CACA,iB,CACA,e,CACA,6H,CACA,2GAIF,A,WACE,uB,CACA,iB,CACA,e,CACA,2H,CACA,yJ","file":"fonts.css","sourcesContent":["/* cyrillic-ext */\n@font-face {\n font-family: 'Open Sans';\n font-style: italic;\n font-weight: 400;\n src: local('Open Sans Italic'), local('OpenSans-Italic'), url(../../fonts/mem6YaGs126MiZpBA-UFUK0Udc1GAK6bt6o.woff2) format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\n}\n\n/* cyrillic */\n@font-face {\n font-family: 'Open Sans';\n font-style: italic;\n font-weight: 400;\n src: local('Open Sans Italic'), local('OpenSans-Italic'), url(../../fonts/mem6YaGs126MiZpBA-UFUK0ddc1GAK6bt6o.woff2) format('woff2');\n unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n\n/* greek-ext */\n@font-face {\n font-family: 'Open Sans';\n font-style: italic;\n font-weight: 400;\n src: local('Open Sans Italic'), local('OpenSans-Italic'), url(../../fonts/mem6YaGs126MiZpBA-UFUK0Vdc1GAK6bt6o.woff2) format('woff2');\n unicode-range: U+1F00-1FFF;\n}\n\n/* greek */\n@font-face {\n font-family: 'Open Sans';\n font-style: italic;\n font-weight: 400;\n src: local('Open Sans Italic'), local('OpenSans-Italic'), url(../../fonts/mem6YaGs126MiZpBA-UFUK0adc1GAK6bt6o.woff2) format('woff2');\n unicode-range: U+0370-03FF;\n}\n\n/* vietnamese */\n@font-face {\n font-family: 'Open Sans';\n font-style: italic;\n font-weight: 400;\n src: local('Open Sans Italic'), local('OpenSans-Italic'), url(../../fonts/mem6YaGs126MiZpBA-UFUK0Wdc1GAK6bt6o.woff2) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;\n}\n\n/* latin-ext */\n@font-face {\n font-family: 'Open Sans';\n font-style: italic;\n font-weight: 400;\n src: local('Open Sans Italic'), local('OpenSans-Italic'), url(../../fonts/mem6YaGs126MiZpBA-UFUK0Xdc1GAK6bt6o.woff2) format('woff2');\n unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n\n/* latin */\n@font-face {\n font-family: 'Open Sans';\n font-style: italic;\n font-weight: 400;\n src: local('Open Sans Italic'), local('OpenSans-Italic'), url(../../fonts/mem6YaGs126MiZpBA-UFUK0Zdc1GAK6b.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n\n/* cyrillic-ext */\n@font-face {\n font-family: 'Open Sans';\n font-style: italic;\n font-weight: 700;\n src: local('Open Sans Bold Italic'), local('OpenSans-BoldItalic'), url(../../fonts/memnYaGs126MiZpBA-UFUKWiUNhmIqOxjaPXZSk.woff2) format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\n}\n\n/* cyrillic */\n@font-face {\n font-family: 'Open Sans';\n font-style: italic;\n font-weight: 700;\n src: local('Open Sans Bold Italic'), local('OpenSans-BoldItalic'), url(../../fonts/memnYaGs126MiZpBA-UFUKWiUNhvIqOxjaPXZSk.woff2) format('woff2');\n unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n\n/* greek-ext */\n@font-face {\n font-family: 'Open Sans';\n font-style: italic;\n font-weight: 700;\n src: local('Open Sans Bold Italic'), local('OpenSans-BoldItalic'), url(../../fonts/memnYaGs126MiZpBA-UFUKWiUNhnIqOxjaPXZSk.woff2) format('woff2');\n unicode-range: U+1F00-1FFF;\n}\n\n/* greek */\n@font-face {\n font-family: 'Open Sans';\n font-style: italic;\n font-weight: 700;\n src: local('Open Sans Bold Italic'), local('OpenSans-BoldItalic'), url(../../fonts/memnYaGs126MiZpBA-UFUKWiUNhoIqOxjaPXZSk.woff2) format('woff2');\n unicode-range: U+0370-03FF;\n}\n\n/* vietnamese */\n@font-face {\n font-family: 'Open Sans';\n font-style: italic;\n font-weight: 700;\n src: local('Open Sans Bold Italic'), local('OpenSans-BoldItalic'), url(../../fonts/memnYaGs126MiZpBA-UFUKWiUNhkIqOxjaPXZSk.woff2) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;\n}\n\n/* latin-ext */\n@font-face {\n font-family: 'Open Sans';\n font-style: italic;\n font-weight: 700;\n src: local('Open Sans Bold Italic'), local('OpenSans-BoldItalic'), url(../../fonts/memnYaGs126MiZpBA-UFUKWiUNhlIqOxjaPXZSk.woff2) format('woff2');\n unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n\n/* latin */\n@font-face {\n font-family: 'Open Sans';\n font-style: italic;\n font-weight: 700;\n src: local('Open Sans Bold Italic'), local('OpenSans-BoldItalic'), url(../../fonts/memnYaGs126MiZpBA-UFUKWiUNhrIqOxjaPX.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n\n/* cyrillic-ext */\n@font-face {\n font-family: 'Open Sans';\n font-style: normal;\n font-weight: 400;\n src: local('Open Sans Regular'), local('OpenSans-Regular'), url(../../fonts/mem8YaGs126MiZpBA-UFWJ0bf8pkAp6a.woff2) format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\n}\n\n/* cyrillic */\n@font-face {\n font-family: 'Open Sans';\n font-style: normal;\n font-weight: 400;\n src: local('Open Sans Regular'), local('OpenSans-Regular'), url(../../fonts/mem8YaGs126MiZpBA-UFUZ0bf8pkAp6a.woff2) format('woff2');\n unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n\n/* greek-ext */\n@font-face {\n font-family: 'Open Sans';\n font-style: normal;\n font-weight: 400;\n src: local('Open Sans Regular'), local('OpenSans-Regular'), url(../../fonts/mem8YaGs126MiZpBA-UFWZ0bf8pkAp6a.woff2) format('woff2');\n unicode-range: U+1F00-1FFF;\n}\n\n/* greek */\n@font-face {\n font-family: 'Open Sans';\n font-style: normal;\n font-weight: 400;\n src: local('Open Sans Regular'), local('OpenSans-Regular'), url(../../fonts/mem8YaGs126MiZpBA-UFVp0bf8pkAp6a.woff2) format('woff2');\n unicode-range: U+0370-03FF;\n}\n\n/* vietnamese */\n@font-face {\n font-family: 'Open Sans';\n font-style: normal;\n font-weight: 400;\n src: local('Open Sans Regular'), local('OpenSans-Regular'), url(../../fonts/mem8YaGs126MiZpBA-UFWp0bf8pkAp6a.woff2) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;\n}\n\n/* latin-ext */\n@font-face {\n font-family: 'Open Sans';\n font-style: normal;\n font-weight: 400;\n src: local('Open Sans Regular'), local('OpenSans-Regular'), url(../../fonts/mem8YaGs126MiZpBA-UFW50bf8pkAp6a.woff2) format('woff2');\n unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n\n/* latin */\n@font-face {\n font-family: 'Open Sans';\n font-style: normal;\n font-weight: 400;\n src: local('Open Sans Regular'), local('OpenSans-Regular'), url(../../fonts/mem8YaGs126MiZpBA-UFVZ0bf8pkAg.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n\n/* cyrillic-ext */\n@font-face {\n font-family: 'Open Sans';\n font-style: normal;\n font-weight: 700;\n src: local('Open Sans Bold'), local('OpenSans-Bold'), url(../../fonts/mem5YaGs126MiZpBA-UN7rgOX-hpKKSTj5PW.woff2) format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\n}\n\n/* cyrillic */\n@font-face {\n font-family: 'Open Sans';\n font-style: normal;\n font-weight: 700;\n src: local('Open Sans Bold'), local('OpenSans-Bold'), url(../../fonts/mem5YaGs126MiZpBA-UN7rgOVuhpKKSTj5PW.woff2) format('woff2');\n unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n\n/* greek-ext */\n@font-face {\n font-family: 'Open Sans';\n font-style: normal;\n font-weight: 700;\n src: local('Open Sans Bold'), local('OpenSans-Bold'), url(../../fonts/mem5YaGs126MiZpBA-UN7rgOXuhpKKSTj5PW.woff2) format('woff2');\n unicode-range: U+1F00-1FFF;\n}\n\n/* greek */\n@font-face {\n font-family: 'Open Sans';\n font-style: normal;\n font-weight: 700;\n src: local('Open Sans Bold'), local('OpenSans-Bold'), url(../../fonts/mem5YaGs126MiZpBA-UN7rgOUehpKKSTj5PW.woff2) format('woff2');\n unicode-range: U+0370-03FF;\n}\n\n/* vietnamese */\n@font-face {\n font-family: 'Open Sans';\n font-style: normal;\n font-weight: 700;\n src: local('Open Sans Bold'), local('OpenSans-Bold'), url(../../fonts/mem5YaGs126MiZpBA-UN7rgOXehpKKSTj5PW.woff2) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;\n}\n\n/* latin-ext */\n@font-face {\n font-family: 'Open Sans';\n font-style: normal;\n font-weight: 700;\n src: local('Open Sans Bold'), local('OpenSans-Bold'), url(../../fonts/mem5YaGs126MiZpBA-UN7rgOXOhpKKSTj5PW.woff2) format('woff2');\n unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n\n/* latin */\n@font-face {\n font-family: 'Open Sans';\n font-style: normal;\n font-weight: 700;\n src: local('Open Sans Bold'), local('OpenSans-Bold'), url(../../fonts/mem5YaGs126MiZpBA-UN7rgOUuhpKKSTjw.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n"]} \ No newline at end of file diff --git a/css/dist/main.css b/css/dist/main.css index 5f79f84..0bb6b8a 100644 --- a/css/dist/main.css +++ b/css/dist/main.css @@ -1,2 +1,2 @@ -@keyframes spinner-dot{0%{background-color:#9880ff}50%,to{background-color:#ebe6ff}}#container,body,html{height:100%}body{margin:0;padding:0;background-color:#666}a{cursor:pointer;text-decoration:none}:link,:visited,a{color:#bce}select{font-weight:400;width:150px;padding-top:.2em}#container{display:flex}#main{flex-grow:1;order:1}#main,#map-canvas,#menu{height:100%}#menu{font-family:"Open Sans",Verdana,sans-serif;font-size:.7em;font-weight:700;float:right;overflow-x:hidden;overflow-y:auto;order:2;width:165px;color:#fff;background-color:#666;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}#menu-content{padding:10px 0 3em 10px}#footer{line-height:3em;position:fixed;bottom:0;width:165px;padding-left:10px;color:#d3d3d3;background-color:rgba(102,102,102,.9)}#menu-button{font-size:28px;font-weight:400;line-height:28px;position:absolute;z-index:1900;top:5px;right:0;width:30px;height:35px;cursor:pointer;text-align:center;border-width:1px 0 1px 1px;border-style:solid;border-color:#bce;border-radius:11px 0 0 11px;background-color:#666}#menu-button a{color:#fff}#menu-button a::after{content:"»"}#menu.menu-hidden{width:0}#menu.menu-hidden #menu-button{font-weight:400;border-color:#fff;background-color:rgba(0,60,136,.3)}#menu.menu-hidden #menu-button a::after{content:"«"}#login input,#menu input{width:150px;text-align:center;border:1px solid #000}#login input[type=submit],#menu input[type=submit]{color:#fff;border:1px solid #fff;background-color:#000;cursor:pointer}#menu input[type=checkbox]{width:auto}.menu-link{display:block;margin-top:.2em}label[for=user]{display:block;padding-top:1em}.section{display:block;padding-bottom:10px}.section:first-child{padding-top:1em}#input-file{display:none}#summary div{padding-top:.3em}#summary div img{margin-bottom:-2px}#login{font-family:"Open Sans",Verdana,sans-serif;font-size:.8em;position:relative;top:10%;width:30%;min-width:200px;margin:auto;padding:30px;text-align:center;color:#fff;background-color:#444}#title{font-size:1.3em;padding-top:.6em;padding-bottom:.5em}#subtitle{padding-bottom:2em}#error{padding-top:1.2em;color:#ff0}#popup{font-family:"Open Sans",Verdana,sans-serif;max-width:25em;background-color:#666}#pheader{font-size:.9rem;float:left;padding-bottom:.5rem;color:#bce}#pheader div{float:left;padding-right:2em}#pheader div img{background-image:radial-gradient(circle closest-side,#bfbfbc,#666)}#pbody{font-size:.8rem;line-height:1.3rem;clear:both;padding-top:.2rem;white-space:nowrap;color:#e6e2e2;border-top:1px solid #bce}#pcomments{clear:both;padding:1em;white-space:normal;color:#e6e6e6;border-radius:10px;background-color:#777676}#pcomments,#pimage{text-align:center}#pimage img{max-width:100%;max-height:25em;cursor:pointer;border-radius:10px}#pimage img:hover{opacity:.7}#pleft,#pright{display:inline-block;padding-top:5px;padding-right:20px}#pleft img{background-image:radial-gradient(circle closest-side,#bfbfbc,#666)}#pbody .smaller{font-size:.9em;color:#cacaca}#pfooter{font-size:.6rem;padding-top:20px;color:#f0f8ff}#pfooter div:first-child{width:40%;float:left}#pfooter div:last-child{width:40%;float:right;text-align:right}#bottom{position:relative;z-index:10000;display:none}#chart,.alert button{position:absolute;right:0}#chart{font-family:"Open Sans",Verdana,sans-serif;bottom:-15px;left:0;height:200px;padding:0 10px;opacity:.8;background-color:#fff}#chart-close{position:absolute;z-index:10001;right:4px;bottom:166px;cursor:pointer}.mi{font-style:italic;padding-right:.1em;color:#fff}#modal{font-family:"Open Sans",Verdana,sans-serif;position:fixed;z-index:10010;top:0;left:0;display:block;overflow:auto;width:100%;height:100%;background-color:#000;background-color:rgba(0,0,0,.4)}#modal-header{position:absolute;top:-10px;right:10px;margin:0 auto;text-align:right}#modal-header button{border:0;background-color:transparent}#modal-body,.red-button,button{color:#fff;-webkit-border-radius:10px;border-radius:10px}#modal-body{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)!important;font-size:.9em;min-width:300px;margin:0 auto 15%;padding:1em;border:1px solid #888;background-color:rgba(102,102,102,.9);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}#modal-body .buttons{padding-top:1em}#modal input[type=color],#modal input[type=number],#modal input[type=password],#modal input[type=text]{display:inline-block;box-sizing:border-box;width:100%;margin:.8em 0;padding:.4em;border:1px solid #ccc;-webkit-border-radius:5px;border-radius:5px}#modal.image{overflow:hidden;padding-top:0;background-color:rgba(45,45,45,.95)}#modal.image #modal-body img{height:auto;max-width:90vw;max-height:87vh}#modal.image #modal-body{text-align:center;background-color:#2d2d2d}button{font-weight:700;margin-right:5px;cursor:pointer;border:1px solid #fff;-webkit-border-radius:5px;border-radius:5px;background-color:#434343}button>*{pointer-events:none}#cancel{margin-top:.5em}.red-button{float:right;padding:.1em .4em;background-color:red}#user-menu{position:absolute;width:130px;padding:1em;border:1px solid #888;background-color:gray}#user-menu.menu-hidden,a.menu-hidden{display:none}#user-menu a{padding-top:.5em;padding-bottom:.5em}.icon{height:1.4em;margin-right:4px;vertical-align:text-top}.menu-title{text-decoration:underline}#configForm label,#user-menu,#user-menu a{display:block}#configForm label b{display:inline-block;text-align:right;width:250px;margin-right:10px;font-size:small;padding-top:5px}#configForm input[type=number],#configForm input[type=text]{width:150px;margin:3px 0;padding:2px 4px;box-sizing:border-box}#configForm input[type=color],#configForm select{width:150px;margin:3px 0;box-sizing:border-box}#configForm input[type=checkbox]{margin:0}#configForm select{padding:2px 0}#configForm input[type=color]{vertical-align:middle;padding:0}#configForm img{height:13px;vertical-align:middle;margin:0 5px}.hidden{display:none}.alert{position:fixed;top:0;left:50%;width:300px;background:#666;color:#fff;font-family:"Open Sans",Verdana,sans-serif;font-size:.8em;line-height:20px;text-align:center;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;margin:1em 0 1em -150px;padding:6px 20px;border-radius:5px;border-top:1px solid #555;box-shadow:10px 10px 10px -8px rgba(0,0,0,.3);z-index:100000;opacity:0;transition:all 1s}.alert.error{background:#d95b5b;border-top:1px solid #d05858}.alert.in{opacity:1}.alert.out{opacity:0}.alert button{top:-1px;border:0;margin:0;height:100%;background:0 0;font-weight:400;font-size:15px}.alert.spinner{background-color:transparent;border:0;box-shadow:none}.alert.spinner>span,.alert.spinner>span::after{width:10px;height:10px;border-radius:5px;background-color:#9880ff;color:#9880ff}.alert.spinner>span{position:relative;display:block;animation:spinner-dot 1s infinite linear alternate;animation-delay:.5s;transform:translateZ(0);-webkit-transform:translateZ(0);-ms-transform:translateZ(0);will-change:transform,opacity}.alert.spinner>span::after{left:15px;animation:spinner-dot 1s infinite alternate;animation-delay:1s}.alert.spinner>span::after,.alert.spinner>span::before{content:'';display:inline-block;position:absolute;top:0}.alert.spinner>span::before{left:-15px;width:10px;height:10px;border-radius:5px;background-color:#9880ff;color:#9880ff;animation:spinner-dot 1s infinite alternate;animation-delay:0s}.ct-point{transition:.3s;stroke-width:5px!important}.ct-point:hover{cursor:pointer}.ct-point-hilight,.ct-point-selected,.ct-point:hover{stroke-width:10px!important}.ct-point-selected{stroke:#f4c63d!important}.ct-line{stroke-width:2px!important}.ct-axis-title{font-size:.8em}.ol-popup{position:absolute;bottom:12px;left:-50px;min-width:280px;padding:15px;border:1px solid #ccc;border-radius:10px;background-color:#666;-webkit-filter:drop-shadow(0 1px 4px rgba(0,0,0,.2));filter:drop-shadow(0 1px 4px rgba(0,0,0,.2))}.ol-popup::after,.ol-popup::before{position:absolute;top:100%;width:0;height:0;content:" ";pointer-events:none;border:solid transparent}.ol-popup::after{left:48px;margin-left:-10px;border-width:10px;border-top-color:#666}.ol-popup::before{left:48px;margin-left:-11px;border-width:11px;border-top-color:#ccc}.ol-popup-closer{position:absolute;top:-5px;right:-10px;width:30px;height:30px;background-image:url(../../images/close.svg)!important;background-repeat:no-repeat!important}.ol-overlay-container{background-color:#666}.gm-style .gm-style-iw-c{background-color:#666!important;overflow:visible!important}.gm-style .gm-style-iw-t::after{background:linear-gradient(45deg,#666 50%,rgba(255,255,255,0) 51%,rgba(255,255,255,0) 100%)!important}.gm-style-iw button{background-image:url(../../images/close.svg)!important;background-repeat:no-repeat!important}.gm-style-iw button img{visibility:hidden}.gm-style .gm-style-iw-d::-webkit-scrollbar-track,.gm-style .gm-style-iw-d::-webkit-scrollbar-track-piece{background:#666!important}#switcher{position:absolute;bottom:12px;left:10px;display:none;min-width:200px}.ol-layerswitcher{font-family:sans-serif;font-size:.9em;font-weight:700;margin:1px;padding:.5em;color:#fff;border:0;border-radius:2px;background-color:rgba(0,60,136,.5)}.ol-layerswitcher:hover{background-color:rgba(0,60,136,.7)}.ol-layerswitcher label{display:block;clear:both;margin:.5em 0;cursor:pointer}.ol-layerswitcher label:hover{color:#c8dcf2}.ol-layerswitcher input{margin-right:1em}label.ol-datalayer{margin-top:1.5em}.ol-datalayer~.ol-datalayer{margin-top:.5em}.ol-switcher-button{top:6.6em;left:.5em}.ol-touch .ol-switcher-button{top:10em} +@keyframes spinner-dot{0%{background-color:#9880ff}50%,to{background-color:#ebe6ff}}#container,body,html{height:100%}body{margin:0;padding:0;background-color:#666}a{cursor:pointer;text-decoration:none}:link,:visited,a{color:#bce}select{font-weight:400;width:150px;padding-top:.2em}#container{display:flex}#main{flex-grow:1;order:1}#main,#map-canvas,#menu{height:100%}#menu{font-family:"Open Sans",Verdana,sans-serif;font-size:.7em;font-weight:700;float:right;overflow-x:hidden;overflow-y:auto;order:2;width:165px;color:#fff;background-color:#666;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}#menu-content{padding:10px 0 3em 10px}#footer{line-height:3em;position:fixed;bottom:0;width:165px;padding-left:10px;color:#d3d3d3;background-color:rgba(102,102,102,90%)}#menu-button{font-size:28px;font-weight:400;line-height:28px;position:absolute;z-index:1900;top:5px;right:0;width:30px;height:35px;cursor:pointer;text-align:center;border-width:1px 0 1px 1px;border-style:solid;border-color:#bce;border-radius:11px 0 0 11px;background-color:#666}#menu-button a{color:#fff}#menu-button a::after{content:"»"}#menu.menu-hidden{width:0}#menu.menu-hidden #menu-button{font-weight:400;border-color:#fff;background-color:rgba(0,60,136,30%)}#menu.menu-hidden #menu-button a::after{content:"«"}#login input,#menu input{width:150px;text-align:center;border:1px solid #000}#login input[type=submit],#menu input[type=submit]{color:#fff;border:1px solid #fff;background-color:#000;cursor:pointer}#menu input[type=checkbox]{width:auto}.menu-link{display:block;margin-top:.2em}label[for=user]{display:block;padding-top:1em}.section{display:block;padding-bottom:10px}.section:first-child{padding-top:1em}#input-file{display:none}#summary div{padding-top:.3em}#summary div img{margin-bottom:-2px}#login{font-family:"Open Sans",Verdana,sans-serif;font-size:.8em;position:relative;top:10%;width:30%;min-width:200px;margin:auto;padding:30px;text-align:center;color:#fff;background-color:#444}#title{font-size:1.3em;padding-top:.6em;padding-bottom:.5em}#subtitle{padding-bottom:2em}#error{padding-top:1.2em;color:#ff0}#popup{font-family:"Open Sans",Verdana,sans-serif;max-width:25em;background-color:#666}#pheader{font-size:.9rem;float:left;padding-bottom:.5rem;color:#bce}#pheader div{float:left;padding-right:2em}#pheader div img{background-image:radial-gradient(circle closest-side,#bfbfbc,#666)}#pbody{font-size:.8rem;line-height:1.3rem;clear:both;padding-top:.2rem;white-space:nowrap;color:#e6e2e2;border-top:1px solid #bce}#pcomments{clear:both;padding:1em;white-space:normal;color:#e6e6e6;border-radius:10px;background-color:#777676}#pcomments,#pimage{text-align:center}#pimage img{max-width:100%;max-height:25em;cursor:pointer;border-radius:10px}#pimage img:hover{opacity:.7}#pleft,#pright{display:inline-block;padding-top:5px;padding-right:20px}#pleft img{background-image:radial-gradient(circle closest-side,#bfbfbc,#666)}#pbody .smaller{font-size:.9em;color:#cacaca}#pfooter{font-size:.6rem;padding-top:20px;color:#f0f8ff}#pfooter div:first-child{width:40%;float:left}#pfooter div:last-child{width:40%;float:right;text-align:right}#bottom{position:relative;z-index:10000;display:none}#chart,.alert button{position:absolute;right:0}#chart{font-family:"Open Sans",Verdana,sans-serif;bottom:-15px;left:0;height:200px;padding:0 10px;opacity:.8;background-color:#fff}#chart-close{position:absolute;z-index:10001;right:4px;bottom:166px;cursor:pointer}.mi{font-style:italic;padding-right:.1em;color:#fff}#modal{font-family:"Open Sans",Verdana,sans-serif;position:fixed;z-index:10010;top:0;left:0;display:block;overflow:auto;width:100%;height:100%;background-color:#000;background-color:rgba(0,0,0,40%)}#modal-header{position:absolute;top:-10px;right:10px;margin:0 auto;text-align:right}#modal-header button{border:0;background-color:rgba(0,0,0,0%)}#modal-body,.red-button,button{color:#fff;-webkit-border-radius:10px;border-radius:10px}#modal-body{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)!important;font-size:.9em;min-width:300px;margin:0 auto 15%;padding:1em;border:1px solid #888;background-color:rgba(102,102,102,90%);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}#modal-body .buttons{padding-top:1em}#modal input[type=color],#modal input[type=number],#modal input[type=password],#modal input[type=text]{display:inline-block;box-sizing:border-box;width:100%;margin:.8em 0;padding:.4em;border:1px solid #ccc;-webkit-border-radius:5px;border-radius:5px}#modal.image{overflow:hidden;padding-top:0;background-color:rgba(45,45,45,95%)}#modal.image #modal-body img{height:auto;max-width:90vw;max-height:87vh}#modal.image #modal-body{text-align:center;background-color:#2d2d2d}button{font-weight:700;margin-right:5px;cursor:pointer;border:1px solid #fff;-webkit-border-radius:5px;border-radius:5px;background-color:#434343}button>*{pointer-events:none}#cancel{margin-top:.5em}.red-button{float:right;padding:.1em .4em;background-color:red}#user-menu{position:absolute;width:130px;padding:1em;border:1px solid #888;background-color:gray}#user-menu.menu-hidden,a.menu-hidden{display:none}#user-menu a{padding-top:.5em;padding-bottom:.5em}.icon{height:1.4em;margin-right:4px;vertical-align:text-top}.menu-title{text-decoration:underline}#config-form label,#user-menu,#user-menu a{display:block}#config-form label b{display:inline-block;text-align:right;width:250px;margin-right:10px;font-size:small;padding-top:5px}#config-form input[type=number],#config-form input[type=text]{width:150px;margin:3px 0;padding:2px 4px;box-sizing:border-box}#config-form input[type=color],#config-form select{width:150px;margin:3px 0;box-sizing:border-box}#config-form input[type=checkbox]{margin:0}#config-form select{padding:2px 0}#config-form input[type=color]{vertical-align:middle;padding:0}#config-form img{height:13px;vertical-align:middle;margin:0 5px}.hidden{display:none}.alert{position:fixed;top:0;left:50%;width:300px;background:#666;color:#fff;font-family:"Open Sans",Verdana,sans-serif;font-size:.8em;line-height:20px;text-align:center;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;margin:1em 0 1em -150px;padding:6px 20px;border-radius:5px;border-top:1px solid #555;box-shadow:10px 10px 10px -8px rgba(0,0,0,30%);z-index:100000;opacity:0;transition:all 1s}.alert.error{background:#d95b5b;border-top:1px solid #d05858}.alert.in{opacity:1}.alert.out{opacity:0}.alert button{top:-1px;border:0;margin:0;height:100%;background:0 0;font-weight:400;font-size:15px}.alert.spinner{background-color:transparent;border:0;box-shadow:none}.alert.spinner>span,.alert.spinner>span::after{width:10px;height:10px;border-radius:5px;background-color:#9880ff;color:#9880ff}.alert.spinner>span{position:relative;display:block;animation:spinner-dot 1s infinite linear alternate;animation-delay:.5s;transform:translateZ(0);-webkit-transform:translateZ(0);-ms-transform:translateZ(0);will-change:transform,opacity}.alert.spinner>span::after{left:15px;animation:spinner-dot 1s infinite alternate;animation-delay:1s}.alert.spinner>span::after,.alert.spinner>span::before{content:"";display:inline-block;position:absolute;top:0}.alert.spinner>span::before{left:-15px;width:10px;height:10px;border-radius:5px;background-color:#9880ff;color:#9880ff;animation:spinner-dot 1s infinite alternate;animation-delay:0s}.ct-point{transition:.3s;stroke-width:5px!important}.ct-point:hover{cursor:pointer}.ct-point-hilight,.ct-point-selected,.ct-point:hover{stroke-width:10px!important}.ct-point-selected{stroke:#f4c63d!important}.ct-line{stroke-width:2px!important}.ct-axis-title{font-size:.8em}.ol-popup{position:absolute;bottom:12px;left:-50px;min-width:280px;padding:15px;border:1px solid #ccc;border-radius:10px;background-color:#666;-webkit-filter:drop-shadow(0 1px 4px rgba(0,0,0,20%));filter:drop-shadow(0 1px 4px rgba(0,0,0,20%))}.ol-popup::after,.ol-popup::before{position:absolute;top:100%;width:0;height:0;content:" ";pointer-events:none;border:solid transparent}.ol-popup::after{left:48px;margin-left:-10px;border-width:10px;border-top-color:#666}.ol-popup::before{left:48px;margin-left:-11px;border-width:11px;border-top-color:#ccc}.ol-popup-closer{position:absolute;top:-5px;right:-10px;width:30px;height:30px;background-image:url(../../images/close.svg)!important;background-repeat:no-repeat!important}.ol-overlay-container{background-color:#666}.gm-style .gm-style-iw-c{background-color:#666!important;overflow:visible!important}.gm-style .gm-style-iw-t::after{background:linear-gradient(45deg,#666 50%,rgba(255,255,255,0%) 51%,rgba(255,255,255,0%) 100%)!important}.gm-style-iw button{background-image:url(../../images/close.svg)!important;background-repeat:no-repeat!important}.gm-style-iw button img{visibility:hidden}.gm-style .gm-style-iw-d::-webkit-scrollbar-track,.gm-style .gm-style-iw-d::-webkit-scrollbar-track-piece{background:#666!important}#switcher{position:absolute;bottom:12px;left:10px;display:none;min-width:200px}.ol-layerswitcher{font-family:sans-serif;font-size:.9em;font-weight:700;margin:1px;padding:.5em;color:#fff;border:0;border-radius:2px;background-color:rgba(0,60,136,50%)}.ol-layerswitcher:hover{background-color:rgba(0,60,136,70%)}.ol-layerswitcher label{display:block;clear:both;margin:.5em 0;cursor:pointer}.ol-layerswitcher label:hover{color:#c8dcf2}.ol-layerswitcher input{margin-right:1em}label.ol-datalayer{margin-top:1.5em}.ol-datalayer~.ol-datalayer{margin-top:.5em}.ol-switcher-button{top:6.6em;left:.5em}.ol-touch .ol-switcher-button{top:10em} /*# sourceMappingURL=main.css.map */ \ No newline at end of file diff --git a/css/dist/main.css.map b/css/dist/main.css.map index 2831f88..be331a0 100644 --- a/css/dist/main.css.map +++ b/css/dist/main.css.map @@ -1 +1 @@ -{"version":3,"sources":["main.css"],"names":[],"mappings":"AAumBA,A,uBACE,E,CACE,wB,CAGF,G,CAAK,E,CACH,0BAhkBJ,U,CAvBA,I,CAJA,I,CACE,W,CAGF,I,CAEE,Q,CACA,S,CACA,qB,CAGF,C,CACE,c,CACA,oB,CAIF,K,CAAO,Q,CANP,C,CAOE,U,CAGF,M,CACE,e,CACA,W,CACA,gB,CAGF,U,CACE,Y,CAIF,K,CACE,W,CACA,O,CAFF,K,CAMA,W,CAIA,K,CAHE,W,CAGF,K,CACE,0C,CACA,c,CACA,e,CACA,W,CACA,iB,CACA,e,CACA,O,CACA,W,CAEA,U,CACA,qB,CACA,iC,CACA,kC,CAGF,a,CACE,uB,CAGF,O,CACE,e,CACA,c,CACA,Q,CACA,W,CACA,iB,CACA,a,CACA,qC,CAGF,Y,CACE,c,CACA,e,CACA,gB,CACA,iB,CACA,Y,CACA,O,CACA,O,CACA,U,CACA,W,CACA,c,CACA,iB,CACA,0B,CACA,kB,CACA,iB,CACA,2B,CACA,qB,CAGF,c,CACE,U,CAGF,qB,CACE,W,CAGF,iB,CACE,O,CAGF,8B,CACE,e,CACA,iB,CACA,kC,CAGF,uC,CACE,W,CAIF,Y,CADA,W,CAEE,W,CACA,iB,CACA,qB,CAIF,yB,CADA,wB,CAEE,U,CACA,qB,CACA,qB,CACA,c,CAGF,0B,CACE,U,CAGF,U,CACE,a,CACA,e,CAGF,e,CACE,a,CACA,e,CAGF,Q,CACE,a,CACA,mB,CAGF,oB,CACE,e,CAGF,W,CACE,Y,CAGF,Y,CACE,gB,CAGF,gB,CACE,kB,CAGF,M,CACE,0C,CACA,c,CACA,iB,CACA,O,CACA,S,CACA,e,CACA,W,CACA,Y,CACA,iB,CACA,U,CACA,qB,CAGF,M,CACE,e,CACA,gB,CACA,mB,CAGF,S,CACE,kB,CAGF,M,CACE,iB,CACA,U,CAGF,M,CACE,0C,CACA,c,CACA,qB,CAGF,Q,CACE,e,CACA,U,CACA,oB,CACA,U,CAGF,Y,CACE,U,CACA,iB,CAGF,gB,CACE,kE,CAGF,M,CACE,e,CACA,kB,CACA,U,CACA,iB,CACA,kB,CACA,a,CACA,yB,CAGF,U,CACE,U,CACA,W,CAEA,kB,CACA,a,CACA,kB,CACA,wB,CAPF,U,CAUA,O,CACE,iB,CAGF,W,CACE,c,CACA,e,CACA,c,CACA,kB,CAGF,iB,CACE,U,CAGF,M,CAAQ,O,CACN,oB,CACA,e,CACA,kB,CAGF,U,CACE,kE,CAGF,e,CACE,c,CACA,a,CAGF,Q,CACE,e,CACA,gB,CACA,a,CAGF,wB,CACE,S,CACA,U,CAGF,uB,CACE,S,CACA,W,CACA,gB,CAGF,O,CACE,iB,CACA,a,CACA,Y,CAGF,M,CAuPA,a,CACE,iB,CAEA,O,CA1PF,M,CACE,0C,CAGA,Y,CACA,M,CACA,Y,CACA,c,CACA,U,CACA,qB,CAGF,Y,CACE,iB,CACA,a,CACA,S,CACA,Y,CACA,c,CAGF,G,CACE,iB,CACA,kB,CACA,U,CAGF,M,CACE,0C,CACA,c,CACA,a,CACA,K,CACA,M,CACA,a,CACA,a,CACA,U,CACA,W,CACA,qB,CACA,+B,CAGF,a,CACE,iB,CACA,S,CACA,U,CACA,a,CACA,gB,CAGF,oB,CACE,Q,CACA,4B,CAGF,W,CAwEA,W,CAnBA,M,CAsBE,U,CACA,0B,CACA,kB,CA7EF,W,CACE,iB,CACA,O,CACA,Q,CACA,wC,CACA,c,CACA,e,CACA,iB,CACA,W,CAEA,qB,CAGA,qC,CACA,iC,CACA,kC,CAGF,oB,CACE,e,CAIF,wB,CACA,yB,CACA,2B,CAHA,uB,CAIE,oB,CACA,qB,CACA,U,CACA,a,CACA,Y,CACA,qB,CACA,yB,CACA,iB,CAGF,Y,CACE,e,CACA,a,CACA,mC,CAGF,4B,CACE,W,CACA,c,CACA,e,CAGF,wB,CACE,iB,CACA,wB,CAGF,M,CACE,e,CACA,gB,CACA,c,CAEA,qB,CACA,yB,CACA,iB,CACA,wB,CAGF,Q,CACE,mB,CAGF,O,CACE,e,CAGF,W,CACE,W,CACA,iB,CAIA,oB,CAGF,U,CACE,iB,CAEA,W,CACA,W,CACA,qB,CACA,qB,CAGF,sB,CAAwB,a,CACtB,Y,CAGF,Y,CAEE,gB,CACA,mB,CAGF,K,CACE,Y,CACA,gB,CACA,uB,CAGF,W,CACE,yB,CAGF,iB,CA7BA,U,CAaA,Y,CAiBE,a,CAGF,mB,CACE,oB,CACA,gB,CACA,W,CACA,iB,CACA,e,CACA,e,CAIF,8B,CADA,4B,CAIE,W,CACA,Y,CACA,e,CACA,qB,CALF,6B,CACA,kB,CACE,W,CACA,Y,CAEA,qB,CAGF,gC,CACE,Q,CAGF,kB,CACE,a,CAGF,6B,CACE,qB,CACA,S,CAGF,e,CACE,W,CACA,qB,CACA,Y,CAGF,O,CACE,Y,CAKF,M,CACE,c,CACA,K,CACA,Q,CACA,W,CACA,e,CACA,U,CACA,0C,CACA,c,CACA,gB,CACA,iB,CACA,iC,CACA,kC,CACA,uB,CACA,gB,CACA,iB,CACA,yB,CACA,6C,CACA,c,CACA,S,CACA,iB,CAGF,Y,CACE,kB,CACA,4B,CAGF,S,CACE,S,CAGF,U,CACE,S,CAGF,a,CAEE,Q,CAEA,Q,CACA,Q,CACA,W,CACA,c,CACA,e,CACA,c,CAGF,c,CACE,4B,CACA,Q,CACA,e,CAGF,mB,CAgBA,0B,CAEE,U,CACA,W,CACA,iB,CACA,wB,CACA,a,CAtBF,mB,CACE,iB,CACA,a,CAMA,kD,CACA,mB,CACA,uB,CACA,+B,CACA,2B,CACA,6B,CAGF,0B,CACE,S,CAMA,2C,CACA,kB,CAG6B,0B,CAA/B,2B,CACE,U,CACA,oB,CACA,iB,CACA,K,CAGF,2B,CACE,U,CACA,U,CACA,W,CACA,iB,CACA,wB,CACA,a,CACA,2C,CACA,kB,CAcF,S,CACE,c,CACA,0B,CAGF,e,CACE,c,CAIF,iB,CAIA,kB,CATA,e,CAME,2B,CAGF,kB,CAEE,wB,CAGF,Q,CACE,0B,CAGF,c,CACE,c,CAIF,S,CACE,iB,CACA,W,CACA,U,CACA,e,CACA,Y,CACA,qB,CACA,kB,CACA,qB,CACA,oD,CACA,4C,CAGF,gB,CAAkB,iB,CAChB,iB,CACA,Q,CACA,O,CACA,Q,CACA,W,CACA,mB,CACA,wB,CAGF,gB,CACE,S,CACA,iB,CACA,iB,CACA,qB,CAGF,iB,CACE,S,CACA,iB,CACA,iB,CACA,qB,CAGF,gB,CACE,iB,CACA,Q,CACA,W,CACA,U,CACA,W,CACA,sD,CACA,qC,CAGF,qB,CACE,qB,CAIF,wB,CACE,+B,CACA,0B,CAGF,+B,CACE,qG,CAGF,mB,CACE,sD,CACA,qC,CAGF,uB,CACE,iB,CAGF,iD,CACA,uD,CACE,yB,CAGF,S,CACE,iB,CACA,W,CACA,S,CACA,Y,CACA,e,CAGF,iB,CACE,sB,CACA,c,CACA,e,CACA,U,CACA,Y,CACA,U,CACA,Q,CACA,iB,CACA,kC,CAGF,uB,CACE,kC,CAGF,uB,CACE,a,CACA,U,CACA,a,CACA,c,CAGF,6B,CACE,a,CAGF,uB,CACE,gB,CAGF,kB,CACE,gB,CAGF,2B,CACE,e,CAGF,mB,CACE,S,CACA,S,CAGF,6B,CACE,Q","file":"main.css","sourcesContent":["/* μlogger\n *\n * Copyright(C) 2017 Bartek Fabiszewski (www.fabiszewski.net)\n *\n * This is free software; you can redistribute it and/or modify it under\n * the terms of the GNU General Public License as published by\n * the Free Software Foundation; either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful, but\n * WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n * General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, see .\n */\n\nhtml {\n height: 100%;\n}\n\nbody {\n height: 100%;\n margin: 0;\n padding: 0;\n background-color: #666;\n}\n\na {\n cursor: pointer;\n text-decoration: none;\n color: #bce;\n}\n\n:link, :visited {\n color: #bce;\n}\n\nselect {\n font-weight: normal;\n width: 150px;\n padding-top: 0.2em;\n}\n\n#container {\n display: flex;\n height: 100%;\n}\n\n#main {\n flex-grow: 1;\n order: 1;\n height: 100%;\n}\n\n#map-canvas {\n height: 100%;\n}\n\n#menu {\n font-family: \"Open Sans\", Verdana, sans-serif;\n font-size: 0.7em;\n font-weight: bold;\n float: right;\n overflow-x: hidden;\n overflow-y: auto;\n order: 2;\n width: 165px;\n height: 100%;\n color: white;\n background-color: #666;\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n}\n\n#menu-content {\n padding: 10px 0 3em 10px;\n}\n\n#footer {\n line-height: 3em;\n position: fixed;\n bottom: 0;\n width: 165px;\n padding-left: 10px;\n color: lightgray;\n background-color: rgba(102, 102, 102, 0.9);\n}\n\n#menu-button {\n font-size: 28px;\n font-weight: normal;\n line-height: 28px;\n position: absolute;\n z-index: 1900;\n top: 5px;\n right: 0;\n width: 30px;\n height: 35px;\n cursor: pointer;\n text-align: center;\n border-width: 1px 0 1px 1px;\n border-style: solid;\n border-color: #bce;\n border-radius: 11px 0 0 11px;\n background-color: #666;\n}\n\n#menu-button a {\n color: white;\n}\n\n#menu-button a::after {\n content: \"»\";\n}\n\n#menu.menu-hidden {\n width: 0;\n}\n\n#menu.menu-hidden #menu-button {\n font-weight: normal;\n border-color: white;\n background-color: rgba(0, 60, 136, 0.3);\n}\n\n#menu.menu-hidden #menu-button a::after {\n content: \"«\";\n}\n\n#menu input,\n#login input {\n width: 150px;\n text-align: center;\n border: 1px solid black;\n}\n\n#menu input[type=\"submit\"],\n#login input[type=\"submit\"] {\n color: white;\n border: 1px solid white;\n background-color: black;\n cursor: pointer;\n}\n\n#menu input[type=\"checkbox\"] {\n width: auto;\n}\n\n.menu-link {\n display: block;\n margin-top: 0.2em;\n}\n\nlabel[for=user] {\n display: block;\n padding-top: 1em;\n}\n\n.section {\n display: block;\n padding-bottom: 10px;\n}\n\n.section:first-child {\n padding-top: 1em;\n}\n\n#input-file {\n display: none;\n}\n\n#summary div {\n padding-top: 0.3em;\n}\n\n#summary div img {\n margin-bottom: -2px;\n}\n\n#login {\n font-family: \"Open Sans\", Verdana, sans-serif;\n font-size: 0.8em;\n position: relative;\n top: 10%;\n width: 30%;\n min-width: 200px;\n margin: auto;\n padding: 30px;\n text-align: center;\n color: white;\n background-color: #444;\n}\n\n#title {\n font-size: 1.3em;\n padding-top: 0.6em;\n padding-bottom: 0.5em;\n}\n\n#subtitle {\n padding-bottom: 2em;\n}\n\n#error {\n padding-top: 1.2em;\n color: yellow;\n}\n\n#popup {\n font-family: \"Open Sans\", Verdana, sans-serif;\n max-width: 25em;\n background-color: #666;\n}\n\n#pheader {\n font-size: 0.9rem;\n float: left;\n padding-bottom: 0.5rem;\n color: #bce;\n}\n\n#pheader div {\n float: left;\n padding-right: 2em;\n}\n\n#pheader div img {\n background-image: radial-gradient(circle closest-side, #bfbfbc, #666);\n}\n\n#pbody {\n font-size: 0.8rem;\n line-height: 1.3rem;\n clear: both;\n padding-top: 0.2rem;\n white-space: nowrap;\n color: #e6e2e2;\n border-top: 1px solid #bce;\n}\n\n#pcomments {\n clear: both;\n padding: 1em;\n text-align: center;\n white-space: normal;\n color: #e6e6e6;\n border-radius: 10px;\n background-color: #777676;\n}\n\n#pimage {\n text-align: center;\n}\n\n#pimage img {\n max-width: 100%;\n max-height: 25em;\n cursor: pointer;\n border-radius: 10px;\n}\n\n#pimage img:hover {\n opacity: 0.7;\n}\n\n#pleft, #pright {\n display: inline-block;\n padding-top: 5px;\n padding-right: 20px;\n}\n\n#pleft img {\n background-image: radial-gradient(circle closest-side, #bfbfbc, #666);\n}\n\n#pbody .smaller {\n font-size: 0.9em;\n color: #cacaca;\n}\n\n#pfooter {\n font-size: 0.6rem;\n padding-top: 20px;\n color: #f0f8ff;\n}\n\n#pfooter div:first-child {\n width: 40%;\n float: left;\n}\n\n#pfooter div:last-child {\n width: 40%;\n float: right;\n text-align: right;\n}\n\n#bottom {\n position: relative;\n z-index: 10000;\n display: none;\n}\n\n#chart {\n font-family: \"Open Sans\", Verdana, sans-serif;\n position: absolute;\n right: 0;\n bottom: -15px;\n left: 0;\n height: 200px;\n padding: 0 10px;\n opacity: 0.8;\n background-color: white;\n}\n\n#chart-close {\n position: absolute;\n z-index: 10001;\n right: 4px;\n bottom: 166px;\n cursor: pointer;\n}\n\n.mi {\n font-style: italic;\n padding-right: 0.1em;\n color: white;\n}\n\n#modal {\n font-family: \"Open Sans\", Verdana, sans-serif;\n position: fixed;\n z-index: 10010;\n top: 0;\n left: 0;\n display: block;\n overflow: auto;\n width: 100%;\n height: 100%;\n background-color: black; /* fallback */\n background-color: rgba(0, 0, 0, 0.4);\n}\n\n#modal-header {\n position: absolute;\n top: -10px;\n right: 10px;\n margin: 0 auto;\n text-align: right;\n}\n\n#modal-header button {\n border: none;\n background-color: rgba(0, 0, 0, 0);\n}\n\n#modal-body {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%) !important;\n font-size: 0.9em;\n min-width: 300px;\n margin: 0 auto 15% auto;\n padding: 1em;\n color: white;\n border: 1px solid #888;\n -webkit-border-radius: 10px;\n border-radius: 10px;\n background-color: rgba(102, 102, 102, 0.9);\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n}\n\n#modal-body .buttons {\n padding-top: 1em;\n}\n\n#modal input[type=text],\n#modal input[type=color],\n#modal input[type=number],\n#modal input[type=password] {\n display: inline-block;\n box-sizing: border-box;\n width: 100%;\n margin: 0.8em 0;\n padding: 0.4em;\n border: 1px solid #ccc;\n -webkit-border-radius: 5px;\n border-radius: 5px;\n}\n\n#modal.image {\n overflow: hidden;\n padding-top: 0;\n background-color: rgba(45, 45, 45, 0.95);\n}\n\n#modal.image #modal-body img {\n height: auto;\n max-width: 90vw;\n max-height: 87vh;\n}\n\n#modal.image #modal-body {\n text-align: center;\n background-color: rgb(45, 45, 45);\n}\n\nbutton {\n font-weight: bold;\n margin-right: 5px;\n cursor: pointer;\n color: white;\n border: 1px solid white;\n -webkit-border-radius: 5px;\n border-radius: 5px;\n background-color: #434343;\n}\n\nbutton > * {\n pointer-events: none;\n}\n\n#cancel {\n margin-top: 0.5em;\n}\n\n.red-button {\n float: right;\n padding: 0.1em 0.4em;\n color: white;\n -webkit-border-radius: 10px;\n border-radius: 10px;\n background-color: red;\n}\n\n#user-menu {\n position: absolute;\n display: block;\n width: 130px;\n padding: 1em;\n border: 1px solid #888;\n background-color: gray;\n}\n\n#user-menu.menu-hidden, a.menu-hidden {\n display: none;\n}\n\n#user-menu a {\n display: block;\n padding-top: 0.5em;\n padding-bottom: 0.5em;\n}\n\n.icon {\n height: 1.4em;\n margin-right: 4px;\n vertical-align: text-top;\n}\n\n.menu-title {\n text-decoration: underline;\n}\n\n#configForm label {\n display: block;\n}\n\n#configForm label b {\n display: inline-block;\n text-align: right;\n width: 250px;\n margin-right: 10px;\n font-size: small;\n padding-top: 5px;\n}\n\n#configForm input[type=text],\n#configForm input[type=number],\n#configForm input[type=color],\n#configForm select {\n width: 150px;\n margin: 3px 0;\n padding: 2px 4px;\n box-sizing: border-box;\n}\n\n#configForm input[type=checkbox] {\n margin: 0;\n}\n\n#configForm select {\n padding: 2px 0;\n}\n\n#configForm input[type=color] {\n vertical-align: middle;\n padding: 0;\n}\n\n#configForm img {\n height: 13px;\n vertical-align: middle;\n margin: 0 5px;\n}\n\n.hidden {\n display: none;\n}\n\n/* alert */\n\n.alert {\n position: fixed;\n top: 0;\n left: 50%;\n width: 300px;\n background: #666;\n color: white;\n font-family: \"Open Sans\", Verdana, sans-serif;\n font-size: 0.8em;\n line-height: 20px;\n text-align: center;\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n margin: 1em 0 1em -150px;\n padding: 6px 20px;\n border-radius: 5px;\n border-top: 1px solid #555;\n box-shadow: 10px 10px 10px -8px rgba(0, 0, 0, 0.3);\n z-index: 100000;\n opacity: 0;\n transition: all 1s;\n}\n\n.alert.error {\n background: #d95b5b;\n border-top: 1px solid #d05858;\n}\n\n.alert.in {\n opacity: 1;\n}\n\n.alert.out {\n opacity: 0;\n}\n\n.alert button {\n position: absolute;\n top: -1px;\n right: 0;\n border: none;\n margin: 0;\n height: 100%;\n background: none;\n font-weight: normal;\n font-size: 15px;\n}\n\n.alert.spinner {\n background-color: transparent;\n border: none;\n box-shadow: none;\n}\n\n.alert.spinner > span {\n position: relative;\n display: block;\n width: 10px;\n height: 10px;\n border-radius: 5px;\n background-color: #9880ff;\n color: #9880ff;\n animation: spinner-dot 1s infinite linear alternate;\n animation-delay: 0.5s;\n transform: translateZ(0);\n -webkit-transform: translateZ(0);\n -ms-transform: translateZ(0);\n will-change: transform, opacity;\n}\n\n.alert.spinner > span::after {\n left: 15px;\n width: 10px;\n height: 10px;\n border-radius: 5px;\n background-color: #9880ff;\n color: #9880ff;\n animation: spinner-dot 1s infinite alternate;\n animation-delay: 1s;\n}\n\n.alert.spinner > span::before, .alert.spinner > span::after {\n content: '';\n display: inline-block;\n position: absolute;\n top: 0;\n}\n\n.alert.spinner > span::before {\n left: -15px;\n width: 10px;\n height: 10px;\n border-radius: 5px;\n background-color: #9880ff;\n color: #9880ff;\n animation: spinner-dot 1s infinite alternate;\n animation-delay: 0s;\n}\n\n@keyframes spinner-dot {\n 0% {\n background-color: #9880ff;\n }\n\n 50%, 100% {\n background-color: #ebe6ff;\n }\n}\n\n/* chart */\n.ct-point {\n transition: 0.3s;\n stroke-width: 5px !important;\n}\n\n.ct-point:hover {\n cursor: pointer;\n stroke-width: 10px !important;\n}\n\n.ct-point-hilight {\n stroke-width: 10px !important;\n}\n\n.ct-point-selected {\n stroke-width: 10px !important;\n stroke: #f4c63d !important;\n}\n\n.ct-line {\n stroke-width: 2px !important;\n}\n\n.ct-axis-title {\n font-size: 0.8em;\n}\n\n/* openlayers popup */\n.ol-popup {\n position: absolute;\n bottom: 12px;\n left: -50px;\n min-width: 280px;\n padding: 15px;\n border: 1px solid #ccc;\n border-radius: 10px;\n background-color: #666;\n -webkit-filter: drop-shadow(0 1px 4px rgba(0, 0, 0, 0.2));\n filter: drop-shadow(0 1px 4px rgba(0, 0, 0, 0.2));\n}\n\n.ol-popup::after, .ol-popup::before {\n position: absolute;\n top: 100%;\n width: 0;\n height: 0;\n content: \" \";\n pointer-events: none;\n border: solid transparent;\n}\n\n.ol-popup::after {\n left: 48px;\n margin-left: -10px;\n border-width: 10px;\n border-top-color: #666;\n}\n\n.ol-popup::before {\n left: 48px;\n margin-left: -11px;\n border-width: 11px;\n border-top-color: #ccc;\n}\n\n.ol-popup-closer {\n position: absolute;\n top: -5px;\n right: -10px;\n width: 30px;\n height: 30px;\n background-image: url(../../images/close.svg) !important;\n background-repeat: no-repeat !important;\n}\n\n.ol-overlay-container {\n background-color: #666;\n}\n\n/* Google Maps InfoWindow */\n.gm-style .gm-style-iw-c {\n background-color: #666 !important;\n overflow: visible !important;\n}\n\n.gm-style .gm-style-iw-t::after {\n background: linear-gradient(45deg, rgb(102, 102, 102) 50%, rgba(255, 255, 255, 0) 51%, rgba(255, 255, 255, 0) 100%) !important;\n}\n\n.gm-style-iw button {\n background-image: url(../../images/close.svg) !important;\n background-repeat: no-repeat !important;\n}\n\n.gm-style-iw button img {\n visibility: hidden;\n}\n\n.gm-style .gm-style-iw-d::-webkit-scrollbar-track,\n.gm-style .gm-style-iw-d::-webkit-scrollbar-track-piece {\n background: #666 !important;\n}\n\n#switcher {\n position: absolute;\n bottom: 12px;\n left: 10px;\n display: none;\n min-width: 200px;\n}\n\n.ol-layerswitcher {\n font-family: sans-serif;\n font-size: 0.9em;\n font-weight: bold;\n margin: 1px;\n padding: 0.5em;\n color: #fff;\n border: none;\n border-radius: 2px;\n background-color: rgba(0, 60, 136, 0.5);\n}\n\n.ol-layerswitcher:hover {\n background-color: rgba(0, 60, 136, 0.7);\n}\n\n.ol-layerswitcher label {\n display: block;\n clear: both;\n margin: 0.5em 0;\n cursor: pointer;\n}\n\n.ol-layerswitcher label:hover {\n color: #c8dcf2;\n}\n\n.ol-layerswitcher input {\n margin-right: 1em;\n}\n\nlabel.ol-datalayer {\n margin-top: 1.5em;\n}\n\n.ol-datalayer ~ .ol-datalayer {\n margin-top: 0.5em;\n}\n\n.ol-switcher-button {\n top: 6.6em;\n left: 0.5em;\n}\n\n.ol-touch .ol-switcher-button {\n top: 10em;\n}\n"]} \ No newline at end of file +{"version":3,"sources":["main.css"],"names":[],"mappings":"AAumBA,A,uBACE,E,CACE,wB,CAGF,G,CAAK,E,CACH,0BAhkBJ,U,CAvBA,I,CAJA,I,CACE,W,CAGF,I,CAEE,Q,CACA,S,CACA,qB,CAGF,C,CACE,c,CACA,oB,CAIF,K,CAAO,Q,CANP,C,CAOE,U,CAGF,M,CACE,e,CACA,W,CACA,gB,CAGF,U,CACE,Y,CAIF,K,CACE,W,CACA,O,CAFF,K,CAMA,W,CAIA,K,CAHE,W,CAGF,K,CACE,0C,CACA,c,CACA,e,CACA,W,CACA,iB,CACA,e,CACA,O,CACA,W,CAEA,U,CACA,qB,CACA,iC,CACA,kC,CAGF,a,CACE,uB,CAGF,O,CACE,e,CACA,c,CACA,Q,CACA,W,CACA,iB,CACA,a,CACA,sC,CAGF,Y,CACE,c,CACA,e,CACA,gB,CACA,iB,CACA,Y,CACA,O,CACA,O,CACA,U,CACA,W,CACA,c,CACA,iB,CACA,0B,CACA,kB,CACA,iB,CACA,2B,CACA,qB,CAGF,c,CACE,U,CAGF,qB,CACE,W,CAGF,iB,CACE,O,CAGF,8B,CACE,e,CACA,iB,CACA,mC,CAGF,uC,CACE,W,CAIF,Y,CADA,W,CAEE,W,CACA,iB,CACA,qB,CAIF,yB,CADA,wB,CAEE,U,CACA,qB,CACA,qB,CACA,c,CAGF,0B,CACE,U,CAGF,U,CACE,a,CACA,e,CAGF,e,CACE,a,CACA,e,CAGF,Q,CACE,a,CACA,mB,CAGF,oB,CACE,e,CAGF,W,CACE,Y,CAGF,Y,CACE,gB,CAGF,gB,CACE,kB,CAGF,M,CACE,0C,CACA,c,CACA,iB,CACA,O,CACA,S,CACA,e,CACA,W,CACA,Y,CACA,iB,CACA,U,CACA,qB,CAGF,M,CACE,e,CACA,gB,CACA,mB,CAGF,S,CACE,kB,CAGF,M,CACE,iB,CACA,U,CAGF,M,CACE,0C,CACA,c,CACA,qB,CAGF,Q,CACE,e,CACA,U,CACA,oB,CACA,U,CAGF,Y,CACE,U,CACA,iB,CAGF,gB,CACE,kE,CAGF,M,CACE,e,CACA,kB,CACA,U,CACA,iB,CACA,kB,CACA,a,CACA,yB,CAGF,U,CACE,U,CACA,W,CAEA,kB,CACA,a,CACA,kB,CACA,wB,CAPF,U,CAUA,O,CACE,iB,CAGF,W,CACE,c,CACA,e,CACA,c,CACA,kB,CAGF,iB,CACE,U,CAGF,M,CAAQ,O,CACN,oB,CACA,e,CACA,kB,CAGF,U,CACE,kE,CAGF,e,CACE,c,CACA,a,CAGF,Q,CACE,e,CACA,gB,CACA,a,CAGF,wB,CACE,S,CACA,U,CAGF,uB,CACE,S,CACA,W,CACA,gB,CAGF,O,CACE,iB,CACA,a,CACA,Y,CAGF,M,CAuPA,a,CACE,iB,CAEA,O,CA1PF,M,CACE,0C,CAGA,Y,CACA,M,CACA,Y,CACA,c,CACA,U,CACA,qB,CAGF,Y,CACE,iB,CACA,a,CACA,S,CACA,Y,CACA,c,CAGF,G,CACE,iB,CACA,kB,CACA,U,CAGF,M,CACE,0C,CACA,c,CACA,a,CACA,K,CACA,M,CACA,a,CACA,a,CACA,U,CACA,W,CACA,qB,CACA,gC,CAGF,a,CACE,iB,CACA,S,CACA,U,CACA,a,CACA,gB,CAGF,oB,CACE,Q,CACA,+B,CAGF,W,CAwEA,W,CAnBA,M,CAsBE,U,CACA,0B,CACA,kB,CA7EF,W,CACE,iB,CACA,O,CACA,Q,CACA,wC,CACA,c,CACA,e,CACA,iB,CACA,W,CAEA,qB,CAGA,sC,CACA,iC,CACA,kC,CAGF,oB,CACE,e,CAIF,wB,CACA,yB,CACA,2B,CAHA,uB,CAIE,oB,CACA,qB,CACA,U,CACA,a,CACA,Y,CACA,qB,CACA,yB,CACA,iB,CAGF,Y,CACE,e,CACA,a,CACA,mC,CAGF,4B,CACE,W,CACA,c,CACA,e,CAGF,wB,CACE,iB,CACA,wB,CAGF,M,CACE,e,CACA,gB,CACA,c,CAEA,qB,CACA,yB,CACA,iB,CACA,wB,CAGF,Q,CACE,mB,CAGF,O,CACE,e,CAGF,W,CACE,W,CACA,iB,CAIA,oB,CAGF,U,CACE,iB,CAEA,W,CACA,W,CACA,qB,CACA,qB,CAGF,sB,CAAwB,a,CACtB,Y,CAGF,Y,CAEE,gB,CACA,mB,CAGF,K,CACE,Y,CACA,gB,CACA,uB,CAGF,W,CACE,yB,CAGF,kB,CA7BA,U,CAaA,Y,CAiBE,a,CAGF,oB,CACE,oB,CACA,gB,CACA,W,CACA,iB,CACA,e,CACA,e,CAIF,+B,CADA,6B,CAIE,W,CACA,Y,CACA,e,CACA,qB,CALF,8B,CACA,mB,CACE,W,CACA,Y,CAEA,qB,CAGF,iC,CACE,Q,CAGF,mB,CACE,a,CAGF,8B,CACE,qB,CACA,S,CAGF,gB,CACE,W,CACA,qB,CACA,Y,CAGF,O,CACE,Y,CAKF,M,CACE,c,CACA,K,CACA,Q,CACA,W,CACA,e,CACA,U,CACA,0C,CACA,c,CACA,gB,CACA,iB,CACA,iC,CACA,kC,CACA,uB,CACA,gB,CACA,iB,CACA,yB,CACA,8C,CACA,c,CACA,S,CACA,iB,CAGF,Y,CACE,kB,CACA,4B,CAGF,S,CACE,S,CAGF,U,CACE,S,CAGF,a,CAEE,Q,CAEA,Q,CACA,Q,CACA,W,CACA,c,CACA,e,CACA,c,CAGF,c,CACE,4B,CACA,Q,CACA,e,CAGF,mB,CAgBA,0B,CAEE,U,CACA,W,CACA,iB,CACA,wB,CACA,a,CAtBF,mB,CACE,iB,CACA,a,CAMA,kD,CACA,mB,CACA,uB,CACA,+B,CACA,2B,CACA,6B,CAGF,0B,CACE,S,CAMA,2C,CACA,kB,CAG6B,0B,CAA/B,2B,CACE,U,CACA,oB,CACA,iB,CACA,K,CAGF,2B,CACE,U,CACA,U,CACA,W,CACA,iB,CACA,wB,CACA,a,CACA,2C,CACA,kB,CAcF,S,CACE,c,CACA,0B,CAGF,e,CACE,c,CAIF,iB,CAIA,kB,CATA,e,CAME,2B,CAGF,kB,CAEE,wB,CAGF,Q,CACE,0B,CAGF,c,CACE,c,CAIF,S,CACE,iB,CACA,W,CACA,U,CACA,e,CACA,Y,CACA,qB,CACA,kB,CACA,qB,CACA,qD,CACA,6C,CAGF,gB,CAAkB,iB,CAChB,iB,CACA,Q,CACA,O,CACA,Q,CACA,W,CACA,mB,CACA,wB,CAGF,gB,CACE,S,CACA,iB,CACA,iB,CACA,qB,CAGF,iB,CACE,S,CACA,iB,CACA,iB,CACA,qB,CAGF,gB,CACE,iB,CACA,Q,CACA,W,CACA,U,CACA,W,CACA,sD,CACA,qC,CAGF,qB,CACE,qB,CAIF,wB,CACE,+B,CACA,0B,CAGF,+B,CAEE,uG,CAGF,mB,CACE,sD,CACA,qC,CAGF,uB,CACE,iB,CAGF,iD,CACA,uD,CACE,yB,CAGF,S,CACE,iB,CACA,W,CACA,S,CACA,Y,CACA,e,CAGF,iB,CACE,sB,CACA,c,CACA,e,CACA,U,CACA,Y,CACA,U,CACA,Q,CACA,iB,CACA,mC,CAGF,uB,CACE,mC,CAGF,uB,CACE,a,CACA,U,CACA,a,CACA,c,CAGF,6B,CACE,a,CAGF,uB,CACE,gB,CAGF,kB,CACE,gB,CAGF,2B,CACE,e,CAGF,mB,CACE,S,CACA,S,CAGF,6B,CACE,Q","file":"main.css","sourcesContent":["/* μlogger\n *\n * Copyright(C) 2017 Bartek Fabiszewski (www.fabiszewski.net)\n *\n * This is free software; you can redistribute it and/or modify it under\n * the terms of the GNU General Public License as published by\n * the Free Software Foundation; either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful, but\n * WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n * General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, see .\n */\n\nhtml {\n height: 100%;\n}\n\nbody {\n height: 100%;\n margin: 0;\n padding: 0;\n background-color: #666;\n}\n\na {\n cursor: pointer;\n text-decoration: none;\n color: #bce;\n}\n\n:link, :visited {\n color: #bce;\n}\n\nselect {\n font-weight: normal;\n width: 150px;\n padding-top: 0.2em;\n}\n\n#container {\n display: flex;\n height: 100%;\n}\n\n#main {\n flex-grow: 1;\n order: 1;\n height: 100%;\n}\n\n#map-canvas {\n height: 100%;\n}\n\n#menu {\n font-family: \"Open Sans\", Verdana, sans-serif;\n font-size: 0.7em;\n font-weight: bold;\n float: right;\n overflow-x: hidden;\n overflow-y: auto;\n order: 2;\n width: 165px;\n height: 100%;\n color: white;\n background-color: #666;\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n}\n\n#menu-content {\n padding: 10px 0 3em 10px;\n}\n\n#footer {\n line-height: 3em;\n position: fixed;\n bottom: 0;\n width: 165px;\n padding-left: 10px;\n color: lightgray;\n background-color: rgba(102, 102, 102, 90%);\n}\n\n#menu-button {\n font-size: 28px;\n font-weight: normal;\n line-height: 28px;\n position: absolute;\n z-index: 1900;\n top: 5px;\n right: 0;\n width: 30px;\n height: 35px;\n cursor: pointer;\n text-align: center;\n border-width: 1px 0 1px 1px;\n border-style: solid;\n border-color: #bce;\n border-radius: 11px 0 0 11px;\n background-color: #666;\n}\n\n#menu-button a {\n color: white;\n}\n\n#menu-button a::after {\n content: \"»\";\n}\n\n#menu.menu-hidden {\n width: 0;\n}\n\n#menu.menu-hidden #menu-button {\n font-weight: normal;\n border-color: white;\n background-color: rgba(0, 60, 136, 30%);\n}\n\n#menu.menu-hidden #menu-button a::after {\n content: \"«\";\n}\n\n#menu input,\n#login input {\n width: 150px;\n text-align: center;\n border: 1px solid black;\n}\n\n#menu input[type=\"submit\"],\n#login input[type=\"submit\"] {\n color: white;\n border: 1px solid white;\n background-color: black;\n cursor: pointer;\n}\n\n#menu input[type=\"checkbox\"] {\n width: auto;\n}\n\n.menu-link {\n display: block;\n margin-top: 0.2em;\n}\n\nlabel[for=\"user\"] {\n display: block;\n padding-top: 1em;\n}\n\n.section {\n display: block;\n padding-bottom: 10px;\n}\n\n.section:first-child {\n padding-top: 1em;\n}\n\n#input-file {\n display: none;\n}\n\n#summary div {\n padding-top: 0.3em;\n}\n\n#summary div img {\n margin-bottom: -2px;\n}\n\n#login {\n font-family: \"Open Sans\", Verdana, sans-serif;\n font-size: 0.8em;\n position: relative;\n top: 10%;\n width: 30%;\n min-width: 200px;\n margin: auto;\n padding: 30px;\n text-align: center;\n color: white;\n background-color: #444;\n}\n\n#title {\n font-size: 1.3em;\n padding-top: 0.6em;\n padding-bottom: 0.5em;\n}\n\n#subtitle {\n padding-bottom: 2em;\n}\n\n#error {\n padding-top: 1.2em;\n color: yellow;\n}\n\n#popup {\n font-family: \"Open Sans\", Verdana, sans-serif;\n max-width: 25em;\n background-color: #666;\n}\n\n#pheader {\n font-size: 0.9rem;\n float: left;\n padding-bottom: 0.5rem;\n color: #bce;\n}\n\n#pheader div {\n float: left;\n padding-right: 2em;\n}\n\n#pheader div img {\n background-image: radial-gradient(circle closest-side, #bfbfbc, #666);\n}\n\n#pbody {\n font-size: 0.8rem;\n line-height: 1.3rem;\n clear: both;\n padding-top: 0.2rem;\n white-space: nowrap;\n color: #e6e2e2;\n border-top: 1px solid #bce;\n}\n\n#pcomments {\n clear: both;\n padding: 1em;\n text-align: center;\n white-space: normal;\n color: #e6e6e6;\n border-radius: 10px;\n background-color: #777676;\n}\n\n#pimage {\n text-align: center;\n}\n\n#pimage img {\n max-width: 100%;\n max-height: 25em;\n cursor: pointer;\n border-radius: 10px;\n}\n\n#pimage img:hover {\n opacity: 0.7;\n}\n\n#pleft, #pright {\n display: inline-block;\n padding-top: 5px;\n padding-right: 20px;\n}\n\n#pleft img {\n background-image: radial-gradient(circle closest-side, #bfbfbc, #666);\n}\n\n#pbody .smaller {\n font-size: 0.9em;\n color: #cacaca;\n}\n\n#pfooter {\n font-size: 0.6rem;\n padding-top: 20px;\n color: #f0f8ff;\n}\n\n#pfooter div:first-child {\n width: 40%;\n float: left;\n}\n\n#pfooter div:last-child {\n width: 40%;\n float: right;\n text-align: right;\n}\n\n#bottom {\n position: relative;\n z-index: 10000;\n display: none;\n}\n\n#chart {\n font-family: \"Open Sans\", Verdana, sans-serif;\n position: absolute;\n right: 0;\n bottom: -15px;\n left: 0;\n height: 200px;\n padding: 0 10px;\n opacity: 0.8;\n background-color: white;\n}\n\n#chart-close {\n position: absolute;\n z-index: 10001;\n right: 4px;\n bottom: 166px;\n cursor: pointer;\n}\n\n.mi {\n font-style: italic;\n padding-right: 0.1em;\n color: white;\n}\n\n#modal {\n font-family: \"Open Sans\", Verdana, sans-serif;\n position: fixed;\n z-index: 10010;\n top: 0;\n left: 0;\n display: block;\n overflow: auto;\n width: 100%;\n height: 100%;\n background-color: black; /* fallback */\n background-color: rgba(0, 0, 0, 40%);\n}\n\n#modal-header {\n position: absolute;\n top: -10px;\n right: 10px;\n margin: 0 auto;\n text-align: right;\n}\n\n#modal-header button {\n border: none;\n background-color: rgba(0, 0, 0, 0%);\n}\n\n#modal-body {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%) !important;\n font-size: 0.9em;\n min-width: 300px;\n margin: 0 auto 15%;\n padding: 1em;\n color: white;\n border: 1px solid #888;\n -webkit-border-radius: 10px;\n border-radius: 10px;\n background-color: rgba(102, 102, 102, 90%);\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n}\n\n#modal-body .buttons {\n padding-top: 1em;\n}\n\n#modal input[type=\"text\"],\n#modal input[type=\"color\"],\n#modal input[type=\"number\"],\n#modal input[type=\"password\"] {\n display: inline-block;\n box-sizing: border-box;\n width: 100%;\n margin: 0.8em 0;\n padding: 0.4em;\n border: 1px solid #ccc;\n -webkit-border-radius: 5px;\n border-radius: 5px;\n}\n\n#modal.image {\n overflow: hidden;\n padding-top: 0;\n background-color: rgba(45, 45, 45, 95%);\n}\n\n#modal.image #modal-body img {\n height: auto;\n max-width: 90vw;\n max-height: 87vh;\n}\n\n#modal.image #modal-body {\n text-align: center;\n background-color: rgb(45, 45, 45);\n}\n\nbutton {\n font-weight: bold;\n margin-right: 5px;\n cursor: pointer;\n color: white;\n border: 1px solid white;\n -webkit-border-radius: 5px;\n border-radius: 5px;\n background-color: #434343;\n}\n\nbutton > * {\n pointer-events: none;\n}\n\n#cancel {\n margin-top: 0.5em;\n}\n\n.red-button {\n float: right;\n padding: 0.1em 0.4em;\n color: white;\n -webkit-border-radius: 10px;\n border-radius: 10px;\n background-color: red;\n}\n\n#user-menu {\n position: absolute;\n display: block;\n width: 130px;\n padding: 1em;\n border: 1px solid #888;\n background-color: gray;\n}\n\n#user-menu.menu-hidden, a.menu-hidden {\n display: none;\n}\n\n#user-menu a {\n display: block;\n padding-top: 0.5em;\n padding-bottom: 0.5em;\n}\n\n.icon {\n height: 1.4em;\n margin-right: 4px;\n vertical-align: text-top;\n}\n\n.menu-title {\n text-decoration: underline;\n}\n\n#config-form label {\n display: block;\n}\n\n#config-form label b {\n display: inline-block;\n text-align: right;\n width: 250px;\n margin-right: 10px;\n font-size: small;\n padding-top: 5px;\n}\n\n#config-form input[type=\"text\"],\n#config-form input[type=\"number\"],\n#config-form input[type=\"color\"],\n#config-form select {\n width: 150px;\n margin: 3px 0;\n padding: 2px 4px;\n box-sizing: border-box;\n}\n\n#config-form input[type=\"checkbox\"] {\n margin: 0;\n}\n\n#config-form select {\n padding: 2px 0;\n}\n\n#config-form input[type=\"color\"] {\n vertical-align: middle;\n padding: 0;\n}\n\n#config-form img {\n height: 13px;\n vertical-align: middle;\n margin: 0 5px;\n}\n\n.hidden {\n display: none;\n}\n\n/* alert */\n\n.alert {\n position: fixed;\n top: 0;\n left: 50%;\n width: 300px;\n background: #666;\n color: white;\n font-family: \"Open Sans\", Verdana, sans-serif;\n font-size: 0.8em;\n line-height: 20px;\n text-align: center;\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n margin: 1em 0 1em -150px;\n padding: 6px 20px;\n border-radius: 5px;\n border-top: 1px solid #555;\n box-shadow: 10px 10px 10px -8px rgba(0, 0, 0, 30%);\n z-index: 100000;\n opacity: 0;\n transition: all 1s;\n}\n\n.alert.error {\n background: #d95b5b;\n border-top: 1px solid #d05858;\n}\n\n.alert.in {\n opacity: 1;\n}\n\n.alert.out {\n opacity: 0;\n}\n\n.alert button {\n position: absolute;\n top: -1px;\n right: 0;\n border: none;\n margin: 0;\n height: 100%;\n background: none;\n font-weight: normal;\n font-size: 15px;\n}\n\n.alert.spinner {\n background-color: transparent;\n border: none;\n box-shadow: none;\n}\n\n.alert.spinner > span {\n position: relative;\n display: block;\n width: 10px;\n height: 10px;\n border-radius: 5px;\n background-color: #9880ff;\n color: #9880ff;\n animation: spinner-dot 1s infinite linear alternate;\n animation-delay: 0.5s;\n transform: translateZ(0);\n -webkit-transform: translateZ(0);\n -ms-transform: translateZ(0);\n will-change: transform, opacity;\n}\n\n.alert.spinner > span::after {\n left: 15px;\n width: 10px;\n height: 10px;\n border-radius: 5px;\n background-color: #9880ff;\n color: #9880ff;\n animation: spinner-dot 1s infinite alternate;\n animation-delay: 1s;\n}\n\n.alert.spinner > span::before, .alert.spinner > span::after {\n content: \"\";\n display: inline-block;\n position: absolute;\n top: 0;\n}\n\n.alert.spinner > span::before {\n left: -15px;\n width: 10px;\n height: 10px;\n border-radius: 5px;\n background-color: #9880ff;\n color: #9880ff;\n animation: spinner-dot 1s infinite alternate;\n animation-delay: 0s;\n}\n\n@keyframes spinner-dot {\n 0% {\n background-color: #9880ff;\n }\n\n 50%, 100% {\n background-color: #ebe6ff;\n }\n}\n\n/* chart */\n.ct-point {\n transition: 0.3s;\n stroke-width: 5px !important;\n}\n\n.ct-point:hover {\n cursor: pointer;\n stroke-width: 10px !important;\n}\n\n.ct-point-hilight {\n stroke-width: 10px !important;\n}\n\n.ct-point-selected {\n stroke-width: 10px !important;\n stroke: #f4c63d !important;\n}\n\n.ct-line {\n stroke-width: 2px !important;\n}\n\n.ct-axis-title {\n font-size: 0.8em;\n}\n\n/* openlayers popup */\n.ol-popup {\n position: absolute;\n bottom: 12px;\n left: -50px;\n min-width: 280px;\n padding: 15px;\n border: 1px solid #ccc;\n border-radius: 10px;\n background-color: #666;\n -webkit-filter: drop-shadow(0 1px 4px rgba(0, 0, 0, 20%));\n filter: drop-shadow(0 1px 4px rgba(0, 0, 0, 20%));\n}\n\n.ol-popup::after, .ol-popup::before {\n position: absolute;\n top: 100%;\n width: 0;\n height: 0;\n content: \" \";\n pointer-events: none;\n border: solid transparent;\n}\n\n.ol-popup::after {\n left: 48px;\n margin-left: -10px;\n border-width: 10px;\n border-top-color: #666;\n}\n\n.ol-popup::before {\n left: 48px;\n margin-left: -11px;\n border-width: 11px;\n border-top-color: #ccc;\n}\n\n.ol-popup-closer {\n position: absolute;\n top: -5px;\n right: -10px;\n width: 30px;\n height: 30px;\n background-image: url(\"../../images/close.svg\") !important;\n background-repeat: no-repeat !important;\n}\n\n.ol-overlay-container {\n background-color: #666;\n}\n\n/* Google Maps InfoWindow */\n.gm-style .gm-style-iw-c {\n background-color: #666 !important;\n overflow: visible !important;\n}\n\n.gm-style .gm-style-iw-t::after {\n /* stylelint-disable-next-line max-line-length */\n background: linear-gradient(45deg, rgb(102, 102, 102) 50%, rgba(255, 255, 255, 0%) 51%, rgba(255, 255, 255, 0%) 100%) !important;\n}\n\n.gm-style-iw button {\n background-image: url(\"../../images/close.svg\") !important;\n background-repeat: no-repeat !important;\n}\n\n.gm-style-iw button img {\n visibility: hidden;\n}\n\n.gm-style .gm-style-iw-d::-webkit-scrollbar-track,\n.gm-style .gm-style-iw-d::-webkit-scrollbar-track-piece {\n background: #666 !important;\n}\n\n#switcher {\n position: absolute;\n bottom: 12px;\n left: 10px;\n display: none;\n min-width: 200px;\n}\n\n.ol-layerswitcher {\n font-family: sans-serif;\n font-size: 0.9em;\n font-weight: bold;\n margin: 1px;\n padding: 0.5em;\n color: #fff;\n border: none;\n border-radius: 2px;\n background-color: rgba(0, 60, 136, 50%);\n}\n\n.ol-layerswitcher:hover {\n background-color: rgba(0, 60, 136, 70%);\n}\n\n.ol-layerswitcher label {\n display: block;\n clear: both;\n margin: 0.5em 0;\n cursor: pointer;\n}\n\n.ol-layerswitcher label:hover {\n color: #c8dcf2;\n}\n\n.ol-layerswitcher input {\n margin-right: 1em;\n}\n\nlabel.ol-datalayer {\n margin-top: 1.5em;\n}\n\n.ol-datalayer ~ .ol-datalayer {\n margin-top: 0.5em;\n}\n\n.ol-switcher-button {\n top: 6.6em;\n left: 0.5em;\n}\n\n.ol-touch .ol-switcher-button {\n top: 10em;\n}\n"]} \ No newline at end of file diff --git a/css/dist/ol.css b/css/dist/ol.css index ac84f67..faa4c97 100644 --- a/css/dist/ol.css +++ b/css/dist/ol.css @@ -1,2 +1,2 @@ -.ol-box{box-sizing:border-box;border-radius:2px;border:2px solid #00f}.ol-mouse-position{top:8px;right:8px;position:absolute}.ol-scale-line{background:rgba(0,60,136,.3);border-radius:4px;bottom:8px;left:8px;padding:2px;position:absolute}.ol-scale-line-inner{border:1px solid #eee;border-top:none;color:#eee;font-size:10px;text-align:center;margin:1px;will-change:contents,width;transition:all .25s}.ol-scale-bar{position:absolute;bottom:8px;left:8px}.ol-scale-step-marker{width:1px;height:15px;background-color:#000;float:right;z-Index:10}.ol-scale-step-text,.ol-scale-text{position:absolute;color:#000;text-shadow:-2px 0 #fff,0 2px #fff,2px 0 #fff,0 -2px #fff}.ol-scale-step-text{bottom:-5px;font-size:12px;z-Index:11}.ol-scale-text{font-size:14px;text-align:center;bottom:25px}.ol-scale-singlebar{position:relative;height:10px;z-Index:9;box-sizing:border-box;border:1px solid #000}.ol-attribution.ol-collapsed ul,.ol-unsupported{display:none}.ol-unselectable,.ol-viewport{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.ol-selectable{-webkit-touch-callout:default;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.ol-grabbing{cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.ol-grab{cursor:move;cursor:-webkit-grab;cursor:-moz-grab;cursor:grab}.ol-control{position:absolute;background-color:rgba(255,255,255,.4);border-radius:4px;padding:2px}.ol-control:hover{background-color:rgba(255,255,255,.6)}.ol-zoom{top:.5em;left:.5em}.ol-rotate{top:.5em;right:.5em;transition:opacity .25s linear,visibility 0s linear}.ol-rotate.ol-hidden{opacity:0;visibility:hidden;transition:opacity .25s linear,visibility 0s linear .25s}.ol-zoom-extent{top:4.643em;left:.5em}.ol-full-screen{right:.5em;top:.5em}.ol-control button{display:block;margin:1px;padding:0;color:#fff;font-size:1.14em;font-weight:700;text-decoration:none;text-align:center;height:1.375em;width:1.375em;line-height:.4em;background-color:rgba(0,60,136,.5);border:0;border-radius:2px}.ol-control button::-moz-focus-inner{border:0;padding:0}.ol-zoom-extent button{line-height:1.4em}.ol-compass{display:block;font-weight:400;font-size:1.2em;will-change:transform}.ol-touch .ol-control button{font-size:1.5em}.ol-touch .ol-zoom-extent{top:5.5em}.ol-control button:focus,.ol-control button:hover{text-decoration:none;background-color:rgba(0,60,136,.7)}.ol-zoom .ol-zoom-in{border-radius:2px 2px 0 0}.ol-zoom .ol-zoom-out{border-radius:0 0 2px 2px}.ol-attribution{text-align:right;bottom:.5em;right:.5em;max-width:calc(100% - 1.3em);display:flex;flex-flow:row-reverse;align-items:flex-end}.ol-attribution ul{margin:0;padding:1px .5em;color:#000;text-shadow:0 0 2px #fff}.ol-attribution li{display:inline;list-style:none}.ol-attribution li:not(:last-child):after{content:" "}.ol-attribution img{max-height:2em;max-width:inherit;vertical-align:middle}.ol-attribution button{flex-shrink:0}.ol-attribution:not(.ol-collapsed){background:rgba(255,255,255,.8)}.ol-attribution.ol-uncollapsible{bottom:0;right:0;border-radius:4px 0 0}.ol-attribution.ol-uncollapsible img{margin-top:-.2em;max-height:1.6em}.ol-attribution.ol-uncollapsible button{display:none}.ol-zoomslider{top:4.5em;left:.5em;height:200px}.ol-zoomslider button{position:relative;height:10px}.ol-touch .ol-zoomslider{top:5.5em}.ol-overviewmap{left:.5em;bottom:.5em}.ol-overviewmap.ol-uncollapsible{bottom:0;left:0;border-radius:0 4px 0 0}.ol-overviewmap .ol-overviewmap-map,.ol-overviewmap button{display:block}.ol-overviewmap .ol-overviewmap-map{border:1px solid #7b98bc;height:150px;margin:2px;width:150px}.ol-overviewmap:not(.ol-collapsed) button{bottom:2px;left:2px;position:absolute}.ol-overviewmap.ol-collapsed .ol-overviewmap-map,.ol-overviewmap.ol-uncollapsible button{display:none}.ol-overviewmap:not(.ol-collapsed){background:rgba(255,255,255,.8)}.ol-overviewmap-box{border:2px dotted rgba(0,60,136,.7)}.ol-overviewmap .ol-overviewmap-box:hover{cursor:move} +.ol-box{box-sizing:border-box;border-radius:2px;border:1.5px solid #b3c5db;background-color:rgba(255,255,255,.4)}.ol-mouse-position{top:8px;right:8px;position:absolute}.ol-scale-line{background:rgba(0,60,136,.3);border-radius:4px;bottom:8px;left:8px;padding:2px;position:absolute}.ol-scale-line-inner{border:1px solid #eee;border-top:none;color:#eee;font-size:10px;text-align:center;margin:1px;will-change:contents,width;transition:all .25s}.ol-scale-bar{position:absolute;bottom:8px;left:8px}.ol-scale-step-marker{width:1px;height:15px;background-color:#000;float:right;z-index:10}.ol-scale-step-text,.ol-scale-text{position:absolute;color:#000;text-shadow:-2px 0#fff,0 2px #fff,2px 0#fff,0-2px #fff}.ol-scale-step-text{bottom:-5px;font-size:12px;z-index:11}.ol-scale-text{font-size:14px;text-align:center;bottom:25px}.ol-scale-singlebar{position:relative;height:10px;z-index:9;box-sizing:border-box;border:1px solid #000}.ol-attribution.ol-collapsed ul,.ol-unsupported{display:none}.ol-unselectable,.ol-viewport{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.ol-viewport canvas{all:unset}.ol-selectable{-webkit-touch-callout:default;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.ol-grabbing{cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.ol-grab{cursor:move;cursor:-webkit-grab;cursor:-moz-grab;cursor:grab}.ol-control{position:absolute;background-color:rgba(255,255,255,.4);border-radius:4px;padding:2px}.ol-control:hover{background-color:rgba(255,255,255,.6)}.ol-zoom{top:.5em;left:.5em}.ol-rotate{top:.5em;right:.5em;transition:opacity .25s linear,visibility 0s linear}.ol-rotate.ol-hidden{opacity:0;visibility:hidden;transition:opacity .25s linear,visibility 0s linear .25s}.ol-zoom-extent{top:4.643em;left:.5em}.ol-full-screen{right:.5em;top:.5em}.ol-control button{display:block;margin:1px;padding:0;color:#fff;font-weight:700;text-decoration:none;font-size:inherit;text-align:center;height:1.375em;width:1.375em;line-height:.4em;background-color:rgba(0,60,136,.5);border:0;border-radius:2px}.ol-control button::-moz-focus-inner{border:0;padding:0}.ol-zoom-extent button{line-height:1.4em}.ol-compass{display:block;font-weight:400;font-size:1.2em;will-change:transform}.ol-touch .ol-control button{font-size:1.5em}.ol-touch .ol-zoom-extent{top:5.5em}.ol-control button:focus,.ol-control button:hover{text-decoration:none;background-color:rgba(0,60,136,.7)}.ol-zoom .ol-zoom-in{border-radius:2px 2px 0 0}.ol-zoom .ol-zoom-out{border-radius:0 0 2px 2px}.ol-attribution{text-align:right;bottom:.5em;right:.5em;max-width:calc(100% - 1.3em);display:flex;flex-flow:row-reverse;align-items:center}.ol-attribution a{color:rgba(0,60,136,.7);text-decoration:none}.ol-attribution ul{margin:0;padding:1px .5em;color:#000;text-shadow:0 0 2px #fff;font-size:12px}.ol-attribution li{display:inline;list-style:none}.ol-attribution li:not(:last-child):after{content:" "}.ol-attribution img{max-height:2em;max-width:inherit;vertical-align:middle}.ol-attribution button{flex-shrink:0}.ol-attribution:not(.ol-collapsed){background:rgba(255,255,255,.8)}.ol-attribution.ol-uncollapsible{bottom:0;right:0;border-radius:4px 0 0}.ol-attribution.ol-uncollapsible img{margin-top:-.2em;max-height:1.6em}.ol-attribution.ol-uncollapsible button{display:none}.ol-zoomslider{top:4.5em;left:.5em;height:200px}.ol-zoomslider button{position:relative;height:10px}.ol-touch .ol-zoomslider{top:5.5em}.ol-overviewmap{left:.5em;bottom:.5em}.ol-overviewmap.ol-uncollapsible{bottom:0;left:0;border-radius:0 4px 0 0}.ol-overviewmap .ol-overviewmap-map,.ol-overviewmap button{display:block}.ol-overviewmap .ol-overviewmap-map{border:1px solid #7b98bc;height:150px;margin:2px;width:150px}.ol-overviewmap:not(.ol-collapsed) button{bottom:2px;left:2px;position:absolute}.ol-overviewmap.ol-collapsed .ol-overviewmap-map,.ol-overviewmap.ol-uncollapsible button{display:none}.ol-overviewmap:not(.ol-collapsed){background:rgba(255,255,255,.8)}.ol-overviewmap-box{border:2px dotted rgba(0,60,136,.7)}.ol-overviewmap .ol-overviewmap-box:hover{cursor:move} /*# sourceMappingURL=ol.css.map */ \ No newline at end of file diff --git a/css/dist/ol.css.map b/css/dist/ol.css.map index 500b832..01cb8a6 100644 --- a/css/dist/ol.css.map +++ b/css/dist/ol.css.map @@ -1 +1 @@ -{"version":3,"sources":["ol.css"],"names":[],"mappings":"AAAA,O,CACE,qB,CACA,iB,CACA,qB,CAGF,kB,CACE,O,CACA,S,CACA,iB,CAGF,c,CACE,4B,CACA,iB,CACA,U,CACA,Q,CACA,W,CACA,iB,CAEF,oB,CACE,qB,CACA,e,CACA,U,CACA,c,CACA,iB,CACA,U,CACA,0B,CACA,mB,CAEF,a,CACE,iB,CACA,U,CACA,Q,CAEF,qB,CACE,S,CACA,W,CACA,qB,CACA,W,CACA,U,CAEF,mB,CAQA,c,CACE,iB,CAIA,U,CACA,yD,CAdF,mB,CAEE,W,CACA,c,CACA,U,CAIF,c,CAEE,c,CACA,iB,CACA,W,CAIF,mB,CACE,iB,CACA,W,CACA,S,CACA,qB,CACA,qB,CA8IF,+B,CA3IA,e,CACE,Y,CAEY,gB,CAAd,Y,CACE,0B,CACA,wB,CACA,qB,CACA,oB,CACA,gB,CACA,uC,CAEF,c,CACE,6B,CACA,wB,CACA,qB,CACA,oB,CACA,gB,CAEF,Y,CACE,uB,CACA,oB,CACA,e,CAEF,Q,CACE,W,CACA,mB,CACA,gB,CACA,W,CAEF,W,CACE,iB,CACA,qC,CACA,iB,CACA,W,CAEF,iB,CACE,qC,CAEF,Q,CACE,Q,CACA,S,CAEF,U,CACE,Q,CACA,U,CACA,mD,CAEF,oB,CACE,S,CACA,iB,CACA,wD,CAEF,e,CACE,W,CACA,S,CAEF,e,CACE,U,CACA,Q,CAGF,kB,CACE,a,CACA,U,CACA,S,CACA,U,CACA,gB,CACA,e,CACA,oB,CACA,iB,CACA,c,CACA,a,CACA,gB,CACA,kC,CACA,Q,CACA,iB,CAEF,oC,CACE,Q,CACA,S,CAEF,sB,CACE,iB,CAEF,W,CACE,a,CACA,e,CACA,e,CACA,qB,CAEF,4B,CACE,e,CAEF,yB,CACE,S,CAGF,wB,CADA,wB,CAEE,oB,CACA,kC,CAEF,oB,CACE,yB,CAEF,qB,CACE,yB,CAIF,e,CACE,gB,CACA,W,CACA,U,CACA,4B,CACA,Y,CACA,qB,CACA,oB,CAEF,kB,CACE,Q,CACA,gB,CACA,U,CACA,wB,CAEF,kB,CACE,c,CACA,e,CAEF,uBAAuB,kB,CACrB,W,CAEF,mB,CACE,c,CACA,iB,CACA,qB,CAEF,sB,CACE,a,CAKF,oBAAoB,c,CAClB,+B,CAEF,gC,CACE,Q,CACA,O,CACA,qB,CAEF,oC,CACE,gB,CACA,gB,CAEF,uC,CACE,Y,CAGF,c,CACE,S,CACA,S,CACA,Y,CAEF,qB,CACE,iB,CACA,W,CAGF,wB,CACE,S,CAGF,e,CACE,S,CACA,W,CAEF,gC,CACE,Q,CACA,M,CACA,uB,CAEF,mC,CACA,sB,CACE,a,CAEF,mC,CACE,wB,CACA,Y,CACA,U,CACA,W,CAEF,oBAAoB,qB,CAClB,U,CACA,Q,CACA,iB,CAEF,gD,CACA,uC,CACE,Y,CAEF,oBAAoB,c,CAClB,+B,CAEF,mB,CACE,mC,CAGF,yC,CACE,W","file":"ol.css","sourcesContent":[".ol-box {\n box-sizing: border-box;\n border-radius: 2px;\n border: 2px solid blue;\n}\n\n.ol-mouse-position {\n top: 8px;\n right: 8px;\n position: absolute;\n}\n\n.ol-scale-line {\n background: rgba(0,60,136,0.3);\n border-radius: 4px;\n bottom: 8px;\n left: 8px;\n padding: 2px;\n position: absolute;\n}\n.ol-scale-line-inner {\n border: 1px solid #eee;\n border-top: none;\n color: #eee;\n font-size: 10px;\n text-align: center;\n margin: 1px;\n will-change: contents, width;\n transition: all 0.25s;\n}\n.ol-scale-bar {\n position: absolute;\n bottom: 8px;\n left: 8px;\n}\n.ol-scale-step-marker {\n width: 1px;\n height: 15px;\n background-color: #000000;\n float: right;\n z-Index: 10;\n}\n.ol-scale-step-text {\n position: absolute;\n bottom: -5px;\n font-size: 12px;\n z-Index: 11;\n color: #000000;\n text-shadow: -2px 0 #FFFFFF, 0 2px #FFFFFF, 2px 0 #FFFFFF, 0 -2px #FFFFFF;\n}\n.ol-scale-text {\n position: absolute;\n font-size: 14px;\n text-align: center;\n bottom: 25px;\n color: #000000;\n text-shadow: -2px 0 #FFFFFF, 0 2px #FFFFFF, 2px 0 #FFFFFF, 0 -2px #FFFFFF;\n}\n.ol-scale-singlebar {\n position: relative;\n height: 10px;\n z-Index: 9;\n box-sizing: border-box;\n border: 1px solid black;\n}\n\n.ol-unsupported {\n display: none;\n}\n.ol-viewport, .ol-unselectable {\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n -webkit-tap-highlight-color: rgba(0,0,0,0);\n}\n.ol-selectable {\n -webkit-touch-callout: default;\n -webkit-user-select: text;\n -moz-user-select: text;\n -ms-user-select: text;\n user-select: text;\n}\n.ol-grabbing {\n cursor: -webkit-grabbing;\n cursor: -moz-grabbing;\n cursor: grabbing;\n}\n.ol-grab {\n cursor: move;\n cursor: -webkit-grab;\n cursor: -moz-grab;\n cursor: grab;\n}\n.ol-control {\n position: absolute;\n background-color: rgba(255,255,255,0.4);\n border-radius: 4px;\n padding: 2px;\n}\n.ol-control:hover {\n background-color: rgba(255,255,255,0.6);\n}\n.ol-zoom {\n top: .5em;\n left: .5em;\n}\n.ol-rotate {\n top: .5em;\n right: .5em;\n transition: opacity .25s linear, visibility 0s linear;\n}\n.ol-rotate.ol-hidden {\n opacity: 0;\n visibility: hidden;\n transition: opacity .25s linear, visibility 0s linear .25s;\n}\n.ol-zoom-extent {\n top: 4.643em;\n left: .5em;\n}\n.ol-full-screen {\n right: .5em;\n top: .5em;\n}\n\n.ol-control button {\n display: block;\n margin: 1px;\n padding: 0;\n color: white;\n font-size: 1.14em;\n font-weight: bold;\n text-decoration: none;\n text-align: center;\n height: 1.375em;\n width: 1.375em;\n line-height: .4em;\n background-color: rgba(0,60,136,0.5);\n border: none;\n border-radius: 2px;\n}\n.ol-control button::-moz-focus-inner {\n border: none;\n padding: 0;\n}\n.ol-zoom-extent button {\n line-height: 1.4em;\n}\n.ol-compass {\n display: block;\n font-weight: normal;\n font-size: 1.2em;\n will-change: transform;\n}\n.ol-touch .ol-control button {\n font-size: 1.5em;\n}\n.ol-touch .ol-zoom-extent {\n top: 5.5em;\n}\n.ol-control button:hover,\n.ol-control button:focus {\n text-decoration: none;\n background-color: rgba(0,60,136,0.7);\n}\n.ol-zoom .ol-zoom-in {\n border-radius: 2px 2px 0 0;\n}\n.ol-zoom .ol-zoom-out {\n border-radius: 0 0 2px 2px;\n}\n\n\n.ol-attribution {\n text-align: right;\n bottom: .5em;\n right: .5em;\n max-width: calc(100% - 1.3em);\n display: flex;\n flex-flow: row-reverse;\n align-items: flex-end;\n}\n.ol-attribution ul {\n margin: 0;\n padding: 1px .5em;\n color: #000;\n text-shadow: 0 0 2px #fff;\n}\n.ol-attribution li {\n display: inline;\n list-style: none;\n}\n.ol-attribution li:not(:last-child):after {\n content: \" \";\n}\n.ol-attribution img {\n max-height: 2em;\n max-width: inherit;\n vertical-align: middle;\n}\n.ol-attribution button {\n flex-shrink: 0;\n}\n.ol-attribution.ol-collapsed ul {\n display: none;\n}\n.ol-attribution:not(.ol-collapsed) {\n background: rgba(255,255,255,0.8);\n}\n.ol-attribution.ol-uncollapsible {\n bottom: 0;\n right: 0;\n border-radius: 4px 0 0;\n}\n.ol-attribution.ol-uncollapsible img {\n margin-top: -.2em;\n max-height: 1.6em;\n}\n.ol-attribution.ol-uncollapsible button {\n display: none;\n}\n\n.ol-zoomslider {\n top: 4.5em;\n left: .5em;\n height: 200px;\n}\n.ol-zoomslider button {\n position: relative;\n height: 10px;\n}\n\n.ol-touch .ol-zoomslider {\n top: 5.5em;\n}\n\n.ol-overviewmap {\n left: 0.5em;\n bottom: 0.5em;\n}\n.ol-overviewmap.ol-uncollapsible {\n bottom: 0;\n left: 0;\n border-radius: 0 4px 0 0;\n}\n.ol-overviewmap .ol-overviewmap-map,\n.ol-overviewmap button {\n display: block;\n}\n.ol-overviewmap .ol-overviewmap-map {\n border: 1px solid #7b98bc;\n height: 150px;\n margin: 2px;\n width: 150px;\n}\n.ol-overviewmap:not(.ol-collapsed) button {\n bottom: 2px;\n left: 2px;\n position: absolute;\n}\n.ol-overviewmap.ol-collapsed .ol-overviewmap-map,\n.ol-overviewmap.ol-uncollapsible button {\n display: none;\n}\n.ol-overviewmap:not(.ol-collapsed) {\n background: rgba(255,255,255,0.8);\n}\n.ol-overviewmap-box {\n border: 2px dotted rgba(0,60,136,0.7);\n}\n\n.ol-overviewmap .ol-overviewmap-box:hover {\n cursor: move;\n}\n"]} \ No newline at end of file +{"version":3,"sources":["ol.css"],"names":[],"mappings":"AAAA,O,CACE,qB,CACA,iB,CACA,0B,CACA,qC,CAGF,kB,CACE,O,CACA,S,CACA,iB,CAGF,c,CACE,4B,CACA,iB,CACA,U,CACA,Q,CACA,W,CACA,iB,CAEF,oB,CACE,qB,CACA,e,CACA,U,CACA,c,CACA,iB,CACA,U,CACA,0B,CACA,mB,CAEF,a,CACE,iB,CACA,U,CACA,Q,CAEF,qB,CACE,S,CACA,W,CACA,qB,CACA,W,CACA,U,CAEF,mB,CAQA,c,CACE,iB,CAIA,U,CACA,sD,CAdF,mB,CAEE,W,CACA,c,CACA,U,CAIF,c,CAEE,c,CACA,iB,CACA,W,CAIF,mB,CACE,iB,CACA,W,CACA,S,CACA,qB,CACA,qB,CAsJF,+B,CAnJA,e,CACE,Y,CAEY,gB,CAAd,Y,CACE,0B,CACA,wB,CACA,qB,CACA,oB,CACA,gB,CACA,uC,CAEF,mB,CACE,S,CAEF,c,CACE,6B,CACA,wB,CACA,qB,CACA,oB,CACA,gB,CAEF,Y,CACE,uB,CACA,oB,CACA,e,CAEF,Q,CACE,W,CACA,mB,CACA,gB,CACA,W,CAEF,W,CACE,iB,CACA,qC,CACA,iB,CACA,W,CAEF,iB,CACE,qC,CAEF,Q,CACE,Q,CACA,S,CAEF,U,CACE,Q,CACA,U,CACA,mD,CAEF,oB,CACE,S,CACA,iB,CACA,wD,CAEF,e,CACE,W,CACA,S,CAEF,e,CACE,U,CACA,Q,CAGF,kB,CACE,a,CACA,U,CACA,S,CACA,U,CACA,e,CACA,oB,CACA,iB,CACA,iB,CACA,c,CACA,a,CACA,gB,CACA,kC,CACA,Q,CACA,iB,CAEF,oC,CACE,Q,CACA,S,CAEF,sB,CACE,iB,CAEF,W,CACE,a,CACA,e,CACA,e,CACA,qB,CAEF,4B,CACE,e,CAEF,yB,CACE,S,CAGF,wB,CADA,wB,CAEE,oB,CACA,kC,CAEF,oB,CACE,yB,CAEF,qB,CACE,yB,CAIF,e,CACE,gB,CACA,W,CACA,U,CACA,4B,CACA,Y,CACA,qB,CACA,kB,CAEF,iB,CACE,uB,CACA,oB,CAEF,kB,CACE,Q,CACA,gB,CACA,U,CACA,wB,CACA,c,CAEF,kB,CACE,c,CACA,e,CAEF,uBAAuB,kB,CACrB,W,CAEF,mB,CACE,c,CACA,iB,CACA,qB,CAEF,sB,CACE,a,CAKF,oBAAoB,c,CAClB,+B,CAEF,gC,CACE,Q,CACA,O,CACA,qB,CAEF,oC,CACE,gB,CACA,gB,CAEF,uC,CACE,Y,CAGF,c,CACE,S,CACA,S,CACA,Y,CAEF,qB,CACE,iB,CACA,W,CAGF,wB,CACE,S,CAGF,e,CACE,S,CACA,W,CAEF,gC,CACE,Q,CACA,M,CACA,uB,CAEF,mC,CACA,sB,CACE,a,CAEF,mC,CACE,wB,CACA,Y,CACA,U,CACA,W,CAEF,oBAAoB,qB,CAClB,U,CACA,Q,CACA,iB,CAEF,gD,CACA,uC,CACE,Y,CAEF,oBAAoB,c,CAClB,+B,CAEF,mB,CACE,mC,CAGF,yC,CACE,W","file":"ol.css","sourcesContent":[".ol-box {\n box-sizing: border-box;\n border-radius: 2px;\n border: 1.5px solid rgb(179,197,219);\n background-color: rgba(255,255,255,0.4);\n}\n\n.ol-mouse-position {\n top: 8px;\n right: 8px;\n position: absolute;\n}\n\n.ol-scale-line {\n background: rgba(0,60,136,0.3);\n border-radius: 4px;\n bottom: 8px;\n left: 8px;\n padding: 2px;\n position: absolute;\n}\n.ol-scale-line-inner {\n border: 1px solid #eee;\n border-top: none;\n color: #eee;\n font-size: 10px;\n text-align: center;\n margin: 1px;\n will-change: contents, width;\n transition: all 0.25s;\n}\n.ol-scale-bar {\n position: absolute;\n bottom: 8px;\n left: 8px;\n}\n.ol-scale-step-marker {\n width: 1px;\n height: 15px;\n background-color: #000000;\n float: right;\n z-index: 10;\n}\n.ol-scale-step-text {\n position: absolute;\n bottom: -5px;\n font-size: 12px;\n z-index: 11;\n color: #000000;\n text-shadow: -2px 0 #FFFFFF, 0 2px #FFFFFF, 2px 0 #FFFFFF, 0 -2px #FFFFFF;\n}\n.ol-scale-text {\n position: absolute;\n font-size: 14px;\n text-align: center;\n bottom: 25px;\n color: #000000;\n text-shadow: -2px 0 #FFFFFF, 0 2px #FFFFFF, 2px 0 #FFFFFF, 0 -2px #FFFFFF;\n}\n.ol-scale-singlebar {\n position: relative;\n height: 10px;\n z-index: 9;\n box-sizing: border-box;\n border: 1px solid black;\n}\n\n.ol-unsupported {\n display: none;\n}\n.ol-viewport, .ol-unselectable {\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n -webkit-tap-highlight-color: rgba(0,0,0,0);\n}\n.ol-viewport canvas {\n all: unset;\n}\n.ol-selectable {\n -webkit-touch-callout: default;\n -webkit-user-select: text;\n -moz-user-select: text;\n -ms-user-select: text;\n user-select: text;\n}\n.ol-grabbing {\n cursor: -webkit-grabbing;\n cursor: -moz-grabbing;\n cursor: grabbing;\n}\n.ol-grab {\n cursor: move;\n cursor: -webkit-grab;\n cursor: -moz-grab;\n cursor: grab;\n}\n.ol-control {\n position: absolute;\n background-color: rgba(255,255,255,0.4);\n border-radius: 4px;\n padding: 2px;\n}\n.ol-control:hover {\n background-color: rgba(255,255,255,0.6);\n}\n.ol-zoom {\n top: .5em;\n left: .5em;\n}\n.ol-rotate {\n top: .5em;\n right: .5em;\n transition: opacity .25s linear, visibility 0s linear;\n}\n.ol-rotate.ol-hidden {\n opacity: 0;\n visibility: hidden;\n transition: opacity .25s linear, visibility 0s linear .25s;\n}\n.ol-zoom-extent {\n top: 4.643em;\n left: .5em;\n}\n.ol-full-screen {\n right: .5em;\n top: .5em;\n}\n\n.ol-control button {\n display: block;\n margin: 1px;\n padding: 0;\n color: white;\n font-weight: bold;\n text-decoration: none;\n font-size: inherit;\n text-align: center;\n height: 1.375em;\n width: 1.375em;\n line-height: .4em;\n background-color: rgba(0,60,136,0.5);\n border: none;\n border-radius: 2px;\n}\n.ol-control button::-moz-focus-inner {\n border: none;\n padding: 0;\n}\n.ol-zoom-extent button {\n line-height: 1.4em;\n}\n.ol-compass {\n display: block;\n font-weight: normal;\n font-size: 1.2em;\n will-change: transform;\n}\n.ol-touch .ol-control button {\n font-size: 1.5em;\n}\n.ol-touch .ol-zoom-extent {\n top: 5.5em;\n}\n.ol-control button:hover,\n.ol-control button:focus {\n text-decoration: none;\n background-color: rgba(0,60,136,0.7);\n}\n.ol-zoom .ol-zoom-in {\n border-radius: 2px 2px 0 0;\n}\n.ol-zoom .ol-zoom-out {\n border-radius: 0 0 2px 2px;\n}\n\n\n.ol-attribution {\n text-align: right;\n bottom: .5em;\n right: .5em;\n max-width: calc(100% - 1.3em);\n display: flex;\n flex-flow: row-reverse;\n align-items: center;\n}\n.ol-attribution a {\n color: rgba(0,60,136,0.7);\n text-decoration: none;\n}\n.ol-attribution ul {\n margin: 0;\n padding: 1px .5em;\n color: #000;\n text-shadow: 0 0 2px #fff;\n font-size: 12px;\n}\n.ol-attribution li {\n display: inline;\n list-style: none;\n}\n.ol-attribution li:not(:last-child):after {\n content: \" \";\n}\n.ol-attribution img {\n max-height: 2em;\n max-width: inherit;\n vertical-align: middle;\n}\n.ol-attribution button {\n flex-shrink: 0;\n}\n.ol-attribution.ol-collapsed ul {\n display: none;\n}\n.ol-attribution:not(.ol-collapsed) {\n background: rgba(255,255,255,0.8);\n}\n.ol-attribution.ol-uncollapsible {\n bottom: 0;\n right: 0;\n border-radius: 4px 0 0;\n}\n.ol-attribution.ol-uncollapsible img {\n margin-top: -.2em;\n max-height: 1.6em;\n}\n.ol-attribution.ol-uncollapsible button {\n display: none;\n}\n\n.ol-zoomslider {\n top: 4.5em;\n left: .5em;\n height: 200px;\n}\n.ol-zoomslider button {\n position: relative;\n height: 10px;\n}\n\n.ol-touch .ol-zoomslider {\n top: 5.5em;\n}\n\n.ol-overviewmap {\n left: 0.5em;\n bottom: 0.5em;\n}\n.ol-overviewmap.ol-uncollapsible {\n bottom: 0;\n left: 0;\n border-radius: 0 4px 0 0;\n}\n.ol-overviewmap .ol-overviewmap-map,\n.ol-overviewmap button {\n display: block;\n}\n.ol-overviewmap .ol-overviewmap-map {\n border: 1px solid #7b98bc;\n height: 150px;\n margin: 2px;\n width: 150px;\n}\n.ol-overviewmap:not(.ol-collapsed) button {\n bottom: 2px;\n left: 2px;\n position: absolute;\n}\n.ol-overviewmap.ol-collapsed .ol-overviewmap-map,\n.ol-overviewmap.ol-uncollapsible button {\n display: none;\n}\n.ol-overviewmap:not(.ol-collapsed) {\n background: rgba(255,255,255,0.8);\n}\n.ol-overviewmap-box {\n border: 2px dotted rgba(0,60,136,0.7);\n}\n\n.ol-overviewmap .ol-overviewmap-box:hover {\n cursor: move;\n}\n"]} \ No newline at end of file diff --git a/js/dist/521.bundle.js b/js/dist/521.bundle.js index fda6cfe..a33a7da 100644 --- a/js/dist/521.bundle.js +++ b/js/dist/521.bundle.js @@ -1,2 +1,2 @@ -(self.webpackChunkulogger_server=self.webpackChunkulogger_server||[]).push([[521],{3260:function(t,e,n){"use strict";n.r(e),n.d(e,{Feature:function(){return Wi},Map:function(){return ga},Overlay:function(){return Ol},View:function(){return fs},control:function(){return Cu},extent:function(){return wu},geom:function(){return Su},layer:function(){return Eu},proj:function(){return bu},source:function(){return Tu},style:function(){return Ou}});var i=function(){function t(t){this.propagationStopped,this.defaultPrevented,this.type=t,this.target=null}return t.prototype.preventDefault=function(){this.defaultPrevented=!0},t.prototype.stopPropagation=function(){this.propagationStopped=!0},t}(),o="propertychange",r=function(){function t(){this.disposed=!1}return t.prototype.dispose=function(){this.disposed||(this.disposed=!0,this.disposeInternal())},t.prototype.disposeInternal=function(){},t}();function s(t,e){return t>e?1:t0){for(o=1;o0?o-1:o:t[o-1]-e0)},e.prototype.removeEventListener=function(t,e){var n=this.listeners_&&this.listeners_[t];if(n){var i=n.indexOf(e);-1!==i&&(this.pendingRemovals_&&t in this.pendingRemovals_?(n[i]=f,++this.pendingRemovals_[t]):(n.splice(i,1),0===n.length&&delete this.listeners_[t]))}},e}(r),C="change",w="error",S="contextmenu",E="click",b="dblclick",T="keydown",O="keypress",R="load",P="resize",I="touchmove",M="wheel";function F(t,e,n,i,o){if(i&&i!==t&&(n=n.bind(i)),o){var r=n;n=function(){t.removeEventListener(e,n),r.apply(this,arguments)}}var s={target:t,type:e,listener:n};return t.addEventListener(e,n),s}function L(t,e,n,i){return F(t,e,n,i,!0)}function A(t){t&&t.target&&(t.target.removeEventListener(t.type,t.listener),_(t))}var D=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),k=function(t){function e(){var e=t.call(this)||this;return e.on=e.onInternal,e.once=e.onceInternal,e.un=e.unInternal,e.revision_=0,e}return D(e,t),e.prototype.changed=function(){++this.revision_,this.dispatchEvent(C)},e.prototype.getRevision=function(){return this.revision_},e.prototype.onInternal=function(t,e){if(Array.isArray(t)){for(var n=t.length,i=new Array(n),o=0;o0&&e%(2*Math.PI)!=0?t.animate({rotation:0,duration:this.duration_,easing:vt}):t.setRotation(0))}},e.prototype.render=function(t){var e=t.frameState;if(e){var n=e.viewState.rotation;if(n!=this.rotation_){var i="rotate("+n+"rad)";if(this.autoHide_){var o=this.element.classList.contains(ut);o||0!==n?o&&0!==n&&this.element.classList.remove(ut):this.element.classList.add(ut)}this.label_.style.transform=i}this.rotation_=n}},e}(ht),St={DEGREES:"degrees",FEET:"ft",METERS:"m",PIXELS:"pixels",TILE_PIXELS:"tile-pixels",USFEET:"us-ft"},Et={};Et[St.DEGREES]=2*Math.PI*6370997/360,Et[St.FEET]=.3048,Et[St.METERS]=1,Et[St.USFEET]=1200/3937;var bt=St,Tt=function(){function t(t){this.code_=t.code,this.units_=t.units,this.extent_=void 0!==t.extent?t.extent:null,this.worldExtent_=void 0!==t.worldExtent?t.worldExtent:null,this.axisOrientation_=void 0!==t.axisOrientation?t.axisOrientation:"enu",this.global_=void 0!==t.global&&t.global,this.canWrapX_=!(!this.global_||!this.extent_),this.getPointResolutionFunc_=t.getPointResolution,this.defaultTileGrid_=null,this.metersPerUnit_=t.metersPerUnit}return t.prototype.canWrapX=function(){return this.canWrapX_},t.prototype.getCode=function(){return this.code_},t.prototype.getExtent=function(){return this.extent_},t.prototype.getUnits=function(){return this.units_},t.prototype.getMetersPerUnit=function(){return this.metersPerUnit_||Et[this.units_]},t.prototype.getWorldExtent=function(){return this.worldExtent_},t.prototype.getAxisOrientation=function(){return this.axisOrientation_},t.prototype.isGlobal=function(){return this.global_},t.prototype.setGlobal=function(t){this.global_=t,this.canWrapX_=!(!t||!this.extent_)},t.prototype.getDefaultTileGrid=function(){return this.defaultTileGrid_},t.prototype.setDefaultTileGrid=function(t){this.defaultTileGrid_=t},t.prototype.setExtent=function(t){this.extent_=t,this.canWrapX_=!(!this.global_||!t)},t.prototype.setWorldExtent=function(t){this.worldExtent_=t},t.prototype.setGetPointResolution=function(t){this.getPointResolutionFunc_=t},t.prototype.getPointResolutionFunc=function(){return this.getPointResolutionFunc_},t}();function Ot(t,e,n){return Math.min(Math.max(t,e),n)}var Rt="cosh"in Math?Math.cosh:function(t){var e=Math.exp(t);return(e+1/e)/2},Pt="log2"in Math?Math.log2:function(t){return Math.log(t)*Math.LOG2E};function It(t,e,n,i,o,r){var s=o-n,a=r-i;if(0!==s||0!==a){var l=((t-n)*s+(e-i)*a)/(s*s+a*a);l>1?(n=o,i=r):l>0&&(n+=s*l,i+=a*l)}return Mt(t,e,n,i)}function Mt(t,e,n,i){var o=n-t,r=i-e;return o*o+r*r}function Ft(t){return t*Math.PI/180}function Lt(t,e){var n=t%e;return n*e<0?n+e:n}function At(t,e,n){return t+n*(e-t)}var Dt=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),kt=6378137,jt=Math.PI*kt,Gt=[-jt,-jt,jt,jt],zt=[-180,-85,180,85],Wt=kt*Math.log(Math.tan(Math.PI/2)),Xt=function(t){function e(e){return t.call(this,{code:e,units:bt.METERS,extent:Gt,global:!0,worldExtent:zt,getPointResolution:function(t,e){return t/Rt(e[1]/kt)}})||this}return Dt(e,t),e}(Tt),Nt=[new Xt("EPSG:3857"),new Xt("EPSG:102100"),new Xt("EPSG:102113"),new Xt("EPSG:900913"),new Xt("http://www.opengis.net/gml/srs/epsg.xml#3857")];function Yt(t,e,n){var i=t.length,o=n>1?n:2,r=e;void 0===r&&(r=o>2?t.slice():new Array(i));for(var s=0;sWt?a=Wt:a<-Wt&&(a=-Wt),r[s+1]=a}return r}function Kt(t,e,n){var i=t.length,o=n>1?n:2,r=e;void 0===r&&(r=o>2?t.slice():new Array(i));for(var s=0;so&&(l|=se),ar&&(l|=re),l===ie&&(l=oe),l}function xe(){return[1/0,1/0,-1/0,-1/0]}function Ce(t,e,n,i,o){return o?(o[0]=t,o[1]=e,o[2]=n,o[3]=i,o):[t,e,n,i]}function we(t){return Ce(1/0,1/0,-1/0,-1/0,t)}function Se(t,e){return t[0]==e[0]&&t[2]==e[2]&&t[1]==e[1]&&t[3]==e[3]}function Ee(t,e){e[0]t[2]&&(t[2]=e[0]),e[1]t[3]&&(t[3]=e[1])}function be(t,e,n,i,o){for(;ne[0]?i[0]=t[0]:i[0]=e[0],t[1]>e[1]?i[1]=t[1]:i[1]=e[1],t[2]=e[0]&&t[1]<=e[3]&&t[3]>=e[1]}function We(t){return t[2]1)for(var r=t[2]-t[0],s=t[3]-t[1],a=0;a=s)break;++d}f=this.scaleBar_?this.createScaleBar(c,u,l):u.toFixed(p<0?-p:0)+" "+l,this.renderedHTML_!=f&&(this.innerElement_.innerHTML=f,this.renderedHTML_=f),this.renderedWidth_!=c&&(this.innerElement_.style.width=c+"px",this.renderedWidth_=c),this.renderedVisible_||(this.element.style.display="",this.renderedVisible_=!0)}else this.renderedVisible_&&(this.element.style.display="none",this.renderedVisible_=!1)},e.prototype.createScaleBar=function(t,e,n){for(var i="1 : "+Math.round(this.getScaleForResolution()).toLocaleString(),o=[],r=t/this.scaleBarSteps_,s="#ffffff",a=0;a
'+this.createMarker("relative",a)+(a%2==0||2===this.scaleBarSteps_?this.createStepText(a,t,!1,e,n):"")+""),a===this.scaleBarSteps_-1&&o.push(this.createStepText(a+1,t,!0,e,n)),s="#ffffff"===s?"#000000":"#ffffff";return'
'+(this.scaleBarText_?'
'+i+"
":"")+o.join("")+"
"},e.prototype.createMarker=function(t,e){return'
'},e.prototype.createStepText=function(t,e,n,i,o){var r=(0===t?0:Math.round(i/this.scaleBarSteps_*t*100)/100)+(0===t?"":" "+o);return'
'+r+"
"},e.prototype.getScaleForResolution=function(){var t=Ue(this.viewState_.projection,this.viewState_.resolution,this.viewState_.center),e=this.dpi_||Cn,n=this.viewState_.projection.getMetersPerUnit();return parseFloat(t.toString())*n*(1e3/25.4)*e},e.prototype.render=function(t){var e=t.frameState;this.viewState_=e?e.viewState:null,this.updateElement_()},e}(ht),Sn=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),En=function(t){function e(e){var n=this,i=e||{};n=t.call(this,{element:document.createElement("div"),target:i.target})||this;var o=void 0!==i.className?i.className:"ol-zoom",r=void 0!==i.delta?i.delta:1,s=void 0!==i.zoomInClassName?i.zoomInClassName:o+"-in",a=void 0!==i.zoomOutClassName?i.zoomOutClassName:o+"-out",l=void 0!==i.zoomInLabel?i.zoomInLabel:"+",h=void 0!==i.zoomOutLabel?i.zoomOutLabel:"−",u=void 0!==i.zoomInTipLabel?i.zoomInTipLabel:"Zoom in",c=void 0!==i.zoomOutTipLabel?i.zoomOutTipLabel:"Zoom out",p=document.createElement("button");p.className=s,p.setAttribute("type","button"),p.title=u,p.appendChild("string"==typeof l?document.createTextNode(l):l),p.addEventListener(E,n.handleClick_.bind(n,r),!1);var f=document.createElement("button");f.className=a,f.setAttribute("type","button"),f.title=c,f.appendChild("string"==typeof h?document.createTextNode(h):h),f.addEventListener(E,n.handleClick_.bind(n,-r),!1);var d=o+" "+"ol-unselectable "+pt,_=n.element;return _.className=d,_.appendChild(p),_.appendChild(f),n.duration_=void 0!==i.duration?i.duration:250,n}return Sn(e,t),e.prototype.handleClick_=function(t,e){e.preventDefault(),this.zoomByDelta_(t)},e.prototype.zoomByDelta_=function(t){var e=this.getMap().getView();if(e){var n=e.getZoom();if(void 0!==n){var i=e.getConstrainedZoom(n+t);this.duration_>0?(e.getAnimating()&&e.cancelAnimations(),e.animate({zoom:i,duration:this.duration_,easing:vt})):e.setZoom(i)}}},e}(ht),bn="XY",Tn="XYZ",On="XYM",Rn="XYZM",Pn="Point",In="LineString",Mn="LinearRing",Fn="Polygon",Ln="MultiPoint",An="MultiLineString",Dn="MultiPolygon",kn="GeometryCollection",jn="Circle";new Array(6);function Gn(t,e,n,i,o,r,s){return t[0]=e,t[1]=n,t[2]=i,t[3]=o,t[4]=r,t[5]=s,t}function zn(t,e){var n=e[0],i=e[1];return e[0]=t[0]*n+t[2]*i+t[4],e[1]=t[1]*n+t[3]*i+t[5],e}function Wn(t,e,n,i,o,r,s,a){var l=Math.sin(r),h=Math.cos(r);return t[0]=i*h,t[1]=o*l,t[2]=-i*l,t[3]=o*h,t[4]=s*i*h-a*i*l+e,t[5]=s*o*l+a*o*h+n,t}function Xn(t,e){var n,i=(n=e)[0]*n[3]-n[1]*n[2];ce(0!==i,32);var o=e[0],r=e[1],s=e[2],a=e[3],l=e[4],h=e[5];return t[0]=a/i,t[1]=-r/i,t[2]=-s/i,t[3]=o/i,t[4]=(s*h-a*l)/i,t[5]=-(o*h-r*l)/i,t}function Nn(t){var e="matrix("+t.join(", ")+")";if($)return e;var n=pn||(pn=document.createElement("div"));return n.style.transform=e,n.style.transform}function Yn(t,e,n,i,o,r){for(var s=r||[],a=0,l=e;l1)a=n;else{if(p>0){for(var f=0;fo&&(o=h),r=a,s=l}return o}function $n(t,e,n,i,o){for(var r=0,s=n.length;r0;){for(var c=h.pop(),p=h.pop(),f=0,d=t[p],_=t[p+1],g=t[c],y=t[c+1],v=p+i;vf&&(u=v,f=m)}f>o&&(l[(u-e)/i]=1,p+i0&&_>f)&&(d<0&&g0&&g>d)?(a=c,l=p):(r[s++]=a,r[s++]=l,h=a,u=l,a=c,l=p)}}return r[s++]=a,r[s++]=l,s}function ai(t,e,n,i,o,r,s,a){for(var l=0,h=n.length;lr&&(h-a)*(r-l)-(o-a)*(u-l)>0&&s++:u<=r&&(h-a)*(r-l)-(o-a)*(u-l)<0&&s--,a=h,l=u}return 0!==s}function mi(t,e,n,i,o,r){if(0===n.length)return!1;if(!vi(t,e,n[0],i,o,r))return!1;for(var s=1,a=n.length;sC&&mi(t,e,n,i,u=(c+p)/2,_)&&(x=u,C=w),c=p}return isNaN(x)&&(x=o[r]),a?(a.push(x,_,C),a):[x,_,C]}function Ci(t,e,n,i,o){for(var r,s=[t[e],t[e+1]],a=[];e+i=o[0]&&r[2]<=o[2]||(r[1]>=o[1]&&r[3]<=o[3]||Ci(t,e,n,i,(function(t,e){return function(t,e,n){var i=!1,o=me(t,e),r=me(t,n);if(o===oe||r===oe)i=!0;else{var s=t[0],a=t[1],l=t[2],h=t[3],u=e[0],c=e[1],p=n[0],f=n[1],d=(f-c)/(p-u),_=void 0,g=void 0;r&re&&!(o&re)&&(i=(_=p-(f-h)/d)>=s&&_<=l),i||!(r&se)||o&se||(i=(g=f-(p-l)*d)>=a&&g<=h),i||!(r&ae)||o&ae||(i=(_=p-(f-a)/d)>=s&&_<=l),i||!(r&le)||o&le||(i=(g=f-(p-s)*d)>=a&&g<=h)}return i}(o,t,e)})))))}function Si(t,e,n,i,o){if(!function(t,e,n,i,o){return!!(wi(t,e,n,i,o)||vi(t,e,n,i,o[0],o[1])||vi(t,e,n,i,o[0],o[3])||vi(t,e,n,i,o[2],o[1])||vi(t,e,n,i,o[2],o[3]))}(t,e,n[0],i,o))return!1;if(1===n.length)return!0;for(var r=1,s=n.length;r0}function Ti(t,e,n,i,o){for(var r=void 0!==o&&o,s=0,a=n.length;s>1)],e))<0?a=i+1:(l=i,h=!o);return h?a:~a}(d,v);m<0?(h=(v-d[-m-2])/(d[-m-1]-d[-m-2]),l=e+(-m-2)*i):l=e+m*i}var x=a>1?a:2,C=r||new Array(x);for(_=0;_>1;o0&&t[1]>0}function Qi(t,e){return Array.isArray(t)?t:(void 0===e?e=[t,t]:(e[0]=t,e[1]=t),e)}var $i=function(){function t(t){this.opacity_=t.opacity,this.rotateWithView_=t.rotateWithView,this.rotation_=t.rotation,this.scale_=t.scale,this.scaleArray_=Qi(t.scale),this.displacement_=t.displacement}return t.prototype.clone=function(){var e=this.getScale();return new t({opacity:this.getOpacity(),scale:Array.isArray(e)?e.slice():e,rotation:this.getRotation(),rotateWithView:this.getRotateWithView(),displacement:this.getDisplacement().slice()})},t.prototype.getOpacity=function(){return this.opacity_},t.prototype.getRotateWithView=function(){return this.rotateWithView_},t.prototype.getRotation=function(){return this.rotation_},t.prototype.getScale=function(){return this.scale_},t.prototype.getScaleArray=function(){return this.scaleArray_},t.prototype.getDisplacement=function(){return this.displacement_},t.prototype.getAnchor=function(){return G()},t.prototype.getImage=function(t){return G()},t.prototype.getHitDetectionImage=function(){return G()},t.prototype.getPixelRatio=function(t){return 1},t.prototype.getImageState=function(){return G()},t.prototype.getImageSize=function(){return G()},t.prototype.getOrigin=function(){return G()},t.prototype.getSize=function(){return G()},t.prototype.setOpacity=function(t){this.opacity_=t},t.prototype.setRotateWithView=function(t){this.rotateWithView_=t},t.prototype.setRotation=function(t){this.rotation_=t},t.prototype.setScale=function(t){this.scale_=t,this.scaleArray_=Qi(t)},t.prototype.listenImageChange=function(t){G()},t.prototype.load=function(){G()},t.prototype.unlistenImageChange=function(t){G()},t}(),to=/^#([a-f0-9]{3}|[a-f0-9]{4}(?:[a-f0-9]{2}){0,2})$/i,eo=/^([a-z]*)$|^hsla?\(.*\)$/i;function no(t){return"string"==typeof t?t:ao(t)}function io(t){var e=document.createElement("div");if(e.style.color=t,""!==e.style.color){document.body.appendChild(e);var n=getComputedStyle(e).color;return document.body.removeChild(e),n}return""}var oo=function(){var t={},e=0;return function(n){var i;if(t.hasOwnProperty(n))i=t[n];else{if(e>=1024){var o=0;for(var r in t)0==(3&o++)&&(delete t[r],--e)}i=function(t){var e,n,i,o,r;eo.exec(t)&&(t=io(t));if(to.exec(t)){var s=t.length-1,a=void 0;a=s<=4?1:2;var l=4===s||8===s;e=parseInt(t.substr(1+0*a,a),16),n=parseInt(t.substr(1+1*a,a),16),i=parseInt(t.substr(1+2*a,a),16),o=l?parseInt(t.substr(1+3*a,a),16):255,1==a&&(e=(e<<4)+e,n=(n<<4)+n,i=(i<<4)+i,l&&(o=(o<<4)+o)),r=[e,n,i,o/255]}else 0==t.indexOf("rgba(")?so(r=t.slice(5,-1).split(",").map(Number)):0==t.indexOf("rgb(")?((r=t.slice(4,-1).split(",").map(Number)).push(1),so(r)):ce(!1,14);return r}(n),t[n]=i,++e}return i}}();function ro(t){return Array.isArray(t)?t:oo(t)}function so(t){return t[0]=Ot(t[0]+.5|0,0,255),t[1]=Ot(t[1]+.5|0,0,255),t[2]=Ot(t[2]+.5|0,0,255),t[3]=Ot(t[3],0,1),t}function ao(t){var e=t[0];e!=(0|e)&&(e=e+.5|0);var n=t[1];n!=(0|n)&&(n=n+.5|0);var i=t[2];return i!=(0|i)&&(i=i+.5|0),"rgba("+e+","+n+","+i+","+(void 0===t[3]?1:t[3])+")"}var lo=function(){function t(){this.cache_={},this.cacheSize_=0,this.maxCacheSize_=32}return t.prototype.clear=function(){this.cache_={},this.cacheSize_=0},t.prototype.canExpireCache=function(){return this.cacheSize_>this.maxCacheSize_},t.prototype.expire=function(){if(this.canExpireCache()){var t=0;for(var e in this.cache_){var n=this.cache_[e];0!=(3&t++)||n.hasListener()||(delete this.cache_[e],--this.cacheSize_)}}},t.prototype.get=function(t,e,n){var i=ho(t,e,n);return i in this.cache_?this.cache_[i]:null},t.prototype.set=function(t,e,n,i){var o=ho(t,e,n);this.cache_[o]=i,++this.cacheSize_},t.prototype.setSize=function(t){this.maxCacheSize_=t,this.expire()},t}();function ho(t,e,n){return e+":"+t+":"+(n?no(n):"null")}var uo=new lo,co=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),po=function(t){function e(e,n,i,o){var r=t.call(this)||this;return r.extent=e,r.pixelRatio_=i,r.resolution=n,r.state=o,r}return co(e,t),e.prototype.changed=function(){this.dispatchEvent(C)},e.prototype.getExtent=function(){return this.extent},e.prototype.getImage=function(){return G()},e.prototype.getPixelRatio=function(){return this.pixelRatio_},e.prototype.getResolution=function(){return this.resolution},e.prototype.getState=function(){return this.state},e.prototype.load=function(){G()},e}(x),fo=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}();!function(t){function e(e,n,i,o,r,s){var a=t.call(this,e,n,i,Vi)||this;return a.src_=o,a.image_=new Image,null!==r&&(a.image_.crossOrigin=r),a.unlisten_=null,a.state=Vi,a.imageLoadFunction_=s,a}fo(e,t),e.prototype.getImage=function(){return this.image_},e.prototype.handleImageError_=function(){this.state=qi,this.unlistenImage_(),this.changed()},e.prototype.handleImageLoad_=function(){void 0===this.resolution&&(this.resolution=Ae(this.extent)/this.image_.height),this.state=Hi,this.unlistenImage_(),this.changed()},e.prototype.load=function(){this.state!=Vi&&this.state!=qi||(this.state=Ui,this.changed(),this.imageLoadFunction_(this,this.src_),this.unlisten_=_o(this.image_,this.handleImageLoad_.bind(this),this.handleImageError_.bind(this)))},e.prototype.setImage=function(t){this.image_=t,this.resolution=Ae(this.extent)/this.image_.height},e.prototype.unlistenImage_=function(){this.unlisten_&&(this.unlisten_(),this.unlisten_=null)}}(po);function _o(t,e,n){var i=t;if(i.src&&tt){var o=i.decode(),r=!0;return o.then((function(){r&&e()})).catch((function(t){r&&("EncodingError"===t.name&&"Invalid image type."===t.message?e():n())})),function(){r=!1}}var s=[L(i,R,e),L(i,w,n)];return function(){s.forEach(A)}}var go=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),yo=null,vo=function(t){function e(e,n,i,o,r,s){var a=t.call(this)||this;return a.hitDetectionImage_=null,a.image_=e||new Image,null!==o&&(a.image_.crossOrigin=o),a.canvas_={},a.color_=s,a.unlisten_=null,a.imageState_=r,a.size_=i,a.src_=n,a.tainted_,a}return go(e,t),e.prototype.isTainted_=function(){if(void 0===this.tainted_&&this.imageState_===Hi){yo||(yo=nt(1,1)),yo.drawImage(this.image_,0,0);try{yo.getImageData(0,0,1,1),this.tainted_=!1}catch(t){yo=null,this.tainted_=!0}}return!0===this.tainted_},e.prototype.dispatchChangeEvent_=function(){this.dispatchEvent(C)},e.prototype.handleImageError_=function(){this.imageState_=qi,this.unlistenImage_(),this.dispatchChangeEvent_()},e.prototype.handleImageLoad_=function(){this.imageState_=Hi,this.size_?(this.image_.width=this.size_[0],this.image_.height=this.size_[1]):this.size_=[this.image_.width,this.image_.height],this.unlistenImage_(),this.dispatchChangeEvent_()},e.prototype.getImage=function(t){return this.replaceColor_(t),this.canvas_[t]?this.canvas_[t]:this.image_},e.prototype.getPixelRatio=function(t){return this.replaceColor_(t),this.canvas_[t]?t:1},e.prototype.getImageState=function(){return this.imageState_},e.prototype.getHitDetectionImage=function(){if(!this.hitDetectionImage_)if(this.isTainted_()){var t=this.size_[0],e=this.size_[1],n=nt(t,e);n.fillRect(0,0,t,e),this.hitDetectionImage_=n.canvas}else this.hitDetectionImage_=this.image_;return this.hitDetectionImage_},e.prototype.getSize=function(){return this.size_},e.prototype.getSrc=function(){return this.src_},e.prototype.load=function(){if(this.imageState_==Vi){this.imageState_=Ui;try{this.image_.src=this.src_}catch(t){this.handleImageError_()}this.unlisten_=_o(this.image_,this.handleImageLoad_.bind(this),this.handleImageError_.bind(this))}},e.prototype.replaceColor_=function(t){if(this.color_&&!this.canvas_[t]){var e=document.createElement("canvas");this.canvas_[t]=e,e.width=Math.ceil(this.image_.width*t),e.height=Math.ceil(this.image_.height*t);var n=e.getContext("2d");if(n.scale(t,t),n.drawImage(this.image_,0,0),n.globalCompositeOperation="multiply","multiply"===n.globalCompositeOperation||this.isTainted_())n.fillStyle=no(this.color_),n.fillRect(0,0,e.width/t,e.height/t),n.globalCompositeOperation="destination-in",n.drawImage(this.image_,0,0);else{for(var i=n.getImageData(0,0,e.width,e.height),o=i.data,r=this.color_[0]/255,s=this.color_[1]/255,a=this.color_[2]/255,l=this.color_[3],h=0,u=o.length;h0,6);var c=void 0!==i.src?Vi:Hi;return n.color_=void 0!==i.color?ro(i.color):null,n.iconImage_=function(t,e,n,i,o,r){var s=uo.get(e,i,r);return s||(s=new vo(t,e,n,i,o,r),uo.set(e,i,r,s)),s}(l,u,h,n.crossOrigin_,c,n.color_),n.offset_=void 0!==i.offset?i.offset:[0,0],n.offsetOrigin_=void 0!==i.offsetOrigin?i.offsetOrigin:Bi,n.origin_=null,n.size_=void 0!==i.size?i.size:null,n}return mo(e,t),e.prototype.clone=function(){var t=this.getScale();return new e({anchor:this.anchor_.slice(),anchorOrigin:this.anchorOrigin_,anchorXUnits:this.anchorXUnits_,anchorYUnits:this.anchorYUnits_,crossOrigin:this.crossOrigin_,color:this.color_&&this.color_.slice?this.color_.slice():this.color_||void 0,src:this.getSrc(),offset:this.offset_.slice(),offsetOrigin:this.offsetOrigin_,size:null!==this.size_?this.size_.slice():void 0,opacity:this.getOpacity(),scale:Array.isArray(t)?t.slice():t,rotation:this.getRotation(),rotateWithView:this.getRotateWithView()})},e.prototype.getAnchor=function(){if(this.normalizedAnchor_)return this.normalizedAnchor_;var t=this.anchor_,e=this.getSize();if(this.anchorXUnits_==Xi||this.anchorYUnits_==Xi){if(!e)return null;t=this.anchor_.slice(),this.anchorXUnits_==Xi&&(t[0]*=e[0]),this.anchorYUnits_==Xi&&(t[1]*=e[1])}if(this.anchorOrigin_!=Bi){if(!e)return null;t===this.anchor_&&(t=this.anchor_.slice()),this.anchorOrigin_!=Zi&&this.anchorOrigin_!=Ki||(t[0]=-t[0]+e[0]),this.anchorOrigin_!=Yi&&this.anchorOrigin_!=Ki||(t[1]=-t[1]+e[1])}var n=this.getDisplacement();return t[0]-=n[0],t[1]+=n[1],this.normalizedAnchor_=t,this.normalizedAnchor_},e.prototype.setAnchor=function(t){this.anchor_=t,this.normalizedAnchor_=null},e.prototype.getColor=function(){return this.color_},e.prototype.getImage=function(t){return this.iconImage_.getImage(t)},e.prototype.getPixelRatio=function(t){return this.iconImage_.getPixelRatio(t)},e.prototype.getImageSize=function(){return this.iconImage_.getSize()},e.prototype.getImageState=function(){return this.iconImage_.getImageState()},e.prototype.getHitDetectionImage=function(){return this.iconImage_.getHitDetectionImage()},e.prototype.getOrigin=function(){if(this.origin_)return this.origin_;var t=this.offset_;if(this.offsetOrigin_!=Bi){var e=this.getSize(),n=this.iconImage_.getSize();if(!e||!n)return null;t=t.slice(),this.offsetOrigin_!=Zi&&this.offsetOrigin_!=Ki||(t[0]=n[0]-e[0]-t[0]),this.offsetOrigin_!=Yi&&this.offsetOrigin_!=Ki||(t[1]=n[1]-e[1]-t[1])}return this.origin_=t,this.origin_},e.prototype.getSrc=function(){return this.iconImage_.getSrc()},e.prototype.getSize=function(){return this.size_?this.size_:this.iconImage_.getSize()},e.prototype.listenImageChange=function(t){this.iconImage_.addEventListener(C,t)},e.prototype.load=function(){this.iconImage_.load()},e.prototype.unlistenImageChange=function(t){this.iconImage_.removeEventListener(C,t)},e}($i),Co="opacity",wo="visible",So="extent",Eo="zIndex",bo="maxResolution",To="minResolution",Oo="maxZoom",Ro="minZoom",Po="source";function Io(t){return(Io="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var Mo=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),Fo=function(t){function e(e){var n=t.call(this)||this;n.on,n.once,n.un;var i=d({},e);return"object"===Io(e.properties)&&(delete i.properties,d(i,e.properties)),i[Co]=void 0!==e.opacity?e.opacity:1,ce("number"==typeof i[Co],64),i[wo]=void 0===e.visible||e.visible,i[Eo]=e.zIndex,i[bo]=void 0!==e.maxResolution?e.maxResolution:1/0,i[To]=void 0!==e.minResolution?e.minResolution:0,i[Ro]=void 0!==e.minZoom?e.minZoom:-1/0,i[Oo]=void 0!==e.maxZoom?e.maxZoom:1/0,n.className_=void 0!==i.className?e.className:"ol-layer",delete i.className,n.setProperties(i),n.state_=null,n}return Mo(e,t),e.prototype.getClassName=function(){return this.className_},e.prototype.getLayerState=function(t){var e=this.state_||{layer:this,managed:void 0===t||t},n=this.getZIndex();return e.opacity=Ot(Math.round(100*this.getOpacity())/100,0,1),e.sourceState=this.getSourceState(),e.visible=this.getVisible(),e.extent=this.getExtent(),e.zIndex=void 0!==n||e.managed?n:1/0,e.maxResolution=this.getMaxResolution(),e.minResolution=Math.max(this.getMinResolution(),0),e.minZoom=this.getMinZoom(),e.maxZoom=this.getMaxZoom(),this.state_=e,e},e.prototype.getLayersArray=function(t){return G()},e.prototype.getLayerStatesArray=function(t){return G()},e.prototype.getExtent=function(){return this.get(So)},e.prototype.getMaxResolution=function(){return this.get(bo)},e.prototype.getMinResolution=function(){return this.get(To)},e.prototype.getMinZoom=function(){return this.get(Ro)},e.prototype.getMaxZoom=function(){return this.get(Oo)},e.prototype.getOpacity=function(){return this.get(Co)},e.prototype.getSourceState=function(){return G()},e.prototype.getVisible=function(){return this.get(wo)},e.prototype.getZIndex=function(){return this.get(Eo)},e.prototype.setExtent=function(t){this.set(So,t)},e.prototype.setMaxResolution=function(t){this.set(bo,t)},e.prototype.setMinResolution=function(t){this.set(To,t)},e.prototype.setMaxZoom=function(t){this.set(Oo,t)},e.prototype.setMinZoom=function(t){this.set(Ro,t)},e.prototype.setOpacity=function(t){ce("number"==typeof t,64),this.set(Co,t)},e.prototype.setVisible=function(t){this.set(wo,t)},e.prototype.setZIndex=function(t){this.set(Eo,t)},e.prototype.disposeInternal=function(){this.state_&&(this.state_.layer=null,this.state_=null),t.prototype.disposeInternal.call(this)},e}(K),Lo="prerender",Ao="postrender",Do="precompose",ko="postcompose",jo="rendercomplete",Go="undefined",zo="ready",Wo=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}();function Xo(t,e){if(!t.visible)return!1;var n=e.resolution;if(n=t.maxResolution)return!1;var i=e.zoom;return i>t.minZoom&&i<=t.maxZoom}var No=function(t){function e(e){var n=this,i=d({},e);delete i.source,(n=t.call(this,i)||this).on,n.once,n.un,n.mapPrecomposeKey_=null,n.mapRenderKey_=null,n.sourceChangeKey_=null,n.renderer_=null,e.render&&(n.render=e.render),e.map&&n.setMap(e.map),n.addChangeListener(Po,n.handleSourcePropertyChange_);var o=e.source?e.source:null;return n.setSource(o),n}return Wo(e,t),e.prototype.getLayersArray=function(t){var e=t||[];return e.push(this),e},e.prototype.getLayerStatesArray=function(t){var e=t||[];return e.push(this.getLayerState()),e},e.prototype.getSource=function(){return this.get(Po)||null},e.prototype.getSourceState=function(){var t=this.getSource();return t?t.getState():Go},e.prototype.handleSourceChange_=function(){this.changed()},e.prototype.handleSourcePropertyChange_=function(){this.sourceChangeKey_&&(A(this.sourceChangeKey_),this.sourceChangeKey_=null);var t=this.getSource();t&&(this.sourceChangeKey_=F(t,C,this.handleSourceChange_,this)),this.changed()},e.prototype.getFeatures=function(t){return this.renderer_?this.renderer_.getFeatures(t):new Promise((function(t){return t([])}))},e.prototype.render=function(t,e){var n=this.getRenderer();if(n.prepareFrame(t))return n.renderFrame(t,e)},e.prototype.setMap=function(t){this.mapPrecomposeKey_&&(A(this.mapPrecomposeKey_),this.mapPrecomposeKey_=null),t||this.changed(),this.mapRenderKey_&&(A(this.mapRenderKey_),this.mapRenderKey_=null),t&&(this.mapPrecomposeKey_=F(t,Do,(function(t){var e=t.frameState.layerStatesArray,n=this.getLayerState(!1);ce(!e.some((function(t){return t.layer===n.layer})),67),e.push(n)}),this),this.mapRenderKey_=F(this,C,t.render,t),this.changed())},e.prototype.setSource=function(t){this.set(Po,t)},e.prototype.getRenderer=function(){return this.renderer_||(this.renderer_=this.createRenderer()),this.renderer_},e.prototype.hasRenderer=function(){return!!this.renderer_},e.prototype.createRenderer=function(){return null},e.prototype.disposeInternal=function(){this.setSource(null),t.prototype.disposeInternal.call(this)},e}(Fo);function Yo(t,e){for(var n=!0,i=t.length-1;i>=0;--i)if(t[i]!=e[i]){n=!1;break}return n}function Ko(t,e){var n=Math.cos(e),i=Math.sin(e),o=t[0]*n-t[1]*i,r=t[1]*n+t[0]*i;return t[0]=o,t[1]=r,t}function Bo(t,e){if(e.canWrapX()){var n=Ge(e.getExtent()),i=function(t,e,n){var i=e.getExtent(),o=0;if(e.canWrapX()&&(t[0]i[2])){var r=n||Ge(i);o=Math.floor((t[0]-i[0])/r)}return o}(t,e,n);i&&(t[0]-=i*n)}return t}var Zo=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}();function Vo(t,e){uo.expire()}var Uo=function(t){function e(e){var n=t.call(this)||this;return n.map_=e,n}return Zo(e,t),e.prototype.dispatchRenderEvent=function(t,e){G()},e.prototype.calculateMatrices2D=function(t){var e=t.viewState,n=t.coordinateToPixelTransform,i=t.pixelToCoordinateTransform;Wn(n,t.size[0]/2,t.size[1]/2,1/e.resolution,-1/e.resolution,-e.rotation,-e.center[0],-e.center[1]),Xn(i,n)},e.prototype.forEachFeatureAtCoordinate=function(t,e,n,i,o,r,s,a){var l,h=e.viewState;function u(t,e,n,i){return o.call(r,e,t?n:null,i)}var c=h.projection,p=Bo(t.slice(),c),f=[[0,0]];if(c.canWrapX()&&i){var d=Ge(c.getExtent());f.push([-d,0],[d,0])}for(var _=e.layerStatesArray,g=_.length,y=[],v=[],m=0;m=0;--x){var C=_[x],w=C.layer;if(w.hasRenderer()&&Xo(C,h)&&s.call(a,w)){var S=w.getRenderer(),E=w.getSource();if(S&&E){var b=E.getWrapX()?p:t,T=u.bind(null,C.managed);v[0]=b[0]+f[m][0],v[1]=b[1]+f[m][1],l=S.forEachFeatureAtCoordinate(v,e,n,T,y)}if(l)return l}}if(0!==y.length){var O=1/y.length;return y.forEach((function(t,e){return t.distanceSq+=e*O})),y.sort((function(t,e){return t.distanceSq-e.distanceSq})),y.some((function(t){return l=t.callback(t.feature,t.layer,t.geometry)})),l}},e.prototype.forEachLayerAtPixel=function(t,e,n,i,o){return G()},e.prototype.hasFeatureAtCoordinate=function(t,e,n,i,o,r){return void 0!==this.forEachFeatureAtCoordinate(t,e,n,i,c,this,o,r)},e.prototype.getMap=function(){return this.map_},e.prototype.renderFrame=function(t){G()},e.prototype.scheduleExpireIconCache=function(t){uo.canExpireCache()&&t.postRenderFunctions.push(Vo)},e}(r),Ho=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),qo=function(t){function e(e,n,i,o){var r=t.call(this,e)||this;return r.inversePixelTransform=n,r.frameState=i,r.context=o,r}return Ho(e,t),e}(i),Jo="10px sans-serif",Qo="#000",$o="round",tr=[],er="round",nr="#000",ir="center",or="middle",rr=[0,0,0,0],sr=new K;(new x).setSize=function(){console.warn("labelCache is deprecated.")};var ar,lr,hr=null,ur={},cr=function(){var t,e,n="32px ",i=["monospace","serif"],o=i.length,r="wmytzilWMYTZIL@#/&?$%10";function s(t,s,a){for(var l=!0,h=0;h=0;--r)i[r].renderDeclutter(t);!function(t,e){for(var n=t.childNodes,i=0;;++i){var o=n[i],r=e[i];if(!o&&!r)break;o!==r&&(o?r?t.insertBefore(r,o):(t.removeChild(o),--i):t.appendChild(r))}}(this.element_,this.children_),this.dispatchRenderEvent(ko,t),this.renderedVisible_||(this.element_.style.display="",this.renderedVisible_=!0),this.scheduleExpireIconCache(t)}else this.renderedVisible_&&(this.element_.style.display="none",this.renderedVisible_=!1)},e.prototype.forEachLayerAtPixel=function(t,e,n,i,o){for(var r=e.viewState,s=e.layerStatesArray,a=s.length-1;a>=0;--a){var l=s[a],h=l.layer;if(h.hasRenderer()&&Xo(l,r)&&o(h)){var u=h.getRenderer().getDataAtPixel(t,e,n);if(u){var c=i(h,u);if(c)return c}}}},e}(Uo),mr="add",xr="remove",Cr=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),wr="length",Sr=function(t){function e(e,n,i){var o=t.call(this,e)||this;return o.element=n,o.index=i,o}return Cr(e,t),e}(i),Er=function(t){function e(e,n){var i=t.call(this)||this;i.on,i.once,i.un;var o=n||{};if(i.unique_=!!o.unique,i.array_=e||[],i.unique_)for(var r=0,s=i.array_.length;r0;)this.pop()},e.prototype.extend=function(t){for(var e=0,n=t.length;ethis.moveTolerance_||Math.abs(t.clientY-this.down_.clientY)>this.moveTolerance_},e.prototype.disposeInternal=function(){this.relayedListenerKey_&&(A(this.relayedListenerKey_),this.relayedListenerKey_=null),this.element_.removeEventListener(I,this.boundHandleTouchMove_),this.pointerdownListenerKey_&&(A(this.pointerdownListenerKey_),this.pointerdownListenerKey_=null),this.dragListenerKeys_.forEach(A),this.dragListenerKeys_.length=0,this.element_=null,t.prototype.disposeInternal.call(this)},e}(x),jr="layergroup",Gr="size",zr="target",Wr="view",Xr=1/0,Nr=function(){function t(t,e){this.priorityFunction_=t,this.keyFunction_=e,this.elements_=[],this.priorities_=[],this.queuedElements_={}}return t.prototype.clear=function(){this.elements_.length=0,this.priorities_.length=0,_(this.queuedElements_)},t.prototype.dequeue=function(){var t=this.elements_,e=this.priorities_,n=t[0];1==t.length?(t.length=0,e.length=0):(t[0]=t.pop(),e[0]=e.pop(),this.siftUp_(0));var i=this.keyFunction_(n);return delete this.queuedElements_[i],n},t.prototype.enqueue=function(t){ce(!(this.keyFunction_(t)in this.queuedElements_),31);var e=this.priorityFunction_(t);return e!=Xr&&(this.elements_.push(t),this.priorities_.push(e),this.queuedElements_[this.keyFunction_(t)]=!0,this.siftDown_(0,this.elements_.length-1),!0)},t.prototype.getCount=function(){return this.elements_.length},t.prototype.getLeftChildIndex_=function(t){return 2*t+1},t.prototype.getRightChildIndex_=function(t){return 2*t+2},t.prototype.getParentIndex_=function(t){return t-1>>1},t.prototype.heapify_=function(){var t;for(t=(this.elements_.length>>1)-1;t>=0;t--)this.siftUp_(t)},t.prototype.isEmpty=function(){return 0===this.elements_.length},t.prototype.isKeyQueued=function(t){return t in this.queuedElements_},t.prototype.isQueued=function(t){return this.isKeyQueued(this.keyFunction_(t))},t.prototype.siftUp_=function(t){for(var e=this.elements_,n=this.priorities_,i=e.length,o=e[t],r=n[t],s=t;t>1;){var a=this.getLeftChildIndex_(t),l=this.getRightChildIndex_(t),h=lt;){var s=this.getParentIndex_(e);if(!(i[s]>r))break;n[e]=n[s],i[e]=i[s],e=s}n[e]=o,i[e]=r},t.prototype.reprioritize=function(){var t,e,n,i=this.priorityFunction_,o=this.elements_,r=this.priorities_,s=0,a=o.length;for(e=0;e0;)i=(n=this.dequeue()[0]).getKey(),n.getState()!==Yr||i in this.tilesLoadingKeys_||(this.tilesLoadingKeys_[i]=!0,++this.tilesLoading_,++o,n.load())},e}(Nr);var qr=0,Jr=1,Qr="center",$r="resolution",ts="rotation",es=256;function ns(t,e,n){return function(i,o,r,s,a){if(i){var l=e?0:r[0]*o,h=e?0:r[1]*o,u=a?a[0]:0,c=a?a[1]:0,p=t[0]+l/2+u,f=t[2]-l/2+u,d=t[1]+h/2+c,_=t[3]-h/2+c;p>f&&(f=p=(f+p)/2),d>_&&(_=d=(_+d)/2);var g=Ot(i[0],p,f),y=Ot(i[1],d,_),v=30*o;return s&&n&&(g+=-v*Math.log(1+Math.max(0,p-i[0])/v)+v*Math.log(1+Math.max(0,i[0]-f)/v),y+=-v*Math.log(1+Math.max(0,d-i[1])/v)+v*Math.log(1+Math.max(0,i[1]-_)/v)),[g,y]}}}function is(t){return t}function os(t,e,n,i){var o=Ge(e)/n[0],r=Ae(e)/n[1];return i?Math.min(t,Math.max(o,r)):Math.min(t,Math.min(o,r))}function rs(t,e,n){var i=Math.min(t,e);return i*=Math.log(1+50*Math.max(0,t/e-1))/50+1,n&&(i=Math.max(i,n),i/=Math.log(1+50*Math.max(0,n/t-1))/50+1),Ot(i,n/2,2*e)}function ss(t,e,n,i,o){return function(r,s,a,l){if(void 0!==r){var h=i?os(t,i,a,o):t;return(void 0===n||n)&&l?rs(r,h,e):Ot(r,e,h)}}}function as(t){return void 0!==t?0:void 0}function ls(t){return void 0!==t?t:void 0}var hs=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}();function us(t,e){setTimeout((function(){t(e)}),0)}function cs(t){return!(t.sourceCenter&&t.targetCenter&&!Yo(t.sourceCenter,t.targetCenter))&&(t.sourceResolution===t.targetResolution&&t.sourceRotation===t.targetRotation)}function ps(t,e,n,i,o){var r=Math.cos(-o),s=Math.sin(-o),a=t[0]*r-t[1]*s,l=t[1]*r+t[0]*s;return[(a+=(e[0]/2-n[0])*i)*r-(l+=(n[1]-e[1]/2)*i)*(s=-s),l*r+a*s]}var fs=function(t){function e(e){var n=t.call(this)||this;n.on,n.once,n.un;var i=d({},e);return n.hints_=[0,0],n.animations_=[],n.updateAnimationKey_,n.projection_=qe(i.projection,"EPSG:3857"),n.viewportSize_=[100,100],n.targetCenter_=null,n.targetResolution_,n.targetRotation_,n.cancelAnchor_=void 0,i.center&&(i.center=hn(i.center,n.projection_)),i.extent&&(i.extent=cn(i.extent,n.projection_)),n.applyOptions_(i),n}return hs(e,t),e.prototype.applyOptions_=function(t){var e=function(t){var e,n,i,o=28,r=2,s=void 0!==t.minZoom?t.minZoom:0,l=void 0!==t.maxZoom?t.maxZoom:o,h=void 0!==t.zoomFactor?t.zoomFactor:r,u=void 0!==t.multiWorld&&t.multiWorld,c=void 0===t.smoothResolutionConstraint||t.smoothResolutionConstraint,p=void 0!==t.showFullExtent&&t.showFullExtent,f=qe(t.projection,"EPSG:3857"),d=f.getExtent(),_=t.constrainOnlyCenter,g=t.extent;u||g||!f.isGlobal()||(_=!1,g=d);if(void 0!==t.resolutions){var y=t.resolutions;n=y[s],i=void 0!==y[l]?y[l]:y[y.length-1],e=t.constrainResolution?function(t,e,n,i){return function(o,r,s,l){if(void 0!==o){var h=t[0],u=t[t.length-1],c=n?os(h,n,s,i):h;if(l)return void 0===e||e?rs(o,c,u):Ot(o,u,c);var p=Math.min(c,o),f=Math.floor(a(t,p,r));return t[f]>c&&f1&&"function"==typeof arguments[n-1]&&(e=arguments[n-1],--n),!this.isDef()){var i=arguments[n-1];return i.center&&this.setCenterInternal(i.center),void 0!==i.zoom&&this.setZoom(i.zoom),void 0!==i.rotation&&this.setRotation(i.rotation),void(e&&us(e,!0))}for(var o=Date.now(),r=this.targetCenter_.slice(),s=this.targetResolution_,a=this.targetRotation_,l=[],h=0;h0},e.prototype.getInteracting=function(){return this.hints_[Jr]>0},e.prototype.cancelAnimations=function(){var t;this.setHint(qr,-this.hints_[qr]);for(var e=0,n=this.animations_.length;e=0;--n){for(var i=this.animations_[n],o=!0,r=0,s=i.length;r0?l/a.duration:1;h>=1?(a.complete=!0,h=1):o=!1;var u=a.easing(h);if(a.sourceCenter){var c=a.sourceCenter[0],p=a.sourceCenter[1],f=c+u*(a.targetCenter[0]-c),d=p+u*(a.targetCenter[1]-p);this.targetCenter_=[f,d]}if(a.sourceResolution&&a.targetResolution){var _=1===u?a.targetResolution:a.sourceResolution+u*(a.targetResolution-a.sourceResolution);if(a.anchor){var g=this.getViewportSize_(this.getRotation()),y=this.constraints_.resolution(_,0,g,!0);this.targetCenter_=this.calculateCenterZoom(y,a.anchor)}this.targetResolution_=_,this.applyTargetState_(!0)}if(void 0!==a.sourceRotation&&void 0!==a.targetRotation){var v=1===u?Lt(a.targetRotation+Math.PI,2*Math.PI)-Math.PI:a.sourceRotation+u*(a.targetRotation-a.sourceRotation);if(a.anchor){var m=this.constraints_.rotation(v,!0);this.targetCenter_=this.calculateCenterRotate(m,a.anchor)}this.targetRotation_=v}if(this.applyTargetState_(!0),e=!0,!a.complete)break}}if(o){this.animations_[n]=null,this.setHint(qr,-1);var x=i[0].callback;x&&us(x,!0)}}this.animations_=this.animations_.filter(Boolean),e&&void 0===this.updateAnimationKey_&&(this.updateAnimationKey_=requestAnimationFrame(this.updateAnimations_.bind(this)))}},e.prototype.calculateCenterRotate=function(t,e){var n,i,o,r=this.getCenterInternal();return void 0!==r&&(Ko(n=[r[0]-e[0],r[1]-e[1]],t-this.getRotation()),o=e,(i=n)[0]+=+o[0],i[1]+=+o[1]),n},e.prototype.calculateCenterZoom=function(t,e){var n,i=this.getCenterInternal(),o=this.getResolution();void 0!==i&&void 0!==o&&(n=[e[0]-t*(e[0]-i[0])/o,e[1]-t*(e[1]-i[1])/o]);return n},e.prototype.getViewportSize_=function(t){var e=this.viewportSize_;if(t){var n=e[0],i=e[1];return[Math.abs(n*Math.cos(t))+Math.abs(i*Math.sin(t)),Math.abs(n*Math.sin(t))+Math.abs(i*Math.cos(t))]}return e},e.prototype.setViewportSize=function(t){this.viewportSize_=Array.isArray(t)?t.slice():[100,100],this.getAnimating()||this.resolveConstraints(0)},e.prototype.getCenter=function(){var t=this.getCenterInternal();return t?ln(t,this.getProjection()):t},e.prototype.getCenterInternal=function(){return this.get(Qr)},e.prototype.getConstraints=function(){return this.constraints_},e.prototype.getConstrainResolution=function(){return this.options_.constrainResolution},e.prototype.getHints=function(t){return void 0!==t?(t[0]=this.hints_[0],t[1]=this.hints_[1],t):this.hints_.slice()},e.prototype.calculateExtent=function(t){return un(this.calculateExtentInternal(t),this.getProjection())},e.prototype.calculateExtentInternal=function(t){var e=t||this.getViewportSizeMinusPadding_(),n=this.getCenterInternal();ce(n,1);var i=this.getResolution();ce(void 0!==i,2);var o=this.getRotation();return ce(void 0!==o,3),Le(n,i,o,e)},e.prototype.getMaxResolution=function(){return this.maxResolution_},e.prototype.getMinResolution=function(){return this.minResolution_},e.prototype.getMaxZoom=function(){return this.getZoomForResolution(this.minResolution_)},e.prototype.setMaxZoom=function(t){this.applyOptions_(this.getUpdatedOptions_({maxZoom:t}))},e.prototype.getMinZoom=function(){return this.getZoomForResolution(this.maxResolution_)},e.prototype.setMinZoom=function(t){this.applyOptions_(this.getUpdatedOptions_({minZoom:t}))},e.prototype.setConstrainResolution=function(t){this.applyOptions_(this.getUpdatedOptions_({constrainResolution:t}))},e.prototype.getProjection=function(){return this.projection_},e.prototype.getResolution=function(){return this.get($r)},e.prototype.getResolutions=function(){return this.resolutions_},e.prototype.getResolutionForExtent=function(t,e){return this.getResolutionForExtentInternal(cn(t,this.getProjection()),e)},e.prototype.getResolutionForExtentInternal=function(t,e){var n=e||this.getViewportSizeMinusPadding_(),i=Ge(t)/n[0],o=Ae(t)/n[1];return Math.max(i,o)},e.prototype.getResolutionForValueFunction=function(t){var e=t||2,n=this.getConstrainedResolution(this.maxResolution_),i=this.minResolution_,o=Math.log(n/i)/Math.log(e);return function(t){return n/Math.pow(e,t*o)}},e.prototype.getRotation=function(){return this.get(ts)},e.prototype.getValueForResolutionFunction=function(t){var e=Math.log(t||2),n=this.getConstrainedResolution(this.maxResolution_),i=this.minResolution_,o=Math.log(n/i)/e;return function(t){return Math.log(n/t)/e/o}},e.prototype.getViewportSizeMinusPadding_=function(t){var e=this.getViewportSize_(t),n=this.padding_;return n&&(e=[e[0]-n[1]-n[3],e[1]-n[0]-n[2]]),e},e.prototype.getState=function(){var t=this.getProjection(),e=this.getResolution(),n=this.getRotation(),i=this.getCenterInternal(),o=this.padding_;if(o){var r=this.getViewportSizeMinusPadding_();i=ps(i,this.getViewportSize_(),[r[0]/2+o[3],r[1]/2+o[0]],e,n)}return{center:i.slice(0),projection:void 0!==t?t:null,resolution:e,rotation:n,zoom:this.getZoom()}},e.prototype.getZoom=function(){var t,e=this.getResolution();return void 0!==e&&(t=this.getZoomForResolution(e)),t},e.prototype.getZoomForResolution=function(t){var e,n,i=this.minZoom_||0;if(this.resolutions_){var o=a(this.resolutions_,t,1);i=o,e=this.resolutions_[o],n=o==this.resolutions_.length-1?2:e/this.resolutions_[o+1]}else e=this.maxResolution_,n=this.zoomFactor_;return i+Math.log(e/t)/Math.log(n)},e.prototype.getResolutionForZoom=function(t){if(this.resolutions_){if(this.resolutions_.length<=1)return 0;var e=Ot(Math.floor(t),0,this.resolutions_.length-2),n=this.resolutions_[e]/this.resolutions_[e+1];return this.resolutions_[e]/Math.pow(n,Ot(t-e,0,1))}return this.maxResolution_/Math.pow(this.zoomFactor_,t-this.minZoom_)},e.prototype.fit=function(t,e){var n;if(ce(Array.isArray(t)||"function"==typeof t.getSimplifiedGeometry,24),Array.isArray(t))ce(!We(t),25),n=Mi(i=cn(t,this.getProjection()));else if(t.getType()===jn){var i;(n=Mi(i=cn(t.getExtent(),this.getProjection()))).rotate(this.getRotation(),Me(i))}else{var o=an();n=o?t.clone().transform(o,this.getProjection()):t}this.fitInternal(n,e)},e.prototype.rotatedExtentForGeometry=function(t){for(var e=this.getRotation(),n=Math.cos(e),i=Math.sin(-e),o=t.getFlatCoordinates(),r=t.getStride(),s=1/0,a=1/0,l=-1/0,h=-1/0,u=0,c=o.length;u=0;a--){var l=s[a];if(l.getMap()===this&&l.getActive()&&this.getTargetElement())if(!l.handleEvent(t)||t.propagationStopped)break}}},e.prototype.handlePostRender=function(){var t=this.frameState_,e=this.tileQueue_;if(!e.isEmpty()){var n=this.maxTilesLoading_,i=n;if(t){var o=t.viewHints;if(o[qr]||o[Jr]){var r=Date.now()-t.time>8;n=r?0:8,i=r?0:2}}e.getTilesLoading()0;if(this.renderedVisible_!=n&&(this.element.style.display=n?"":"none",this.renderedVisible_=n),!u(e,this.renderedAttributions_)){at(this.ulElement_);for(var i=0,o=e.length;i0}}else if(t.type==Fr.POINTERDOWN){var i=this.handleDownEvent(t);this.handlingDownUpSequence=i,e=this.stopDown(i)}else t.type==Fr.POINTERMOVE&&this.handleMoveEvent(t);return!e},e.prototype.handleMoveEvent=function(t){},e.prototype.handleUpEvent=function(t){return!1},e.prototype.stopDown=function(t){return t},e.prototype.updateTrackedPointers_=function(t){if(function(t){var e=t.type;return e===Fr.POINTERDOWN||e===Fr.POINTERDRAG||e===Fr.POINTERUP}(t)){var e=t.originalEvent,n=e.pointerId.toString();t.type==Fr.POINTERUP?delete this.trackedPointers_[n]:(t.type==Fr.POINTERDOWN||n in this.trackedPointers_)&&(this.trackedPointers_[n]=e),this.targetPointers=g(this.trackedPointers_)}},e}(Cs);function Os(t){var e=arguments;return function(t){for(var n=!0,i=0,o=e.length;i0&&this.condition_(t)){var e=t.map.getView();return this.lastCentroid=null,e.getAnimating()&&e.cancelAnimations(),this.kinetic_&&this.kinetic_.begin(),this.noKinetic_=this.targetPointers.length>1,!0}return!1},e}(Ts),zs=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),Ws=function(t){function e(e){var n=this,i=e||{};return(n=t.call(this,{stopDown:p})||this).condition_=i.condition?i.condition:Rs,n.lastAngle_=void 0,n.duration_=void 0!==i.duration?i.duration:250,n}return zs(e,t),e.prototype.handleDragEvent=function(t){if(Ds(t)){var e=t.map,n=e.getView();if(n.getConstraints().rotation!==as){var i=e.getSize(),o=t.pixel,r=Math.atan2(i[1]/2-o[1],o[0]-i[0]/2);if(void 0!==this.lastAngle_){var s=r-this.lastAngle_;n.adjustRotationInternal(-s)}this.lastAngle_=r}}},e.prototype.handleUpEvent=function(t){return!Ds(t)||(t.map.getView().endInteraction(this.duration_),!1)},e.prototype.handleDownEvent=function(t){return!!Ds(t)&&(!(!Ms(t)||!this.condition_(t))&&(t.map.getView().beginInteraction(),this.lastAngle_=void 0,!0))},e}(Ts),Xs=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),Ns=function(t){function e(e){var n=t.call(this)||this;return n.geometry_=null,n.element_=document.createElement("div"),n.element_.style.position="absolute",n.element_.style.pointerEvents="auto",n.element_.className="ol-box "+e,n.map_=null,n.startPixel_=null,n.endPixel_=null,n}return Xs(e,t),e.prototype.disposeInternal=function(){this.setMap(null)},e.prototype.render_=function(){var t=this.startPixel_,e=this.endPixel_,n="px",i=this.element_.style;i.left=Math.min(t[0],e[0])+n,i.top=Math.min(t[1],e[1])+n,i.width=Math.abs(e[0]-t[0])+n,i.height=Math.abs(e[1]-t[1])+n},e.prototype.setMap=function(t){if(this.map_){this.map_.getOverlayContainer().removeChild(this.element_);var e=this.element_.style;e.left="inherit",e.top="inherit",e.width="inherit",e.height="inherit"}this.map_=t,this.map_&&this.map_.getOverlayContainer().appendChild(this.element_)},e.prototype.setPixels=function(t,e){this.startPixel_=t,this.endPixel_=e,this.createOrUpdateGeometry(),this.render_()},e.prototype.createOrUpdateGeometry=function(){var t=this.startPixel_,e=this.endPixel_,n=[t,[t[0],e[1]],e,[e[0],t[1]]].map(this.map_.getCoordinateFromPixelInternal,this.map_);n[4]=n[0].slice(),this.geometry_?this.geometry_.setCoordinates([n]):this.geometry_=new Ii([n])},e.prototype.getGeometry=function(){return this.geometry_},e}(r),Ys=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),Ks="boxstart",Bs="boxdrag",Zs="boxend",Vs="boxcancel",Us=function(t){function e(e,n,i){var o=t.call(this,e)||this;return o.coordinate=n,o.mapBrowserEvent=i,o}return Ys(e,t),e}(i),Hs=function(t){function e(e){var n=t.call(this)||this;n.on,n.once,n.un;var i=e||{};return n.box_=new Ns(i.className||"ol-dragbox"),n.minArea_=void 0!==i.minArea?i.minArea:64,i.onBoxEnd&&(n.onBoxEnd=i.onBoxEnd),n.startPixel_=null,n.condition_=i.condition?i.condition:Ms,n.boxEndCondition_=i.boxEndCondition?i.boxEndCondition:n.defaultBoxEndCondition,n}return Ys(e,t),e.prototype.defaultBoxEndCondition=function(t,e,n){var i=n[0]-e[0],o=n[1]-e[1];return i*i+o*o>=this.minArea_},e.prototype.getGeometry=function(){return this.box_.getGeometry()},e.prototype.handleDragEvent=function(t){this.box_.setPixels(this.startPixel_,t.pixel),this.dispatchEvent(new Us(Bs,t.coordinate,t))},e.prototype.handleUpEvent=function(t){this.box_.setMap(null);var e=this.boxEndCondition_(t,this.startPixel_,t.pixel);return e&&this.onBoxEnd(t),this.dispatchEvent(new Us(e?Zs:Vs,t.coordinate,t)),!1},e.prototype.handleDownEvent=function(t){return!!this.condition_(t)&&(this.startPixel_=t.pixel,this.box_.setMap(t.map),this.box_.setPixels(this.startPixel_,this.startPixel_),this.dispatchEvent(new Us(Ks,t.coordinate,t)),!0)},e.prototype.onBoxEnd=function(t){},e}(Ts),qs=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),Js=function(t){function e(e){var n=this,i=e||{},o=i.condition?i.condition:Ls;return(n=t.call(this,{condition:o,className:i.className||"ol-dragzoom",minArea:i.minArea})||this).duration_=void 0!==i.duration?i.duration:200,n.out_=void 0!==i.out&&i.out,n}return qs(e,t),e.prototype.onBoxEnd=function(t){var e=this.getMap().getView(),n=this.getGeometry();if(this.out_){var i=e.rotatedExtentForGeometry(n),o=e.getResolutionForExtentInternal(i),r=e.getResolution()/o;(n=n.clone()).scale(r*r)}e.fitInternal(n,{duration:this.duration_,easing:vt})},e}(Hs),Qs=37,$s=38,ta=39,ea=40,na=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),ia=function(t){function e(e){var n=t.call(this)||this,i=e||{};return n.defaultCondition_=function(t){return Fs(t)&&As(t)},n.condition_=void 0!==i.condition?i.condition:n.defaultCondition_,n.duration_=void 0!==i.duration?i.duration:100,n.pixelDelta_=void 0!==i.pixelDelta?i.pixelDelta:128,n}return na(e,t),e.prototype.handleEvent=function(t){var e=!1;if(t.type==T){var n=t.originalEvent,i=n.keyCode;if(this.condition_(t)&&(i==ea||i==Qs||i==ta||i==$s)){var o=t.map.getView(),r=o.getResolution()*this.pixelDelta_,s=0,a=0;i==ea?a=-r:i==Qs?s=-r:i==ta?s=r:a=r;var l=[s,a];Ko(l,o.getRotation()),function(t,e,n){var i=t.getCenterInternal();if(i){var o=[i[0]+e[0],i[1]+e[1]];t.animateInternal({duration:void 0!==n?n:250,easing:xt,center:t.getConstrainedCenter(o)})}}(o,l,this.duration_),n.preventDefault(),e=!0}}return!e},e}(Cs),oa=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),ra=function(t){function e(e){var n=t.call(this)||this,i=e||{};return n.condition_=i.condition?i.condition:As,n.delta_=i.delta?i.delta:1,n.duration_=void 0!==i.duration?i.duration:100,n}return oa(e,t),e.prototype.handleEvent=function(t){var e=!1;if(t.type==T||t.type==O){var n=t.originalEvent,i=n.charCode;if(this.condition_(t)&&(i=="+".charCodeAt(0)||i=="-".charCodeAt(0))){var o=t.map,r=i=="+".charCodeAt(0)?this.delta_:-this.delta_;xs(o.getView(),r,void 0,this.duration_),n.preventDefault(),e=!0}}return!e},e}(Cs),sa=function(){function t(t,e,n){this.decay_=t,this.minVelocity_=e,this.delay_=n,this.points_=[],this.angle_=0,this.initialVelocity_=0}return t.prototype.begin=function(){this.points_.length=0,this.angle_=0,this.initialVelocity_=0},t.prototype.update=function(t,e){this.points_.push(t,e,Date.now())},t.prototype.end=function(){if(this.points_.length<6)return!1;var t=Date.now()-this.delay_,e=this.points_.length-3;if(this.points_[e+2]0&&this.points_[n+2]>t;)n-=3;var i=this.points_[e+2]-this.points_[n+2];if(i<1e3/60)return!1;var o=this.points_[e]-this.points_[n],r=this.points_[e+1]-this.points_[n+1];return this.angle_=Math.atan2(r,o),this.initialVelocity_=Math.sqrt(o*o+r*r)/i,this.initialVelocity_>this.minVelocity_},t.prototype.getDistance=function(){return(this.minVelocity_-this.initialVelocity_)/this.decay_},t.prototype.getAngle=function(){return this.angle_},t}(),aa=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),la="trackpad",ha="wheel",ua=function(t){function e(e){var n=this,i=e||{};(n=t.call(this,i)||this).totalDelta_=0,n.lastDelta_=0,n.maxDelta_=void 0!==i.maxDelta?i.maxDelta:1,n.duration_=void 0!==i.duration?i.duration:250,n.timeout_=void 0!==i.timeout?i.timeout:80,n.useAnchor_=void 0===i.useAnchor||i.useAnchor,n.constrainResolution_=void 0!==i.constrainResolution&&i.constrainResolution;var o=i.condition?i.condition:Is;return n.condition_=i.onFocusOnly?Os(Ps,o):o,n.lastAnchor_=null,n.startTime_=void 0,n.timeoutId_,n.mode_=void 0,n.trackpadEventGap_=400,n.trackpadTimeoutId_,n.deltaPerZoom_=300,n}return aa(e,t),e.prototype.endInteraction_=function(){this.trackpadTimeoutId_=void 0,this.getMap().getView().endInteraction(void 0,this.lastDelta_?this.lastDelta_>0?1:-1:0,this.lastAnchor_)},e.prototype.handleEvent=function(t){if(!this.condition_(t))return!0;if(t.type!==M)return!0;var e,n=t.map,i=t.originalEvent;if(i.preventDefault(),this.useAnchor_&&(this.lastAnchor_=t.coordinate),t.type==M&&(e=i.deltaY,H&&i.deltaMode===WheelEvent.DOM_DELTA_PIXEL&&(e/=Q),i.deltaMode===WheelEvent.DOM_DELTA_LINE&&(e*=40)),0===e)return!1;this.lastDelta_=e;var o=Date.now();void 0===this.startTime_&&(this.startTime_=o),(!this.mode_||o-this.startTime_>this.trackpadEventGap_)&&(this.mode_=Math.abs(e)<4?la:ha);var r=n.getView();if(this.mode_===la&&!r.getConstrainResolution()&&!this.constrainResolution_)return this.trackpadTimeoutId_?clearTimeout(this.trackpadTimeoutId_):(r.getAnimating()&&r.cancelAnimations(),r.beginInteraction()),this.trackpadTimeoutId_=setTimeout(this.endInteraction_.bind(this),this.timeout_),r.adjustZoom(-e/this.deltaPerZoom_,this.lastAnchor_),this.startTime_=o,!1;this.totalDelta_+=e;var s=Math.max(this.timeout_-(o-this.startTime_),0);return clearTimeout(this.timeoutId_),this.timeoutId_=setTimeout(this.handleWheelZoom_.bind(this,n),s),!1},e.prototype.handleWheelZoom_=function(t){var e=t.getView();e.getAnimating()&&e.cancelAnimations();var n=-Ot(this.totalDelta_,-this.maxDelta_*this.deltaPerZoom_,this.maxDelta_*this.deltaPerZoom_)/this.deltaPerZoom_;(e.getConstrainResolution()||this.constrainResolution_)&&(n=n?n>0?1:-1:0),xs(e,n,this.lastAnchor_,this.duration_),this.mode_=void 0,this.totalDelta_=0,this.lastAnchor_=null,this.startTime_=void 0,this.timeoutId_=void 0},e.prototype.setMouseAnchor=function(t){this.useAnchor_=t,t||(this.lastAnchor_=null)},e}(Cs),ca=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),pa=function(t){function e(e){var n=this,i=e||{},o=i;return o.stopDown||(o.stopDown=p),(n=t.call(this,o)||this).anchor_=null,n.lastAngle_=void 0,n.rotating_=!1,n.rotationDelta_=0,n.threshold_=void 0!==i.threshold?i.threshold:.3,n.duration_=void 0!==i.duration?i.duration:250,n}return ca(e,t),e.prototype.handleDragEvent=function(t){var e=0,n=this.targetPointers[0],i=this.targetPointers[1],o=Math.atan2(i.clientY-n.clientY,i.clientX-n.clientX);if(void 0!==this.lastAngle_){var r=o-this.lastAngle_;this.rotationDelta_+=r,!this.rotating_&&Math.abs(this.rotationDelta_)>this.threshold_&&(this.rotating_=!0),e=r}this.lastAngle_=o;var s=t.map,a=s.getView();if(a.getConstraints().rotation!==as){var l=s.getViewport().getBoundingClientRect(),h=bs(this.targetPointers);h[0]-=l.left,h[1]-=l.top,this.anchor_=s.getCoordinateFromPixelInternal(h),this.rotating_&&(s.render(),a.adjustRotationInternal(e,this.anchor_))}},e.prototype.handleUpEvent=function(t){return!(this.targetPointers.length<2)||(t.map.getView().endInteraction(this.duration_),!1)},e.prototype.handleDownEvent=function(t){if(this.targetPointers.length>=2){var e=t.map;return this.anchor_=null,this.lastAngle_=void 0,this.rotating_=!1,this.rotationDelta_=0,this.handlingDownUpSequence||e.getView().beginInteraction(),!0}return!1},e}(Ts),fa=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),da=function(t){function e(e){var n=this,i=e||{},o=i;return o.stopDown||(o.stopDown=p),(n=t.call(this,o)||this).anchor_=null,n.duration_=void 0!==i.duration?i.duration:400,n.lastDistance_=void 0,n.lastScaleDelta_=1,n}return fa(e,t),e.prototype.handleDragEvent=function(t){var e=1,n=this.targetPointers[0],i=this.targetPointers[1],o=n.clientX-i.clientX,r=n.clientY-i.clientY,s=Math.sqrt(o*o+r*r);void 0!==this.lastDistance_&&(e=this.lastDistance_/s),this.lastDistance_=s;var a=t.map,l=a.getView();1!=e&&(this.lastScaleDelta_=e);var h=a.getViewport().getBoundingClientRect(),u=bs(this.targetPointers);u[0]-=h.left,u[1]-=h.top,this.anchor_=a.getCoordinateFromPixelInternal(u),a.render(),l.adjustResolutionInternal(e,this.anchor_)},e.prototype.handleUpEvent=function(t){if(this.targetPointers.length<2){var e=t.map.getView(),n=this.lastScaleDelta_>1?1:-1;return e.endInteraction(this.duration_,n),!1}return!0},e.prototype.handleDownEvent=function(t){if(this.targetPointers.length>=2){var e=t.map;return this.anchor_=null,this.lastDistance_=void 0,this.lastScaleDelta_=1,this.handlingDownUpSequence||e.getView().beginInteraction(),!0}return!1},e}(Ts);var _a=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),ga=function(t){function e(e){return(e=d({},e)).controls||(e.controls=function(t){var e=t||{},n=new Er;return(void 0===e.zoom||e.zoom)&&n.push(new En(e.zoomOptions)),(void 0===e.rotate||e.rotate)&&n.push(new wt(e.rotateOptions)),(void 0===e.attribution||e.attribution)&&n.push(new ys(e.attributionOptions)),n}()),e.interactions||(e.interactions=function(t){var e=t||{},n=new Er,i=new sa(-.005,.05,100);return(void 0===e.altShiftDragRotate||e.altShiftDragRotate)&&n.push(new Ws),(void 0===e.doubleClickZoom||e.doubleClickZoom)&&n.push(new Ss({delta:e.zoomDelta,duration:e.zoomDuration})),(void 0===e.dragPan||e.dragPan)&&n.push(new Gs({onFocusOnly:e.onFocusOnly,kinetic:i})),(void 0===e.pinchRotate||e.pinchRotate)&&n.push(new pa),(void 0===e.pinchZoom||e.pinchZoom)&&n.push(new da({duration:e.zoomDuration})),(void 0===e.keyboard||e.keyboard)&&(n.push(new ia),n.push(new ra({delta:e.zoomDelta,duration:e.zoomDuration}))),(void 0===e.mouseWheelZoom||e.mouseWheelZoom)&&n.push(new ua({onFocusOnly:e.onFocusOnly,duration:e.zoomDuration})),(void 0===e.shiftDragZoom||e.shiftDragZoom)&&n.push(new Js({duration:e.zoomDuration})),n}({onFocusOnly:!0})),t.call(this,e)||this}return _a(e,t),e.prototype.createRenderer=function(){return new vr(this)},e}(_s),ya=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),va=function(t){function e(e,n,i){var o=t.call(this)||this,r=i||{};return o.tileCoord=e,o.state=n,o.interimTile=null,o.key="",o.transition_=void 0===r.transition?250:r.transition,o.transitionStarts_={},o}return ya(e,t),e.prototype.changed=function(){this.dispatchEvent(C)},e.prototype.release=function(){},e.prototype.getKey=function(){return this.key+"/"+this.tileCoord},e.prototype.getInterimTile=function(){if(!this.interimTile)return this;var t=this.interimTile;do{if(t.getState()==Br)return this.transition_=0,t;t=t.interimTile}while(t);return this},e.prototype.refreshInterimChain=function(){if(this.interimTile){var t=this.interimTile,e=this;do{if(t.getState()==Br){t.interimTile=null;break}t.getState()==Kr?e=t:t.getState()==Yr?e.interimTile=t.interimTile:e=t,t=e.interimTile}while(t)}},e.prototype.getTileCoord=function(){return this.tileCoord},e.prototype.getState=function(){return this.state},e.prototype.setState=function(t){if(this.state!==Zr&&this.state>t)throw new Error("Tile load sequence violation");this.state=t,this.changed()},e.prototype.load=function(){G()},e.prototype.getAlpha=function(t,e){if(!this.transition_)return 1;var n=this.transitionStarts_[t];if(n){if(-1===n)return 1}else n=e,this.transitionStarts_[t]=n;var i=e-n+1e3/60;return i>=this.transition_?1:yt(i/this.transition_)},e.prototype.inTransition=function(t){return!!this.transition_&&-1!==this.transitionStarts_[t]},e.prototype.endTransition=function(t){this.transition_&&(this.transitionStarts_[t]=-1)},e}(x),ma=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}();var xa,Ca=function(t){function e(e,n,i,o,r,s){var a=t.call(this,e,n,s)||this;return a.crossOrigin_=o,a.src_=i,a.key=i,a.image_=new Image,null!==o&&(a.image_.crossOrigin=o),a.unlisten_=null,a.tileLoadFunction_=r,a}return ma(e,t),e.prototype.getImage=function(){return this.image_},e.prototype.setImage=function(t){this.image_=t,this.state=Br,this.unlistenImage_(),this.changed()},e.prototype.handleImageError_=function(){var t;this.state=Zr,this.unlistenImage_(),this.image_=((t=nt(1,1)).fillStyle="rgba(0,0,0,0)",t.fillRect(0,0,1,1),t.canvas),this.changed()},e.prototype.handleImageLoad_=function(){var t=this.image_;t.naturalWidth&&t.naturalHeight?this.state=Br:this.state=Vr,this.unlistenImage_(),this.changed()},e.prototype.load=function(){this.state==Zr&&(this.state=Yr,this.image_=new Image,null!==this.crossOrigin_&&(this.image_.crossOrigin=this.crossOrigin_)),this.state==Yr&&(this.state=Kr,this.changed(),this.tileLoadFunction_(this,this.src_),this.unlisten_=_o(this.image_,this.handleImageLoad_.bind(this),this.handleImageError_.bind(this)))},e.prototype.unlistenImage_=function(){this.unlisten_&&(this.unlisten_(),this.unlisten_=null)},e}(va),wa=function(){function t(t,e,n,i,o,r){this.sourceProj_=t,this.targetProj_=e;var s={},a=$e(this.targetProj_,this.sourceProj_);this.transformInv_=function(t){var e=t[0]+"/"+t[1];return s[e]||(s[e]=a(t)),s[e]},this.maxSourceExtent_=i,this.errorThresholdSquared_=o*o,this.triangles_=[],this.wrapsXInSource_=!1,this.canWrapXInSource_=this.sourceProj_.canWrapX()&&!!i&&!!this.sourceProj_.getExtent()&&Ge(i)==Ge(this.sourceProj_.getExtent()),this.sourceWorldWidth_=this.sourceProj_.getExtent()?Ge(this.sourceProj_.getExtent()):null,this.targetWorldWidth_=this.targetProj_.getExtent()?Ge(this.targetProj_.getExtent()):null;var l=ke(n),h=je(n),u=Ie(n),c=Pe(n),p=this.transformInv_(l),f=this.transformInv_(h),d=this.transformInv_(u),_=this.transformInv_(c),g=10+(r?Math.max(0,Math.ceil(Pt(Re(n)/(r*r*256*256)))):0);if(this.addQuad_(l,h,u,c,p,f,d,_,g),this.wrapsXInSource_){var y=1/0;this.triangles_.forEach((function(t,e,n){y=Math.min(y,t.source[0][0],t.source[1][0],t.source[2][0])})),this.triangles_.forEach(function(t){if(Math.max(t.source[0][0],t.source[1][0],t.source[2][0])-y>this.sourceWorldWidth_/2){var e=[[t.source[0][0],t.source[0][1]],[t.source[1][0],t.source[1][1]],[t.source[2][0],t.source[2][1]]];e[0][0]-y>this.sourceWorldWidth_/2&&(e[0][0]-=this.sourceWorldWidth_),e[1][0]-y>this.sourceWorldWidth_/2&&(e[1][0]-=this.sourceWorldWidth_),e[2][0]-y>this.sourceWorldWidth_/2&&(e[2][0]-=this.sourceWorldWidth_);var n=Math.min(e[0][0],e[1][0],e[2][0]);Math.max(e[0][0],e[1][0],e[2][0])-n.5&&u<1,f=!1;if(l>0){if(this.targetProj_.isGlobal()&&this.targetWorldWidth_)f=Ge(pe([t,e,n,i]))/this.targetWorldWidth_>.25||f;!p&&this.sourceProj_.isGlobal()&&u&&(f=u>.25||f)}if(!(!f&&this.maxSourceExtent_&&isFinite(h[0])&&isFinite(h[1])&&isFinite(h[2])&&isFinite(h[3]))||ze(h,this.maxSourceExtent_)){var d=0;if(!(f||isFinite(o[0])&&isFinite(o[1])&&isFinite(r[0])&&isFinite(r[1])&&isFinite(s[0])&&isFinite(s[1])&&isFinite(a[0])&&isFinite(a[1])))if(l>0)f=!0;else if(1!=(d=(isFinite(o[0])&&isFinite(o[1])?0:8)+(isFinite(r[0])&&isFinite(r[1])?0:4)+(isFinite(s[0])&&isFinite(s[1])?0:2)+(isFinite(a[0])&&isFinite(a[1])?0:1))&&2!=d&&4!=d&&8!=d)return;if(l>0){if(!f){var _=[(t[0]+n[0])/2,(t[1]+n[1])/2],g=this.transformInv_(_),y=void 0;if(p)y=(Lt(o[0],c)+Lt(s[0],c))/2-Lt(g[0],c);else y=(o[0]+s[0])/2-g[0];var v=(o[1]+s[1])/2-g[1];f=y*y+v*v>this.errorThresholdSquared_}if(f){if(Math.abs(t[0]-n[0])<=Math.abs(t[1]-n[1])){var m=[(e[0]+n[0])/2,(e[1]+n[1])/2],x=this.transformInv_(m),C=[(i[0]+t[0])/2,(i[1]+t[1])/2],w=this.transformInv_(C);this.addQuad_(t,e,m,C,o,r,x,w,l-1),this.addQuad_(C,m,n,i,w,x,s,a,l-1)}else{var S=[(t[0]+e[0])/2,(t[1]+e[1])/2],E=this.transformInv_(S),b=[(n[0]+i[0])/2,(n[1]+i[1])/2],T=this.transformInv_(b);this.addQuad_(t,S,b,i,o,E,T,a,l-1),this.addQuad_(S,e,n,b,E,r,s,T,l-1)}return}}if(p){if(!this.canWrapXInSource_)return;this.wrapsXInSource_=!0}0==(11&d)&&this.addTriangle_(t,n,i,o,s,a),0==(14&d)&&this.addTriangle_(t,n,e,o,s,r),d&&(0==(13&d)&&this.addTriangle_(e,i,t,r,a,o),0==(7&d)&&this.addTriangle_(e,i,n,r,a,s))}},t.prototype.calculateSourceExtent=function(){var t=[1/0,1/0,-1/0,-1/0];return this.triangles_.forEach((function(e,n,i){var o=e.source;Ee(t,o[0]),Ee(t,o[1]),Ee(t,o[2])})),t},t.prototype.getTriangles=function(){return this.triangles_},t}(),Sa={imageSmoothingEnabled:!1,msImageSmoothingEnabled:!1};function Ea(t,e,n,i,o){t.beginPath(),t.moveTo(0,0),t.lineTo(e,n),t.lineTo(i,o),t.closePath(),t.save(),t.clip(),t.fillRect(0,0,Math.max(e,i)+1,Math.max(n,o)),t.restore()}function ba(t,e){return Math.abs(t[4*e]-210)>2||Math.abs(t[4*e+3]-191.25)>2}function Ta(t,e,n,i){var o=tn(n,e,t),r=Ue(e,i,n),s=e.getMetersPerUnit();void 0!==s&&(r*=s);var a=t.getMetersPerUnit();void 0!==a&&(r/=a);var l=t.getExtent();if(!l||ge(l,o)){var h=Ue(t,r,o)/r;isFinite(h)&&h>0&&(r/=h)}return r}function Oa(t,e,n,i,o,r,s,a,l,h,u,c){var p=nt(Math.round(n*t),Math.round(n*e));if(d(p,c),0===l.length)return p.canvas;function f(t){return Math.round(t*n)/n}p.scale(n,n),p.globalCompositeOperation="lighter";var _=[1/0,1/0,-1/0,-1/0];l.forEach((function(t,e,n){var i,o;i=_,(o=t.extent)[0]i[2]&&(i[2]=o[2]),o[1]i[3]&&(i[3]=o[3])}));var g=Ge(_),y=Ae(_),v=nt(Math.round(n*g/i),Math.round(n*y/i));d(v,c);var m=n/i;l.forEach((function(t,e,n){var i=t.extent[0]-_[0],o=-(t.extent[3]-_[3]),r=Ge(t.extent),s=Ae(t.extent);t.image.width>0&&t.image.height>0&&v.drawImage(t.image,h,h,t.image.width-2*h,t.image.height-2*h,i*m,o*m,r*m,s*m)}));var x=ke(s);return a.getTriangles().forEach((function(t,e,o){var s=t.source,a=t.target,l=s[0][0],h=s[0][1],u=s[1][0],d=s[1][1],g=s[2][0],y=s[2][1],m=f((a[0][0]-x[0])/r),C=f(-(a[0][1]-x[1])/r),w=f((a[1][0]-x[0])/r),S=f(-(a[1][1]-x[1])/r),E=f((a[2][0]-x[0])/r),b=f(-(a[2][1]-x[1])/r),T=l,O=h;l=0,h=0;var R=function(t){for(var e=t.length,n=0;no&&(o=s,i=r)}if(0===o)return null;var a=t[i];t[i]=t[n],t[n]=a;for(var l=n+1;l=0;p--){c[p]=t[p][e]/t[p][p];for(var f=p-1;f>=0;f--)t[f][e]-=t[f][p]*c[p]}return c}([[u-=T,d-=O,0,0,w-m],[g-=T,y-=O,0,0,E-m],[0,0,u,d,S-C],[0,0,g,y,b-C]]);if(R){if(p.save(),p.beginPath(),function(){if(void 0===xa){var t=document.createElement("canvas").getContext("2d");t.globalCompositeOperation="lighter",t.fillStyle="rgba(210, 0, 0, 0.75)",Ea(t,4,5,4,0),Ea(t,4,5,0,5);var e=t.getImageData(0,0,3,3).data;xa=ba(e,0)||ba(e,4)||ba(e,8)}return xa}()||c===Sa){p.moveTo(w,S);for(var P=m-w,I=C-S,M=0;M<4;M++)p.lineTo(w+f((M+1)*P/4),S+f(M*I/3)),3!=M&&p.lineTo(w+f((M+1)*P/4),S+f((M+1)*I/3));p.lineTo(E,b)}else p.moveTo(w,S),p.lineTo(m,C),p.lineTo(E,b);p.clip(),p.transform(R[0],R[2],R[1],R[3],m,C),p.translate(_[0]-T,_[3]-O),p.scale(i/n,-i/n),p.drawImage(v.canvas,0,0),p.restore()}})),u&&(p.save(),p.globalCompositeOperation="source-over",p.strokeStyle="black",p.lineWidth=1,a.getTriangles().forEach((function(t,e,n){var i=t.target,o=(i[0][0]-x[0])/r,s=-(i[0][1]-x[1])/r,a=(i[1][0]-x[0])/r,l=-(i[1][1]-x[1])/r,h=(i[2][0]-x[0])/r,u=-(i[2][1]-x[1])/r;p.beginPath(),p.moveTo(a,l),p.lineTo(o,s),p.lineTo(h,u),p.closePath(),p.stroke()})),p.restore()),p.canvas}var Ra=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),Pa=function(t){function e(e,n,i,o,r,s,a,l,h,u,c,p){var f=t.call(this,r,Yr)||this;f.renderEdges_=void 0!==c&&c,f.contextOptions_=p,f.pixelRatio_=a,f.gutter_=l,f.canvas_=null,f.sourceTileGrid_=n,f.targetTileGrid_=o,f.wrappedTileCoord_=s||r,f.sourceTiles_=[],f.sourcesListenerKeys_=null,f.sourceZ_=0;var d=o.getTileCoordExtent(f.wrappedTileCoord_),_=f.targetTileGrid_.getExtent(),g=f.sourceTileGrid_.getExtent(),y=_?De(d,_):d;if(0===Re(y))return f.state=Vr,f;var v=e.getExtent();v&&(g=g?De(g,v):v);var m=o.getResolution(f.wrappedTileCoord_[0]),x=function(t,e,n,i){var o=Me(n),r=Ta(t,e,o,i);return(!isFinite(r)||r<=0)&&Oe(n,(function(n){return r=Ta(t,e,n,i),isFinite(r)&&r>0})),r}(e,i,y,m);if(!isFinite(x)||x<=0)return f.state=Vr,f;var C=void 0!==u?u:.5;if(f.triangulation_=new wa(e,i,y,g,x*C,m),0===f.triangulation_.getTriangles().length)return f.state=Vr,f;f.sourceZ_=n.getZForResolution(x);var w=f.triangulation_.calculateSourceExtent();if(g&&(e.canWrapX()?(w[1]=Ot(w[1],g[1],g[3]),w[3]=Ot(w[3],g[1],g[3])):w=De(w,g)),Re(w)){for(var S=n.getTileRangeForExtentAndZ(w,f.sourceZ_),E=S.minX;E<=S.maxX;E++)for(var b=S.minY;b<=S.maxY;b++){var T=h(f.sourceZ_,E,b,a);T&&f.sourceTiles_.push(T)}0===f.sourceTiles_.length&&(f.state=Vr)}else f.state=Vr;return f}return Ra(e,t),e.prototype.getImage=function(){return this.canvas_},e.prototype.reproject_=function(){var t=[];if(this.sourceTiles_.forEach(function(e,n,i){e&&e.getState()==Br&&t.push({extent:this.sourceTileGrid_.getTileCoordExtent(e.tileCoord),image:e.getImage()})}.bind(this)),this.sourceTiles_.length=0,0===t.length)this.state=Zr;else{var e=this.wrappedTileCoord_[0],n=this.targetTileGrid_.getTileSize(e),i="number"==typeof n?n:n[0],o="number"==typeof n?n:n[1],r=this.targetTileGrid_.getResolution(e),s=this.sourceTileGrid_.getResolution(this.sourceZ_),a=this.targetTileGrid_.getTileCoordExtent(this.wrappedTileCoord_);this.canvas_=Oa(i,o,this.pixelRatio_,s,this.sourceTileGrid_.getExtent(),r,a,this.triangulation_,t,this.gutter_,this.renderEdges_,this.contextOptions_),this.state=Br}this.changed()},e.prototype.load=function(){if(this.state==Yr){this.state=Kr,this.changed();var t=0;this.sourcesListenerKeys_=[],this.sourceTiles_.forEach(function(e,n,i){var o=e.getState();if(o==Yr||o==Kr){t++;var r=F(e,C,(function(n){var i=e.getState();i!=Br&&i!=Zr&&i!=Vr||(A(r),0===--t&&(this.unlistenSources_(),this.reproject_()))}),this);this.sourcesListenerKeys_.push(r)}}.bind(this)),0===t?setTimeout(this.reproject_.bind(this),0):this.sourceTiles_.forEach((function(t,e,n){t.getState()==Yr&&t.load()}))}},e.prototype.unlistenSources_=function(){this.sourcesListenerKeys_.forEach(A),this.sourcesListenerKeys_=null},e}(va),Ia=function(){function t(t){this.highWaterMark=void 0!==t?t:2048,this.count_=0,this.entries_={},this.oldest_=null,this.newest_=null}return t.prototype.canExpireCache=function(){return this.highWaterMark>0&&this.getCount()>this.highWaterMark},t.prototype.clear=function(){this.count_=0,this.entries_={},this.oldest_=null,this.newest_=null},t.prototype.containsKey=function(t){return this.entries_.hasOwnProperty(t)},t.prototype.forEach=function(t){for(var e=this.oldest_;e;)t(e.value_,e.key_,this),e=e.newer},t.prototype.get=function(t,e){var n=this.entries_[t];return ce(void 0!==n,15),n===this.newest_||(n===this.oldest_?(this.oldest_=this.oldest_.newer,this.oldest_.older=null):(n.newer.older=n.older,n.older.newer=n.newer),n.newer=null,n.older=this.newest_,this.newest_.newer=n,this.newest_=n),n.value_},t.prototype.remove=function(t){var e=this.entries_[t];return ce(void 0!==e,15),e===this.newest_?(this.newest_=e.older,this.newest_&&(this.newest_.newer=null)):e===this.oldest_?(this.oldest_=e.newer,this.oldest_&&(this.oldest_.older=null)):(e.newer.older=e.older,e.older.newer=e.newer),delete this.entries_[t],--this.count_,e.value_},t.prototype.getCount=function(){return this.count_},t.prototype.getKeys=function(){var t,e=new Array(this.count_),n=0;for(t=this.newest_;t;t=t.older)e[n++]=t.key_;return e},t.prototype.getValues=function(){var t,e=new Array(this.count_),n=0;for(t=this.newest_;t;t=t.older)e[n++]=t.value_;return e},t.prototype.peekLast=function(){return this.oldest_.value_},t.prototype.peekLastKey=function(){return this.oldest_.key_},t.prototype.peekFirstKey=function(){return this.newest_.key_},t.prototype.pop=function(){var t=this.oldest_;return delete this.entries_[t.key_],t.newer&&(t.newer.older=null),this.oldest_=t.newer,this.oldest_||(this.newest_=null),--this.count_,t.value_},t.prototype.replace=function(t,e){this.get(t),this.entries_[t].value_=e},t.prototype.set=function(t,e){ce(!(t in this.entries_),16);var n={key_:t,newer:null,older:this.newest_,value_:e};this.newest_?this.newest_.newer=n:this.oldest_=n,this.newest_=n,this.entries_[t]=n,++this.count_},t.prototype.setSize=function(t){this.highWaterMark=t},t}();function Ma(t,e,n,i){return void 0!==i?(i[0]=t,i[1]=e,i[2]=n,i):[t,e,n]}function Fa(t,e,n){return t+"/"+e+"/"+n}function La(t){return Fa(t[0],t[1],t[2])}var Aa=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),Da=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Aa(e,t),e.prototype.expireCache=function(t){for(;this.canExpireCache();){if(this.peekLast().getKey()in t)break;this.pop().release()}},e.prototype.pruneExceptNewestZ=function(){if(0!==this.getCount()){var t=function(t){return t.split("/").map(Number)}(this.peekFirstKey())[0];this.forEach(function(e){e.tileCoord[0]!==t&&(this.remove(La(e.tileCoord)),e.release())}.bind(this))}},e}(Ia),ka="tileloadstart",ja="tileloadend",Ga="tileloaderror",za=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}();function Wa(t){return t?Array.isArray(t)?function(e){return t}:"function"==typeof t?t:function(e){return[t]}:null}var Xa=function(t){function e(e){var n=t.call(this)||this;return n.projection=Ve(e.projection),n.attributions_=Wa(e.attributions),n.attributionsCollapsible_=void 0===e.attributionsCollapsible||e.attributionsCollapsible,n.loading=!1,n.state_=void 0!==e.state?e.state:zo,n.wrapX_=void 0!==e.wrapX&&e.wrapX,n}return za(e,t),e.prototype.getAttributions=function(){return this.attributions_},e.prototype.getAttributionsCollapsible=function(){return this.attributionsCollapsible_},e.prototype.getProjection=function(){return this.projection},e.prototype.getResolutions=function(){return G()},e.prototype.getState=function(){return this.state_},e.prototype.getWrapX=function(){return this.wrapX_},e.prototype.getContextOptions=function(){},e.prototype.refresh=function(){this.changed()},e.prototype.setAttributions=function(t){this.attributions_=Wa(t),this.changed()},e.prototype.setState=function(t){this.state_=t,this.changed()},e}(K),Na=function(){function t(t,e,n,i){this.minX=t,this.maxX=e,this.minY=n,this.maxY=i}return t.prototype.contains=function(t){return this.containsXY(t[1],t[2])},t.prototype.containsTileRange=function(t){return this.minX<=t.minX&&t.maxX<=this.maxX&&this.minY<=t.minY&&t.maxY<=this.maxY},t.prototype.containsXY=function(t,e){return this.minX<=t&&t<=this.maxX&&this.minY<=e&&e<=this.maxY},t.prototype.equals=function(t){return this.minX==t.minX&&this.minY==t.minY&&this.maxX==t.maxX&&this.maxY==t.maxY},t.prototype.extend=function(t){t.minXthis.maxX&&(this.maxX=t.maxX),t.minYthis.maxY&&(this.maxY=t.maxY)},t.prototype.getHeight=function(){return this.maxY-this.minY+1},t.prototype.getSize=function(){return[this.getWidth(),this.getHeight()]},t.prototype.getWidth=function(){return this.maxX-this.minX+1},t.prototype.intersects=function(t){return this.minX<=t.maxX&&this.maxX>=t.minX&&this.minY<=t.maxY&&this.maxY>=t.minY},t}();function Ya(t,e,n,i,o){return void 0!==o?(o.minX=t,o.maxX=e,o.minY=n,o.maxY=i,o):new Na(t,e,n,i)}var Ka=Na,Ba=[0,0,0],Za=function(){function t(t){var e,n,i,o;if(this.minZoom=void 0!==t.minZoom?t.minZoom:0,this.resolutions_=t.resolutions,ce((e=this.resolutions_,n=!0,i=function(t,e){return e-t}||s,e.every((function(t,o){if(0===o)return!0;var r=i(e[o-1],t);return!(r>0||n&&0===r)}))),17),!t.origins)for(var r=0,a=this.resolutions_.length-1;r=this.minZoom;){if(e(a,2===this.zoomFactor_?Ya(o=Math.floor(o/2),o,r=Math.floor(r/2),r,n):this.getTileRangeForExtentAndZ(s,a,n)))return!0;--a}return!1},t.prototype.getExtent=function(){return this.extent_},t.prototype.getMaxZoom=function(){return this.maxZoom},t.prototype.getMinZoom=function(){return this.minZoom},t.prototype.getOrigin=function(t){return this.origin_?this.origin_:this.origins_[t]},t.prototype.getResolution=function(t){return this.resolutions_[t]},t.prototype.getResolutions=function(){return this.resolutions_},t.prototype.getTileCoordChildTileRange=function(t,e,n){if(t[0]this.maxZoom||e0?i:Math.max(s/a[0],r/a[1]),h=o+1,u=new Array(h),c=0;cn||n>e.getMaxZoom())return!1;var r=e.getFullTileRange(n);return!r||r.containsXY(i,o)}(t,i)?t:null},e.prototype.clear=function(){this.tileCache.clear()},e.prototype.refresh=function(){this.clear(),t.prototype.refresh.call(this)},e.prototype.updateCacheSize=function(t,e){var n=this.getTileCacheForProjection(e);t>n.highWaterMark&&(n.highWaterMark=t)},e.prototype.useTile=function(t,e,n,i){},e}(Xa),Qa=function(t){function e(e,n){var i=t.call(this,e)||this;return i.tile=n,i}return qa(e,t),e}(i),$a=Ja;function tl(t,e){var n=/\{z\}/g,i=/\{x\}/g,o=/\{y\}/g,r=/\{-y\}/g;return function(s,a,l){return s?t.replace(n,s[0].toString()).replace(i,s[1].toString()).replace(o,s[2].toString()).replace(r,(function(){var t=s[0],n=e.getFullTileRange(t);return ce(n,55),(n.getHeight()-s[2]-1).toString()})):void 0}}function el(t,e){for(var n=t.length,i=new Array(n),o=0;oOpenStreetMap contributors.'];var o=void 0!==i.crossOrigin?i.crossOrigin:"anonymous",r=void 0!==i.url?i.url:"https://{a-c}.tile.openstreetmap.org/{z}/{x}/{y}.png";return t.call(this,{attributions:n,attributionsCollapsible:!1,cacheSize:i.cacheSize,crossOrigin:o,imageSmoothing:i.imageSmoothing,maxZoom:void 0!==i.maxZoom?i.maxZoom:19,opaque:void 0===i.opaque||i.opaque,reprojectionErrorThreshold:i.reprojectionErrorThreshold,tileLoadFunction:i.tileLoadFunction,transition:i.transition,url:r,wrapX:i.wrapX,zDirection:i.zDirection})||this}return hl(e,t),e}(ll),cl="bottom-left",pl="bottom-center",fl="bottom-right",dl="center-left",_l="center-center",gl="center-right",yl="top-left",vl="top-center",ml="top-right";function xl(t){return(xl="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var Cl=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),wl="element",Sl="map",El="offset",bl="position",Tl="positioning",Ol=function(t){function e(e){var n=t.call(this)||this;n.on,n.once,n.un,n.options=e,n.id=e.id,n.insertFirst=void 0===e.insertFirst||e.insertFirst,n.stopEvent=void 0===e.stopEvent||e.stopEvent,n.element=document.createElement("div"),n.element.className=void 0!==e.className?e.className:"ol-overlay-container ol-selectable",n.element.style.position="absolute",n.element.style.pointerEvents="auto";var i=e.autoPan;return i&&"object"!==xl(i)&&(i={animation:e.autoPanAnimation,margin:e.autoPanMargin}),n.autoPan=i||!1,n.rendered={transform_:"",visible:!0},n.mapPostrenderListenerKey=null,n.addChangeListener(wl,n.handleElementChanged),n.addChangeListener(Sl,n.handleMapChanged),n.addChangeListener(El,n.handleOffsetChanged),n.addChangeListener(bl,n.handlePositionChanged),n.addChangeListener(Tl,n.handlePositioningChanged),void 0!==e.element&&n.setElement(e.element),n.setOffset(void 0!==e.offset?e.offset:[0,0]),n.setPositioning(void 0!==e.positioning?e.positioning:yl),void 0!==e.position&&n.setPosition(e.position),n}return Cl(e,t),e.prototype.getElement=function(){return this.get(wl)},e.prototype.getId=function(){return this.id},e.prototype.getMap=function(){return this.get(Sl)},e.prototype.getOffset=function(){return this.get(El)},e.prototype.getPosition=function(){return this.get(bl)},e.prototype.getPositioning=function(){return this.get(Tl)},e.prototype.handleElementChanged=function(){at(this.element);var t=this.getElement();t&&this.element.appendChild(t)},e.prototype.handleMapChanged=function(){this.mapPostrenderListenerKey&&(st(this.element),A(this.mapPostrenderListenerKey),this.mapPostrenderListenerKey=null);var t=this.getMap();if(t){this.mapPostrenderListenerKey=F(t,B,this.render,this),this.updatePixelPosition();var e=this.stopEvent?t.getOverlayContainerStopEvent():t.getOverlayContainer();this.insertFirst?e.insertBefore(this.element,e.childNodes[0]||null):e.appendChild(this.element),this.performAutoPan()}},e.prototype.render=function(){this.updatePixelPosition()},e.prototype.handleOffsetChanged=function(){this.updatePixelPosition()},e.prototype.handlePositionChanged=function(){this.updatePixelPosition(),this.performAutoPan()},e.prototype.handlePositioningChanged=function(){this.updatePixelPosition()},e.prototype.setElement=function(t){this.set(wl,t)},e.prototype.setMap=function(t){this.set(Sl,t)},e.prototype.setOffset=function(t){this.set(El,t)},e.prototype.setPosition=function(t){this.set(bl,t)},e.prototype.performAutoPan=function(){this.autoPan&&this.panIntoView(this.autoPan)},e.prototype.panIntoView=function(t){var e=this.getMap();if(e&&e.getTargetElement()&&this.get(bl)){var n=this.getRect(e.getTargetElement(),e.getSize()),i=this.getElement(),o=this.getRect(i,[it(i),ot(i)]),r=t||{},s=void 0===r.margin?20:r.margin;if(!ye(n,o)){var a=o[0]-n[0],l=n[2]-o[2],h=o[1]-n[1],u=n[3]-o[3],c=[0,0];if(a<0?c[0]=a-s:l<0&&(c[0]=Math.abs(l)+s),h<0?c[1]=h-s:u<0&&(c[1]=Math.abs(u)+s),0!==c[0]||0!==c[1]){var p=e.getView().getCenterInternal(),f=e.getPixelFromCoordinateInternal(p);if(!f)return;var d=[f[0]+c[0],f[1]+c[1]],_=r.animation||{};e.getView().animateInternal({center:e.getCoordinateFromPixelInternal(d),duration:_.duration,easing:_.easing})}}}},e.prototype.getRect=function(t,e){var n=t.getBoundingClientRect(),i=n.left+window.pageXOffset,o=n.top+window.pageYOffset;return[i,o,i+e[0],o+e[1]]},e.prototype.setPositioning=function(t){this.set(Tl,t)},e.prototype.setVisible=function(t){this.rendered.visible!==t&&(this.element.style.display=t?"":"none",this.rendered.visible=t)},e.prototype.updatePixelPosition=function(){var t=this.getMap(),e=this.getPosition();if(t&&t.isRendered()&&e){var n=t.getPixelFromCoordinate(e),i=t.getSize();this.updateRenderedPosition(n,i)}else this.setVisible(!1)},e.prototype.updateRenderedPosition=function(t,e){var n=this.element.style,i=this.getOffset(),o=this.getPositioning();this.setVisible(!0);var r=Math.round(t[0]+i[0])+"px",s=Math.round(t[1]+i[1])+"px",a="0%",l="0%";o==fl||o==gl||o==ml?a="-100%":o!=pl&&o!=_l&&o!=vl||(a="-50%"),o==cl||o==pl||o==fl?l="-100%":o!=dl&&o!=_l&&o!=gl||(l="-50%");var h="translate("+a+", "+l+") translate("+r+", "+s+")";this.rendered.transform_!=h&&(this.rendered.transform_=h,n.transform=h,n.msTransform=h)},e.prototype.getOptions=function(){return this.options},e}(K),Rl=function(){function t(t){var e=t||{};this.color_=void 0!==e.color?e.color:null,this.lineCap_=e.lineCap,this.lineDash_=void 0!==e.lineDash?e.lineDash:null,this.lineDashOffset_=e.lineDashOffset,this.lineJoin_=e.lineJoin,this.miterLimit_=e.miterLimit,this.width_=e.width}return t.prototype.clone=function(){var e=this.getColor();return new t({color:Array.isArray(e)?e.slice():e||void 0,lineCap:this.getLineCap(),lineDash:this.getLineDash()?this.getLineDash().slice():void 0,lineDashOffset:this.getLineDashOffset(),lineJoin:this.getLineJoin(),miterLimit:this.getMiterLimit(),width:this.getWidth()})},t.prototype.getColor=function(){return this.color_},t.prototype.getLineCap=function(){return this.lineCap_},t.prototype.getLineDash=function(){return this.lineDash_},t.prototype.getLineDashOffset=function(){return this.lineDashOffset_},t.prototype.getLineJoin=function(){return this.lineJoin_},t.prototype.getMiterLimit=function(){return this.miterLimit_},t.prototype.getWidth=function(){return this.width_},t.prototype.setColor=function(t){this.color_=t},t.prototype.setLineCap=function(t){this.lineCap_=t},t.prototype.setLineDash=function(t){this.lineDash_=t},t.prototype.setLineDashOffset=function(t){this.lineDashOffset_=t},t.prototype.setLineJoin=function(t){this.lineJoin_=t},t.prototype.setMiterLimit=function(t){this.miterLimit_=t},t.prototype.setWidth=function(t){this.width_=t},t}();function Pl(t){return Array.isArray(t)?ao(t):t}var Il=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),Ml=function(t){function e(e){var n=this,i=void 0!==e.rotateWithView&&e.rotateWithView;return(n=t.call(this,{opacity:1,rotateWithView:i,rotation:void 0!==e.rotation?e.rotation:0,scale:void 0!==e.scale?e.scale:1,displacement:void 0!==e.displacement?e.displacement:[0,0]})||this).canvas_=void 0,n.hitDetectionCanvas_=null,n.fill_=void 0!==e.fill?e.fill:null,n.origin_=[0,0],n.points_=e.points,n.radius_=void 0!==e.radius?e.radius:e.radius1,n.radius2_=e.radius2,n.angle_=void 0!==e.angle?e.angle:0,n.stroke_=void 0!==e.stroke?e.stroke:null,n.anchor_=null,n.size_=null,n.renderOptions_=null,n.render(),n}return Il(e,t),e.prototype.clone=function(){var t=this.getScale(),n=new e({fill:this.getFill()?this.getFill().clone():void 0,points:this.getPoints(),radius:this.getRadius(),radius2:this.getRadius2(),angle:this.getAngle(),stroke:this.getStroke()?this.getStroke().clone():void 0,rotation:this.getRotation(),rotateWithView:this.getRotateWithView(),scale:Array.isArray(t)?t.slice():t,displacement:this.getDisplacement().slice()});return n.setOpacity(this.getOpacity()),n},e.prototype.getAnchor=function(){return this.anchor_},e.prototype.getAngle=function(){return this.angle_},e.prototype.getFill=function(){return this.fill_},e.prototype.getHitDetectionImage=function(){return this.hitDetectionCanvas_||this.createHitDetectionCanvas_(this.renderOptions_),this.hitDetectionCanvas_},e.prototype.getImage=function(t){var e=this.canvas_[t];if(!e){var n=this.renderOptions_,i=nt(n.size*t,n.size*t);this.draw_(n,i,t),e=i.canvas,this.canvas_[t]=e}return e},e.prototype.getPixelRatio=function(t){return t},e.prototype.getImageSize=function(){return this.size_},e.prototype.getImageState=function(){return Hi},e.prototype.getOrigin=function(){return this.origin_},e.prototype.getPoints=function(){return this.points_},e.prototype.getRadius=function(){return this.radius_},e.prototype.getRadius2=function(){return this.radius2_},e.prototype.getSize=function(){return this.size_},e.prototype.getStroke=function(){return this.stroke_},e.prototype.listenImageChange=function(t){},e.prototype.load=function(){},e.prototype.unlistenImageChange=function(t){},e.prototype.calculateLineJoinSize_=function(t,e,n){if(0===e||this.points_===1/0||"bevel"!==t&&"miter"!==t)return e;var i=this.radius_,o=void 0===this.radius2_?i:this.radius2_;if(i0&&(this.newTiles_=!0):a.setState(Br)),this.isDrawableTile(a)||(a=a.getInterimTile()),a},e.prototype.loadedTileCallback=function(e,n,i){return!!this.isDrawableTile(i)&&t.prototype.loadedTileCallback.call(this,e,n,i)},e.prototype.prepareFrame=function(t){return!!this.getLayer().getSource()},e.prototype.renderFrame=function(t,e){var n=t.layerStatesArray[t.layerIndex],i=t.viewState,o=i.projection,r=i.resolution,a=i.center,l=i.rotation,h=t.pixelRatio,u=this.getLayer(),c=u.getSource(),p=c.getRevision(),f=c.getTileGridForProjection(o),_=f.getZForResolution(r,c.zDirection),g=f.getResolution(_),y=t.extent,v=n.extent&&cn(n.extent,o);v&&(y=De(y,cn(n.extent,o)));var m=c.getTilePixelRatio(h),x=Math.round(t.size[0]*m),C=Math.round(t.size[1]*m);if(l){var w=Math.round(Math.sqrt(x*x+C*C));x=w,C=w}var S=g*x/2/m,E=g*C/2/m,b=[a[0]-S,a[1]-E,a[0]+S,a[1]+E],T=f.getTileRangeForExtentAndZ(y,_),O={};O[_]={};var R=this.createLoadedTileFinder(c,o,O),P=this.tmpExtent,I=this.tmpTileRange_;this.newTiles_=!1;for(var M=T.minX;M<=T.maxX;++M)for(var F=T.minY;F<=T.maxY;++F){var L=this.getTile(_,M,F,t);if(this.isDrawableTile(L)){var A=W(this);if(L.getState()==Br){O[_][L.tileCoord.toString()]=L;var D=L.inTransition(A);this.newTiles_||!D&&-1!==this.renderedTiles.indexOf(L)||(this.newTiles_=!0)}if(1===L.getAlpha(A,t.time))continue}var k=f.getTileCoordChildTileRange(L.tileCoord,I,P),j=!1;k&&(j=R(_+1,k)),j||f.forEachTileCoordParentTileRange(L.tileCoord,R,I,P)}var G=g/r;Wn(this.pixelTransform,t.size[0]/2,t.size[1]/2,1/m,1/m,l,-x/2,-C/2);var z=Nn(this.pixelTransform);this.useContainer(e,z,n.opacity);var X=this.context,N=X.canvas;Xn(this.inversePixelTransform,this.pixelTransform),Wn(this.tempTransform,x/2,C/2,G,G,0,-x/2,-C/2),N.width!=x||N.height!=C?(N.width=x,N.height=C):this.containerReused||X.clearRect(0,0,x,C),v&&this.clipUnrotated(X,t,v),d(X,c.getContextOptions()),this.preRender(X,t),this.renderedTiles.length=0;var Y,K,B,Z=Object.keys(O).map(Number);Z.sort(s),1!==n.opacity||this.containerReused&&!c.getOpaque(t.viewState.projection)?(Y=[],K=[]):Z=Z.reverse();for(var V=Z.length-1;V>=0;--V){var U=Z[V],H=c.getTilePixelSize(U,h,o),q=f.getResolution(U)/g,J=H[0]*q*G,Q=H[1]*q*G,$=f.getTileCoordForCoordAndZ(ke(b),U),tt=f.getTileCoordExtent($),et=zn(this.tempTransform,[m*(tt[0]-b[0])/g,m*(b[3]-tt[3])/g]),nt=m*c.getGutterForProjection(o),it=O[U];for(var ot in it){var rt=(L=it[ot]).tileCoord,st=$[1]-rt[1],at=Math.round(et[0]-(st-1)*J),lt=$[2]-rt[2],ht=Math.round(et[1]-(lt-1)*Q),ut=at-(M=Math.round(et[0]-st*J)),ct=ht-(F=Math.round(et[1]-lt*Q)),pt=_===U;if(!(D=pt&&1!==L.getAlpha(W(this),t.time)))if(Y){X.save(),B=[M,F,M+ut,F,M+ut,F+ct,M,F+ct];for(var ft=0,dt=Y.length;ft=200&&a.status<300){var i=e.getType(),l=void 0;i==ch||i==ph?l=a.responseText:i==fh?(l=a.responseXML)||(l=(new DOMParser).parseFromString(a.responseText,"application/xml")):i==uh&&(l=a.response),l?r(e.readFeatures(l,{extent:n,featureProjection:o}),e.readProjection(l)):s()}else s()},a.onerror=s,a.send()}(t,e,n,i,o,(function(t,e){a.addFeatures(t),void 0!==r&&r(t)}),s||f)}}var gh=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),yh=function(t){function e(e,n,i){var o=t.call(this,e)||this;return o.feature=n,o.features=i,o}return gh(e,t),e}(i),vh=function(t){function e(e){var n=this,i=e||{};(n=t.call(this,{attributions:i.attributions,projection:void 0,state:zo,wrapX:void 0===i.wrapX||i.wrapX})||this).on,n.once,n.un,n.loader_=f,n.format_=i.format,n.overlaps_=void 0===i.overlaps||i.overlaps,n.url_=i.url,void 0!==i.loader?n.loader_=i.loader:void 0!==n.url_&&(ce(n.format_,7),n.loader_=_h(n.url_,n.format_)),n.strategy_=void 0!==i.strategy?i.strategy:hh;var o,r,s=void 0===i.useSpatialIndex||i.useSpatialIndex;return n.featuresRtree_=s?new eh:null,n.loadedExtentsRtree_=new eh,n.loadingExtentsCount_=0,n.nullGeometryFeatures_={},n.idIndex_={},n.uidIndex_={},n.featureChangeKeys_={},n.featuresCollection_=null,Array.isArray(i.features)?r=i.features:i.features&&(r=(o=i.features).getArray()),s||void 0!==o||(o=new Er(r)),void 0!==r&&n.addFeaturesInternal(r),void 0!==o&&n.bindFeaturesCollection_(o),n}return gh(e,t),e.prototype.addFeature=function(t){this.addFeatureInternal(t),this.changed()},e.prototype.addFeatureInternal=function(t){var e=W(t);if(this.addToIndex_(e,t)){this.setupChangeEvents_(e,t);var n=t.getGeometry();if(n){var i=n.getExtent();this.featuresRtree_&&this.featuresRtree_.insert(i,t)}else this.nullGeometryFeatures_[e]=t;this.dispatchEvent(new yh(nh,t))}else this.featuresCollection_&&this.featuresCollection_.remove(t)},e.prototype.setupChangeEvents_=function(t,e){this.featureChangeKeys_[t]=[F(e,C,this.handleFeatureChange_,this),F(e,o,this.handleFeatureChange_,this)]},e.prototype.addToIndex_=function(t,e){var n=!0,i=e.getId();return void 0!==i&&(i.toString()in this.idIndex_?n=!1:this.idIndex_[i.toString()]=e),n&&(ce(!(t in this.uidIndex_),30),this.uidIndex_[t]=e),n},e.prototype.addFeatures=function(t){this.addFeaturesInternal(t),this.changed()},e.prototype.addFeaturesInternal=function(t){for(var e=[],n=[],i=[],o=0,r=t.length;o0},e.prototype.refresh=function(){this.clear(!0),this.loadedExtentsRtree_.clear(),t.prototype.refresh.call(this)},e.prototype.removeLoadedExtent=function(t){var e,n=this.loadedExtentsRtree_;n.forEachInExtent(t,(function(n){if(Se(n.extent,t))return e=n,!0})),e&&n.remove(e)},e.prototype.removeFeature=function(t){var e=W(t);e in this.nullGeometryFeatures_?delete this.nullGeometryFeatures_[e]:this.featuresRtree_&&this.featuresRtree_.remove(t),this.removeFeatureInternal(t),this.changed()},e.prototype.removeFeatureInternal=function(t){var e=W(t);this.featureChangeKeys_[e].forEach(A),delete this.featureChangeKeys_[e];var n=t.getId();void 0!==n&&delete this.idIndex_[n.toString()],delete this.uidIndex_[e],this.dispatchEvent(new yh(rh,t))},e.prototype.removeFromIdIndex_=function(t){var e=!1;for(var n in this.idIndex_)if(this.idIndex_[n]===t){delete this.idIndex_[n],e=!0;break}return e},e.prototype.setLoader=function(t){this.loader_=t},e.prototype.setUrl=function(t){ce(this.format_,7),this.url_=t,this.setLoader(_h(t,this.format_))},e}(Xa),mh=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),xh="renderOrder",Ch=function(t){function e(e){var n=this,i=e||{},o=d({},i);return delete o.style,delete o.renderBuffer,delete o.updateWhileAnimating,delete o.updateWhileInteracting,(n=t.call(this,o)||this).declutter_=void 0!==i.declutter&&i.declutter,n.renderBuffer_=void 0!==i.renderBuffer?i.renderBuffer:100,n.style_=null,n.styleFunction_=void 0,n.setStyle(i.style),n.updateWhileAnimating_=void 0!==i.updateWhileAnimating&&i.updateWhileAnimating,n.updateWhileInteracting_=void 0!==i.updateWhileInteracting&&i.updateWhileInteracting,n}return mh(e,t),e.prototype.getDeclutter=function(){return this.declutter_},e.prototype.getFeatures=function(e){return t.prototype.getFeatures.call(this,e)},e.prototype.getRenderBuffer=function(){return this.renderBuffer_},e.prototype.getRenderOrder=function(){return this.get(xh)},e.prototype.getStyle=function(){return this.style_},e.prototype.getStyleFunction=function(){return this.styleFunction_},e.prototype.getUpdateWhileAnimating=function(){return this.updateWhileAnimating_},e.prototype.getUpdateWhileInteracting=function(){return this.updateWhileInteracting_},e.prototype.renderDeclutter=function(t){t.declutterTree||(t.declutterTree=new th(9)),this.getRenderer().renderDeclutter(t)},e.prototype.setRenderOrder=function(t){this.set(xh,t)},e.prototype.setStyle=function(t){this.style_=void 0!==t?t:Gl,this.styleFunction_=null===t?void 0:function(t){var e;if("function"==typeof t)e=t;else{var n;Array.isArray(t)?n=t:(ce("function"==typeof t.getZIndex,41),n=[t]),e=function(){return n}}return e}(this.style_),this.changed()},e}(No),wh={BEGIN_GEOMETRY:0,BEGIN_PATH:1,CIRCLE:2,CLOSE_PATH:3,CUSTOM:4,DRAW_CHARS:5,DRAW_IMAGE:6,END_GEOMETRY:7,FILL:8,MOVE_TO_LINE_TO:9,SET_FILL_STYLE:10,SET_STROKE_STYLE:11,STROKE:12},Sh=[wh.FILL],Eh=[wh.STROKE],bh=[wh.BEGIN_PATH],Th=[wh.CLOSE_PATH],Oh=wh,Rh=function(){function t(){}return t.prototype.drawCustom=function(t,e,n){},t.prototype.drawGeometry=function(t){},t.prototype.setStyle=function(t){},t.prototype.drawCircle=function(t,e){},t.prototype.drawFeature=function(t,e){},t.prototype.drawGeometryCollection=function(t,e){},t.prototype.drawLineString=function(t,e){},t.prototype.drawMultiLineString=function(t,e){},t.prototype.drawMultiPoint=function(t,e){},t.prototype.drawMultiPolygon=function(t,e){},t.prototype.drawPoint=function(t,e){},t.prototype.drawPolygon=function(t,e){},t.prototype.drawText=function(t,e){},t.prototype.setFillStrokeStyle=function(t,e){},t.prototype.setImageStyle=function(t,e){},t.prototype.setTextStyle=function(t,e){},t}(),Ph=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),Ih=function(t){function e(e,n,i,o){var r=t.call(this)||this;return r.tolerance=e,r.maxExtent=n,r.pixelRatio=o,r.maxLineWidth=0,r.resolution=i,r.beginGeometryInstruction1_=null,r.beginGeometryInstruction2_=null,r.bufferedMaxExtent_=null,r.instructions=[],r.coordinates=[],r.tmpCoordinate_=[],r.hitDetectionInstructions=[],r.state={},r}return Ph(e,t),e.prototype.applyPixelRatio=function(t){var e=this.pixelRatio;return 1==e?t:t.map((function(t){return t*e}))},e.prototype.appendFlatPointCoordinates=function(t,e){for(var n=this.getBufferedMaxExtent(),i=this.tmpCoordinate_,o=this.coordinates,r=o.length,s=0,a=t.length;su&&this.instructions.push([Oh.CUSTOM,u,o,t,n,li])):l==Pn&&(i=t.getFlatCoordinates(),this.coordinates.push(i[0],i[1]),o=this.coordinates.length,this.instructions.push([Oh.CUSTOM,u,o,t,n]));this.endGeometry(e)},e.prototype.beginGeometry=function(t,e){this.beginGeometryInstruction1_=[Oh.BEGIN_GEOMETRY,e,0,t],this.instructions.push(this.beginGeometryInstruction1_),this.beginGeometryInstruction2_=[Oh.BEGIN_GEOMETRY,e,0,t],this.hitDetectionInstructions.push(this.beginGeometryInstruction2_)},e.prototype.finish=function(){return{instructions:this.instructions,hitDetectionInstructions:this.hitDetectionInstructions,coordinates:this.coordinates}},e.prototype.reverseHitDetectionInstructions=function(){var t,e=this.hitDetectionInstructions;e.reverse();var n,i,o=e.length,r=-1;for(t=0;tthis.maxLineWidth&&(this.maxLineWidth=n.lineWidth,this.bufferedMaxExtent_=null)}else n.strokeStyle=void 0,n.lineCap=void 0,n.lineDash=null,n.lineDashOffset=void 0,n.lineJoin=void 0,n.lineWidth=void 0,n.miterLimit=void 0},e.prototype.createFill=function(t){var e=t.fillStyle,n=[Oh.SET_FILL_STYLE,e];return"string"!=typeof e&&n.push(!0),n},e.prototype.applyStroke=function(t){this.instructions.push(this.createStroke(t))},e.prototype.createStroke=function(t){return[Oh.SET_STROKE_STYLE,t.strokeStyle,t.lineWidth*this.pixelRatio,t.lineCap,t.lineJoin,t.miterLimit,this.applyPixelRatio(t.lineDash),t.lineDashOffset*this.pixelRatio]},e.prototype.updateFillStyle=function(t,e){var n=t.fillStyle;"string"==typeof n&&t.currentFillStyle==n||(void 0!==n&&this.instructions.push(e.call(this,t)),t.currentFillStyle=n)},e.prototype.updateStrokeStyle=function(t,e){var n=t.strokeStyle,i=t.lineCap,o=t.lineDash,r=t.lineDashOffset,s=t.lineJoin,a=t.lineWidth,l=t.miterLimit;(t.currentStrokeStyle!=n||t.currentLineCap!=i||o!=t.currentLineDash&&!u(t.currentLineDash,o)||t.currentLineDashOffset!=r||t.currentLineJoin!=s||t.currentLineWidth!=a||t.currentMiterLimit!=l)&&(void 0!==n&&e.call(this,t),t.currentStrokeStyle=n,t.currentLineCap=i,t.currentLineDash=o,t.currentLineDashOffset=r,t.currentLineJoin=s,t.currentLineWidth=a,t.currentMiterLimit=l)},e.prototype.endGeometry=function(t){this.beginGeometryInstruction1_[2]=this.instructions.length,this.beginGeometryInstruction1_=null,this.beginGeometryInstruction2_[2]=this.hitDetectionInstructions.length,this.beginGeometryInstruction2_=null;var e=[Oh.END_GEOMETRY,t];this.instructions.push(e),this.hitDetectionInstructions.push(e)},e.prototype.getBufferedMaxExtent=function(){if(!this.bufferedMaxExtent_&&(this.bufferedMaxExtent_=de(this.maxExtent),this.maxLineWidth>0)){var t=this.resolution*(this.maxLineWidth+1)/2;fe(this.bufferedMaxExtent_,t,this.bufferedMaxExtent_)}return this.bufferedMaxExtent_},e}(Rh),Mh=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),Fh=function(t){function e(e,n,i,o){var r=t.call(this,e,n,i,o)||this;return r.hitDetectionImage_=null,r.image_=null,r.imagePixelRatio_=void 0,r.anchorX_=void 0,r.anchorY_=void 0,r.height_=void 0,r.opacity_=void 0,r.originX_=void 0,r.originY_=void 0,r.rotateWithView_=void 0,r.rotation_=void 0,r.scale_=void 0,r.width_=void 0,r.declutterImageWithText_=void 0,r}return Mh(e,t),e.prototype.drawPoint=function(t,e){if(this.image_){this.beginGeometry(t,e);var n=t.getFlatCoordinates(),i=t.getStride(),o=this.coordinates.length,r=this.appendFlatPointCoordinates(n,i);this.instructions.push([Oh.DRAW_IMAGE,o,r,this.image_,this.anchorX_*this.imagePixelRatio_,this.anchorY_*this.imagePixelRatio_,Math.ceil(this.height_*this.imagePixelRatio_),this.opacity_,this.originX_,this.originY_,this.rotateWithView_,this.rotation_,[this.scale_[0]*this.pixelRatio/this.imagePixelRatio_,this.scale_[1]*this.pixelRatio/this.imagePixelRatio_],Math.ceil(this.width_*this.imagePixelRatio_),this.declutterImageWithText_]),this.hitDetectionInstructions.push([Oh.DRAW_IMAGE,o,r,this.hitDetectionImage_,this.anchorX_,this.anchorY_,this.height_,this.opacity_,this.originX_,this.originY_,this.rotateWithView_,this.rotation_,this.scale_,this.width_,this.declutterImageWithText_]),this.endGeometry(e)}},e.prototype.drawMultiPoint=function(t,e){if(this.image_){this.beginGeometry(t,e);var n=t.getFlatCoordinates(),i=t.getStride(),o=this.coordinates.length,r=this.appendFlatPointCoordinates(n,i);this.instructions.push([Oh.DRAW_IMAGE,o,r,this.image_,this.anchorX_*this.imagePixelRatio_,this.anchorY_*this.imagePixelRatio_,Math.ceil(this.height_*this.imagePixelRatio_),this.opacity_,this.originX_,this.originY_,this.rotateWithView_,this.rotation_,[this.scale_[0]*this.pixelRatio/this.imagePixelRatio_,this.scale_[1]*this.pixelRatio/this.imagePixelRatio_],Math.ceil(this.width_*this.imagePixelRatio_),this.declutterImageWithText_]),this.hitDetectionInstructions.push([Oh.DRAW_IMAGE,o,r,this.hitDetectionImage_,this.anchorX_,this.anchorY_,this.height_,this.opacity_,this.originX_,this.originY_,this.rotateWithView_,this.rotation_,this.scale_,this.width_,this.declutterImageWithText_]),this.endGeometry(e)}},e.prototype.finish=function(){return this.reverseHitDetectionInstructions(),this.anchorX_=void 0,this.anchorY_=void 0,this.hitDetectionImage_=null,this.image_=null,this.imagePixelRatio_=void 0,this.height_=void 0,this.scale_=void 0,this.opacity_=void 0,this.originX_=void 0,this.originY_=void 0,this.rotateWithView_=void 0,this.rotation_=void 0,this.width_=void 0,t.prototype.finish.call(this)},e.prototype.setImageStyle=function(t,e){var n=t.getAnchor(),i=t.getSize(),o=t.getHitDetectionImage(),r=t.getImage(this.pixelRatio),s=t.getOrigin();this.imagePixelRatio_=t.getPixelRatio(this.pixelRatio),this.anchorX_=n[0],this.anchorY_=n[1],this.hitDetectionImage_=o,this.image_=r,this.height_=i[1],this.opacity_=t.getOpacity(),this.originX_=s[0],this.originY_=s[1],this.rotateWithView_=t.getRotateWithView(),this.rotation_=t.getRotation(),this.scale_=t.getScaleArray(),this.width_=i[0],this.declutterImageWithText_=e},e}(Ih),Lh=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),Ah=function(t){function e(e,n,i,o){return t.call(this,e,n,i,o)||this}return Lh(e,t),e.prototype.drawFlatCoordinates_=function(t,e,n,i){var o=this.coordinates.length,r=this.appendFlatLineCoordinates(t,e,n,i,!1,!1),s=[Oh.MOVE_TO_LINE_TO,o,r];return this.instructions.push(s),this.hitDetectionInstructions.push(s),n},e.prototype.drawLineString=function(t,e){var n=this.state,i=n.strokeStyle,o=n.lineWidth;if(void 0!==i&&void 0!==o){this.updateStrokeStyle(n,this.applyStroke),this.beginGeometry(t,e),this.hitDetectionInstructions.push([Oh.SET_STROKE_STYLE,n.strokeStyle,n.lineWidth,n.lineCap,n.lineJoin,n.miterLimit,tr,0],bh);var r=t.getFlatCoordinates(),s=t.getStride();this.drawFlatCoordinates_(r,0,r.length,s),this.hitDetectionInstructions.push(Eh),this.endGeometry(e)}},e.prototype.drawMultiLineString=function(t,e){var n=this.state,i=n.strokeStyle,o=n.lineWidth;if(void 0!==i&&void 0!==o){this.updateStrokeStyle(n,this.applyStroke),this.beginGeometry(t,e),this.hitDetectionInstructions.push([Oh.SET_STROKE_STYLE,n.strokeStyle,n.lineWidth,n.lineCap,n.lineJoin,n.miterLimit,n.lineDash,n.lineDashOffset],bh);for(var r=t.getEnds(),s=t.getFlatCoordinates(),a=t.getStride(),l=0,h=0,u=r.length;ht&&(y>g&&(g=y,d=v,_=r),y=0,v=r-o)),s=a,u=p,c=f),l=m,h=x}return(y+=a)>g?[v,r]:[d,_]}var zh=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),Wh={left:0,end:0,center:.5,right:1,start:1,top:0,middle:.5,hanging:.2,alphabetic:.8,ideographic:.8,bottom:1},Xh={Circle:kh,Default:Ih,Image:Fh,LineString:Ah,Polygon:kh,Text:function(t){function e(e,n,i,o){var r=t.call(this,e,n,i,o)||this;return r.labels_=null,r.text_="",r.textOffsetX_=0,r.textOffsetY_=0,r.textRotateWithView_=void 0,r.textRotation_=0,r.textFillState_=null,r.fillStates={},r.textStrokeState_=null,r.strokeStates={},r.textState_={},r.textStates={},r.textKey_="",r.fillKey_="",r.strokeKey_="",r.declutterImageWithText_=void 0,r}return zh(e,t),e.prototype.finish=function(){var e=t.prototype.finish.call(this);return e.textStates=this.textStates,e.fillStates=this.fillStates,e.strokeStates=this.strokeStates,e},e.prototype.drawText=function(t,e){var n=this.textFillState_,i=this.textStrokeState_,o=this.textState_;if(""!==this.text_&&o&&(n||i)){var r=this.coordinates,s=r.length,a=t.getType(),l=null,h=t.getStride();if(o.placement!==jh||a!=In&&a!=An&&a!=Fn&&a!=Dn){var u=o.overflow?null:[];switch(a){case Pn:case Ln:l=t.getFlatCoordinates();break;case In:l=t.getFlatMidpoint();break;case jn:l=t.getCenter();break;case An:l=t.getFlatMidpoints(),h=2;break;case Fn:l=t.getFlatInteriorPoint(),o.overflow||u.push(l[2]/this.resolution),h=3;break;case Dn:var c=t.getFlatInteriorPoints();l=[];for(w=0,S=c.length;wR[2]}else b=x>T;var P,I=Math.PI,M=[],F=w+i===e;if(g=0,y=S,p=t[e=w],f=t[e+1],F){v();var L=Math.atan2(f-_,p-d);b&&(L+=L>0?-I:I);var A=(T+x)/2,D=(O+C)/2;return M[0]=[A,D,(E-r)/2,L,o],M}for(var k=0,j=o.length;k0?-I:I),void 0!==P){var z=G-P;if(z+=z>I?-2*I:z<-I?2*I:0,Math.abs(z)>s)return null}P=G;for(var W=k,X=0;kt?t-l:o,x=r+h>e?e-h:r,C=f[3]+m*c[0]+f[1],w=f[0]+x*c[1]+f[2],S=y-f[3],E=v-f[0];return(d||0!==u)&&(Jh[0]=S,tu[0]=S,Jh[1]=E,Qh[1]=E,Qh[0]=S+C,$h[0]=Qh[0],$h[1]=E+w,tu[1]=$h[1]),0!==u?(zn(g=Wn([1,0,0,1,0,0],n,i,1,1,u,-n,-i),Jh),zn(g,Qh),zn(g,$h),zn(g,tu),Ce(Math.min(Jh[0],Qh[0],$h[0],tu[0]),Math.min(Jh[1],Qh[1],$h[1],tu[1]),Math.max(Jh[0],Qh[0],$h[0],tu[0]),Math.max(Jh[1],Qh[1],$h[1],tu[1]),qh)):Ce(Math.min(S,S+C),Math.min(E,E+w),Math.max(S,S+C),Math.max(E,E+w),qh),p&&(y=Math.round(y),v=Math.round(v)),{drawImageX:y,drawImageY:v,drawImageW:m,drawImageH:x,originX:l,originY:h,declutterBox:{minX:qh[0],minY:qh[1],maxX:qh[2],maxY:qh[3],value:_},canvasTransform:g,scale:c}},t.prototype.replayImageOrLabel_=function(t,e,n,i,o,r,s){var a=!(!r&&!s),l=i.declutterBox,h=t.canvas,u=s?s[2]*i.scale[0]/2:0;return l.minX-u<=h.width/e&&l.maxX+u>=0&&l.minY-u<=h.height/e&&l.maxY+u>=0&&(a&&this.replayTextBackground_(t,Jh,Qh,$h,tu,r,s),gr(t,i.canvasTransform,o,n,i.originX,i.originY,i.drawImageW,i.drawImageH,i.drawImageX,i.drawImageY,i.scale)),!0},t.prototype.fill_=function(t){if(this.alignFill_){var e=zn(this.renderedTransform_,[0,0]),n=512*this.pixelRatio;t.save(),t.translate(e[0]%n,e[1]%n),t.rotate(this.viewRotation_)}t.fill(),this.alignFill_&&t.restore()},t.prototype.setStrokeStyle_=function(t,e){t.strokeStyle=e[1],t.lineWidth=e[2],t.lineCap=e[3],t.lineJoin=e[4],t.miterLimit=e[5],t.setLineDash&&(t.lineDashOffset=e[7],t.setLineDash(e[6]))},t.prototype.drawLabelWithPointPlacement_=function(t,e,n,i){var o=this.textStates[e],r=this.createLabel(t,e,i,n),s=this.strokeStates[n],a=this.pixelRatio,l=iu(t,o.textAlign||ir),h=Wh[o.textBaseline||or],u=s&&s.lineWidth?s.lineWidth:0;return{label:r,anchorX:l*(r.width/a-2*o.scale[0])+2*(.5-l)*u,anchorY:h*r.height/a+2*(.5-h)*u}},t.prototype.execute_=function(t,e,n,i,o,r,s,a){var l,h,c;this.pixelCoordinates_&&u(n,this.renderedTransform_)?l=this.pixelCoordinates_:(this.pixelCoordinates_||(this.pixelCoordinates_=[]),l=Yn(this.coordinates,0,this.coordinates.length,2,n,this.pixelCoordinates_),h=this.renderedTransform_,c=n,h[0]=c[0],h[1]=c[1],h[2]=c[2],h[3]=c[3],h[4]=c[4],h[5]=c[5]);for(var p,f,d,_,g,y,v,m,x,C,w,S,E,b,T,O,R=0,P=i.length,I=0,M=0,F=0,L=null,A=null,D=this.coordinateCache_,k=this.viewRotation_,j=Math.round(1e12*Math.atan2(-n[1],n[0]))/1e12,G={context:t,pixelRatio:this.pixelRatio,resolution:this.resolution,rotation:k},z=this.instructions!=i||this.overlaps?0:200;Rz&&(this.fill_(t),M=0),F>z&&(t.stroke(),F=0),M||F||(t.beginPath(),_=NaN,g=NaN),++R;break;case Oh.CIRCLE:var X=l[I=W[1]],N=l[I+1],Y=l[I+2]-X,K=l[I+3]-N,B=Math.sqrt(Y*Y+K*K);t.moveTo(X+B,N),t.arc(X,N,B,0,2*Math.PI,!0),++R;break;case Oh.CLOSE_PATH:t.closePath(),++R;break;case Oh.CUSTOM:I=W[1],p=W[2];var Z=W[3],V=W[4],U=6==W.length?W[5]:void 0;G.geometry=Z,G.feature=E,R in D||(D[R]=[]);var H=D[R];U?U(l,I,p,2,H):(H[0]=l[I],H[1]=l[I+1],H.length=2),V(H,G),++R;break;case Oh.DRAW_IMAGE:I=W[1],p=W[2],m=W[3],f=W[4],d=W[5];var q=W[6],J=W[7],Q=W[8],$=W[9],tt=W[10],et=W[11],nt=W[12],it=W[13],ot=W[14];if(!m&&W.length>=19){x=W[18],C=W[19],w=W[20],S=W[21];var rt=this.drawLabelWithPointPlacement_(x,C,w,S);m=rt.label,W[3]=m;var st=W[22];f=(rt.anchorX-st)*this.pixelRatio,W[4]=f;var at=W[23];d=(rt.anchorY-at)*this.pixelRatio,W[5]=d,q=m.height,W[6]=q,it=m.width,W[13]=it}var lt=void 0;W.length>24&&(lt=W[24]);var ht=void 0,ut=void 0,ct=void 0;W.length>16?(ht=W[15],ut=W[16],ct=W[17]):(ht=rr,ut=!1,ct=!1),tt&&j?et+=k:tt||j||(et-=k);for(var pt=0;In)break;var a=i[s];a||(a=[],i[s]=a),a.push(4*((t+o)*e+(t+r))+3),o>0&&a.push(4*((t-o)*e+(t+r))+3),r>0&&(a.push(4*((t+o)*e+(t-r))+3),o>0&&a.push(4*((t-o)*e+(t-r))+3))}for(var l=[],h=(o=0,i.length);o0){if(!r||p!==Bh&&p!==Uh||-1!==r.indexOf(t)){var h=(f[s]-3)/4,u=i-h%a,d=i-(h/a|0),_=o(t,e,u*u+d*d);if(_)return _}c.clearRect(0,0,a,a);break}}var _,g,y,v,m,x=Object.keys(this.executorsByZIndex_).map(Number);for(x.sort(s),_=x.length-1;_>=0;--_){var C=x[_].toString();for(y=this.executorsByZIndex_[C],g=ru.length-1;g>=0;--g)if(void 0!==(v=y[p=ru[g]])&&(m=v.executeHitDetection(c,l,n,d,u)))return m}},t.prototype.getClipCoords=function(t){var e=this.maxExtent_;if(!e)return null;var n=e[0],i=e[1],o=e[2],r=e[3],s=[n,i,n,r,o,r,o,i];return Yn(s,0,8,2,t,s),s},t.prototype.isEmpty=function(){return y(this.executorsByZIndex_)},t.prototype.execute=function(t,e,n,i,o,r,a){var l=Object.keys(this.executorsByZIndex_).map(Number);l.sort(s),this.maxExtent_&&(t.save(),this.clip(t,n));var h,u,c,p,f,d,_=r||ru;for(a&&l.reverse(),h=0,u=l.length;h0&&(s.width=0),this.container;var h=Math.round(t.size[0]*n),u=Math.round(t.size[1]*n);s.width!=h||s.height!=u?(s.width=h,s.height=u,s.style.transform!==o&&(s.style.transform=o)):this.containerReused||r.clearRect(0,0,h,u),this.preRender(r,t);var c=t.viewState,p=c.projection,f=!1,d=!0;if(i.extent&&this.clipping){var _=cn(i.extent,p);(f=(d=ze(_,t.extent))&&!ye(_,t.extent))&&this.clipUnrotated(r,t,_)}d&&this.renderWorlds(a,t),f&&r.restore(),this.postRender(r,t);var g=i.opacity,y=this.container;return g!==parseFloat(y.style.opacity)&&(y.style.opacity=1===g?"":String(g)),this.renderedRotation_!==c.rotation&&(this.renderedRotation_=c.rotation,this.hitDetectionImageData_=null),this.container},e.prototype.getFeatures=function(t){return new Promise(function(e){if(!this.hitDetectionImageData_&&!this.animatingOrInteracting_){var n=[this.context.canvas.width,this.context.canvas.height];zn(this.pixelTransform,n);var i=this.renderedCenter_,o=this.renderedResolution_,r=this.renderedRotation_,a=this.renderedProjection_,l=this.wrappedRenderedExtent_,h=this.getLayer(),u=[],c=n[0]*cu,p=n[1]*cu;u.push(this.getRenderTransform(i,o,r,cu,c,p,0).slice());var f=h.getSource(),d=a.getExtent();if(f.getWrapX()&&a.canWrapX()&&!ye(d,l)){for(var _=l[0],g=Ge(d),y=0,v=void 0;_d[2];)v=g*++y,u.push(this.getRenderTransform(i,o,r,cu,c,p,v).slice()),_-=g}this.hitDetectionImageData_=function(t,e,n,i,o,r,a){var l=nt(t[0]*cu,t[1]*cu);l.imageSmoothingEnabled=!1;for(var h=l.canvas,u=new uu(l,cu,o,null,a),c=n.length,p=Math.floor(16777215/c),f={},d=1;d<=c;++d){var _=n[d-1],g=_.getStyleFunction()||i;if(i){var y=g(_,r);if(y){Array.isArray(y)||(y=[y]);for(var v="#"+("000000"+(d*p).toString(16)).slice(-6),m=0,x=y.length;m=n[2])){var o=Ge(n),r=Math.floor((i[0]-n[0])/o)*o;t[0]-=r,t[2]-=r}return t}(m[0],h);S[0]x[0]&&S[2]>x[2]&&m.push([S[0]-C,S[1],S[2]-C,S[3]])}if(!this.dirty_&&this.renderedResolution_==c&&this.renderedRevision_==f&&this.renderedRenderOrder_==_&&ye(this.wrappedRenderedExtent_,y))return u(this.renderedExtent_,v)||(this.hitDetectionImageData_=null,this.renderedExtent_=v),this.renderedCenter_=g,this.replayGroupChanged=!1,!0;this.replayGroup_=null,this.dirty_=!1;var E,b=new Nh(du(c,p),y,c,p);this.getLayer().getDeclutter()&&(E=new Nh(du(c,p),y,c,p));var T,O=an();if(O){for(var R=0,P=m.length;R180)&&(n[0]=Lt(i+180,360)-180),n}},Tu={OSM:ul,Vector:vh,XYZ:ll},Ou={Icon:xo,Stroke:Rl,Style:Wl}},7072:function(t,e,n){var i,o,r;function s(t){return(s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}r=function(){"use strict";function t(t,i,o,r,s){!function t(n,i,o,r,s){for(;r>o;){if(r-o>600){var a=r-o+1,l=i-o+1,h=Math.log(a),u=.5*Math.exp(2*h/3),c=.5*Math.sqrt(h*u*(a-u)/a)*(l-a/2<0?-1:1);t(n,i,Math.max(o,Math.floor(i-l*u/a+c)),Math.min(r,Math.floor(i+(a-l)*u/a+c)),s)}var p=n[i],f=o,d=r;for(e(n,o,i),s(n[r],p)>0&&e(n,o,r);f0;)d--}0===s(n[o],p)?e(n,o,d):e(n,++d,r),d<=i&&(o=d+1),i<=d&&(r=d-1)}}(t,i,o||0,r||t.length-1,s||n)}function e(t,e,n){var i=t[e];t[e]=t[n],t[n]=i}function n(t,e){return te?1:0}var i=function(t){void 0===t&&(t=9),this._maxEntries=Math.max(4,t),this._minEntries=Math.max(2,Math.ceil(.4*this._maxEntries)),this.clear()};function o(t,e,n){if(!n)return e.indexOf(t);for(var i=0;i=t.minX&&e.maxY>=t.minY}function d(t){return{children:t,height:1,leaf:!0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function _(e,n,i,o,r){for(var s=[n,i];s.length;)if(!((i=s.pop())-(n=s.pop())<=o)){var a=n+Math.ceil((i-n)/o/2)*o;t(e,a,n,i,r),s.push(n,a,a,i)}}return i.prototype.all=function(){return this._all(this.data,[])},i.prototype.search=function(t){var e=this.data,n=[];if(!f(t,e))return n;for(var i=this.toBBox,o=[];e;){for(var r=0;r=0&&o[e].children.length>this._maxEntries;)this._split(o,e),e--;this._adjustParentBBoxes(i,o,e)},i.prototype._split=function(t,e){var n=t[e],i=n.children.length,o=this._minEntries;this._chooseSplitAxis(n,o,i);var s=this._chooseSplitIndex(n,o,i),a=d(n.children.splice(s,n.children.length-s));a.height=n.height,a.leaf=n.leaf,r(n,this.toBBox),r(a,this.toBBox),e?t[e-1].children.push(a):this._splitRoot(n,a)},i.prototype._splitRoot=function(t,e){this.data=d([t,e]),this.data.height=t.height+1,this.data.leaf=!1,r(this.data,this.toBBox)},i.prototype._chooseSplitIndex=function(t,e,n){for(var i,o,r,a,l,h,c,p=1/0,f=1/0,d=e;d<=n-e;d++){var _=s(t,0,d,this.toBBox),g=s(t,d,n,this.toBBox),y=(o=_,r=g,a=Math.max(o.minX,r.minX),l=Math.max(o.minY,r.minY),h=Math.min(o.maxX,r.maxX),c=Math.min(o.maxY,r.maxY),Math.max(0,h-a)*Math.max(0,c-l)),v=u(_)+u(g);y=e;f--){var d=t.children[f];a(l,t.leaf?o(d):d),h+=c(l)}return h},i.prototype._adjustParentBBoxes=function(t,e,n){for(var i=n;i>=0;i--)a(e[i],t)},i.prototype._condense=function(t){for(var e=t.length-1,n=void 0;e>=0;e--)0===t[e].children.length?e>0?(n=t[e-1].children).splice(n.indexOf(t[e]),1):this.clear():r(t[e],this.toBBox)},i},"object"==s(e)?t.exports=r():void 0===(o="function"==typeof(i=r)?i.call(e,n,e,t):i)||(t.exports=o)}}]); +(self.webpackChunkulogger_server=self.webpackChunkulogger_server||[]).push([[521],{4392:function(t,e,n){"use strict";n.r(e),n.d(e,{Feature:function(){return qi},Map:function(){return ba},Overlay:function(){return jl},View:function(){return xs},control:function(){return Lu},extent:function(){return Fu},geom:function(){return Au},layer:function(){return Du},proj:function(){return ku},source:function(){return ju},style:function(){return Gu}});var i=function(){function t(t){this.propagationStopped,this.defaultPrevented,this.type=t,this.target=null}return t.prototype.preventDefault=function(){this.defaultPrevented=!0},t.prototype.stopPropagation=function(){this.propagationStopped=!0},t}(),r="propertychange",o=function(){function t(){this.disposed=!1}return t.prototype.dispose=function(){this.disposed||(this.disposed=!0,this.disposeInternal())},t.prototype.disposeInternal=function(){},t}();function s(t,e){return t>e?1:t0){for(r=1;r0?r-1:r:t[r-1]-e0)},e.prototype.removeEventListener=function(t,e){var n=this.listeners_&&this.listeners_[t];if(n){var i=n.indexOf(e);-1!==i&&(this.pendingRemovals_&&t in this.pendingRemovals_?(n[i]=f,++this.pendingRemovals_[t]):(n.splice(i,1),0===n.length&&delete this.listeners_[t]))}},e}(o),C="change",w="error",S="contextmenu",E="click",b="dblclick",T="keydown",O="keypress",R="load",I="resize",P="touchmove",M="wheel";function L(t,e,n,i,r){if(i&&i!==t&&(n=n.bind(i)),r){var o=n;n=function(){t.removeEventListener(e,n),o.apply(this,arguments)}}var s={target:t,type:e,listener:n};return t.addEventListener(e,n),s}function F(t,e,n,i){return L(t,e,n,i,!0)}function A(t){t&&t.target&&(t.target.removeEventListener(t.type,t.listener),g(t))}var D=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),k=function(t){function e(){var e=t.call(this)||this;return e.on=e.onInternal,e.once=e.onceInternal,e.un=e.unInternal,e.revision_=0,e}return D(e,t),e.prototype.changed=function(){++this.revision_,this.dispatchEvent(C)},e.prototype.getRevision=function(){return this.revision_},e.prototype.onInternal=function(t,e){if(Array.isArray(t)){for(var n=t.length,i=new Array(n),r=0;r0&&e%(2*Math.PI)!=0?t.animate({rotation:0,duration:this.duration_,easing:mt}):t.setRotation(0))}},e.prototype.render=function(t){var e=t.frameState;if(e){var n=e.viewState.rotation;if(n!=this.rotation_){var i="rotate("+n+"rad)";if(this.autoHide_){var r=this.element.classList.contains(ut);r||0!==n?r&&0!==n&&this.element.classList.remove(ut):this.element.classList.add(ut)}this.label_.style.transform=i}this.rotation_=n}},e}(ht),Et={RADIANS:"radians",DEGREES:"degrees",FEET:"ft",METERS:"m",PIXELS:"pixels",TILE_PIXELS:"tile-pixels",USFEET:"us-ft"};var bt={};bt[Et.RADIANS]=6370997/(2*Math.PI),bt[Et.DEGREES]=2*Math.PI*6370997/360,bt[Et.FEET]=.3048,bt[Et.METERS]=1,bt[Et.USFEET]=1200/3937;var Tt=Et,Ot=function(){function t(t){this.code_=t.code,this.units_=t.units,this.extent_=void 0!==t.extent?t.extent:null,this.worldExtent_=void 0!==t.worldExtent?t.worldExtent:null,this.axisOrientation_=void 0!==t.axisOrientation?t.axisOrientation:"enu",this.global_=void 0!==t.global&&t.global,this.canWrapX_=!(!this.global_||!this.extent_),this.getPointResolutionFunc_=t.getPointResolution,this.defaultTileGrid_=null,this.metersPerUnit_=t.metersPerUnit}return t.prototype.canWrapX=function(){return this.canWrapX_},t.prototype.getCode=function(){return this.code_},t.prototype.getExtent=function(){return this.extent_},t.prototype.getUnits=function(){return this.units_},t.prototype.getMetersPerUnit=function(){return this.metersPerUnit_||bt[this.units_]},t.prototype.getWorldExtent=function(){return this.worldExtent_},t.prototype.getAxisOrientation=function(){return this.axisOrientation_},t.prototype.isGlobal=function(){return this.global_},t.prototype.setGlobal=function(t){this.global_=t,this.canWrapX_=!(!t||!this.extent_)},t.prototype.getDefaultTileGrid=function(){return this.defaultTileGrid_},t.prototype.setDefaultTileGrid=function(t){this.defaultTileGrid_=t},t.prototype.setExtent=function(t){this.extent_=t,this.canWrapX_=!(!this.global_||!t)},t.prototype.setWorldExtent=function(t){this.worldExtent_=t},t.prototype.setGetPointResolution=function(t){this.getPointResolutionFunc_=t},t.prototype.getPointResolutionFunc=function(){return this.getPointResolutionFunc_},t}();function Rt(t,e,n){return Math.min(Math.max(t,e),n)}var It="cosh"in Math?Math.cosh:function(t){var e=Math.exp(t);return(e+1/e)/2},Pt="log2"in Math?Math.log2:function(t){return Math.log(t)*Math.LOG2E};function Mt(t,e,n,i,r,o){var s=r-n,a=o-i;if(0!==s||0!==a){var l=((t-n)*s+(e-i)*a)/(s*s+a*a);l>1?(n=r,i=o):l>0&&(n+=s*l,i+=a*l)}return Lt(t,e,n,i)}function Lt(t,e,n,i){var r=n-t,o=i-e;return r*r+o*o}function Ft(t){return t*Math.PI/180}function At(t,e){var n=t%e;return n*e<0?n+e:n}function Dt(t,e,n){return t+n*(e-t)}function kt(t,e){var n=Math.pow(10,e);return Math.round(t*n)/n}function jt(t,e){return Math.floor(kt(t,e))}function Gt(t,e){return Math.ceil(kt(t,e))}var zt=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),Wt=6378137,Nt=Math.PI*Wt,Xt=[-Nt,-Nt,Nt,Nt],Yt=[-180,-85,180,85],Bt=Wt*Math.log(Math.tan(Math.PI/2)),Kt=function(t){function e(e){return t.call(this,{code:e,units:Tt.METERS,extent:Xt,global:!0,worldExtent:Yt,getPointResolution:function(t,e){return t/It(e[1]/Wt)}})||this}return zt(e,t),e}(Ot),Zt=[new Kt("EPSG:3857"),new Kt("EPSG:102100"),new Kt("EPSG:102113"),new Kt("EPSG:900913"),new Kt("http://www.opengis.net/def/crs/EPSG/0/3857"),new Kt("http://www.opengis.net/gml/srs/epsg.xml#3857")];function Vt(t,e,n){var i=t.length,r=n>1?n:2,o=e;void 0===o&&(o=r>2?t.slice():new Array(i));for(var s=0;sBt?a=Bt:a<-Bt&&(a=-Bt),o[s+1]=a}return o}function Ut(t,e,n){var i=t.length,r=n>1?n:2,o=e;void 0===o&&(o=r>2?t.slice():new Array(i));for(var s=0;sr&&(l|=ue),ao&&(l|=he),l===ae&&(l=le),l}function Ee(){return[1/0,1/0,-1/0,-1/0]}function be(t,e,n,i,r){return r?(r[0]=t,r[1]=e,r[2]=n,r[3]=i,r):[t,e,n,i]}function Te(t){return be(1/0,1/0,-1/0,-1/0,t)}function Oe(t,e){return t[0]==e[0]&&t[2]==e[2]&&t[1]==e[1]&&t[3]==e[3]}function Re(t,e){e[0]t[2]&&(t[2]=e[0]),e[1]t[3]&&(t[3]=e[1])}function Ie(t,e,n,i,r){for(;ne[0]?i[0]=t[0]:i[0]=e[0],t[1]>e[1]?i[1]=t[1]:i[1]=e[1],t[2]=e[0]&&t[1]<=e[3]&&t[3]>=e[1]}function Be(t){return t[2]1)for(var o=t[2]-t[0],s=t[3]-t[1],a=0;a=0;--i)if(t[i]!=e[i]){n=!1;break}return n}function Ve(t,e){var n=Math.cos(e),i=Math.sin(e),r=t[0]*n-t[1]*i,o=t[1]*n+t[0]*i;return t[0]=r,t[1]=o,t}function Ue(t,e){if(e.canWrapX()){var n=Xe(e.getExtent()),i=function(t,e,n){var i=e.getExtent(),r=0;if(e.canWrapX()&&(t[0]i[2])){var o=n||Xe(i);r=Math.floor((t[0]-i[0])/o)}return r}(t,e,n);i&&(t[0]-=i*n)}return t}var He=6371008.8;function qe(t,e,n){var i=n||He,r=Ft(t[1]),o=Ft(e[1]),s=(o-r)/2,a=Ft(e[0]-t[0])/2,l=Math.sin(s)*Math.sin(s)+Math.sin(a)*Math.sin(a)*Math.cos(r)*Math.cos(o);return 2*i*Math.atan2(Math.sqrt(l),Math.sqrt(1-l))}var Je=!0;function Qe(t){Je=!(void 0===t||t)}function $e(t,e,n){var i;if(void 0!==e){for(var r=0,o=t.length;r=-180&&t[0]<=180&&t[1]>=-90&&t[1]<=90&&(Je=!1,console.warn("Call useGeographic() ol/proj once to work with [longitude, latitude] coordinates.")),t)}function mn(t,e){return gn?cn(t,e,gn):t}function xn(t,e){return gn?cn(t,gn,e):t}function Cn(t,e){if(!gn)return t;var n=nn(e).getUnits(),i=gn.getUnits();return n&&i?t*bt[n]/bt[i]:t}on(Zt),on($t),pn=Zt,fn=Vt,dn=Ut,$t.forEach((function(t){pn.forEach((function(e){ne(t,e,fn),ne(e,t,dn)}))}));var wn,Sn=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),En="units",bn="degrees",Tn="imperial",On="nautical",Rn="metric",In="us",Pn=[1,2,5],Mn=25.4/.28,Ln=function(t){function e(e){var n=this,i=e||{},r=void 0!==i.className?i.className:i.bar?"ol-scale-bar":"ol-scale-line";return(n=t.call(this,{element:document.createElement("div"),render:i.render,target:i.target})||this).on,n.once,n.un,n.innerElement_=document.createElement("div"),n.innerElement_.className=r+"-inner",n.element.className=r+" "+ct,n.element.appendChild(n.innerElement_),n.viewState_=null,n.minWidth_=void 0!==i.minWidth?i.minWidth:64,n.renderedVisible_=!1,n.renderedWidth_=void 0,n.renderedHTML_="",n.addChangeListener(En,n.handleUnitsChanged_),n.setUnits(i.units||Rn),n.scaleBar_=i.bar||!1,n.scaleBarSteps_=i.steps||4,n.scaleBarText_=i.text||!1,n.dpi_=i.dpi||void 0,n}return Sn(e,t),e.prototype.getUnits=function(){return this.get(En)},e.prototype.handleUnitsChanged_=function(){this.updateElement_()},e.prototype.setUnits=function(t){this.set(En,t)},e.prototype.setDpi=function(t){this.dpi_=t},e.prototype.updateElement_=function(){var t=this.viewState_;if(t){var e=t.center,n=t.projection,i=this.getUnits(),r=i==bn?Tt.DEGREES:Tt.METERS,o=rn(n,t.resolution,e,r),s=this.minWidth_*(this.dpi_||Mn)/Mn,a=s*o,l="";if(i==bn){var h=bt[Tt.DEGREES];(a*=h)=s)break;++d}f=this.scaleBar_?this.createScaleBar(c,u,l):u.toFixed(p<0?-p:0)+" "+l,this.renderedHTML_!=f&&(this.innerElement_.innerHTML=f,this.renderedHTML_=f),this.renderedWidth_!=c&&(this.innerElement_.style.width=c+"px",this.renderedWidth_=c),this.renderedVisible_||(this.element.style.display="",this.renderedVisible_=!0)}else this.renderedVisible_&&(this.element.style.display="none",this.renderedVisible_=!1)},e.prototype.createScaleBar=function(t,e,n){for(var i="1 : "+Math.round(this.getScaleForResolution()).toLocaleString(),r=[],o=t/this.scaleBarSteps_,s="#ffffff",a=0;a
'+this.createMarker("relative",a)+(a%2==0||2===this.scaleBarSteps_?this.createStepText(a,t,!1,e,n):"")+""),a===this.scaleBarSteps_-1&&r.push(this.createStepText(a+1,t,!0,e,n)),s="#ffffff"===s?"#000000":"#ffffff";return'
'+(this.scaleBarText_?'
'+i+"
":"")+r.join("")+"
"},e.prototype.createMarker=function(t,e){return'
'},e.prototype.createStepText=function(t,e,n,i,r){var o=(0===t?0:Math.round(i/this.scaleBarSteps_*t*100)/100)+(0===t?"":" "+r);return'
'+o+"
"},e.prototype.getScaleForResolution=function(){var t=rn(this.viewState_.projection,this.viewState_.resolution,this.viewState_.center,Tt.METERS),e=this.dpi_||Mn;return parseFloat(t.toString())*(1e3/25.4)*e},e.prototype.render=function(t){var e=t.frameState;this.viewState_=e?e.viewState:null,this.updateElement_()},e}(ht),Fn=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),An=function(t){function e(e){var n=this,i=e||{};n=t.call(this,{element:document.createElement("div"),target:i.target})||this;var r=void 0!==i.className?i.className:"ol-zoom",o=void 0!==i.delta?i.delta:1,s=void 0!==i.zoomInClassName?i.zoomInClassName:r+"-in",a=void 0!==i.zoomOutClassName?i.zoomOutClassName:r+"-out",l=void 0!==i.zoomInLabel?i.zoomInLabel:"+",h=void 0!==i.zoomOutLabel?i.zoomOutLabel:"–",u=void 0!==i.zoomInTipLabel?i.zoomInTipLabel:"Zoom in",c=void 0!==i.zoomOutTipLabel?i.zoomOutTipLabel:"Zoom out",p=document.createElement("button");p.className=s,p.setAttribute("type","button"),p.title=u,p.appendChild("string"==typeof l?document.createTextNode(l):l),p.addEventListener(E,n.handleClick_.bind(n,o),!1);var f=document.createElement("button");f.className=a,f.setAttribute("type","button"),f.title=c,f.appendChild("string"==typeof h?document.createTextNode(h):h),f.addEventListener(E,n.handleClick_.bind(n,-o),!1);var d=r+" "+"ol-unselectable "+pt,g=n.element;return g.className=d,g.appendChild(p),g.appendChild(f),n.duration_=void 0!==i.duration?i.duration:250,n}return Fn(e,t),e.prototype.handleClick_=function(t,e){e.preventDefault(),this.zoomByDelta_(t)},e.prototype.zoomByDelta_=function(t){var e=this.getMap().getView();if(e){var n=e.getZoom();if(void 0!==n){var i=e.getConstrainedZoom(n+t);this.duration_>0?(e.getAnimating()&&e.cancelAnimations(),e.animate({zoom:i,duration:this.duration_,easing:mt})):e.setZoom(i)}}},e}(ht),Dn="XY",kn="XYZ",jn="XYM",Gn="XYZM",zn="Point",Wn="LineString",Nn="LinearRing",Xn="Polygon",Yn="MultiPoint",Bn="MultiLineString",Kn="MultiPolygon",Zn="GeometryCollection",Vn="Circle";new Array(6);function Un(t,e,n,i,r,o,s){return t[0]=e,t[1]=n,t[2]=i,t[3]=r,t[4]=o,t[5]=s,t}function Hn(t,e){var n=e[0],i=e[1];return e[0]=t[0]*n+t[2]*i+t[4],e[1]=t[1]*n+t[3]*i+t[5],e}function qn(t,e,n,i,r,o,s,a){var l=Math.sin(o),h=Math.cos(o);return t[0]=i*h,t[1]=r*l,t[2]=-i*l,t[3]=r*h,t[4]=s*i*h-a*i*l+e,t[5]=s*r*l+a*r*h+n,t}function Jn(t,e){var n,i=(n=e)[0]*n[3]-n[1]*n[2];ge(0!==i,32);var r=e[0],o=e[1],s=e[2],a=e[3],l=e[4],h=e[5];return t[0]=a/i,t[1]=-o/i,t[2]=-s/i,t[3]=r/i,t[4]=(s*h-a*l)/i,t[5]=-(r*h-o*l)/i,t}function Qn(t){var e="matrix("+t.join(", ")+")";if($)return e;var n=wn||(wn=document.createElement("div"));return n.style.transform=e,n.style.transform}function $n(t,e,n,i,r,o){for(var s=o||[],a=0,l=e;l1)a=n;else{if(p>0){for(var f=0;fr&&(r=h),o=a,s=l}return r}function hi(t,e,n,i,r){for(var o=0,s=n.length;o0;){for(var c=h.pop(),p=h.pop(),f=0,d=t[p],g=t[p+1],_=t[c],y=t[c+1],v=p+i;vf&&(u=v,f=m)}f>r&&(l[(u-e)/i]=1,p+i0&&g>f)&&(d<0&&_0&&_>d)?(a=c,l=p):(o[s++]=a,o[s++]=l,h=a,u=l,a=c,l=p)}}return o[s++]=a,o[s++]=l,s}function yi(t,e,n,i,r,o,s,a){for(var l=0,h=n.length;lo&&(h-a)*(o-l)-(r-a)*(u-l)>0&&s++:u<=o&&(h-a)*(o-l)-(r-a)*(u-l)<0&&s--,a=h,l=u}return 0!==s}function Ii(t,e,n,i,r,o){if(0===n.length)return!1;if(!Ri(t,e,n[0],i,r,o))return!1;for(var s=1,a=n.length;sC&&Ii(t,e,n,i,u=(c+p)/2,g)&&(x=u,C=w),c=p}return isNaN(x)&&(x=r[o]),a?(a.push(x,g,C),a):[x,g,C]}function Mi(t,e,n,i,r){var o;for(e+=i;e=r[0]&&o[2]<=r[2]||(o[1]>=r[1]&&o[3]<=r[3]||Mi(t,e,n,i,(function(t,e){return function(t,e,n){var i=!1,r=Se(t,e),o=Se(t,n);if(r===le||o===le)i=!0;else{var s=t[0],a=t[1],l=t[2],h=t[3],u=e[0],c=e[1],p=n[0],f=n[1],d=(f-c)/(p-u),g=void 0,_=void 0;o&he&&!(r&he)&&(i=(g=p-(f-h)/d)>=s&&g<=l),i||!(o&ue)||r&ue||(i=(_=f-(p-l)*d)>=a&&_<=h),i||!(o&ce)||r&ce||(i=(g=p-(f-a)/d)>=s&&g<=l),i||!(o&pe)||r&pe||(i=(_=f-(p-s)*d)>=a&&_<=h)}return i}(r,t,e)})))))}function Fi(t,e,n,i,r){if(!function(t,e,n,i,r){return!!(Li(t,e,n,i,r)||Ri(t,e,n,i,r[0],r[1])||Ri(t,e,n,i,r[0],r[3])||Ri(t,e,n,i,r[2],r[1])||Ri(t,e,n,i,r[2],r[3]))}(t,e,n[0],i,r))return!1;if(1===n.length)return!0;for(var o=1,s=n.length;o0}function ki(t,e,n,i,r){for(var o=void 0!==r&&r,s=0,a=n.length;s>1)],e))<0?a=i+1:(l=i,h=!r);return h?a:~a}(d,v);m<0?(h=(v-d[-m-2])/(d[-m-1]-d[-m-2]),l=e+(-m-2)*i):l=e+m*i}var x=a>1?a:2,C=o||new Array(x);for(g=0;g>1;r0&&t[1]>0}function lr(t,e){return Array.isArray(t)?t:(void 0===e?e=[t,t]:(e[0]=t,e[1]=t),e)}var hr=function(){function t(t){this.opacity_=t.opacity,this.rotateWithView_=t.rotateWithView,this.rotation_=t.rotation,this.scale_=t.scale,this.scaleArray_=lr(t.scale),this.displacement_=t.displacement}return t.prototype.clone=function(){var e=this.getScale();return new t({opacity:this.getOpacity(),scale:Array.isArray(e)?e.slice():e,rotation:this.getRotation(),rotateWithView:this.getRotateWithView(),displacement:this.getDisplacement().slice()})},t.prototype.getOpacity=function(){return this.opacity_},t.prototype.getRotateWithView=function(){return this.rotateWithView_},t.prototype.getRotation=function(){return this.rotation_},t.prototype.getScale=function(){return this.scale_},t.prototype.getScaleArray=function(){return this.scaleArray_},t.prototype.getDisplacement=function(){return this.displacement_},t.prototype.getAnchor=function(){return G()},t.prototype.getImage=function(t){return G()},t.prototype.getHitDetectionImage=function(){return G()},t.prototype.getPixelRatio=function(t){return 1},t.prototype.getImageState=function(){return G()},t.prototype.getImageSize=function(){return G()},t.prototype.getOrigin=function(){return G()},t.prototype.getSize=function(){return G()},t.prototype.setDisplacement=function(t){this.displacement_=t},t.prototype.setOpacity=function(t){this.opacity_=t},t.prototype.setRotateWithView=function(t){this.rotateWithView_=t},t.prototype.setRotation=function(t){this.rotation_=t},t.prototype.setScale=function(t){this.scale_=t,this.scaleArray_=lr(t)},t.prototype.listenImageChange=function(t){G()},t.prototype.load=function(){G()},t.prototype.unlistenImageChange=function(t){G()},t}(),ur=/^#([a-f0-9]{3}|[a-f0-9]{4}(?:[a-f0-9]{2}){0,2})$/i,cr=/^([a-z]*)$|^hsla?\(.*\)$/i;function pr(t){return"string"==typeof t?t:yr(t)}function fr(t){var e=document.createElement("div");if(e.style.color=t,""!==e.style.color){document.body.appendChild(e);var n=getComputedStyle(e).color;return document.body.removeChild(e),n}return""}var dr=function(){var t={},e=0;return function(n){var i;if(t.hasOwnProperty(n))i=t[n];else{if(e>=1024){var r=0;for(var o in t)0==(3&r++)&&(delete t[o],--e)}i=function(t){var e,n,i,r,o;cr.exec(t)&&(t=fr(t));if(ur.exec(t)){var s=t.length-1,a=void 0;a=s<=4?1:2;var l=4===s||8===s;e=parseInt(t.substr(1+0*a,a),16),n=parseInt(t.substr(1+1*a,a),16),i=parseInt(t.substr(1+2*a,a),16),r=l?parseInt(t.substr(1+3*a,a),16):255,1==a&&(e=(e<<4)+e,n=(n<<4)+n,i=(i<<4)+i,l&&(r=(r<<4)+r)),o=[e,n,i,r/255]}else 0==t.indexOf("rgba(")?_r(o=t.slice(5,-1).split(",").map(Number)):0==t.indexOf("rgb(")?((o=t.slice(4,-1).split(",").map(Number)).push(1),_r(o)):ge(!1,14);return o}(n),t[n]=i,++e}return i}}();function gr(t){return Array.isArray(t)?t:dr(t)}function _r(t){return t[0]=Rt(t[0]+.5|0,0,255),t[1]=Rt(t[1]+.5|0,0,255),t[2]=Rt(t[2]+.5|0,0,255),t[3]=Rt(t[3],0,1),t}function yr(t){var e=t[0];e!=(0|e)&&(e=e+.5|0);var n=t[1];n!=(0|n)&&(n=n+.5|0);var i=t[2];return i!=(0|i)&&(i=i+.5|0),"rgba("+e+","+n+","+i+","+(void 0===t[3]?1:Math.round(100*t[3])/100)+")"}var vr=function(){function t(){this.cache_={},this.cacheSize_=0,this.maxCacheSize_=32}return t.prototype.clear=function(){this.cache_={},this.cacheSize_=0},t.prototype.canExpireCache=function(){return this.cacheSize_>this.maxCacheSize_},t.prototype.expire=function(){if(this.canExpireCache()){var t=0;for(var e in this.cache_){var n=this.cache_[e];0!=(3&t++)||n.hasListener()||(delete this.cache_[e],--this.cacheSize_)}}},t.prototype.get=function(t,e,n){var i=mr(t,e,n);return i in this.cache_?this.cache_[i]:null},t.prototype.set=function(t,e,n,i){var r=mr(t,e,n);this.cache_[r]=i,++this.cacheSize_},t.prototype.setSize=function(t){this.maxCacheSize_=t,this.expire()},t}();function mr(t,e,n){return e+":"+t+":"+(n?pr(n):"null")}var xr=new vr,Cr=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),wr=function(t){function e(e,n,i,r){var o=t.call(this)||this;return o.extent=e,o.pixelRatio_=i,o.resolution=n,o.state=r,o}return Cr(e,t),e.prototype.changed=function(){this.dispatchEvent(C)},e.prototype.getExtent=function(){return this.extent},e.prototype.getImage=function(){return G()},e.prototype.getPixelRatio=function(){return this.pixelRatio_},e.prototype.getResolution=function(){return this.resolution},e.prototype.getState=function(){return this.state},e.prototype.load=function(){G()},e}(x),Sr=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}();!function(t){function e(e,n,i,r,o,s){var a=t.call(this,e,n,i,ir)||this;return a.src_=r,a.image_=new Image,null!==o&&(a.image_.crossOrigin=o),a.unlisten_=null,a.state=ir,a.imageLoadFunction_=s,a}Sr(e,t),e.prototype.getImage=function(){return this.image_},e.prototype.handleImageError_=function(){this.state=sr,this.unlistenImage_(),this.changed()},e.prototype.handleImageLoad_=function(){void 0===this.resolution&&(this.resolution=Ge(this.extent)/this.image_.height),this.state=or,this.unlistenImage_(),this.changed()},e.prototype.load=function(){this.state!=ir&&this.state!=sr||(this.state=rr,this.changed(),this.imageLoadFunction_(this,this.src_),this.unlisten_=Er(this.image_,this.handleImageLoad_.bind(this),this.handleImageError_.bind(this)))},e.prototype.setImage=function(t){this.image_=t,this.resolution=Ge(this.extent)/this.image_.height},e.prototype.unlistenImage_=function(){this.unlisten_&&(this.unlisten_(),this.unlisten_=null)}}(wr);function Er(t,e,n){var i=t,r=!0,o=!1,s=!1,a=[F(i,R,(function(){s=!0,o||e()}))];return i.src&&tt?(o=!0,i.decode().then((function(){r&&e()})).catch((function(t){r&&(s?e():n())}))):a.push(F(i,w,n)),function(){r=!1,a.forEach(A)}}var br=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),Tr=null,Or=function(t){function e(e,n,i,r,o,s){var a=t.call(this)||this;return a.hitDetectionImage_=null,a.image_=e||new Image,null!==r&&(a.image_.crossOrigin=r),a.canvas_={},a.color_=s,a.unlisten_=null,a.imageState_=o,a.size_=i,a.src_=n,a.tainted_,a}return br(e,t),e.prototype.isTainted_=function(){if(void 0===this.tainted_&&this.imageState_===or){Tr||(Tr=nt(1,1)),Tr.drawImage(this.image_,0,0);try{Tr.getImageData(0,0,1,1),this.tainted_=!1}catch(t){Tr=null,this.tainted_=!0}}return!0===this.tainted_},e.prototype.dispatchChangeEvent_=function(){this.dispatchEvent(C)},e.prototype.handleImageError_=function(){this.imageState_=sr,this.unlistenImage_(),this.dispatchChangeEvent_()},e.prototype.handleImageLoad_=function(){this.imageState_=or,this.size_?(this.image_.width=this.size_[0],this.image_.height=this.size_[1]):this.size_=[this.image_.width,this.image_.height],this.unlistenImage_(),this.dispatchChangeEvent_()},e.prototype.getImage=function(t){return this.replaceColor_(t),this.canvas_[t]?this.canvas_[t]:this.image_},e.prototype.getPixelRatio=function(t){return this.replaceColor_(t),this.canvas_[t]?t:1},e.prototype.getImageState=function(){return this.imageState_},e.prototype.getHitDetectionImage=function(){if(!this.hitDetectionImage_)if(this.isTainted_()){var t=this.size_[0],e=this.size_[1],n=nt(t,e);n.fillRect(0,0,t,e),this.hitDetectionImage_=n.canvas}else this.hitDetectionImage_=this.image_;return this.hitDetectionImage_},e.prototype.getSize=function(){return this.size_},e.prototype.getSrc=function(){return this.src_},e.prototype.load=function(){if(this.imageState_==ir){this.imageState_=rr;try{this.image_.src=this.src_}catch(t){this.handleImageError_()}this.unlisten_=Er(this.image_,this.handleImageLoad_.bind(this),this.handleImageError_.bind(this))}},e.prototype.replaceColor_=function(t){if(this.color_&&!this.canvas_[t]&&this.imageState_===or){var e=document.createElement("canvas");this.canvas_[t]=e,e.width=Math.ceil(this.image_.width*t),e.height=Math.ceil(this.image_.height*t);var n=e.getContext("2d");if(n.scale(t,t),n.drawImage(this.image_,0,0),n.globalCompositeOperation="multiply","multiply"===n.globalCompositeOperation||this.isTainted_())n.fillStyle=pr(this.color_),n.fillRect(0,0,e.width/t,e.height/t),n.globalCompositeOperation="destination-in",n.drawImage(this.image_,0,0);else{for(var i=n.getImageData(0,0,e.width,e.height),r=i.data,o=this.color_[0]/255,s=this.color_[1]/255,a=this.color_[2]/255,l=this.color_[3],h=0,u=r.length;h0,6);var u=void 0!==i.src?ir:or;return n.color_=void 0!==i.color?gr(i.color):null,n.iconImage_=function(t,e,n,i,r,o){var s=xr.get(e,i,o);return s||(s=new Or(t,e,n,i,r,o),xr.set(e,i,o,s)),s}(l,h,void 0!==n.imgSize_?n.imgSize_:null,n.crossOrigin_,u,n.color_),n.offset_=void 0!==i.offset?i.offset:[0,0],n.offsetOrigin_=void 0!==i.offsetOrigin?i.offsetOrigin:er,n.origin_=null,n.size_=void 0!==i.size?i.size:null,n}return Rr(e,t),e.prototype.clone=function(){var t=this.getScale();return new e({anchor:this.anchor_.slice(),anchorOrigin:this.anchorOrigin_,anchorXUnits:this.anchorXUnits_,anchorYUnits:this.anchorYUnits_,color:this.color_&&this.color_.slice?this.color_.slice():this.color_||void 0,crossOrigin:this.crossOrigin_,imgSize:this.imgSize_,offset:this.offset_.slice(),offsetOrigin:this.offsetOrigin_,opacity:this.getOpacity(),rotateWithView:this.getRotateWithView(),rotation:this.getRotation(),scale:Array.isArray(t)?t.slice():t,size:null!==this.size_?this.size_.slice():void 0,src:this.getSrc()})},e.prototype.getAnchor=function(){var t=this.normalizedAnchor_;if(!t){t=this.anchor_;var e=this.getSize();if(this.anchorXUnits_==Ji||this.anchorYUnits_==Ji){if(!e)return null;t=this.anchor_.slice(),this.anchorXUnits_==Ji&&(t[0]*=e[0]),this.anchorYUnits_==Ji&&(t[1]*=e[1])}if(this.anchorOrigin_!=er){if(!e)return null;t===this.anchor_&&(t=this.anchor_.slice()),this.anchorOrigin_!=nr&&this.anchorOrigin_!=tr||(t[0]=-t[0]+e[0]),this.anchorOrigin_!=$i&&this.anchorOrigin_!=tr||(t[1]=-t[1]+e[1])}this.normalizedAnchor_=t}var n=this.getDisplacement();return[t[0]-n[0],t[1]+n[1]]},e.prototype.setAnchor=function(t){this.anchor_=t,this.normalizedAnchor_=null},e.prototype.getColor=function(){return this.color_},e.prototype.getImage=function(t){return this.iconImage_.getImage(t)},e.prototype.getPixelRatio=function(t){return this.iconImage_.getPixelRatio(t)},e.prototype.getImageSize=function(){return this.iconImage_.getSize()},e.prototype.getImageState=function(){return this.iconImage_.getImageState()},e.prototype.getHitDetectionImage=function(){return this.iconImage_.getHitDetectionImage()},e.prototype.getOrigin=function(){if(this.origin_)return this.origin_;var t=this.offset_;if(this.offsetOrigin_!=er){var e=this.getSize(),n=this.iconImage_.getSize();if(!e||!n)return null;t=t.slice(),this.offsetOrigin_!=nr&&this.offsetOrigin_!=tr||(t[0]=n[0]-e[0]-t[0]),this.offsetOrigin_!=$i&&this.offsetOrigin_!=tr||(t[1]=n[1]-e[1]-t[1])}return this.origin_=t,this.origin_},e.prototype.getSrc=function(){return this.iconImage_.getSrc()},e.prototype.getSize=function(){return this.size_?this.size_:this.iconImage_.getSize()},e.prototype.listenImageChange=function(t){this.iconImage_.addEventListener(C,t)},e.prototype.load=function(){this.iconImage_.load()},e.prototype.unlistenImageChange=function(t){this.iconImage_.removeEventListener(C,t)},e}(hr),Pr="opacity",Mr="visible",Lr="extent",Fr="zIndex",Ar="maxResolution",Dr="minResolution",kr="maxZoom",jr="minZoom",Gr="source",zr="map";function Wr(t){return(Wr="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var Nr=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),Xr=function(t){function e(e){var n=t.call(this)||this;n.on,n.once,n.un,n.background_=e.background;var i=d({},e);return"object"===Wr(e.properties)&&(delete i.properties,d(i,e.properties)),i[Pr]=void 0!==e.opacity?e.opacity:1,ge("number"==typeof i[Pr],64),i[Mr]=void 0===e.visible||e.visible,i[Fr]=e.zIndex,i[Ar]=void 0!==e.maxResolution?e.maxResolution:1/0,i[Dr]=void 0!==e.minResolution?e.minResolution:0,i[jr]=void 0!==e.minZoom?e.minZoom:-1/0,i[kr]=void 0!==e.maxZoom?e.maxZoom:1/0,n.className_=void 0!==i.className?i.className:"ol-layer",delete i.className,n.setProperties(i),n.state_=null,n}return Nr(e,t),e.prototype.getBackground=function(){return this.background_},e.prototype.getClassName=function(){return this.className_},e.prototype.getLayerState=function(t){var e=this.state_||{layer:this,managed:void 0===t||t},n=this.getZIndex();return e.opacity=Rt(Math.round(100*this.getOpacity())/100,0,1),e.visible=this.getVisible(),e.extent=this.getExtent(),e.zIndex=void 0!==n||e.managed?n:1/0,e.maxResolution=this.getMaxResolution(),e.minResolution=Math.max(this.getMinResolution(),0),e.minZoom=this.getMinZoom(),e.maxZoom=this.getMaxZoom(),this.state_=e,e},e.prototype.getLayersArray=function(t){return G()},e.prototype.getLayerStatesArray=function(t){return G()},e.prototype.getExtent=function(){return this.get(Lr)},e.prototype.getMaxResolution=function(){return this.get(Ar)},e.prototype.getMinResolution=function(){return this.get(Dr)},e.prototype.getMinZoom=function(){return this.get(jr)},e.prototype.getMaxZoom=function(){return this.get(kr)},e.prototype.getOpacity=function(){return this.get(Pr)},e.prototype.getSourceState=function(){return G()},e.prototype.getVisible=function(){return this.get(Mr)},e.prototype.getZIndex=function(){return this.get(Fr)},e.prototype.setBackground=function(t){this.background_=t,this.changed()},e.prototype.setExtent=function(t){this.set(Lr,t)},e.prototype.setMaxResolution=function(t){this.set(Ar,t)},e.prototype.setMinResolution=function(t){this.set(Dr,t)},e.prototype.setMaxZoom=function(t){this.set(kr,t)},e.prototype.setMinZoom=function(t){this.set(jr,t)},e.prototype.setOpacity=function(t){ge("number"==typeof t,64),this.set(Pr,t)},e.prototype.setVisible=function(t){this.set(Mr,t)},e.prototype.setZIndex=function(t){this.set(Fr,t)},e.prototype.disposeInternal=function(){this.state_&&(this.state_.layer=null,this.state_=null),t.prototype.disposeInternal.call(this)},e}(B),Yr="prerender",Br="postrender",Kr="precompose",Zr="postcompose",Vr="rendercomplete",Ur="undefined",Hr="ready",qr=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}();function Jr(t,e){if(!t.visible)return!1;var n=e.resolution;if(n=t.maxResolution)return!1;var i=e.zoom;return i>t.minZoom&&i<=t.maxZoom}var Qr=function(t){function e(e){var n=this,i=d({},e);delete i.source,(n=t.call(this,i)||this).on,n.once,n.un,n.mapPrecomposeKey_=null,n.mapRenderKey_=null,n.sourceChangeKey_=null,n.renderer_=null,n.rendered=!1,e.render&&(n.render=e.render),e.map&&n.setMap(e.map),n.addChangeListener(Gr,n.handleSourcePropertyChange_);var r=e.source?e.source:null;return n.setSource(r),n}return qr(e,t),e.prototype.getLayersArray=function(t){var e=t||[];return e.push(this),e},e.prototype.getLayerStatesArray=function(t){var e=t||[];return e.push(this.getLayerState()),e},e.prototype.getSource=function(){return this.get(Gr)||null},e.prototype.getRenderSource=function(){return this.getSource()},e.prototype.getSourceState=function(){var t=this.getSource();return t?t.getState():Ur},e.prototype.handleSourceChange_=function(){this.changed()},e.prototype.handleSourcePropertyChange_=function(){this.sourceChangeKey_&&(A(this.sourceChangeKey_),this.sourceChangeKey_=null);var t=this.getSource();t&&(this.sourceChangeKey_=L(t,C,this.handleSourceChange_,this)),this.changed()},e.prototype.getFeatures=function(t){return this.renderer_?this.renderer_.getFeatures(t):new Promise((function(t){return t([])}))},e.prototype.getData=function(t){return this.renderer_&&this.rendered?this.renderer_.getData(t):null},e.prototype.render=function(t,e){var n=this.getRenderer();if(n.prepareFrame(t))return this.rendered=!0,n.renderFrame(t,e)},e.prototype.unrender=function(){this.rendered=!1},e.prototype.setMapInternal=function(t){t||this.unrender(),this.set(zr,t)},e.prototype.getMapInternal=function(){return this.get(zr)},e.prototype.setMap=function(t){this.mapPrecomposeKey_&&(A(this.mapPrecomposeKey_),this.mapPrecomposeKey_=null),t||this.changed(),this.mapRenderKey_&&(A(this.mapRenderKey_),this.mapRenderKey_=null),t&&(this.mapPrecomposeKey_=L(t,Kr,(function(t){var e=t.frameState.layerStatesArray,n=this.getLayerState(!1);ge(!e.some((function(t){return t.layer===n.layer})),67),e.push(n)}),this),this.mapRenderKey_=L(this,C,t.render,t),this.changed())},e.prototype.setSource=function(t){this.set(Gr,t)},e.prototype.getRenderer=function(){return this.renderer_||(this.renderer_=this.createRenderer()),this.renderer_},e.prototype.hasRenderer=function(){return!!this.renderer_},e.prototype.createRenderer=function(){return null},e.prototype.disposeInternal=function(){this.renderer_&&(this.renderer_.dispose(),delete this.renderer_),this.setSource(null),t.prototype.disposeInternal.call(this)},e}(Xr),$r=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}();function to(t,e){xr.expire()}var eo=function(t){function e(e){var n=t.call(this)||this;return n.map_=e,n}return $r(e,t),e.prototype.dispatchRenderEvent=function(t,e){G()},e.prototype.calculateMatrices2D=function(t){var e=t.viewState,n=t.coordinateToPixelTransform,i=t.pixelToCoordinateTransform;qn(n,t.size[0]/2,t.size[1]/2,1/e.resolution,-1/e.resolution,-e.rotation,-e.center[0],-e.center[1]),Jn(i,n)},e.prototype.forEachFeatureAtCoordinate=function(t,e,n,i,r,o,s,a){var l,h=e.viewState;function u(t,e,n,i){return r.call(o,e,t?n:null,i)}var c=h.projection,p=Ue(t.slice(),c),f=[[0,0]];if(c.canWrapX()&&i){var d=Xe(c.getExtent());f.push([-d,0],[d,0])}for(var g=e.layerStatesArray,_=g.length,y=[],v=[],m=0;m=0;--x){var C=g[x],w=C.layer;if(w.hasRenderer()&&Jr(C,h)&&s.call(a,w)){var S=w.getRenderer(),E=w.getSource();if(S&&E){var b=E.getWrapX()?p:t,T=u.bind(null,C.managed);v[0]=b[0]+f[m][0],v[1]=b[1]+f[m][1],l=S.forEachFeatureAtCoordinate(v,e,n,T,y)}if(l)return l}}if(0!==y.length){var O=1/y.length;return y.forEach((function(t,e){return t.distanceSq+=e*O})),y.sort((function(t,e){return t.distanceSq-e.distanceSq})),y.some((function(t){return l=t.callback(t.feature,t.layer,t.geometry)})),l}},e.prototype.forEachLayerAtPixel=function(t,e,n,i,r){return G()},e.prototype.hasFeatureAtCoordinate=function(t,e,n,i,r,o){return void 0!==this.forEachFeatureAtCoordinate(t,e,n,i,c,this,r,o)},e.prototype.getMap=function(){return this.map_},e.prototype.renderFrame=function(t){G()},e.prototype.scheduleExpireIconCache=function(t){xr.canExpireCache()&&t.postRenderFunctions.push(to)},e}(o),no=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),io=function(t){function e(e,n,i,r){var o=t.call(this,e)||this;return o.inversePixelTransform=n,o.frameState=i,o.context=r,o}return no(e,t),e}(i),ro="10px sans-serif",oo="#000",so="round",ao=[],lo="round",ho="#000",uo="center",co="middle",po=[0,0,0,0],fo=new B;(new x).setSize=function(){console.warn("labelCache is deprecated.")};var go,_o,yo=null,vo={},mo=function(){var t,e,n="32px ",i=["monospace","serif"],r=i.length,o="wmytzilWMYTZIL@#/&?$%10";function s(t,s,a){for(var l=!0,h=0;h=0;--o)i[o].renderDeclutter(t);!function(t,e){for(var n=t.childNodes,i=0;;++i){var r=n[i],o=e[i];if(!r&&!o)break;r!==o&&(r?o?t.insertBefore(o,r):(t.removeChild(r),--i):t.appendChild(o))}}(this.element_,this.children_),this.dispatchRenderEvent(Zr,t),this.renderedVisible_||(this.element_.style.display="",this.renderedVisible_=!0),this.scheduleExpireIconCache(t)}else this.renderedVisible_&&(this.element_.style.display="none",this.renderedVisible_=!1)},e.prototype.forEachLayerAtPixel=function(t,e,n,i,r){for(var o=e.viewState,s=e.layerStatesArray,a=s.length-1;a>=0;--a){var l=s[a],h=l.layer;if(h.hasRenderer()&&Jr(l,o)&&r(h)){var u=h.getRenderer().getDataAtPixel(t,e,n);if(u){var c=i(h,u);if(c)return c}}}},e}(eo),Oo="add",Ro="remove",Io=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),Po="length",Mo=function(t){function e(e,n,i){var r=t.call(this,e)||this;return r.element=n,r.index=i,r}return Io(e,t),e}(i),Lo=function(t){function e(e,n){var i=t.call(this)||this;i.on,i.once,i.un;var r=n||{};if(i.unique_=!!r.unique,i.array_=e||[],i.unique_)for(var o=0,s=i.array_.length;o0;)this.pop()},e.prototype.extend=function(t){for(var e=0,n=t.length;ethis.moveTolerance_||Math.abs(t.clientY-this.down_.clientY)>this.moveTolerance_},e.prototype.disposeInternal=function(){this.relayedListenerKey_&&(A(this.relayedListenerKey_),this.relayedListenerKey_=null),this.element_.removeEventListener(P,this.boundHandleTouchMove_),this.pointerdownListenerKey_&&(A(this.pointerdownListenerKey_),this.pointerdownListenerKey_=null),this.dragListenerKeys_.forEach(A),this.dragListenerKeys_.length=0,this.element_=null,t.prototype.disposeInternal.call(this)},e}(x),Zo="layergroup",Vo="size",Uo="target",Ho="view",qo=1/0,Jo=function(){function t(t,e){this.priorityFunction_=t,this.keyFunction_=e,this.elements_=[],this.priorities_=[],this.queuedElements_={}}return t.prototype.clear=function(){this.elements_.length=0,this.priorities_.length=0,g(this.queuedElements_)},t.prototype.dequeue=function(){var t=this.elements_,e=this.priorities_,n=t[0];1==t.length?(t.length=0,e.length=0):(t[0]=t.pop(),e[0]=e.pop(),this.siftUp_(0));var i=this.keyFunction_(n);return delete this.queuedElements_[i],n},t.prototype.enqueue=function(t){ge(!(this.keyFunction_(t)in this.queuedElements_),31);var e=this.priorityFunction_(t);return e!=qo&&(this.elements_.push(t),this.priorities_.push(e),this.queuedElements_[this.keyFunction_(t)]=!0,this.siftDown_(0,this.elements_.length-1),!0)},t.prototype.getCount=function(){return this.elements_.length},t.prototype.getLeftChildIndex_=function(t){return 2*t+1},t.prototype.getRightChildIndex_=function(t){return 2*t+2},t.prototype.getParentIndex_=function(t){return t-1>>1},t.prototype.heapify_=function(){var t;for(t=(this.elements_.length>>1)-1;t>=0;t--)this.siftUp_(t)},t.prototype.isEmpty=function(){return 0===this.elements_.length},t.prototype.isKeyQueued=function(t){return t in this.queuedElements_},t.prototype.isQueued=function(t){return this.isKeyQueued(this.keyFunction_(t))},t.prototype.siftUp_=function(t){for(var e=this.elements_,n=this.priorities_,i=e.length,r=e[t],o=n[t],s=t;t>1;){var a=this.getLeftChildIndex_(t),l=this.getRightChildIndex_(t),h=lt;){var s=this.getParentIndex_(e);if(!(i[s]>o))break;n[e]=n[s],i[e]=i[s],e=s}n[e]=r,i[e]=o},t.prototype.reprioritize=function(){var t,e,n,i=this.priorityFunction_,r=this.elements_,o=this.priorities_,s=0,a=r.length;for(e=0;e0;)i=(n=this.dequeue()[0]).getKey(),n.getState()!==Qo||i in this.tilesLoadingKeys_||(this.tilesLoadingKeys_[i]=!0,++this.tilesLoading_,++r,n.load())},e}(Jo);var os=0,ss=1,as={CENTER:"center",RESOLUTION:"resolution",ROTATION:"rotation"},ls=256;function hs(t,e,n){return function(i,r,o,s,a){if(i){if(!r&&!e)return i;var l=e?0:o[0]*r,h=e?0:o[1]*r,u=a?a[0]:0,c=a?a[1]:0,p=t[0]+l/2+u,f=t[2]-l/2+u,d=t[1]+h/2+c,g=t[3]-h/2+c;p>f&&(f=p=(f+p)/2),d>g&&(g=d=(g+d)/2);var _=Rt(i[0],p,f),y=Rt(i[1],d,g);if(s&&n&&r){var v=30*r;_+=-v*Math.log(1+Math.max(0,p-i[0])/v)+v*Math.log(1+Math.max(0,i[0]-f)/v),y+=-v*Math.log(1+Math.max(0,d-i[1])/v)+v*Math.log(1+Math.max(0,i[1]-g)/v)}return[_,y]}}}function us(t){return t}function cs(t,e,n,i){var r=Xe(e)/n[0],o=Ge(e)/n[1];return i?Math.min(t,Math.max(r,o)):Math.min(t,Math.min(r,o))}function ps(t,e,n){var i=Math.min(t,e);return i*=Math.log(1+50*Math.max(0,t/e-1))/50+1,n&&(i=Math.max(i,n),i/=Math.log(1+50*Math.max(0,n/t-1))/50+1),Rt(i,n/2,2*e)}function fs(t,e,n,i,r){return function(o,s,a,l){if(void 0!==o){var h=i?cs(t,i,a,r):t;return(void 0===n||n)&&l?ps(o,h,e):Rt(o,e,h)}}}function ds(t){return void 0!==t?0:void 0}function gs(t){return void 0!==t?t:void 0}var _s=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}();function ys(t,e){setTimeout((function(){t(e)}),0)}function vs(t){return!(t.sourceCenter&&t.targetCenter&&!Ze(t.sourceCenter,t.targetCenter))&&(t.sourceResolution===t.targetResolution&&t.sourceRotation===t.targetRotation)}function ms(t,e,n,i,r){var o=Math.cos(-r),s=Math.sin(-r),a=t[0]*o-t[1]*s,l=t[1]*o+t[0]*s;return[(a+=(e[0]/2-n[0])*i)*o-(l+=(n[1]-e[1]/2)*i)*(s=-s),l*o+a*s]}var xs=function(t){function e(e){var n=t.call(this)||this;n.on,n.once,n.un;var i=d({},e);return n.hints_=[0,0],n.animations_=[],n.updateAnimationKey_,n.projection_=sn(i.projection,"EPSG:3857"),n.viewportSize_=[100,100],n.targetCenter_=null,n.targetResolution_,n.targetRotation_,n.nextCenter_=null,n.nextResolution_,n.nextRotation_,n.cancelAnchor_=void 0,i.center&&(i.center=vn(i.center,n.projection_)),i.extent&&(i.extent=xn(i.extent,n.projection_)),i.projection&&Qe(),n.applyOptions_(i),n}return _s(e,t),e.prototype.applyOptions_=function(t){var e=d({},t);for(var n in as)delete e[n];this.setProperties(e,!0);var i=function(t){var e,n,i,r=28,o=2,s=void 0!==t.minZoom?t.minZoom:0,l=void 0!==t.maxZoom?t.maxZoom:r,h=void 0!==t.zoomFactor?t.zoomFactor:o,u=void 0!==t.multiWorld&&t.multiWorld,c=void 0===t.smoothResolutionConstraint||t.smoothResolutionConstraint,p=void 0!==t.showFullExtent&&t.showFullExtent,f=sn(t.projection,"EPSG:3857"),d=f.getExtent(),g=t.constrainOnlyCenter,_=t.extent;u||_||!f.isGlobal()||(g=!1,_=d);if(void 0!==t.resolutions){var y=t.resolutions;n=y[s],i=void 0!==y[l]?y[l]:y[y.length-1],e=t.constrainResolution?function(t,e,n,i){return function(r,o,s,l){if(void 0!==r){var h=t[0],u=t[t.length-1],c=n?cs(h,n,s,i):h;if(l)return void 0===e||e?ps(r,c,u):Rt(r,u,c);var p=Math.min(c,r),f=Math.floor(a(t,p,o));return t[f]>c&&f1&&"function"==typeof arguments[n-1]&&(e=arguments[n-1],--n);for(var i=0;i0},e.prototype.getInteracting=function(){return this.hints_[ss]>0},e.prototype.cancelAnimations=function(){var t;this.setHint(os,-this.hints_[os]);for(var e=0,n=this.animations_.length;e=0;--n){for(var i=this.animations_[n],r=!0,o=0,s=i.length;o0?l/a.duration:1;h>=1?(a.complete=!0,h=1):r=!1;var u=a.easing(h);if(a.sourceCenter){var c=a.sourceCenter[0],p=a.sourceCenter[1],f=a.targetCenter[0],d=a.targetCenter[1];this.nextCenter_=a.targetCenter;var g=c+u*(f-c),_=p+u*(d-p);this.targetCenter_=[g,_]}if(a.sourceResolution&&a.targetResolution){var y=1===u?a.targetResolution:a.sourceResolution+u*(a.targetResolution-a.sourceResolution);if(a.anchor){var v=this.getViewportSize_(this.getRotation()),m=this.constraints_.resolution(y,0,v,!0);this.targetCenter_=this.calculateCenterZoom(m,a.anchor)}this.nextResolution_=a.targetResolution,this.targetResolution_=y,this.applyTargetState_(!0)}if(void 0!==a.sourceRotation&&void 0!==a.targetRotation){var x=1===u?At(a.targetRotation+Math.PI,2*Math.PI)-Math.PI:a.sourceRotation+u*(a.targetRotation-a.sourceRotation);if(a.anchor){var C=this.constraints_.rotation(x,!0);this.targetCenter_=this.calculateCenterRotate(C,a.anchor)}this.nextRotation_=a.targetRotation,this.targetRotation_=x}if(this.applyTargetState_(!0),e=!0,!a.complete)break}}if(r){this.animations_[n]=null,this.setHint(os,-1),this.nextCenter_=null,this.nextResolution_=NaN,this.nextRotation_=NaN;var w=i[0].callback;w&&ys(w,!0)}}this.animations_=this.animations_.filter(Boolean),e&&void 0===this.updateAnimationKey_&&(this.updateAnimationKey_=requestAnimationFrame(this.updateAnimations_.bind(this)))}},e.prototype.calculateCenterRotate=function(t,e){var n,i,r,o=this.getCenterInternal();return void 0!==o&&(Ve(n=[o[0]-e[0],o[1]-e[1]],t-this.getRotation()),r=e,(i=n)[0]+=+r[0],i[1]+=+r[1]),n},e.prototype.calculateCenterZoom=function(t,e){var n,i=this.getCenterInternal(),r=this.getResolution();void 0!==i&&void 0!==r&&(n=[e[0]-t*(e[0]-i[0])/r,e[1]-t*(e[1]-i[1])/r]);return n},e.prototype.getViewportSize_=function(t){var e=this.viewportSize_;if(t){var n=e[0],i=e[1];return[Math.abs(n*Math.cos(t))+Math.abs(i*Math.sin(t)),Math.abs(n*Math.sin(t))+Math.abs(i*Math.cos(t))]}return e},e.prototype.setViewportSize=function(t){this.viewportSize_=Array.isArray(t)?t.slice():[100,100],this.getAnimating()||this.resolveConstraints(0)},e.prototype.getCenter=function(){var t=this.getCenterInternal();return t?yn(t,this.getProjection()):t},e.prototype.getCenterInternal=function(){return this.get(as.CENTER)},e.prototype.getConstraints=function(){return this.constraints_},e.prototype.getConstrainResolution=function(){return this.get("constrainResolution")},e.prototype.getHints=function(t){return void 0!==t?(t[0]=this.hints_[0],t[1]=this.hints_[1],t):this.hints_.slice()},e.prototype.calculateExtent=function(t){return mn(this.calculateExtentInternal(t),this.getProjection())},e.prototype.calculateExtentInternal=function(t){var e=t||this.getViewportSizeMinusPadding_(),n=this.getCenterInternal();ge(n,1);var i=this.getResolution();ge(void 0!==i,2);var r=this.getRotation();return ge(void 0!==r,3),je(n,i,r,e)},e.prototype.getMaxResolution=function(){return this.maxResolution_},e.prototype.getMinResolution=function(){return this.minResolution_},e.prototype.getMaxZoom=function(){return this.getZoomForResolution(this.minResolution_)},e.prototype.setMaxZoom=function(t){this.applyOptions_(this.getUpdatedOptions_({maxZoom:t}))},e.prototype.getMinZoom=function(){return this.getZoomForResolution(this.maxResolution_)},e.prototype.setMinZoom=function(t){this.applyOptions_(this.getUpdatedOptions_({minZoom:t}))},e.prototype.setConstrainResolution=function(t){this.applyOptions_(this.getUpdatedOptions_({constrainResolution:t}))},e.prototype.getProjection=function(){return this.projection_},e.prototype.getResolution=function(){return this.get(as.RESOLUTION)},e.prototype.getResolutions=function(){return this.resolutions_},e.prototype.getResolutionForExtent=function(t,e){return this.getResolutionForExtentInternal(xn(t,this.getProjection()),e)},e.prototype.getResolutionForExtentInternal=function(t,e){var n=e||this.getViewportSizeMinusPadding_(),i=Xe(t)/n[0],r=Ge(t)/n[1];return Math.max(i,r)},e.prototype.getResolutionForValueFunction=function(t){var e=t||2,n=this.getConstrainedResolution(this.maxResolution_),i=this.minResolution_,r=Math.log(n/i)/Math.log(e);return function(t){return n/Math.pow(e,t*r)}},e.prototype.getRotation=function(){return this.get(as.ROTATION)},e.prototype.getValueForResolutionFunction=function(t){var e=Math.log(t||2),n=this.getConstrainedResolution(this.maxResolution_),i=this.minResolution_,r=Math.log(n/i)/e;return function(t){return Math.log(n/t)/e/r}},e.prototype.getViewportSizeMinusPadding_=function(t){var e=this.getViewportSize_(t),n=this.padding_;return n&&(e=[e[0]-n[1]-n[3],e[1]-n[0]-n[2]]),e},e.prototype.getState=function(){var t=this.getProjection(),e=this.getResolution(),n=this.getRotation(),i=this.getCenterInternal(),r=this.padding_;if(r){var o=this.getViewportSizeMinusPadding_();i=ms(i,this.getViewportSize_(),[o[0]/2+r[3],o[1]/2+r[0]],e,n)}return{center:i.slice(0),projection:void 0!==t?t:null,resolution:e,nextCenter:this.nextCenter_,nextResolution:this.nextResolution_,nextRotation:this.nextRotation_,rotation:n,zoom:this.getZoom()}},e.prototype.getZoom=function(){var t,e=this.getResolution();return void 0!==e&&(t=this.getZoomForResolution(e)),t},e.prototype.getZoomForResolution=function(t){var e,n,i=this.minZoom_||0;if(this.resolutions_){var r=a(this.resolutions_,t,1);i=r,e=this.resolutions_[r],n=r==this.resolutions_.length-1?2:e/this.resolutions_[r+1]}else e=this.maxResolution_,n=this.zoomFactor_;return i+Math.log(e/t)/Math.log(n)},e.prototype.getResolutionForZoom=function(t){if(this.resolutions_){if(this.resolutions_.length<=1)return 0;var e=Rt(Math.floor(t),0,this.resolutions_.length-2),n=this.resolutions_[e]/this.resolutions_[e+1];return this.resolutions_[e]/Math.pow(n,Rt(t-e,0,1))}return this.maxResolution_/Math.pow(this.zoomFactor_,t-this.minZoom_)},e.prototype.fit=function(t,e){var n;if(ge(Array.isArray(t)||"function"==typeof t.getSimplifiedGeometry,24),Array.isArray(t))ge(!Be(t),25),n=Ni(i=xn(t,this.getProjection()));else if(t.getType()===Vn){var i;(n=Ni(i=xn(t.getExtent(),this.getProjection()))).rotate(this.getRotation(),De(i))}else{var r=_n();n=r?t.clone().transform(r,this.getProjection()):t}this.fitInternal(n,e)},e.prototype.rotatedExtentForGeometry=function(t){for(var e=this.getRotation(),n=Math.cos(e),i=Math.sin(-e),r=t.getFlatCoordinates(),o=t.getStride(),s=1/0,a=1/0,l=-1/0,h=-1/0,u=0,c=r.length;u=0;a--){var l=s[a];if(l.getMap()===this&&l.getActive()&&this.getTargetElement())if(!l.handleEvent(t)||t.propagationStopped)break}}},e.prototype.handlePostRender=function(){var t=this.frameState_,e=this.tileQueue_;if(!e.isEmpty()){var n=this.maxTilesLoading_,i=n;if(t){var r=t.viewHints;if(r[os]||r[ss]){var o=Date.now()-t.time>8;n=o?0:8,i=o?0:2}}e.getTilesLoading()0;if(this.renderedVisible_!=n&&(this.element.style.display=n?"":"none",this.renderedVisible_=n),!u(e,this.renderedAttributions_)){at(this.ulElement_);for(var i=0,r=e.length;i0}}else if(t.type==No.POINTERDOWN){var i=this.handleDownEvent(t);this.handlingDownUpSequence=i,e=this.stopDown(i)}else t.type==No.POINTERMOVE&&this.handleMoveEvent(t);return!e},e.prototype.handleMoveEvent=function(t){},e.prototype.handleUpEvent=function(t){return!1},e.prototype.stopDown=function(t){return t},e.prototype.updateTrackedPointers_=function(t){if(function(t){var e=t.type;return e===No.POINTERDOWN||e===No.POINTERDRAG||e===No.POINTERUP}(t)){var e=t.originalEvent,n=e.pointerId.toString();t.type==No.POINTERUP?delete this.trackedPointers_[n]:(t.type==No.POINTERDOWN||n in this.trackedPointers_)&&(this.trackedPointers_[n]=e),this.targetPointers=_(this.trackedPointers_)}},e}(Ps);function ks(t){var e=arguments;return function(t){for(var n=!0,i=0,r=e.length;i0&&this.condition_(t)){var e=t.map.getView();return this.lastCentroid=null,e.getAnimating()&&e.cancelAnimations(),this.kinetic_&&this.kinetic_.begin(),this.noKinetic_=this.targetPointers.length>1,!0}return!1},e}(Ds),Us=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),Hs=function(t){function e(e){var n=this,i=e||{};return(n=t.call(this,{stopDown:p})||this).condition_=i.condition?i.condition:js,n.lastAngle_=void 0,n.duration_=void 0!==i.duration?i.duration:250,n}return Us(e,t),e.prototype.handleDragEvent=function(t){if(Bs(t)){var e=t.map,n=e.getView();if(n.getConstraints().rotation!==ds){var i=e.getSize(),r=t.pixel,o=Math.atan2(i[1]/2-r[1],r[0]-i[0]/2);if(void 0!==this.lastAngle_){var s=o-this.lastAngle_;n.adjustRotationInternal(-s)}this.lastAngle_=o}}},e.prototype.handleUpEvent=function(t){return!Bs(t)||(t.map.getView().endInteraction(this.duration_),!1)},e.prototype.handleDownEvent=function(t){return!!Bs(t)&&(!(!Ws(t)||!this.condition_(t))&&(t.map.getView().beginInteraction(),this.lastAngle_=void 0,!0))},e}(Ds),qs=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),Js=function(t){function e(e){var n=t.call(this)||this;return n.geometry_=null,n.element_=document.createElement("div"),n.element_.style.position="absolute",n.element_.style.pointerEvents="auto",n.element_.className="ol-box "+e,n.map_=null,n.startPixel_=null,n.endPixel_=null,n}return qs(e,t),e.prototype.disposeInternal=function(){this.setMap(null)},e.prototype.render_=function(){var t=this.startPixel_,e=this.endPixel_,n="px",i=this.element_.style;i.left=Math.min(t[0],e[0])+n,i.top=Math.min(t[1],e[1])+n,i.width=Math.abs(e[0]-t[0])+n,i.height=Math.abs(e[1]-t[1])+n},e.prototype.setMap=function(t){if(this.map_){this.map_.getOverlayContainer().removeChild(this.element_);var e=this.element_.style;e.left="inherit",e.top="inherit",e.width="inherit",e.height="inherit"}this.map_=t,this.map_&&this.map_.getOverlayContainer().appendChild(this.element_)},e.prototype.setPixels=function(t,e){this.startPixel_=t,this.endPixel_=e,this.createOrUpdateGeometry(),this.render_()},e.prototype.createOrUpdateGeometry=function(){var t=this.startPixel_,e=this.endPixel_,n=[t,[t[0],e[1]],e,[e[0],t[1]]].map(this.map_.getCoordinateFromPixelInternal,this.map_);n[4]=n[0].slice(),this.geometry_?this.geometry_.setCoordinates([n]):this.geometry_=new Wi([n])},e.prototype.getGeometry=function(){return this.geometry_},e}(o),Qs=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),$s="boxstart",ta="boxdrag",ea="boxend",na="boxcancel",ia=function(t){function e(e,n,i){var r=t.call(this,e)||this;return r.coordinate=n,r.mapBrowserEvent=i,r}return Qs(e,t),e}(i),ra=function(t){function e(e){var n=t.call(this)||this;n.on,n.once,n.un;var i=e||{};return n.box_=new Js(i.className||"ol-dragbox"),n.minArea_=void 0!==i.minArea?i.minArea:64,i.onBoxEnd&&(n.onBoxEnd=i.onBoxEnd),n.startPixel_=null,n.condition_=i.condition?i.condition:Ws,n.boxEndCondition_=i.boxEndCondition?i.boxEndCondition:n.defaultBoxEndCondition,n}return Qs(e,t),e.prototype.defaultBoxEndCondition=function(t,e,n){var i=n[0]-e[0],r=n[1]-e[1];return i*i+r*r>=this.minArea_},e.prototype.getGeometry=function(){return this.box_.getGeometry()},e.prototype.handleDragEvent=function(t){this.box_.setPixels(this.startPixel_,t.pixel),this.dispatchEvent(new ia(ta,t.coordinate,t))},e.prototype.handleUpEvent=function(t){this.box_.setMap(null);var e=this.boxEndCondition_(t,this.startPixel_,t.pixel);return e&&this.onBoxEnd(t),this.dispatchEvent(new ia(e?ea:na,t.coordinate,t)),!1},e.prototype.handleDownEvent=function(t){return!!this.condition_(t)&&(this.startPixel_=t.pixel,this.box_.setMap(t.map),this.box_.setPixels(this.startPixel_,this.startPixel_),this.dispatchEvent(new ia($s,t.coordinate,t)),!0)},e.prototype.onBoxEnd=function(t){},e}(Ds),oa=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),sa=function(t){function e(e){var n=this,i=e||{},r=i.condition?i.condition:Xs;return(n=t.call(this,{condition:r,className:i.className||"ol-dragzoom",minArea:i.minArea})||this).duration_=void 0!==i.duration?i.duration:200,n.out_=void 0!==i.out&&i.out,n}return oa(e,t),e.prototype.onBoxEnd=function(t){var e=this.getMap().getView(),n=this.getGeometry();if(this.out_){var i=e.rotatedExtentForGeometry(n),r=e.getResolutionForExtentInternal(i),o=e.getResolution()/r;(n=n.clone()).scale(o*o)}e.fitInternal(n,{duration:this.duration_,easing:mt})},e}(ra),aa=37,la=38,ha=39,ua=40,ca=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),pa=function(t){function e(e){var n=t.call(this)||this,i=e||{};return n.defaultCondition_=function(t){return Ns(t)&&Ys(t)},n.condition_=void 0!==i.condition?i.condition:n.defaultCondition_,n.duration_=void 0!==i.duration?i.duration:100,n.pixelDelta_=void 0!==i.pixelDelta?i.pixelDelta:128,n}return ca(e,t),e.prototype.handleEvent=function(t){var e=!1;if(t.type==T){var n=t.originalEvent,i=n.keyCode;if(this.condition_(t)&&(i==ua||i==aa||i==ha||i==la)){var r=t.map.getView(),o=r.getResolution()*this.pixelDelta_,s=0,a=0;i==ua?a=-o:i==aa?s=-o:i==ha?s=o:a=o;var l=[s,a];Ve(l,r.getRotation()),function(t,e,n){var i=t.getCenterInternal();if(i){var r=[i[0]+e[0],i[1]+e[1]];t.animateInternal({duration:void 0!==n?n:250,easing:Ct,center:t.getConstrainedCenter(r)})}}(r,l,this.duration_),n.preventDefault(),e=!0}}return!e},e}(Ps),fa=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),da=function(t){function e(e){var n=t.call(this)||this,i=e||{};return n.condition_=i.condition?i.condition:Ys,n.delta_=i.delta?i.delta:1,n.duration_=void 0!==i.duration?i.duration:100,n}return fa(e,t),e.prototype.handleEvent=function(t){var e=!1;if(t.type==T||t.type==O){var n=t.originalEvent,i=n.charCode;if(this.condition_(t)&&(i=="+".charCodeAt(0)||i=="-".charCodeAt(0))){var r=t.map,o=i=="+".charCodeAt(0)?this.delta_:-this.delta_;Is(r.getView(),o,void 0,this.duration_),n.preventDefault(),e=!0}}return!e},e}(Ps),ga=function(){function t(t,e,n){this.decay_=t,this.minVelocity_=e,this.delay_=n,this.points_=[],this.angle_=0,this.initialVelocity_=0}return t.prototype.begin=function(){this.points_.length=0,this.angle_=0,this.initialVelocity_=0},t.prototype.update=function(t,e){this.points_.push(t,e,Date.now())},t.prototype.end=function(){if(this.points_.length<6)return!1;var t=Date.now()-this.delay_,e=this.points_.length-3;if(this.points_[e+2]0&&this.points_[n+2]>t;)n-=3;var i=this.points_[e+2]-this.points_[n+2];if(i<1e3/60)return!1;var r=this.points_[e]-this.points_[n],o=this.points_[e+1]-this.points_[n+1];return this.angle_=Math.atan2(o,r),this.initialVelocity_=Math.sqrt(r*r+o*o)/i,this.initialVelocity_>this.minVelocity_},t.prototype.getDistance=function(){return(this.minVelocity_-this.initialVelocity_)/this.decay_},t.prototype.getAngle=function(){return this.angle_},t}(),_a=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),ya="trackpad",va="wheel",ma=function(t){function e(e){var n=this,i=e||{};(n=t.call(this,i)||this).totalDelta_=0,n.lastDelta_=0,n.maxDelta_=void 0!==i.maxDelta?i.maxDelta:1,n.duration_=void 0!==i.duration?i.duration:250,n.timeout_=void 0!==i.timeout?i.timeout:80,n.useAnchor_=void 0===i.useAnchor||i.useAnchor,n.constrainResolution_=void 0!==i.constrainResolution&&i.constrainResolution;var r=i.condition?i.condition:zs;return n.condition_=i.onFocusOnly?ks(Gs,r):r,n.lastAnchor_=null,n.startTime_=void 0,n.timeoutId_,n.mode_=void 0,n.trackpadEventGap_=400,n.trackpadTimeoutId_,n.deltaPerZoom_=300,n}return _a(e,t),e.prototype.endInteraction_=function(){this.trackpadTimeoutId_=void 0,this.getMap().getView().endInteraction(void 0,this.lastDelta_?this.lastDelta_>0?1:-1:0,this.lastAnchor_)},e.prototype.handleEvent=function(t){if(!this.condition_(t))return!0;if(t.type!==M)return!0;var e,n=t.map,i=t.originalEvent;if(i.preventDefault(),this.useAnchor_&&(this.lastAnchor_=t.coordinate),t.type==M&&(e=i.deltaY,H&&i.deltaMode===WheelEvent.DOM_DELTA_PIXEL&&(e/=Q),i.deltaMode===WheelEvent.DOM_DELTA_LINE&&(e*=40)),0===e)return!1;this.lastDelta_=e;var r=Date.now();void 0===this.startTime_&&(this.startTime_=r),(!this.mode_||r-this.startTime_>this.trackpadEventGap_)&&(this.mode_=Math.abs(e)<4?ya:va);var o=n.getView();if(this.mode_===ya&&!o.getConstrainResolution()&&!this.constrainResolution_)return this.trackpadTimeoutId_?clearTimeout(this.trackpadTimeoutId_):(o.getAnimating()&&o.cancelAnimations(),o.beginInteraction()),this.trackpadTimeoutId_=setTimeout(this.endInteraction_.bind(this),this.timeout_),o.adjustZoom(-e/this.deltaPerZoom_,this.lastAnchor_),this.startTime_=r,!1;this.totalDelta_+=e;var s=Math.max(this.timeout_-(r-this.startTime_),0);return clearTimeout(this.timeoutId_),this.timeoutId_=setTimeout(this.handleWheelZoom_.bind(this,n),s),!1},e.prototype.handleWheelZoom_=function(t){var e=t.getView();e.getAnimating()&&e.cancelAnimations();var n=-Rt(this.totalDelta_,-this.maxDelta_*this.deltaPerZoom_,this.maxDelta_*this.deltaPerZoom_)/this.deltaPerZoom_;(e.getConstrainResolution()||this.constrainResolution_)&&(n=n?n>0?1:-1:0),Is(e,n,this.lastAnchor_,this.duration_),this.mode_=void 0,this.totalDelta_=0,this.lastAnchor_=null,this.startTime_=void 0,this.timeoutId_=void 0},e.prototype.setMouseAnchor=function(t){this.useAnchor_=t,t||(this.lastAnchor_=null)},e}(Ps),xa=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),Ca=function(t){function e(e){var n=this,i=e||{},r=i;return r.stopDown||(r.stopDown=p),(n=t.call(this,r)||this).anchor_=null,n.lastAngle_=void 0,n.rotating_=!1,n.rotationDelta_=0,n.threshold_=void 0!==i.threshold?i.threshold:.3,n.duration_=void 0!==i.duration?i.duration:250,n}return xa(e,t),e.prototype.handleDragEvent=function(t){var e=0,n=this.targetPointers[0],i=this.targetPointers[1],r=Math.atan2(i.clientY-n.clientY,i.clientX-n.clientX);if(void 0!==this.lastAngle_){var o=r-this.lastAngle_;this.rotationDelta_+=o,!this.rotating_&&Math.abs(this.rotationDelta_)>this.threshold_&&(this.rotating_=!0),e=o}this.lastAngle_=r;var s=t.map,a=s.getView();if(a.getConstraints().rotation!==ds){var l=s.getViewport().getBoundingClientRect(),h=As(this.targetPointers);h[0]-=l.left,h[1]-=l.top,this.anchor_=s.getCoordinateFromPixelInternal(h),this.rotating_&&(s.render(),a.adjustRotationInternal(e,this.anchor_))}},e.prototype.handleUpEvent=function(t){return!(this.targetPointers.length<2)||(t.map.getView().endInteraction(this.duration_),!1)},e.prototype.handleDownEvent=function(t){if(this.targetPointers.length>=2){var e=t.map;return this.anchor_=null,this.lastAngle_=void 0,this.rotating_=!1,this.rotationDelta_=0,this.handlingDownUpSequence||e.getView().beginInteraction(),!0}return!1},e}(Ds),wa=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),Sa=function(t){function e(e){var n=this,i=e||{},r=i;return r.stopDown||(r.stopDown=p),(n=t.call(this,r)||this).anchor_=null,n.duration_=void 0!==i.duration?i.duration:400,n.lastDistance_=void 0,n.lastScaleDelta_=1,n}return wa(e,t),e.prototype.handleDragEvent=function(t){var e=1,n=this.targetPointers[0],i=this.targetPointers[1],r=n.clientX-i.clientX,o=n.clientY-i.clientY,s=Math.sqrt(r*r+o*o);void 0!==this.lastDistance_&&(e=this.lastDistance_/s),this.lastDistance_=s;var a=t.map,l=a.getView();1!=e&&(this.lastScaleDelta_=e);var h=a.getViewport().getBoundingClientRect(),u=As(this.targetPointers);u[0]-=h.left,u[1]-=h.top,this.anchor_=a.getCoordinateFromPixelInternal(u),a.render(),l.adjustResolutionInternal(e,this.anchor_)},e.prototype.handleUpEvent=function(t){if(this.targetPointers.length<2){var e=t.map.getView(),n=this.lastScaleDelta_>1?1:-1;return e.endInteraction(this.duration_,n),!1}return!0},e.prototype.handleDownEvent=function(t){if(this.targetPointers.length>=2){var e=t.map;return this.anchor_=null,this.lastDistance_=void 0,this.lastScaleDelta_=1,this.handlingDownUpSequence||e.getView().beginInteraction(),!0}return!1},e}(Ds);var Ea=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),ba=function(t){function e(e){return(e=d({},e)).controls||(e.controls=function(t){var e=t||{},n=new Lo;return(void 0===e.zoom||e.zoom)&&n.push(new An(e.zoomOptions)),(void 0===e.rotate||e.rotate)&&n.push(new St(e.rotateOptions)),(void 0===e.attribution||e.attribution)&&n.push(new Ts(e.attributionOptions)),n}()),e.interactions||(e.interactions=function(t){var e=t||{},n=new Lo,i=new ga(-.005,.05,100);return(void 0===e.altShiftDragRotate||e.altShiftDragRotate)&&n.push(new Hs),(void 0===e.doubleClickZoom||e.doubleClickZoom)&&n.push(new Ls({delta:e.zoomDelta,duration:e.zoomDuration})),(void 0===e.dragPan||e.dragPan)&&n.push(new Vs({onFocusOnly:e.onFocusOnly,kinetic:i})),(void 0===e.pinchRotate||e.pinchRotate)&&n.push(new Ca),(void 0===e.pinchZoom||e.pinchZoom)&&n.push(new Sa({duration:e.zoomDuration})),(void 0===e.keyboard||e.keyboard)&&(n.push(new pa),n.push(new da({delta:e.zoomDelta,duration:e.zoomDuration}))),(void 0===e.mouseWheelZoom||e.mouseWheelZoom)&&n.push(new ma({onFocusOnly:e.onFocusOnly,duration:e.zoomDuration})),(void 0===e.shiftDragZoom||e.shiftDragZoom)&&n.push(new sa({duration:e.zoomDuration})),n}({onFocusOnly:!0})),t.call(this,e)||this}return Ea(e,t),e.prototype.createRenderer=function(){return new To(this)},e}(Es),Ta=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),Oa=function(t){function e(e,n,i){var r=t.call(this)||this,o=i||{};return r.tileCoord=e,r.state=n,r.interimTile=null,r.key="",r.transition_=void 0===o.transition?250:o.transition,r.transitionStarts_={},r.interpolate=!!o.interpolate,r}return Ta(e,t),e.prototype.changed=function(){this.dispatchEvent(C)},e.prototype.release=function(){},e.prototype.getKey=function(){return this.key+"/"+this.tileCoord},e.prototype.getInterimTile=function(){if(!this.interimTile)return this;var t=this.interimTile;do{if(t.getState()==ts)return this.transition_=0,t;t=t.interimTile}while(t);return this},e.prototype.refreshInterimChain=function(){if(this.interimTile){var t=this.interimTile,e=this;do{if(t.getState()==ts){t.interimTile=null;break}t.getState()==$o?e=t:t.getState()==Qo?e.interimTile=t.interimTile:e=t,t=e.interimTile}while(t)}},e.prototype.getTileCoord=function(){return this.tileCoord},e.prototype.getState=function(){return this.state},e.prototype.setState=function(t){if(this.state!==es&&this.state>t)throw new Error("Tile load sequence violation");this.state=t,this.changed()},e.prototype.load=function(){G()},e.prototype.getAlpha=function(t,e){if(!this.transition_)return 1;var n=this.transitionStarts_[t];if(n){if(-1===n)return 1}else n=e,this.transitionStarts_[t]=n;var i=e-n+1e3/60;return i>=this.transition_?1:vt(i/this.transition_)},e.prototype.inTransition=function(t){return!!this.transition_&&-1!==this.transitionStarts_[t]},e.prototype.endTransition=function(t){this.transition_&&(this.transitionStarts_[t]=-1)},e}(x),Ra=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}();var Ia,Pa=function(t){function e(e,n,i,r,o,s){var a=t.call(this,e,n,s)||this;return a.crossOrigin_=r,a.src_=i,a.key=i,a.image_=new Image,null!==r&&(a.image_.crossOrigin=r),a.unlisten_=null,a.tileLoadFunction_=o,a}return Ra(e,t),e.prototype.getImage=function(){return this.image_},e.prototype.setImage=function(t){this.image_=t,this.state=ts,this.unlistenImage_(),this.changed()},e.prototype.handleImageError_=function(){var t;this.state=es,this.unlistenImage_(),this.image_=((t=nt(1,1)).fillStyle="rgba(0,0,0,0)",t.fillRect(0,0,1,1),t.canvas),this.changed()},e.prototype.handleImageLoad_=function(){var t=this.image_;t.naturalWidth&&t.naturalHeight?this.state=ts:this.state=ns,this.unlistenImage_(),this.changed()},e.prototype.load=function(){this.state==es&&(this.state=Qo,this.image_=new Image,null!==this.crossOrigin_&&(this.image_.crossOrigin=this.crossOrigin_)),this.state==Qo&&(this.state=$o,this.changed(),this.tileLoadFunction_(this,this.src_),this.unlisten_=Er(this.image_,this.handleImageLoad_.bind(this),this.handleImageError_.bind(this)))},e.prototype.unlistenImage_=function(){this.unlisten_&&(this.unlisten_(),this.unlisten_=null)},e}(Oa),Ma=function(){function t(t,e,n,i,r,o){this.sourceProj_=t,this.targetProj_=e;var s={},a=hn(this.targetProj_,this.sourceProj_);this.transformInv_=function(t){var e=t[0]+"/"+t[1];return s[e]||(s[e]=a(t)),s[e]},this.maxSourceExtent_=i,this.errorThresholdSquared_=r*r,this.triangles_=[],this.wrapsXInSource_=!1,this.canWrapXInSource_=this.sourceProj_.canWrapX()&&!!i&&!!this.sourceProj_.getExtent()&&Xe(i)==Xe(this.sourceProj_.getExtent()),this.sourceWorldWidth_=this.sourceProj_.getExtent()?Xe(this.sourceProj_.getExtent()):null,this.targetWorldWidth_=this.targetProj_.getExtent()?Xe(this.targetProj_.getExtent()):null;var l=We(n),h=Ne(n),u=Ae(n),c=Fe(n),p=this.transformInv_(l),f=this.transformInv_(h),d=this.transformInv_(u),g=this.transformInv_(c),_=10+(o?Math.max(0,Math.ceil(Pt(Le(n)/(o*o*256*256)))):0);if(this.addQuad_(l,h,u,c,p,f,d,g,_),this.wrapsXInSource_){var y=1/0;this.triangles_.forEach((function(t,e,n){y=Math.min(y,t.source[0][0],t.source[1][0],t.source[2][0])})),this.triangles_.forEach(function(t){if(Math.max(t.source[0][0],t.source[1][0],t.source[2][0])-y>this.sourceWorldWidth_/2){var e=[[t.source[0][0],t.source[0][1]],[t.source[1][0],t.source[1][1]],[t.source[2][0],t.source[2][1]]];e[0][0]-y>this.sourceWorldWidth_/2&&(e[0][0]-=this.sourceWorldWidth_),e[1][0]-y>this.sourceWorldWidth_/2&&(e[1][0]-=this.sourceWorldWidth_),e[2][0]-y>this.sourceWorldWidth_/2&&(e[2][0]-=this.sourceWorldWidth_);var n=Math.min(e[0][0],e[1][0],e[2][0]);Math.max(e[0][0],e[1][0],e[2][0])-n.5&&u<1,f=!1;if(l>0){if(this.targetProj_.isGlobal()&&this.targetWorldWidth_)f=Xe(_e([t,e,n,i]))/this.targetWorldWidth_>.25||f;!p&&this.sourceProj_.isGlobal()&&u&&(f=u>.25||f)}if(!(!f&&this.maxSourceExtent_&&isFinite(h[0])&&isFinite(h[1])&&isFinite(h[2])&&isFinite(h[3]))||Ye(h,this.maxSourceExtent_)){var d=0;if(!(f||isFinite(r[0])&&isFinite(r[1])&&isFinite(o[0])&&isFinite(o[1])&&isFinite(s[0])&&isFinite(s[1])&&isFinite(a[0])&&isFinite(a[1])))if(l>0)f=!0;else if(1!=(d=(isFinite(r[0])&&isFinite(r[1])?0:8)+(isFinite(o[0])&&isFinite(o[1])?0:4)+(isFinite(s[0])&&isFinite(s[1])?0:2)+(isFinite(a[0])&&isFinite(a[1])?0:1))&&2!=d&&4!=d&&8!=d)return;if(l>0){if(!f){var g=[(t[0]+n[0])/2,(t[1]+n[1])/2],_=this.transformInv_(g),y=void 0;if(p)y=(At(r[0],c)+At(s[0],c))/2-At(_[0],c);else y=(r[0]+s[0])/2-_[0];var v=(r[1]+s[1])/2-_[1];f=y*y+v*v>this.errorThresholdSquared_}if(f){if(Math.abs(t[0]-n[0])<=Math.abs(t[1]-n[1])){var m=[(e[0]+n[0])/2,(e[1]+n[1])/2],x=this.transformInv_(m),C=[(i[0]+t[0])/2,(i[1]+t[1])/2],w=this.transformInv_(C);this.addQuad_(t,e,m,C,r,o,x,w,l-1),this.addQuad_(C,m,n,i,w,x,s,a,l-1)}else{var S=[(t[0]+e[0])/2,(t[1]+e[1])/2],E=this.transformInv_(S),b=[(n[0]+i[0])/2,(n[1]+i[1])/2],T=this.transformInv_(b);this.addQuad_(t,S,b,i,r,E,T,a,l-1),this.addQuad_(S,e,n,b,E,o,s,T,l-1)}return}}if(p){if(!this.canWrapXInSource_)return;this.wrapsXInSource_=!0}0==(11&d)&&this.addTriangle_(t,n,i,r,s,a),0==(14&d)&&this.addTriangle_(t,n,e,r,s,o),d&&(0==(13&d)&&this.addTriangle_(e,i,t,o,a,r),0==(7&d)&&this.addTriangle_(e,i,n,o,a,s))}},t.prototype.calculateSourceExtent=function(){var t=[1/0,1/0,-1/0,-1/0];return this.triangles_.forEach((function(e,n,i){var r=e.source;Re(t,r[0]),Re(t,r[1]),Re(t,r[2])})),t},t.prototype.getTriangles=function(){return this.triangles_},t}(),La={imageSmoothingEnabled:!1,msImageSmoothingEnabled:!1},Fa={imageSmoothingEnabled:!0,msImageSmoothingEnabled:!0};function Aa(t,e,n,i,r){t.beginPath(),t.moveTo(0,0),t.lineTo(e,n),t.lineTo(i,r),t.closePath(),t.save(),t.clip(),t.fillRect(0,0,Math.max(e,i)+1,Math.max(n,r)),t.restore()}function Da(t,e){return Math.abs(t[4*e]-210)>2||Math.abs(t[4*e+3]-191.25)>2}function ka(t,e,n,i){var r=un(n,e,t),o=rn(e,i,n),s=e.getMetersPerUnit();void 0!==s&&(o*=s);var a=t.getMetersPerUnit();void 0!==a&&(o/=a);var l=t.getExtent();if(!l||xe(l,r)){var h=rn(t,o,r)/o;isFinite(h)&&h>0&&(o/=h)}return o}function ja(t,e,n,i,r,o,s,a,l,h,u,c){var p=nt(Math.round(n*t),Math.round(n*e));if(c||d(p,La),0===l.length)return p.canvas;function f(t){return Math.round(t*n)/n}p.scale(n,n),p.globalCompositeOperation="lighter";var g=[1/0,1/0,-1/0,-1/0];l.forEach((function(t,e,n){var i,r;i=g,(r=t.extent)[0]i[2]&&(i[2]=r[2]),r[1]i[3]&&(i[3]=r[3])}));var _=Xe(g),y=Ge(g),v=nt(Math.round(n*_/i),Math.round(n*y/i));c||d(v,La);var m=n/i;l.forEach((function(t,e,n){var i=t.extent[0]-g[0],r=-(t.extent[3]-g[3]),o=Xe(t.extent),s=Ge(t.extent);t.image.width>0&&t.image.height>0&&v.drawImage(t.image,h,h,t.image.width-2*h,t.image.height-2*h,i*m,r*m,o*m,s*m)}));var x=We(s);return a.getTriangles().forEach((function(t,e,r){var s=t.source,a=t.target,l=s[0][0],h=s[0][1],u=s[1][0],d=s[1][1],_=s[2][0],y=s[2][1],m=f((a[0][0]-x[0])/o),C=f(-(a[0][1]-x[1])/o),w=f((a[1][0]-x[0])/o),S=f(-(a[1][1]-x[1])/o),E=f((a[2][0]-x[0])/o),b=f(-(a[2][1]-x[1])/o),T=l,O=h;l=0,h=0;var R=function(t){for(var e=t.length,n=0;nr&&(r=s,i=o)}if(0===r)return null;var a=t[i];t[i]=t[n],t[n]=a;for(var l=n+1;l=0;p--){c[p]=t[p][e]/t[p][p];for(var f=p-1;f>=0;f--)t[f][e]-=t[f][p]*c[p]}return c}([[u-=T,d-=O,0,0,w-m],[_-=T,y-=O,0,0,E-m],[0,0,u,d,S-C],[0,0,_,y,b-C]]);if(R){if(p.save(),p.beginPath(),function(){if(void 0===Ia){var t=document.createElement("canvas").getContext("2d");t.globalCompositeOperation="lighter",t.fillStyle="rgba(210, 0, 0, 0.75)",Aa(t,4,5,4,0),Aa(t,4,5,0,5);var e=t.getImageData(0,0,3,3).data;Ia=Da(e,0)||Da(e,4)||Da(e,8)}return Ia}()||!c){p.moveTo(w,S);for(var I=m-w,P=C-S,M=0;M<4;M++)p.lineTo(w+f((M+1)*I/4),S+f(M*P/3)),3!=M&&p.lineTo(w+f((M+1)*I/4),S+f((M+1)*P/3));p.lineTo(E,b)}else p.moveTo(w,S),p.lineTo(m,C),p.lineTo(E,b);p.clip(),p.transform(R[0],R[2],R[1],R[3],m,C),p.translate(g[0]-T,g[3]-O),p.scale(i/n,-i/n),p.drawImage(v.canvas,0,0),p.restore()}})),u&&(p.save(),p.globalCompositeOperation="source-over",p.strokeStyle="black",p.lineWidth=1,a.getTriangles().forEach((function(t,e,n){var i=t.target,r=(i[0][0]-x[0])/o,s=-(i[0][1]-x[1])/o,a=(i[1][0]-x[0])/o,l=-(i[1][1]-x[1])/o,h=(i[2][0]-x[0])/o,u=-(i[2][1]-x[1])/o;p.beginPath(),p.moveTo(a,l),p.lineTo(r,s),p.lineTo(h,u),p.closePath(),p.stroke()})),p.restore()),p.canvas}var Ga=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),za=function(t){function e(e,n,i,r,o,s,a,l,h,u,c,p){var f=t.call(this,o,Qo,{interpolate:!!p})||this;f.renderEdges_=void 0!==c&&c,f.pixelRatio_=a,f.gutter_=l,f.canvas_=null,f.sourceTileGrid_=n,f.targetTileGrid_=r,f.wrappedTileCoord_=s||o,f.sourceTiles_=[],f.sourcesListenerKeys_=null,f.sourceZ_=0;var d=r.getTileCoordExtent(f.wrappedTileCoord_),g=f.targetTileGrid_.getExtent(),_=f.sourceTileGrid_.getExtent(),y=g?ze(d,g):d;if(0===Le(y))return f.state=ns,f;var v=e.getExtent();v&&(_=_?ze(_,v):v);var m=r.getResolution(f.wrappedTileCoord_[0]),x=function(t,e,n,i){var r=De(n),o=ka(t,e,r,i);return(!isFinite(o)||o<=0)&&Me(n,(function(n){return o=ka(t,e,n,i),isFinite(o)&&o>0})),o}(e,i,y,m);if(!isFinite(x)||x<=0)return f.state=ns,f;var C=void 0!==u?u:.5;if(f.triangulation_=new Ma(e,i,y,_,x*C,m),0===f.triangulation_.getTriangles().length)return f.state=ns,f;f.sourceZ_=n.getZForResolution(x);var w=f.triangulation_.calculateSourceExtent();if(_&&(e.canWrapX()?(w[1]=Rt(w[1],_[1],_[3]),w[3]=Rt(w[3],_[1],_[3])):w=ze(w,_)),Le(w)){for(var S=n.getTileRangeForExtentAndZ(w,f.sourceZ_),E=S.minX;E<=S.maxX;E++)for(var b=S.minY;b<=S.maxY;b++){var T=h(f.sourceZ_,E,b,a);T&&f.sourceTiles_.push(T)}0===f.sourceTiles_.length&&(f.state=ns)}else f.state=ns;return f}return Ga(e,t),e.prototype.getImage=function(){return this.canvas_},e.prototype.reproject_=function(){var t=[];if(this.sourceTiles_.forEach(function(e,n,i){e&&e.getState()==ts&&t.push({extent:this.sourceTileGrid_.getTileCoordExtent(e.tileCoord),image:e.getImage()})}.bind(this)),this.sourceTiles_.length=0,0===t.length)this.state=es;else{var e=this.wrappedTileCoord_[0],n=this.targetTileGrid_.getTileSize(e),i="number"==typeof n?n:n[0],r="number"==typeof n?n:n[1],o=this.targetTileGrid_.getResolution(e),s=this.sourceTileGrid_.getResolution(this.sourceZ_),a=this.targetTileGrid_.getTileCoordExtent(this.wrappedTileCoord_);this.canvas_=ja(i,r,this.pixelRatio_,s,this.sourceTileGrid_.getExtent(),o,a,this.triangulation_,t,this.gutter_,this.renderEdges_,this.interpolate),this.state=ts}this.changed()},e.prototype.load=function(){if(this.state==Qo){this.state=$o,this.changed();var t=0;this.sourcesListenerKeys_=[],this.sourceTiles_.forEach(function(e,n,i){var r=e.getState();if(r==Qo||r==$o){t++;var o=L(e,C,(function(n){var i=e.getState();i!=ts&&i!=es&&i!=ns||(A(o),0===--t&&(this.unlistenSources_(),this.reproject_()))}),this);this.sourcesListenerKeys_.push(o)}}.bind(this)),0===t?setTimeout(this.reproject_.bind(this),0):this.sourceTiles_.forEach((function(t,e,n){t.getState()==Qo&&t.load()}))}},e.prototype.unlistenSources_=function(){this.sourcesListenerKeys_.forEach(A),this.sourcesListenerKeys_=null},e}(Oa),Wa=function(){function t(t){this.highWaterMark=void 0!==t?t:2048,this.count_=0,this.entries_={},this.oldest_=null,this.newest_=null}return t.prototype.canExpireCache=function(){return this.highWaterMark>0&&this.getCount()>this.highWaterMark},t.prototype.expireCache=function(t){for(;this.canExpireCache();)this.pop()},t.prototype.clear=function(){this.count_=0,this.entries_={},this.oldest_=null,this.newest_=null},t.prototype.containsKey=function(t){return this.entries_.hasOwnProperty(t)},t.prototype.forEach=function(t){for(var e=this.oldest_;e;)t(e.value_,e.key_,this),e=e.newer},t.prototype.get=function(t,e){var n=this.entries_[t];return ge(void 0!==n,15),n===this.newest_||(n===this.oldest_?(this.oldest_=this.oldest_.newer,this.oldest_.older=null):(n.newer.older=n.older,n.older.newer=n.newer),n.newer=null,n.older=this.newest_,this.newest_.newer=n,this.newest_=n),n.value_},t.prototype.remove=function(t){var e=this.entries_[t];return ge(void 0!==e,15),e===this.newest_?(this.newest_=e.older,this.newest_&&(this.newest_.newer=null)):e===this.oldest_?(this.oldest_=e.newer,this.oldest_&&(this.oldest_.older=null)):(e.newer.older=e.older,e.older.newer=e.newer),delete this.entries_[t],--this.count_,e.value_},t.prototype.getCount=function(){return this.count_},t.prototype.getKeys=function(){var t,e=new Array(this.count_),n=0;for(t=this.newest_;t;t=t.older)e[n++]=t.key_;return e},t.prototype.getValues=function(){var t,e=new Array(this.count_),n=0;for(t=this.newest_;t;t=t.older)e[n++]=t.value_;return e},t.prototype.peekLast=function(){return this.oldest_.value_},t.prototype.peekLastKey=function(){return this.oldest_.key_},t.prototype.peekFirstKey=function(){return this.newest_.key_},t.prototype.pop=function(){var t=this.oldest_;return delete this.entries_[t.key_],t.newer&&(t.newer.older=null),this.oldest_=t.newer,this.oldest_||(this.newest_=null),--this.count_,t.value_},t.prototype.replace=function(t,e){this.get(t),this.entries_[t].value_=e},t.prototype.set=function(t,e){ge(!(t in this.entries_),16);var n={key_:t,newer:null,older:this.newest_,value_:e};this.newest_?this.newest_.newer=n:this.oldest_=n,this.newest_=n,this.entries_[t]=n,++this.count_},t.prototype.setSize=function(t){this.highWaterMark=t},t}();function Na(t,e,n,i){return void 0!==i?(i[0]=t,i[1]=e,i[2]=n,i):[t,e,n]}function Xa(t,e,n){return t+"/"+e+"/"+n}function Ya(t){return Xa(t[0],t[1],t[2])}var Ba=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),Ka=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Ba(e,t),e.prototype.expireCache=function(t){for(;this.canExpireCache();){if(this.peekLast().getKey()in t)break;this.pop().release()}},e.prototype.pruneExceptNewestZ=function(){if(0!==this.getCount()){var t=function(t){return t.split("/").map(Number)}(this.peekFirstKey())[0];this.forEach(function(e){e.tileCoord[0]!==t&&(this.remove(Ya(e.tileCoord)),e.release())}.bind(this))}},e}(Wa),Za="tileloadstart",Va="tileloadend",Ua="tileloaderror",Ha=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}();function qa(t){return t?Array.isArray(t)?function(e){return t}:"function"==typeof t?t:function(e){return[t]}:null}var Ja=function(t){function e(e){var n=t.call(this)||this;n.projection=nn(e.projection),n.attributions_=qa(e.attributions),n.attributionsCollapsible_=void 0===e.attributionsCollapsible||e.attributionsCollapsible,n.loading=!1,n.state_=void 0!==e.state?e.state:Hr,n.wrapX_=void 0!==e.wrapX&&e.wrapX,n.interpolate_=!!e.interpolate,n.viewResolver=null,n.viewRejector=null;var i=n;return n.viewPromise_=new Promise((function(t,e){i.viewResolver=t,i.viewRejector=e})),n}return Ha(e,t),e.prototype.getAttributions=function(){return this.attributions_},e.prototype.getAttributionsCollapsible=function(){return this.attributionsCollapsible_},e.prototype.getProjection=function(){return this.projection},e.prototype.getResolutions=function(){return G()},e.prototype.getView=function(){return this.viewPromise_},e.prototype.getState=function(){return this.state_},e.prototype.getWrapX=function(){return this.wrapX_},e.prototype.getInterpolate=function(){return this.interpolate_},e.prototype.refresh=function(){this.changed()},e.prototype.setAttributions=function(t){this.attributions_=qa(t),this.changed()},e.prototype.setState=function(t){this.state_=t,this.changed()},e}(B),Qa=function(){function t(t,e,n,i){this.minX=t,this.maxX=e,this.minY=n,this.maxY=i}return t.prototype.contains=function(t){return this.containsXY(t[1],t[2])},t.prototype.containsTileRange=function(t){return this.minX<=t.minX&&t.maxX<=this.maxX&&this.minY<=t.minY&&t.maxY<=this.maxY},t.prototype.containsXY=function(t,e){return this.minX<=t&&t<=this.maxX&&this.minY<=e&&e<=this.maxY},t.prototype.equals=function(t){return this.minX==t.minX&&this.minY==t.minY&&this.maxX==t.maxX&&this.maxY==t.maxY},t.prototype.extend=function(t){t.minXthis.maxX&&(this.maxX=t.maxX),t.minYthis.maxY&&(this.maxY=t.maxY)},t.prototype.getHeight=function(){return this.maxY-this.minY+1},t.prototype.getSize=function(){return[this.getWidth(),this.getHeight()]},t.prototype.getWidth=function(){return this.maxX-this.minX+1},t.prototype.intersects=function(t){return this.minX<=t.maxX&&this.maxX>=t.minX&&this.minY<=t.maxY&&this.maxY>=t.minY},t}();function $a(t,e,n,i,r){return void 0!==r?(r.minX=t,r.maxX=e,r.minY=n,r.maxY=i,r):new Qa(t,e,n,i)}var tl=Qa,el=[0,0,0],nl=function(){function t(t){var e,n,i,r;if(this.minZoom=void 0!==t.minZoom?t.minZoom:0,this.resolutions_=t.resolutions,ge((e=this.resolutions_,n=!0,i=function(t,e){return e-t}||s,e.every((function(t,r){if(0===r)return!0;var o=i(e[r-1],t);return!(o>0||n&&0===o)}))),17),!t.origins)for(var o=0,a=this.resolutions_.length-1;o=this.minZoom;){if(e(a,2===this.zoomFactor_?$a(r=Math.floor(r/2),r,o=Math.floor(o/2),o,n):this.getTileRangeForExtentAndZ(s,a,n)))return!0;--a}return!1},t.prototype.getExtent=function(){return this.extent_},t.prototype.getMaxZoom=function(){return this.maxZoom},t.prototype.getMinZoom=function(){return this.minZoom},t.prototype.getOrigin=function(t){return this.origin_?this.origin_:this.origins_[t]},t.prototype.getResolution=function(t){return this.resolutions_[t]},t.prototype.getResolutions=function(){return this.resolutions_},t.prototype.getTileCoordChildTileRange=function(t,e,n){if(t[0]this.maxZoom||e0?i:Math.max(s/a[0],o/a[1]),h=r+1,u=new Array(h),c=0;cn||n>e.getMaxZoom())return!1;var o=e.getFullTileRange(n);return!o||o.containsXY(i,r)}(t,i)?t:null},e.prototype.clear=function(){this.tileCache.clear()},e.prototype.refresh=function(){this.clear(),t.prototype.refresh.call(this)},e.prototype.updateCacheSize=function(t,e){var n=this.getTileCacheForProjection(e);t>n.highWaterMark&&(n.highWaterMark=t)},e.prototype.useTile=function(t,e,n,i){},e}(Ja),ll=function(t){function e(e,n){var i=t.call(this,e)||this;return i.tile=n,i}return sl(e,t),e}(i),hl=al;function ul(t,e){var n=/\{z\}/g,i=/\{x\}/g,r=/\{y\}/g,o=/\{-y\}/g;return function(s,a,l){return s?t.replace(n,s[0].toString()).replace(i,s[1].toString()).replace(r,s[2].toString()).replace(o,(function(){var t=s[0],n=e.getFullTileRange(t);return ge(n,55),(n.getHeight()-s[2]-1).toString()})):void 0}}function cl(t,e){for(var n=t.length,i=new Array(n),r=0;rOpenStreetMap contributors.'];var o=void 0!==i.crossOrigin?i.crossOrigin:"anonymous",s=void 0!==i.url?i.url:"https://{a-c}.tile.openstreetmap.org/{z}/{x}/{y}.png";return t.call(this,{attributions:n,attributionsCollapsible:!1,cacheSize:i.cacheSize,crossOrigin:o,interpolate:r,maxZoom:void 0!==i.maxZoom?i.maxZoom:19,opaque:void 0===i.opaque||i.opaque,reprojectionErrorThreshold:i.reprojectionErrorThreshold,tileLoadFunction:i.tileLoadFunction,transition:i.transition,url:s,wrapX:i.wrapX,zDirection:i.zDirection})||this}return ml(e,t),e}(vl),Cl="bottom-left",wl="bottom-center",Sl="bottom-right",El="center-left",bl="center-center",Tl="center-right",Ol="top-left",Rl="top-center",Il="top-right";function Pl(t){return(Pl="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var Ml=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),Ll="element",Fl="map",Al="offset",Dl="position",kl="positioning",jl=function(t){function e(e){var n=t.call(this)||this;n.on,n.once,n.un,n.options=e,n.id=e.id,n.insertFirst=void 0===e.insertFirst||e.insertFirst,n.stopEvent=void 0===e.stopEvent||e.stopEvent,n.element=document.createElement("div"),n.element.className=void 0!==e.className?e.className:"ol-overlay-container ol-selectable",n.element.style.position="absolute",n.element.style.pointerEvents="auto";var i=e.autoPan;return i&&"object"!==Pl(i)&&(i={animation:e.autoPanAnimation,margin:e.autoPanMargin}),n.autoPan=i||!1,n.rendered={transform_:"",visible:!0},n.mapPostrenderListenerKey=null,n.addChangeListener(Ll,n.handleElementChanged),n.addChangeListener(Fl,n.handleMapChanged),n.addChangeListener(Al,n.handleOffsetChanged),n.addChangeListener(Dl,n.handlePositionChanged),n.addChangeListener(kl,n.handlePositioningChanged),void 0!==e.element&&n.setElement(e.element),n.setOffset(void 0!==e.offset?e.offset:[0,0]),n.setPositioning(void 0!==e.positioning?e.positioning:Ol),void 0!==e.position&&n.setPosition(e.position),n}return Ml(e,t),e.prototype.getElement=function(){return this.get(Ll)},e.prototype.getId=function(){return this.id},e.prototype.getMap=function(){return this.get(Fl)||null},e.prototype.getOffset=function(){return this.get(Al)},e.prototype.getPosition=function(){return this.get(Dl)},e.prototype.getPositioning=function(){return this.get(kl)},e.prototype.handleElementChanged=function(){at(this.element);var t=this.getElement();t&&this.element.appendChild(t)},e.prototype.handleMapChanged=function(){this.mapPostrenderListenerKey&&(st(this.element),A(this.mapPostrenderListenerKey),this.mapPostrenderListenerKey=null);var t=this.getMap();if(t){this.mapPostrenderListenerKey=L(t,K,this.render,this),this.updatePixelPosition();var e=this.stopEvent?t.getOverlayContainerStopEvent():t.getOverlayContainer();this.insertFirst?e.insertBefore(this.element,e.childNodes[0]||null):e.appendChild(this.element),this.performAutoPan()}},e.prototype.render=function(){this.updatePixelPosition()},e.prototype.handleOffsetChanged=function(){this.updatePixelPosition()},e.prototype.handlePositionChanged=function(){this.updatePixelPosition(),this.performAutoPan()},e.prototype.handlePositioningChanged=function(){this.updatePixelPosition()},e.prototype.setElement=function(t){this.set(Ll,t)},e.prototype.setMap=function(t){this.set(Fl,t)},e.prototype.setOffset=function(t){this.set(Al,t)},e.prototype.setPosition=function(t){this.set(Dl,t)},e.prototype.performAutoPan=function(){this.autoPan&&this.panIntoView(this.autoPan)},e.prototype.panIntoView=function(t){var e=this.getMap();if(e&&e.getTargetElement()&&this.get(Dl)){var n=this.getRect(e.getTargetElement(),e.getSize()),i=this.getElement(),r=this.getRect(i,[it(i),rt(i)]),o=t||{},s=void 0===o.margin?20:o.margin;if(!Ce(n,r)){var a=r[0]-n[0],l=n[2]-r[2],h=r[1]-n[1],u=n[3]-r[3],c=[0,0];if(a<0?c[0]=a-s:l<0&&(c[0]=Math.abs(l)+s),h<0?c[1]=h-s:u<0&&(c[1]=Math.abs(u)+s),0!==c[0]||0!==c[1]){var p=e.getView().getCenterInternal(),f=e.getPixelFromCoordinateInternal(p);if(!f)return;var d=[f[0]+c[0],f[1]+c[1]],g=o.animation||{};e.getView().animateInternal({center:e.getCoordinateFromPixelInternal(d),duration:g.duration,easing:g.easing})}}}},e.prototype.getRect=function(t,e){var n=t.getBoundingClientRect(),i=n.left+window.pageXOffset,r=n.top+window.pageYOffset;return[i,r,i+e[0],r+e[1]]},e.prototype.setPositioning=function(t){this.set(kl,t)},e.prototype.setVisible=function(t){this.rendered.visible!==t&&(this.element.style.display=t?"":"none",this.rendered.visible=t)},e.prototype.updatePixelPosition=function(){var t=this.getMap(),e=this.getPosition();if(t&&t.isRendered()&&e){var n=t.getPixelFromCoordinate(e),i=t.getSize();this.updateRenderedPosition(n,i)}else this.setVisible(!1)},e.prototype.updateRenderedPosition=function(t,e){var n=this.element.style,i=this.getOffset(),r=this.getPositioning();this.setVisible(!0);var o=Math.round(t[0]+i[0])+"px",s=Math.round(t[1]+i[1])+"px",a="0%",l="0%";r==Sl||r==Tl||r==Il?a="-100%":r!=wl&&r!=bl&&r!=Rl||(a="-50%"),r==Cl||r==wl||r==Sl?l="-100%":r!=El&&r!=bl&&r!=Tl||(l="-50%");var h="translate(".concat(a,", ").concat(l,") translate(").concat(o,", ").concat(s,")");this.rendered.transform_!=h&&(this.rendered.transform_=h,n.transform=h,n.msTransform=h)},e.prototype.getOptions=function(){return this.options},e}(B),Gl=function(){function t(t){var e=t||{};this.color_=void 0!==e.color?e.color:null,this.lineCap_=e.lineCap,this.lineDash_=void 0!==e.lineDash?e.lineDash:null,this.lineDashOffset_=e.lineDashOffset,this.lineJoin_=e.lineJoin,this.miterLimit_=e.miterLimit,this.width_=e.width}return t.prototype.clone=function(){var e=this.getColor();return new t({color:Array.isArray(e)?e.slice():e||void 0,lineCap:this.getLineCap(),lineDash:this.getLineDash()?this.getLineDash().slice():void 0,lineDashOffset:this.getLineDashOffset(),lineJoin:this.getLineJoin(),miterLimit:this.getMiterLimit(),width:this.getWidth()})},t.prototype.getColor=function(){return this.color_},t.prototype.getLineCap=function(){return this.lineCap_},t.prototype.getLineDash=function(){return this.lineDash_},t.prototype.getLineDashOffset=function(){return this.lineDashOffset_},t.prototype.getLineJoin=function(){return this.lineJoin_},t.prototype.getMiterLimit=function(){return this.miterLimit_},t.prototype.getWidth=function(){return this.width_},t.prototype.setColor=function(t){this.color_=t},t.prototype.setLineCap=function(t){this.lineCap_=t},t.prototype.setLineDash=function(t){this.lineDash_=t},t.prototype.setLineDashOffset=function(t){this.lineDashOffset_=t},t.prototype.setLineJoin=function(t){this.lineJoin_=t},t.prototype.setMiterLimit=function(t){this.miterLimit_=t},t.prototype.setWidth=function(t){this.width_=t},t}();function zl(t){return Array.isArray(t)?yr(t):t}var Wl=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),Nl=function(t){function e(e){var n=this,i=void 0!==e.rotateWithView&&e.rotateWithView;return(n=t.call(this,{opacity:1,rotateWithView:i,rotation:void 0!==e.rotation?e.rotation:0,scale:void 0!==e.scale?e.scale:1,displacement:void 0!==e.displacement?e.displacement:[0,0]})||this).canvas_=void 0,n.hitDetectionCanvas_=null,n.fill_=void 0!==e.fill?e.fill:null,n.origin_=[0,0],n.points_=e.points,n.radius_=void 0!==e.radius?e.radius:e.radius1,n.radius2_=e.radius2,n.angle_=void 0!==e.angle?e.angle:0,n.stroke_=void 0!==e.stroke?e.stroke:null,n.size_=null,n.renderOptions_=null,n.render(),n}return Wl(e,t),e.prototype.clone=function(){var t=this.getScale(),n=new e({fill:this.getFill()?this.getFill().clone():void 0,points:this.getPoints(),radius:this.getRadius(),radius2:this.getRadius2(),angle:this.getAngle(),stroke:this.getStroke()?this.getStroke().clone():void 0,rotation:this.getRotation(),rotateWithView:this.getRotateWithView(),scale:Array.isArray(t)?t.slice():t,displacement:this.getDisplacement().slice()});return n.setOpacity(this.getOpacity()),n},e.prototype.getAnchor=function(){var t=this.size_;if(!t)return null;var e=this.getDisplacement();return[t[0]/2-e[0],t[1]/2+e[1]]},e.prototype.getAngle=function(){return this.angle_},e.prototype.getFill=function(){return this.fill_},e.prototype.getHitDetectionImage=function(){return this.hitDetectionCanvas_||this.createHitDetectionCanvas_(this.renderOptions_),this.hitDetectionCanvas_},e.prototype.getImage=function(t){var e=this.canvas_[t];if(!e){var n=this.renderOptions_,i=nt(n.size*t,n.size*t);this.draw_(n,i,t),e=i.canvas,this.canvas_[t]=e}return e},e.prototype.getPixelRatio=function(t){return t},e.prototype.getImageSize=function(){return this.size_},e.prototype.getImageState=function(){return or},e.prototype.getOrigin=function(){return this.origin_},e.prototype.getPoints=function(){return this.points_},e.prototype.getRadius=function(){return this.radius_},e.prototype.getRadius2=function(){return this.radius2_},e.prototype.getSize=function(){return this.size_},e.prototype.getStroke=function(){return this.stroke_},e.prototype.listenImageChange=function(t){},e.prototype.load=function(){},e.prototype.unlistenImageChange=function(t){},e.prototype.calculateLineJoinSize_=function(t,e,n){if(0===e||this.points_===1/0||"bevel"!==t&&"miter"!==t)return e;var i=this.radius_,r=void 0===this.radius2_?i:this.radius2_;if(i0&&(this.newTiles_=!0):a.setState(ts)),this.isDrawableTile(a)||(a=a.getInterimTile()),a},e.prototype.getData=function(t){var e=this.frameState;if(!e)return null;var n=this.getLayer(),i=Hn(e.pixelToCoordinateTransform,t.slice()),r=n.getExtent();if(r&&!xe(r,i))return null;for(var o=e.pixelRatio,s=e.viewState.projection,a=e.viewState,l=n.getRenderSource(),h=l.getTileGridForProjection(a.projection),u=l.getTilePixelRatio(e.pixelRatio),c=h.getZForResolution(a.resolution);c>=h.getMinZoom();--c){var p=h.getTileCoordForCoordAndZ(i,c),f=l.getTile(c,p[1],p[2],o,s);if(!(f instanceof Pa||f instanceof za))return null;if(f.getState()===ts){var d=h.getOrigin(c),g=lr(h.getTileSize(c)),_=h.getResolution(c),y=Math.floor(u*((i[0]-d[0])/_-p[1]*g[0])),v=Math.floor(u*((d[1]-i[1])/_-p[2]*g[1]));return this.getImageData(f.getImage(),y,v)}}return null},e.prototype.loadedTileCallback=function(e,n,i){return!!this.isDrawableTile(i)&&t.prototype.loadedTileCallback.call(this,e,n,i)},e.prototype.prepareFrame=function(t){return!!this.getLayer().getSource()},e.prototype.renderFrame=function(t,e){var n=t.layerStatesArray[t.layerIndex],i=t.viewState,r=i.projection,o=i.resolution,a=i.center,l=i.rotation,h=t.pixelRatio,u=this.getLayer(),c=u.getSource(),p=c.getRevision(),f=c.getTileGridForProjection(r),g=f.getZForResolution(o,c.zDirection),_=f.getResolution(g),y=t.extent,v=n.extent&&xn(n.extent,r);v&&(y=ze(y,xn(n.extent,r)));var m=c.getTilePixelRatio(h),x=Math.round(t.size[0]*m),C=Math.round(t.size[1]*m);if(l){var w=Math.round(Math.sqrt(x*x+C*C));x=w,C=w}var S=_*x/2/m,E=_*C/2/m,b=[a[0]-S,a[1]-E,a[0]+S,a[1]+E],T=f.getTileRangeForExtentAndZ(y,g),O={};O[g]={};var R=this.createLoadedTileFinder(c,r,O),I=this.tmpExtent,P=this.tmpTileRange_;this.newTiles_=!1;for(var M=T.minX;M<=T.maxX;++M)for(var L=T.minY;L<=T.maxY;++L){var F=this.getTile(g,M,L,t);if(this.isDrawableTile(F)){var A=W(this);if(F.getState()==ts){O[g][F.tileCoord.toString()]=F;var D=F.inTransition(A);this.newTiles_||!D&&-1!==this.renderedTiles.indexOf(F)||(this.newTiles_=!0)}if(1===F.getAlpha(A,t.time))continue}var k=f.getTileCoordChildTileRange(F.tileCoord,P,I),j=!1;k&&(j=R(g+1,k)),j||f.forEachTileCoordParentTileRange(F.tileCoord,R,P,I)}var G=_/o;qn(this.pixelTransform,t.size[0]/2,t.size[1]/2,1/m,1/m,l,-x/2,-C/2);var z=Qn(this.pixelTransform);this.useContainer(e,z,n.opacity,this.getBackground(t));var N=this.context,X=N.canvas;Jn(this.inversePixelTransform,this.pixelTransform),qn(this.tempTransform,x/2,C/2,G,G,0,-x/2,-C/2),X.width!=x||X.height!=C?(X.width=x,X.height=C):this.containerReused||N.clearRect(0,0,x,C),v&&this.clipUnrotated(N,t,v),c.getInterpolate()||d(N,La),this.preRender(N,t),this.renderedTiles.length=0;var Y,B,K,Z=Object.keys(O).map(Number);Z.sort(s),1!==n.opacity||this.containerReused&&!c.getOpaque(t.viewState.projection)?(Y=[],B=[]):Z=Z.reverse();for(var V=Z.length-1;V>=0;--V){var U=Z[V],H=c.getTilePixelSize(U,h,r),q=f.getResolution(U)/_,J=H[0]*q*G,Q=H[1]*q*G,$=f.getTileCoordForCoordAndZ(We(b),U),tt=f.getTileCoordExtent($),et=Hn(this.tempTransform,[m*(tt[0]-b[0])/_,m*(b[3]-tt[3])/_]),nt=m*c.getGutterForProjection(r),it=O[U];for(var rt in it){var ot=(F=it[rt]).tileCoord,st=$[1]-ot[1],at=Math.round(et[0]-(st-1)*J),lt=$[2]-ot[2],ht=Math.round(et[1]-(lt-1)*Q),ut=at-(M=Math.round(et[0]-st*J)),ct=ht-(L=Math.round(et[1]-lt*Q)),pt=g===U,ft=!1;if(!(D=pt&&1!==F.getAlpha(W(this),t.time)))if(Y){K=[M,L,M+ut,L,M+ut,L+ct,M,L+ct];for(var dt=0,gt=Y.length;dt=200&&a.status<300){var i=e.getType(),l=void 0;i==Ch||i==wh?l=a.responseText:i==Sh?(l=a.responseXML)||(l=(new DOMParser).parseFromString(a.responseText,"application/xml")):i==xh&&(l=a.response),l?o(e.readFeatures(l,{extent:n,featureProjection:r}),e.readProjection(l)):s()}else s()},a.onerror=s,a.send()}(t,e,n,i,r,(function(t,e){a.addFeatures(t),void 0!==o&&o(t)}),s||f)}}var Th=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),Oh=function(t){function e(e,n,i){var r=t.call(this,e)||this;return r.feature=n,r.features=i,r}return Th(e,t),e}(i),Rh=function(t){function e(e){var n=this,i=e||{};(n=t.call(this,{attributions:i.attributions,interpolate:!0,projection:void 0,state:Hr,wrapX:void 0===i.wrapX||i.wrapX})||this).on,n.once,n.un,n.loader_=f,n.format_=i.format,n.overlaps_=void 0===i.overlaps||i.overlaps,n.url_=i.url,void 0!==i.loader?n.loader_=i.loader:void 0!==n.url_&&(ge(n.format_,7),n.loader_=bh(n.url_,n.format_)),n.strategy_=void 0!==i.strategy?i.strategy:mh;var r,o,s=void 0===i.useSpatialIndex||i.useSpatialIndex;return n.featuresRtree_=s?new ch:null,n.loadedExtentsRtree_=new ch,n.loadingExtentsCount_=0,n.nullGeometryFeatures_={},n.idIndex_={},n.uidIndex_={},n.featureChangeKeys_={},n.featuresCollection_=null,Array.isArray(i.features)?o=i.features:i.features&&(o=(r=i.features).getArray()),s||void 0!==r||(r=new Lo(o)),void 0!==o&&n.addFeaturesInternal(o),void 0!==r&&n.bindFeaturesCollection_(r),n}return Th(e,t),e.prototype.addFeature=function(t){this.addFeatureInternal(t),this.changed()},e.prototype.addFeatureInternal=function(t){var e=W(t);if(this.addToIndex_(e,t)){this.setupChangeEvents_(e,t);var n=t.getGeometry();if(n){var i=n.getExtent();this.featuresRtree_&&this.featuresRtree_.insert(i,t)}else this.nullGeometryFeatures_[e]=t;this.dispatchEvent(new Oh(ph,t))}else this.featuresCollection_&&this.featuresCollection_.remove(t)},e.prototype.setupChangeEvents_=function(t,e){this.featureChangeKeys_[t]=[L(e,C,this.handleFeatureChange_,this),L(e,r,this.handleFeatureChange_,this)]},e.prototype.addToIndex_=function(t,e){var n=!0,i=e.getId();return void 0!==i&&(i.toString()in this.idIndex_?n=!1:this.idIndex_[i.toString()]=e),n&&(ge(!(t in this.uidIndex_),30),this.uidIndex_[t]=e),n},e.prototype.addFeatures=function(t){this.addFeaturesInternal(t),this.changed()},e.prototype.addFeaturesInternal=function(t){for(var e=[],n=[],i=[],r=0,o=t.length;r0},e.prototype.refresh=function(){this.clear(!0),this.loadedExtentsRtree_.clear(),t.prototype.refresh.call(this)},e.prototype.removeLoadedExtent=function(t){var e,n=this.loadedExtentsRtree_;n.forEachInExtent(t,(function(n){if(Oe(n.extent,t))return e=n,!0})),e&&n.remove(e)},e.prototype.removeFeature=function(t){if(t){var e=W(t);e in this.nullGeometryFeatures_?delete this.nullGeometryFeatures_[e]:this.featuresRtree_&&this.featuresRtree_.remove(t),this.removeFeatureInternal(t)&&this.changed()}},e.prototype.removeFeatureInternal=function(t){var e=W(t),n=this.featureChangeKeys_[e];if(n){n.forEach(A),delete this.featureChangeKeys_[e];var i=t.getId();return void 0!==i&&delete this.idIndex_[i.toString()],delete this.uidIndex_[e],this.dispatchEvent(new Oh(gh,t)),t}},e.prototype.removeFromIdIndex_=function(t){var e=!1;for(var n in this.idIndex_)if(this.idIndex_[n]===t){delete this.idIndex_[n],e=!0;break}return e},e.prototype.setLoader=function(t){this.loader_=t},e.prototype.setUrl=function(t){ge(this.format_,7),this.url_=t,this.setLoader(bh(t,this.format_))},e}(Ja),Ih=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),Ph="renderOrder",Mh=function(t){function e(e){var n=this,i=e||{},r=d({},i);return delete r.style,delete r.renderBuffer,delete r.updateWhileAnimating,delete r.updateWhileInteracting,(n=t.call(this,r)||this).declutter_=void 0!==i.declutter&&i.declutter,n.renderBuffer_=void 0!==i.renderBuffer?i.renderBuffer:100,n.style_=null,n.styleFunction_=void 0,n.setStyle(i.style),n.updateWhileAnimating_=void 0!==i.updateWhileAnimating&&i.updateWhileAnimating,n.updateWhileInteracting_=void 0!==i.updateWhileInteracting&&i.updateWhileInteracting,n}return Ih(e,t),e.prototype.getDeclutter=function(){return this.declutter_},e.prototype.getFeatures=function(e){return t.prototype.getFeatures.call(this,e)},e.prototype.getRenderBuffer=function(){return this.renderBuffer_},e.prototype.getRenderOrder=function(){return this.get(Ph)},e.prototype.getStyle=function(){return this.style_},e.prototype.getStyleFunction=function(){return this.styleFunction_},e.prototype.getUpdateWhileAnimating=function(){return this.updateWhileAnimating_},e.prototype.getUpdateWhileInteracting=function(){return this.updateWhileInteracting_},e.prototype.renderDeclutter=function(t){t.declutterTree||(t.declutterTree=new uh(9)),this.getRenderer().renderDeclutter(t)},e.prototype.setRenderOrder=function(t){this.set(Ph,t)},e.prototype.setStyle=function(t){this.style_=void 0!==t?t:Ul,this.styleFunction_=null===t?void 0:function(t){var e;if("function"==typeof t)e=t;else{var n;Array.isArray(t)?n=t:(ge("function"==typeof t.getZIndex,41),n=[t]),e=function(){return n}}return e}(this.style_),this.changed()},e}(Qr),Lh={BEGIN_GEOMETRY:0,BEGIN_PATH:1,CIRCLE:2,CLOSE_PATH:3,CUSTOM:4,DRAW_CHARS:5,DRAW_IMAGE:6,END_GEOMETRY:7,FILL:8,MOVE_TO_LINE_TO:9,SET_FILL_STYLE:10,SET_STROKE_STYLE:11,STROKE:12},Fh=[Lh.FILL],Ah=[Lh.STROKE],Dh=[Lh.BEGIN_PATH],kh=[Lh.CLOSE_PATH],jh=Lh,Gh=function(){function t(){}return t.prototype.drawCustom=function(t,e,n,i){},t.prototype.drawGeometry=function(t){},t.prototype.setStyle=function(t){},t.prototype.drawCircle=function(t,e){},t.prototype.drawFeature=function(t,e){},t.prototype.drawGeometryCollection=function(t,e){},t.prototype.drawLineString=function(t,e){},t.prototype.drawMultiLineString=function(t,e){},t.prototype.drawMultiPoint=function(t,e){},t.prototype.drawMultiPolygon=function(t,e){},t.prototype.drawPoint=function(t,e){},t.prototype.drawPolygon=function(t,e){},t.prototype.drawText=function(t,e){},t.prototype.setFillStrokeStyle=function(t,e){},t.prototype.setImageStyle=function(t,e){},t.prototype.setTextStyle=function(t,e){},t}(),zh=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),Wh=function(t){function e(e,n,i,r){var o=t.call(this)||this;return o.tolerance=e,o.maxExtent=n,o.pixelRatio=r,o.maxLineWidth=0,o.resolution=i,o.beginGeometryInstruction1_=null,o.beginGeometryInstruction2_=null,o.bufferedMaxExtent_=null,o.instructions=[],o.coordinates=[],o.tmpCoordinate_=[],o.hitDetectionInstructions=[],o.state={},o}return zh(e,t),e.prototype.applyPixelRatio=function(t){var e=this.pixelRatio;return 1==e?t:t.map((function(t){return t*e}))},e.prototype.appendFlatPointCoordinates=function(t,e){for(var n=this.getBufferedMaxExtent(),i=this.tmpCoordinate_,r=this.coordinates,o=r.length,s=0,a=t.length;sc&&(this.instructions.push([jh.CUSTOM,c,o,t,n,vi]),this.hitDetectionInstructions.push([jh.CUSTOM,c,o,t,i||n,vi]));break;case zn:r=t.getFlatCoordinates(),this.coordinates.push(r[0],r[1]),o=this.coordinates.length,this.instructions.push([jh.CUSTOM,c,o,t,n]),this.hitDetectionInstructions.push([jh.CUSTOM,c,o,t,i||n])}this.endGeometry(e)},e.prototype.beginGeometry=function(t,e){this.beginGeometryInstruction1_=[jh.BEGIN_GEOMETRY,e,0,t],this.instructions.push(this.beginGeometryInstruction1_),this.beginGeometryInstruction2_=[jh.BEGIN_GEOMETRY,e,0,t],this.hitDetectionInstructions.push(this.beginGeometryInstruction2_)},e.prototype.finish=function(){return{instructions:this.instructions,hitDetectionInstructions:this.hitDetectionInstructions,coordinates:this.coordinates}},e.prototype.reverseHitDetectionInstructions=function(){var t,e=this.hitDetectionInstructions;e.reverse();var n,i,r=e.length,o=-1;for(t=0;tthis.maxLineWidth&&(this.maxLineWidth=n.lineWidth,this.bufferedMaxExtent_=null)}else n.strokeStyle=void 0,n.lineCap=void 0,n.lineDash=null,n.lineDashOffset=void 0,n.lineJoin=void 0,n.lineWidth=void 0,n.miterLimit=void 0},e.prototype.createFill=function(t){var e=t.fillStyle,n=[jh.SET_FILL_STYLE,e];return"string"!=typeof e&&n.push(!0),n},e.prototype.applyStroke=function(t){this.instructions.push(this.createStroke(t))},e.prototype.createStroke=function(t){return[jh.SET_STROKE_STYLE,t.strokeStyle,t.lineWidth*this.pixelRatio,t.lineCap,t.lineJoin,t.miterLimit,this.applyPixelRatio(t.lineDash),t.lineDashOffset*this.pixelRatio]},e.prototype.updateFillStyle=function(t,e){var n=t.fillStyle;"string"==typeof n&&t.currentFillStyle==n||(void 0!==n&&this.instructions.push(e.call(this,t)),t.currentFillStyle=n)},e.prototype.updateStrokeStyle=function(t,e){var n=t.strokeStyle,i=t.lineCap,r=t.lineDash,o=t.lineDashOffset,s=t.lineJoin,a=t.lineWidth,l=t.miterLimit;(t.currentStrokeStyle!=n||t.currentLineCap!=i||r!=t.currentLineDash&&!u(t.currentLineDash,r)||t.currentLineDashOffset!=o||t.currentLineJoin!=s||t.currentLineWidth!=a||t.currentMiterLimit!=l)&&(void 0!==n&&e.call(this,t),t.currentStrokeStyle=n,t.currentLineCap=i,t.currentLineDash=r,t.currentLineDashOffset=o,t.currentLineJoin=s,t.currentLineWidth=a,t.currentMiterLimit=l)},e.prototype.endGeometry=function(t){this.beginGeometryInstruction1_[2]=this.instructions.length,this.beginGeometryInstruction1_=null,this.beginGeometryInstruction2_[2]=this.hitDetectionInstructions.length,this.beginGeometryInstruction2_=null;var e=[jh.END_GEOMETRY,t];this.instructions.push(e),this.hitDetectionInstructions.push(e)},e.prototype.getBufferedMaxExtent=function(){if(!this.bufferedMaxExtent_&&(this.bufferedMaxExtent_=ve(this.maxExtent),this.maxLineWidth>0)){var t=this.resolution*(this.maxLineWidth+1)/2;ye(this.bufferedMaxExtent_,t,this.bufferedMaxExtent_)}return this.bufferedMaxExtent_},e}(Gh),Nh=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),Xh=function(t){function e(e,n,i,r){var o=t.call(this,e,n,i,r)||this;return o.hitDetectionImage_=null,o.image_=null,o.imagePixelRatio_=void 0,o.anchorX_=void 0,o.anchorY_=void 0,o.height_=void 0,o.opacity_=void 0,o.originX_=void 0,o.originY_=void 0,o.rotateWithView_=void 0,o.rotation_=void 0,o.scale_=void 0,o.width_=void 0,o.declutterImageWithText_=void 0,o}return Nh(e,t),e.prototype.drawPoint=function(t,e){if(this.image_){this.beginGeometry(t,e);var n=t.getFlatCoordinates(),i=t.getStride(),r=this.coordinates.length,o=this.appendFlatPointCoordinates(n,i);this.instructions.push([jh.DRAW_IMAGE,r,o,this.image_,this.anchorX_*this.imagePixelRatio_,this.anchorY_*this.imagePixelRatio_,Math.ceil(this.height_*this.imagePixelRatio_),this.opacity_,this.originX_,this.originY_,this.rotateWithView_,this.rotation_,[this.scale_[0]*this.pixelRatio/this.imagePixelRatio_,this.scale_[1]*this.pixelRatio/this.imagePixelRatio_],Math.ceil(this.width_*this.imagePixelRatio_),this.declutterImageWithText_]),this.hitDetectionInstructions.push([jh.DRAW_IMAGE,r,o,this.hitDetectionImage_,this.anchorX_,this.anchorY_,this.height_,this.opacity_,this.originX_,this.originY_,this.rotateWithView_,this.rotation_,this.scale_,this.width_,this.declutterImageWithText_]),this.endGeometry(e)}},e.prototype.drawMultiPoint=function(t,e){if(this.image_){this.beginGeometry(t,e);var n=t.getFlatCoordinates(),i=t.getStride(),r=this.coordinates.length,o=this.appendFlatPointCoordinates(n,i);this.instructions.push([jh.DRAW_IMAGE,r,o,this.image_,this.anchorX_*this.imagePixelRatio_,this.anchorY_*this.imagePixelRatio_,Math.ceil(this.height_*this.imagePixelRatio_),this.opacity_,this.originX_,this.originY_,this.rotateWithView_,this.rotation_,[this.scale_[0]*this.pixelRatio/this.imagePixelRatio_,this.scale_[1]*this.pixelRatio/this.imagePixelRatio_],Math.ceil(this.width_*this.imagePixelRatio_),this.declutterImageWithText_]),this.hitDetectionInstructions.push([jh.DRAW_IMAGE,r,o,this.hitDetectionImage_,this.anchorX_,this.anchorY_,this.height_,this.opacity_,this.originX_,this.originY_,this.rotateWithView_,this.rotation_,this.scale_,this.width_,this.declutterImageWithText_]),this.endGeometry(e)}},e.prototype.finish=function(){return this.reverseHitDetectionInstructions(),this.anchorX_=void 0,this.anchorY_=void 0,this.hitDetectionImage_=null,this.image_=null,this.imagePixelRatio_=void 0,this.height_=void 0,this.scale_=void 0,this.opacity_=void 0,this.originX_=void 0,this.originY_=void 0,this.rotateWithView_=void 0,this.rotation_=void 0,this.width_=void 0,t.prototype.finish.call(this)},e.prototype.setImageStyle=function(t,e){var n=t.getAnchor(),i=t.getSize(),r=t.getHitDetectionImage(),o=t.getImage(this.pixelRatio),s=t.getOrigin();this.imagePixelRatio_=t.getPixelRatio(this.pixelRatio),this.anchorX_=n[0],this.anchorY_=n[1],this.hitDetectionImage_=r,this.image_=o,this.height_=i[1],this.opacity_=t.getOpacity(),this.originX_=s[0]*this.imagePixelRatio_,this.originY_=s[1]*this.imagePixelRatio_,this.rotateWithView_=t.getRotateWithView(),this.rotation_=t.getRotation(),this.scale_=t.getScaleArray(),this.width_=i[0],this.declutterImageWithText_=e},e}(Wh),Yh=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),Bh=function(t){function e(e,n,i,r){return t.call(this,e,n,i,r)||this}return Yh(e,t),e.prototype.drawFlatCoordinates_=function(t,e,n,i){var r=this.coordinates.length,o=this.appendFlatLineCoordinates(t,e,n,i,!1,!1),s=[jh.MOVE_TO_LINE_TO,r,o];return this.instructions.push(s),this.hitDetectionInstructions.push(s),n},e.prototype.drawLineString=function(t,e){var n=this.state,i=n.strokeStyle,r=n.lineWidth;if(void 0!==i&&void 0!==r){this.updateStrokeStyle(n,this.applyStroke),this.beginGeometry(t,e),this.hitDetectionInstructions.push([jh.SET_STROKE_STYLE,n.strokeStyle,n.lineWidth,n.lineCap,n.lineJoin,n.miterLimit,ao,0],Dh);var o=t.getFlatCoordinates(),s=t.getStride();this.drawFlatCoordinates_(o,0,o.length,s),this.hitDetectionInstructions.push(Ah),this.endGeometry(e)}},e.prototype.drawMultiLineString=function(t,e){var n=this.state,i=n.strokeStyle,r=n.lineWidth;if(void 0!==i&&void 0!==r){this.updateStrokeStyle(n,this.applyStroke),this.beginGeometry(t,e),this.hitDetectionInstructions.push([jh.SET_STROKE_STYLE,n.strokeStyle,n.lineWidth,n.lineCap,n.lineJoin,n.miterLimit,n.lineDash,n.lineDashOffset],Dh);for(var o=t.getEnds(),s=t.getFlatCoordinates(),a=t.getStride(),l=0,h=0,u=o.length;ht&&(y>_&&(_=y,d=v,g=o),y=0,v=o-r)),s=a,u=p,c=f),l=m,h=x}return(y+=a)>_?[v,o]:[d,g]}var Hh=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),qh={left:0,end:0,center:.5,right:1,start:1,top:0,middle:.5,hanging:.2,alphabetic:.8,ideographic:.8,bottom:1},Jh={Circle:Zh,Default:Wh,Image:Xh,LineString:Bh,Polygon:Zh,Text:function(t){function e(e,n,i,r){var o=t.call(this,e,n,i,r)||this;return o.labels_=null,o.text_="",o.textOffsetX_=0,o.textOffsetY_=0,o.textRotateWithView_=void 0,o.textRotation_=0,o.textFillState_=null,o.fillStates={},o.textStrokeState_=null,o.strokeStates={},o.textState_={},o.textStates={},o.textKey_="",o.fillKey_="",o.strokeKey_="",o.declutterImageWithText_=void 0,o}return Hh(e,t),e.prototype.finish=function(){var e=t.prototype.finish.call(this);return e.textStates=this.textStates,e.fillStates=this.fillStates,e.strokeStates=this.strokeStates,e},e.prototype.drawText=function(t,e){var n=this.textFillState_,i=this.textStrokeState_,r=this.textState_;if(""!==this.text_&&r&&(n||i)){var o=this.coordinates,s=o.length,a=t.getType(),l=null,h=t.getStride();if(r.placement!==Vh||a!=Wn&&a!=Bn&&a!=Xn&&a!=Kn){var u=r.overflow?null:[];switch(a){case zn:case Yn:l=t.getFlatCoordinates();break;case Wn:l=t.getFlatMidpoint();break;case Vn:l=t.getCenter();break;case Bn:l=t.getFlatMidpoints(),h=2;break;case Xn:l=t.getFlatInteriorPoint(),r.overflow||u.push(l[2]/this.resolution),h=3;break;case Kn:var c=t.getFlatInteriorPoints();l=[];for(w=0,S=c.length;wR[2]}else b=x>T;var I,P=Math.PI,M=[],L=w+i===e;if(_=0,y=S,p=t[e=w],f=t[e+1],L){v(),I=Math.atan2(f-g,p-d),b&&(I+=I>0?-P:P);var F=(T+x)/2,A=(O+C)/2;return M[0]=[F,A,(E-o)/2,I,r],M}for(var D=0,k=r.length;D0?-P:P),void 0!==I){var G=j-I;if(G+=G>P?-2*P:G<-P?2*P:0,Math.abs(G)>s)return null}I=j;for(var z=D,W=0;D0&&t.push("\n",""),t.push(e,""),t}var gu=function(){function t(t,e,n,i){this.overlaps=n,this.pixelRatio=e,this.resolution=t,this.alignFill_,this.instructions=i.instructions,this.coordinates=i.coordinates,this.coordinateCache_={},this.renderedTransform_=[1,0,0,1,0,0],this.hitDetectionInstructions=i.hitDetectionInstructions,this.pixelCoordinates_=null,this.viewRotation_=0,this.fillStates=i.fillStates||{},this.strokeStates=i.strokeStates||{},this.textStates=i.textStates||{},this.widths_={},this.labels_={}}return t.prototype.createLabel=function(t,e,n,i){var r=t+e+n+i;if(this.labels_[r])return this.labels_[r];var o=i?this.strokeStates[i]:null,s=n?this.fillStates[n]:null,a=this.textStates[e],l=this.pixelRatio,h=[a.scale[0]*l,a.scale[1]*l],u=Array.isArray(t),c=fu(u?t[0]:t,a.textAlign||uo),p=i&&o.lineWidth?o.lineWidth:0,f=u?t:t.split("\n").reduce(du,[]),d=function(t,e){for(var n=[],i=[],r=[],o=0,s=0,a=0,l=0,h=0,u=e.length;h<=u;h+=2){var c=e[h];if("\n"!==c&&h!==u){var p=e[h+1]||t.font,f=wo(p,c);n.push(f),s+=f;var d=xo(p);i.push(d),l=Math.max(l,d)}else o=Math.max(o,s),r.push(s),s=0,a+=l}return{width:o,height:a,widths:n,heights:i,lineWidths:r}}(a,f),g=d.width,_=d.height,y=d.widths,v=d.heights,m=d.lineWidths,x=g+p,C=[],w=(x+2)*h[0],S=(_+p)*h[1],E={width:w<0?Math.floor(w):Math.ceil(w),height:S<0?Math.floor(S):Math.ceil(S),contextInstructions:C};(1==h[0]&&1==h[1]||C.push("scale",h),i)&&(C.push("strokeStyle",o.strokeStyle),C.push("lineWidth",p),C.push("lineCap",o.lineCap),C.push("lineJoin",o.lineJoin),C.push("miterLimit",o.miterLimit),($?OffscreenCanvasRenderingContext2D:CanvasRenderingContext2D).prototype.setLineDash&&(C.push("setLineDash",[o.lineDash]),C.push("lineDashOffset",o.lineDashOffset)));n&&C.push("fillStyle",s.fillStyle),C.push("textBaseline","middle"),C.push("textAlign","center");for(var b,T=.5-c,O=c*x+T*p,R=[],I=[],P=0,M=0,L=0,F=0,A=0,D=f.length;At?t-l:r,x=o+h>e?e-h:o,C=f[3]+m*c[0]+f[1],w=f[0]+x*c[1]+f[2],S=y-f[3],E=v-f[0];return(d||0!==u)&&(au[0]=S,uu[0]=S,au[1]=E,lu[1]=E,lu[0]=S+C,hu[0]=lu[0],hu[1]=E+w,uu[1]=hu[1]),0!==u?(Hn(_=qn([1,0,0,1,0,0],n,i,1,1,u,-n,-i),au),Hn(_,lu),Hn(_,hu),Hn(_,uu),be(Math.min(au[0],lu[0],hu[0],uu[0]),Math.min(au[1],lu[1],hu[1],uu[1]),Math.max(au[0],lu[0],hu[0],uu[0]),Math.max(au[1],lu[1],hu[1],uu[1]),su)):be(Math.min(S,S+C),Math.min(E,E+w),Math.max(S,S+C),Math.max(E,E+w),su),p&&(y=Math.round(y),v=Math.round(v)),{drawImageX:y,drawImageY:v,drawImageW:m,drawImageH:x,originX:l,originY:h,declutterBox:{minX:su[0],minY:su[1],maxX:su[2],maxY:su[3],value:g},canvasTransform:_,scale:c}},t.prototype.replayImageOrLabel_=function(t,e,n,i,r,o,s){var a=!(!o&&!s),l=i.declutterBox,h=t.canvas,u=s?s[2]*i.scale[0]/2:0;return l.minX-u<=h.width/e&&l.maxX+u>=0&&l.minY-u<=h.height/e&&l.maxY+u>=0&&(a&&this.replayTextBackground_(t,au,lu,hu,uu,o,s),Eo(t,i.canvasTransform,r,n,i.originX,i.originY,i.drawImageW,i.drawImageH,i.drawImageX,i.drawImageY,i.scale)),!0},t.prototype.fill_=function(t){if(this.alignFill_){var e=Hn(this.renderedTransform_,[0,0]),n=512*this.pixelRatio;t.save(),t.translate(e[0]%n,e[1]%n),t.rotate(this.viewRotation_)}t.fill(),this.alignFill_&&t.restore()},t.prototype.setStrokeStyle_=function(t,e){t.strokeStyle=e[1],t.lineWidth=e[2],t.lineCap=e[3],t.lineJoin=e[4],t.miterLimit=e[5],t.setLineDash&&(t.lineDashOffset=e[7],t.setLineDash(e[6]))},t.prototype.drawLabelWithPointPlacement_=function(t,e,n,i){var r=this.textStates[e],o=this.createLabel(t,e,i,n),s=this.strokeStates[n],a=this.pixelRatio,l=fu(Array.isArray(t)?t[0]:t,r.textAlign||uo),h=qh[r.textBaseline||co],u=s&&s.lineWidth?s.lineWidth:0;return{label:o,anchorX:l*(o.width/a-2*r.scale[0])+2*(.5-l)*u,anchorY:h*o.height/a+2*(.5-h)*u}},t.prototype.execute_=function(t,e,n,i,r,o,s,a){var l,h,c;this.pixelCoordinates_&&u(n,this.renderedTransform_)?l=this.pixelCoordinates_:(this.pixelCoordinates_||(this.pixelCoordinates_=[]),l=$n(this.coordinates,0,this.coordinates.length,2,n,this.pixelCoordinates_),h=this.renderedTransform_,c=n,h[0]=c[0],h[1]=c[1],h[2]=c[2],h[3]=c[3],h[4]=c[4],h[5]=c[5]);for(var p,f,d,g,_,y,v,m,x,C,w,S,E,b,T,O,R=0,I=i.length,P=0,M=0,L=0,F=null,A=null,D=this.coordinateCache_,k=this.viewRotation_,j=Math.round(1e12*Math.atan2(-n[1],n[0]))/1e12,G={context:t,pixelRatio:this.pixelRatio,resolution:this.resolution,rotation:k},z=this.instructions!=i||this.overlaps?0:200;Rz&&(this.fill_(t),M=0),L>z&&(t.stroke(),L=0),M||L||(t.beginPath(),g=NaN,_=NaN),++R;break;case jh.CIRCLE:var N=l[P=W[1]],X=l[P+1],Y=l[P+2]-N,B=l[P+3]-X,K=Math.sqrt(Y*Y+B*B);t.moveTo(N+K,X),t.arc(N,X,K,0,2*Math.PI,!0),++R;break;case jh.CLOSE_PATH:t.closePath(),++R;break;case jh.CUSTOM:P=W[1],p=W[2];var Z=W[3],V=W[4],U=6==W.length?W[5]:void 0;G.geometry=Z,G.feature=E,R in D||(D[R]=[]);var H=D[R];U?U(l,P,p,2,H):(H[0]=l[P],H[1]=l[P+1],H.length=2),V(H,G),++R;break;case jh.DRAW_IMAGE:P=W[1],p=W[2],m=W[3],f=W[4],d=W[5];var q=W[6],J=W[7],Q=W[8],$=W[9],tt=W[10],et=W[11],nt=W[12],it=W[13],rt=W[14];if(!m&&W.length>=19){x=W[18],C=W[19],w=W[20],S=W[21];var ot=this.drawLabelWithPointPlacement_(x,C,w,S);m=ot.label,W[3]=m;var st=W[22];f=(ot.anchorX-st)*this.pixelRatio,W[4]=f;var at=W[23];d=(ot.anchorY-at)*this.pixelRatio,W[5]=d,q=m.height,W[6]=q,it=m.width,W[13]=it}var lt=void 0;W.length>24&&(lt=W[24]);var ht=void 0,ut=void 0,ct=void 0;W.length>16?(ht=W[15],ut=W[16],ct=W[17]):(ht=po,ut=!1,ct=!1),tt&&j?et+=k:tt||j||(et-=k);for(var pt=0;Pn)break;var a=i[s];a||(a=[],i[s]=a),a.push(4*((t+r)*e+(t+o))+3),r>0&&a.push(4*((t-r)*e+(t+o))+3),o>0&&(a.push(4*((t+r)*e+(t-o))+3),r>0&&a.push(4*((t-r)*e+(t-o))+3))}for(var l=[],h=(r=0,i.length);r0){if(!o||p!==eu&&p!==ru||-1!==o.indexOf(t)){var h=(f[s]-3)/4,u=i-h%a,d=i-(h/a|0),g=r(t,e,u*u+d*d);if(g)return g}c.clearRect(0,0,a,a);break}}var g,_,y,v,m,x=Object.keys(this.executorsByZIndex_).map(Number);for(x.sort(s),g=x.length-1;g>=0;--g){var C=x[g].toString();for(y=this.executorsByZIndex_[C],_=_u.length-1;_>=0;--_)if(void 0!==(v=y[p=_u[_]])&&(m=v.executeHitDetection(c,l,n,d,u)))return m}},t.prototype.getClipCoords=function(t){var e=this.maxExtent_;if(!e)return null;var n=e[0],i=e[1],r=e[2],o=e[3],s=[n,i,n,o,r,o,r,i];return $n(s,0,8,2,t,s),s},t.prototype.isEmpty=function(){return y(this.executorsByZIndex_)},t.prototype.execute=function(t,e,n,i,r,o,a){var l=Object.keys(this.executorsByZIndex_).map(Number);l.sort(s),this.maxExtent_&&(t.save(),this.clip(t,n));var h,u,c,p,f,d,g=o||_u;for(a&&l.reverse(),h=0,u=l.length;hd[2];)v=_*++y,u.push(this.getRenderTransform(i,r,o,wu,c,p,v).slice()),g-=_}this.hitDetectionImageData_=function(t,e,n,i,r,o,a){var l=nt(t[0]*wu,t[1]*wu);l.imageSmoothingEnabled=!1;for(var h=l.canvas,u=new Cu(l,wu,r,null,a),c=n.length,p=Math.floor(16777215/c),f={},d=1;d<=c;++d){var g=n[d-1],_=g.getStyleFunction()||i;if(i){var y=_(g,o);if(y){Array.isArray(y)||(y=[y]);for(var v="#"+("000000"+(d*p).toString(16)).slice(-6),m=0,x=y.length;m=n[2])){var r=Xe(n),o=Math.floor((i[0]-n[0])/r)*r;t[0]-=o,t[2]-=o}return t}(m[0],h);S[0]x[0]&&S[2]>x[2]&&m.push([S[0]-C,S[1],S[2]-C,S[3]])}if(!this.dirty_&&this.renderedResolution_==c&&this.renderedRevision_==f&&this.renderedRenderOrder_==g&&Ce(this.wrappedRenderedExtent_,y))return u(this.renderedExtent_,v)||(this.hitDetectionImageData_=null,this.renderedExtent_=v),this.renderedCenter_=_,this.replayGroupChanged=!1,!0;this.replayGroup_=null,this.dirty_=!1;var E,b=new Qh(bu(c,p),y,c,p);this.getLayer().getDeclutter()&&(E=new Qh(bu(c,p),y,c,p));var T,O=_n();if(O){for(var R=0,I=m.length;R180)&&(n[0]=At(i+180,360)-180),n}},ju={OSM:xl,Vector:Rh,XYZ:vl},Gu={Icon:Ir,Stroke:Gl,Style:ql}},7072:function(t,e,n){var i,r,o;function s(t){return(s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}o=function(){"use strict";function t(t,i,r,o,s){!function t(n,i,r,o,s){for(;o>r;){if(o-r>600){var a=o-r+1,l=i-r+1,h=Math.log(a),u=.5*Math.exp(2*h/3),c=.5*Math.sqrt(h*u*(a-u)/a)*(l-a/2<0?-1:1);t(n,i,Math.max(r,Math.floor(i-l*u/a+c)),Math.min(o,Math.floor(i+(a-l)*u/a+c)),s)}var p=n[i],f=r,d=o;for(e(n,r,i),s(n[o],p)>0&&e(n,r,o);f0;)d--}0===s(n[r],p)?e(n,r,d):e(n,++d,o),d<=i&&(r=d+1),i<=d&&(o=d-1)}}(t,i,r||0,o||t.length-1,s||n)}function e(t,e,n){var i=t[e];t[e]=t[n],t[n]=i}function n(t,e){return te?1:0}var i=function(t){void 0===t&&(t=9),this._maxEntries=Math.max(4,t),this._minEntries=Math.max(2,Math.ceil(.4*this._maxEntries)),this.clear()};function r(t,e,n){if(!n)return e.indexOf(t);for(var i=0;i=t.minX&&e.maxY>=t.minY}function d(t){return{children:t,height:1,leaf:!0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function g(e,n,i,r,o){for(var s=[n,i];s.length;)if(!((i=s.pop())-(n=s.pop())<=r)){var a=n+Math.ceil((i-n)/r/2)*r;t(e,a,n,i,o),s.push(n,a,a,i)}}return i.prototype.all=function(){return this._all(this.data,[])},i.prototype.search=function(t){var e=this.data,n=[];if(!f(t,e))return n;for(var i=this.toBBox,r=[];e;){for(var o=0;o=0&&r[e].children.length>this._maxEntries;)this._split(r,e),e--;this._adjustParentBBoxes(i,r,e)},i.prototype._split=function(t,e){var n=t[e],i=n.children.length,r=this._minEntries;this._chooseSplitAxis(n,r,i);var s=this._chooseSplitIndex(n,r,i),a=d(n.children.splice(s,n.children.length-s));a.height=n.height,a.leaf=n.leaf,o(n,this.toBBox),o(a,this.toBBox),e?t[e-1].children.push(a):this._splitRoot(n,a)},i.prototype._splitRoot=function(t,e){this.data=d([t,e]),this.data.height=t.height+1,this.data.leaf=!1,o(this.data,this.toBBox)},i.prototype._chooseSplitIndex=function(t,e,n){for(var i,r,o,a,l,h,c,p=1/0,f=1/0,d=e;d<=n-e;d++){var g=s(t,0,d,this.toBBox),_=s(t,d,n,this.toBBox),y=(r=g,o=_,a=Math.max(r.minX,o.minX),l=Math.max(r.minY,o.minY),h=Math.min(r.maxX,o.maxX),c=Math.min(r.maxY,o.maxY),Math.max(0,h-a)*Math.max(0,c-l)),v=u(g)+u(_);y=e;f--){var d=t.children[f];a(l,t.leaf?r(d):d),h+=c(l)}return h},i.prototype._adjustParentBBoxes=function(t,e,n){for(var i=n;i>=0;i--)a(e[i],t)},i.prototype._condense=function(t){for(var e=t.length-1,n=void 0;e>=0;e--)0===t[e].children.length?e>0?(n=t[e-1].children).splice(n.indexOf(t[e]),1):this.clear():o(t[e],this.toBBox)},i},"object"==s(e)?t.exports=o():void 0===(r="function"==typeof(i=o)?i.call(e,n,e,t):i)||(t.exports=r)}}]); //# sourceMappingURL=521.bundle.js.map \ No newline at end of file diff --git a/js/dist/521.bundle.js.map b/js/dist/521.bundle.js.map index aedcd01..ae0f32d 100644 --- a/js/dist/521.bundle.js.map +++ b/js/dist/521.bundle.js.map @@ -1 +1 @@ -{"version":3,"file":"521.bundle.js","mappings":"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","sources":["webpack://ulogger-server/../src/events/Event.js","webpack://ulogger-server/src/ObjectEventType.js","webpack://ulogger-server/src/Disposable.js","webpack://ulogger-server/src/array.js","webpack://ulogger-server/src/functions.js","webpack://ulogger-server/src/obj.js","webpack://ulogger-server/../src/events/Target.js","webpack://ulogger-server/../src/events/EventType.js","webpack://ulogger-server/src/events.js","webpack://ulogger-server/src/Observable.js","webpack://ulogger-server/src/util.js","webpack://ulogger-server/src/Object.js","webpack://ulogger-server/src/MapEventType.js","webpack://ulogger-server/src/has.js","webpack://ulogger-server/src/dom.js","webpack://ulogger-server/../src/control/Control.js","webpack://ulogger-server/src/css.js","webpack://ulogger-server/src/easing.js","webpack://ulogger-server/../src/control/Rotate.js","webpack://ulogger-server/../src/proj/Units.js","webpack://ulogger-server/../src/proj/Projection.js","webpack://ulogger-server/src/math.js","webpack://ulogger-server/../src/proj/epsg3857.js","webpack://ulogger-server/../src/proj/epsg4326.js","webpack://ulogger-server/../src/proj/projections.js","webpack://ulogger-server/../src/proj/transforms.js","webpack://ulogger-server/../src/extent/Corner.js","webpack://ulogger-server/../src/extent/Relationship.js","webpack://ulogger-server/src/AssertionError.js","webpack://ulogger-server/src/asserts.js","webpack://ulogger-server/src/extent.js","webpack://ulogger-server/src/sphere.js","webpack://ulogger-server/src/proj.js","webpack://ulogger-server/src/transform.js","webpack://ulogger-server/../src/control/ScaleLine.js","webpack://ulogger-server/../src/control/Zoom.js","webpack://ulogger-server/../src/geom/GeometryLayout.js","webpack://ulogger-server/../src/geom/GeometryType.js","webpack://ulogger-server/../geom/flat/transform.js","webpack://ulogger-server/../src/geom/Geometry.js","webpack://ulogger-server/../src/geom/SimpleGeometry.js","webpack://ulogger-server/../geom/flat/closest.js","webpack://ulogger-server/../geom/flat/deflate.js","webpack://ulogger-server/../geom/flat/simplify.js","webpack://ulogger-server/../geom/flat/inflate.js","webpack://ulogger-server/../geom/flat/area.js","webpack://ulogger-server/../src/geom/LinearRing.js","webpack://ulogger-server/../src/geom/Point.js","webpack://ulogger-server/../geom/flat/contains.js","webpack://ulogger-server/../geom/flat/interiorpoint.js","webpack://ulogger-server/../geom/flat/segments.js","webpack://ulogger-server/../geom/flat/intersectsextent.js","webpack://ulogger-server/../geom/flat/reverse.js","webpack://ulogger-server/../geom/flat/orient.js","webpack://ulogger-server/../src/geom/Polygon.js","webpack://ulogger-server/../src/control/ZoomToExtent.js","webpack://ulogger-server/../geom/flat/interpolate.js","webpack://ulogger-server/../geom/flat/length.js","webpack://ulogger-server/../src/geom/LineString.js","webpack://ulogger-server/src/Feature.js","webpack://ulogger-server/../src/style/IconAnchorUnits.js","webpack://ulogger-server/../src/style/IconOrigin.js","webpack://ulogger-server/src/ImageState.js","webpack://ulogger-server/src/size.js","webpack://ulogger-server/../src/style/Image.js","webpack://ulogger-server/src/color.js","webpack://ulogger-server/../src/style/IconImageCache.js","webpack://ulogger-server/src/ImageBase.js","webpack://ulogger-server/src/Image.js","webpack://ulogger-server/../src/style/IconImage.js","webpack://ulogger-server/../src/style/Icon.js","webpack://ulogger-server/../src/layer/Property.js","webpack://ulogger-server/../src/layer/Base.js","webpack://ulogger-server/../src/render/EventType.js","webpack://ulogger-server/../src/source/State.js","webpack://ulogger-server/../src/layer/Layer.js","webpack://ulogger-server/src/coordinate.js","webpack://ulogger-server/../src/renderer/Map.js","webpack://ulogger-server/../src/render/Event.js","webpack://ulogger-server/../src/render/canvas.js","webpack://ulogger-server/../src/renderer/Composite.js","webpack://ulogger-server/src/CollectionEventType.js","webpack://ulogger-server/src/Collection.js","webpack://ulogger-server/../src/layer/Group.js","webpack://ulogger-server/src/MapEvent.js","webpack://ulogger-server/src/MapBrowserEvent.js","webpack://ulogger-server/src/MapBrowserEventType.js","webpack://ulogger-server/../src/pointer/EventType.js","webpack://ulogger-server/src/MapBrowserEventHandler.js","webpack://ulogger-server/src/MapProperty.js","webpack://ulogger-server/../src/structs/PriorityQueue.js","webpack://ulogger-server/src/TileState.js","webpack://ulogger-server/src/TileQueue.js","webpack://ulogger-server/src/ViewHint.js","webpack://ulogger-server/src/ViewProperty.js","webpack://ulogger-server/../src/tilegrid/common.js","webpack://ulogger-server/src/centerconstraint.js","webpack://ulogger-server/src/resolutionconstraint.js","webpack://ulogger-server/src/rotationconstraint.js","webpack://ulogger-server/src/View.js","webpack://ulogger-server/src/PluggableMap.js","webpack://ulogger-server/../src/control/Attribution.js","webpack://ulogger-server/../src/interaction/Property.js","webpack://ulogger-server/../src/interaction/Interaction.js","webpack://ulogger-server/../src/interaction/DoubleClickZoom.js","webpack://ulogger-server/../src/interaction/Pointer.js","webpack://ulogger-server/../src/events/condition.js","webpack://ulogger-server/../src/interaction/DragPan.js","webpack://ulogger-server/../src/interaction/DragRotate.js","webpack://ulogger-server/../src/render/Box.js","webpack://ulogger-server/../src/interaction/DragBox.js","webpack://ulogger-server/../src/interaction/DragZoom.js","webpack://ulogger-server/../src/events/KeyCode.js","webpack://ulogger-server/../src/interaction/KeyboardPan.js","webpack://ulogger-server/../src/interaction/KeyboardZoom.js","webpack://ulogger-server/src/Kinetic.js","webpack://ulogger-server/../src/interaction/MouseWheelZoom.js","webpack://ulogger-server/../src/interaction/PinchRotate.js","webpack://ulogger-server/../src/interaction/PinchZoom.js","webpack://ulogger-server/src/Map.js","webpack://ulogger-server/src/control.js","webpack://ulogger-server/src/interaction.js","webpack://ulogger-server/src/Tile.js","webpack://ulogger-server/src/ImageTile.js","webpack://ulogger-server/src/reproj.js","webpack://ulogger-server/../src/reproj/Triangulation.js","webpack://ulogger-server/../src/source/common.js","webpack://ulogger-server/../src/reproj/Tile.js","webpack://ulogger-server/../src/reproj/common.js","webpack://ulogger-server/../src/structs/LRUCache.js","webpack://ulogger-server/src/tilecoord.js","webpack://ulogger-server/src/TileCache.js","webpack://ulogger-server/../src/source/TileEventType.js","webpack://ulogger-server/../src/source/Source.js","webpack://ulogger-server/src/TileRange.js","webpack://ulogger-server/../src/tilegrid/TileGrid.js","webpack://ulogger-server/src/tilegrid.js","webpack://ulogger-server/../src/source/Tile.js","webpack://ulogger-server/src/tileurlfunction.js","webpack://ulogger-server/../src/source/UrlTile.js","webpack://ulogger-server/../src/source/TileImage.js","webpack://ulogger-server/../src/source/XYZ.js","webpack://ulogger-server/../src/source/OSM.js","webpack://ulogger-server/src/OverlayPositioning.js","webpack://ulogger-server/src/Overlay.js","webpack://ulogger-server/../src/style/Stroke.js","webpack://ulogger-server/src/colorlike.js","webpack://ulogger-server/../src/style/RegularShape.js","webpack://ulogger-server/../src/style/Circle.js","webpack://ulogger-server/../src/style/Fill.js","webpack://ulogger-server/../src/style/Style.js","webpack://ulogger-server/../src/layer/TileProperty.js","webpack://ulogger-server/../src/layer/BaseTile.js","webpack://ulogger-server/../src/renderer/Layer.js","webpack://ulogger-server/../renderer/canvas/Layer.js","webpack://ulogger-server/../renderer/canvas/TileLayer.js","webpack://ulogger-server/../src/layer/Tile.js","webpack://ulogger-server/../src/structs/RBush.js","webpack://ulogger-server/../src/source/VectorEventType.js","webpack://ulogger-server/src/loadingstrategy.js","webpack://ulogger-server/../src/format/FormatType.js","webpack://ulogger-server/src/featureloader.js","webpack://ulogger-server/../src/source/Vector.js","webpack://ulogger-server/../src/layer/BaseVector.js","webpack://ulogger-server/../render/canvas/Instruction.js","webpack://ulogger-server/../src/render/VectorContext.js","webpack://ulogger-server/../render/canvas/Builder.js","webpack://ulogger-server/../render/canvas/ImageBuilder.js","webpack://ulogger-server/../render/canvas/LineStringBuilder.js","webpack://ulogger-server/../render/canvas/PolygonBuilder.js","webpack://ulogger-server/../src/style/TextPlacement.js","webpack://ulogger-server/../geom/flat/straightchunk.js","webpack://ulogger-server/../render/canvas/TextBuilder.js","webpack://ulogger-server/../render/canvas/BuilderGroup.js","webpack://ulogger-server/../render/canvas/BuilderType.js","webpack://ulogger-server/../geom/flat/textpath.js","webpack://ulogger-server/../render/canvas/Executor.js","webpack://ulogger-server/../render/canvas/ExecutorGroup.js","webpack://ulogger-server/../render/canvas/Immediate.js","webpack://ulogger-server/../render/canvas/hitdetect.js","webpack://ulogger-server/../src/renderer/vector.js","webpack://ulogger-server/../renderer/canvas/VectorLayer.js","webpack://ulogger-server/../src/layer/Vector.js","webpack://ulogger-server/./js/src/lib/ol.js","webpack://ulogger-server/./node_modules/rbush/rbush.min.js"],"sourcesContent":["/**\n * @module ol/events/Event\n */\n/**\n * @classdesc\n * Stripped down implementation of the W3C DOM Level 2 Event interface.\n * See https://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-interface.\n *\n * This implementation only provides `type` and `target` properties, and\n * `stopPropagation` and `preventDefault` methods. It is meant as base class\n * for higher level events defined in the library, and works with\n * {@link module:ol/events/Target~Target}.\n */\nvar BaseEvent = /** @class */ (function () {\n /**\n * @param {string} type Type.\n */\n function BaseEvent(type) {\n /**\n * @type {boolean}\n */\n this.propagationStopped;\n /**\n * @type {boolean}\n */\n this.defaultPrevented;\n /**\n * The event type.\n * @type {string}\n * @api\n */\n this.type = type;\n /**\n * The event target.\n * @type {Object}\n * @api\n */\n this.target = null;\n }\n /**\n * Prevent default. This means that no emulated `click`, `singleclick` or `doubleclick` events\n * will be fired.\n * @api\n */\n BaseEvent.prototype.preventDefault = function () {\n this.defaultPrevented = true;\n };\n /**\n * Stop event propagation.\n * @api\n */\n BaseEvent.prototype.stopPropagation = function () {\n this.propagationStopped = true;\n };\n return BaseEvent;\n}());\n/**\n * @param {Event|import(\"./Event.js\").default} evt Event\n */\nexport function stopPropagation(evt) {\n evt.stopPropagation();\n}\n/**\n * @param {Event|import(\"./Event.js\").default} evt Event\n */\nexport function preventDefault(evt) {\n evt.preventDefault();\n}\nexport default BaseEvent;\n//# sourceMappingURL=Event.js.map","/**\n * @module ol/ObjectEventType\n */\n/**\n * @enum {string}\n */\nexport default {\n /**\n * Triggered when a property is changed.\n * @event module:ol/Object.ObjectEvent#propertychange\n * @api\n */\n PROPERTYCHANGE: 'propertychange',\n};\n/**\n * @typedef {'propertychange'} Types\n */\n//# sourceMappingURL=ObjectEventType.js.map","/**\n * @module ol/Disposable\n */\n/**\n * @classdesc\n * Objects that need to clean up after themselves.\n */\nvar Disposable = /** @class */ (function () {\n function Disposable() {\n /**\n * The object has already been disposed.\n * @type {boolean}\n * @protected\n */\n this.disposed = false;\n }\n /**\n * Clean up.\n */\n Disposable.prototype.dispose = function () {\n if (!this.disposed) {\n this.disposed = true;\n this.disposeInternal();\n }\n };\n /**\n * Extension point for disposable objects.\n * @protected\n */\n Disposable.prototype.disposeInternal = function () { };\n return Disposable;\n}());\nexport default Disposable;\n//# sourceMappingURL=Disposable.js.map","/**\n * @module ol/array\n */\n/**\n * Performs a binary search on the provided sorted list and returns the index of the item if found. If it can't be found it'll return -1.\n * https://github.com/darkskyapp/binary-search\n *\n * @param {Array<*>} haystack Items to search through.\n * @param {*} needle The item to look for.\n * @param {Function} [opt_comparator] Comparator function.\n * @return {number} The index of the item if found, -1 if not.\n */\nexport function binarySearch(haystack, needle, opt_comparator) {\n var mid, cmp;\n var comparator = opt_comparator || numberSafeCompareFunction;\n var low = 0;\n var high = haystack.length;\n var found = false;\n while (low < high) {\n /* Note that \"(low + high) >>> 1\" may overflow, and results in a typecast\n * to double (which gives the wrong results). */\n mid = low + ((high - low) >> 1);\n cmp = +comparator(haystack[mid], needle);\n if (cmp < 0.0) {\n /* Too low. */\n low = mid + 1;\n }\n else {\n /* Key found or too high */\n high = mid;\n found = !cmp;\n }\n }\n /* Key not found. */\n return found ? low : ~low;\n}\n/**\n * Compare function for array sort that is safe for numbers.\n * @param {*} a The first object to be compared.\n * @param {*} b The second object to be compared.\n * @return {number} A negative number, zero, or a positive number as the first\n * argument is less than, equal to, or greater than the second.\n */\nexport function numberSafeCompareFunction(a, b) {\n return a > b ? 1 : a < b ? -1 : 0;\n}\n/**\n * Whether the array contains the given object.\n * @param {Array<*>} arr The array to test for the presence of the element.\n * @param {*} obj The object for which to test.\n * @return {boolean} The object is in the array.\n */\nexport function includes(arr, obj) {\n return arr.indexOf(obj) >= 0;\n}\n/**\n * {@link module:ol/tilegrid/TileGrid~TileGrid#getZForResolution} can use a function\n * of this type to determine which nearest resolution to use.\n *\n * This function takes a `{number}` representing a value between two array entries,\n * a `{number}` representing the value of the nearest higher entry and\n * a `{number}` representing the value of the nearest lower entry\n * as arguments and returns a `{number}`. If a negative number or zero is returned\n * the lower value will be used, if a positive number is returned the higher value\n * will be used.\n * @typedef {function(number, number, number): number} NearestDirectionFunction\n * @api\n */\n/**\n * @param {Array} arr Array in desccending order.\n * @param {number} target Target.\n * @param {number|NearestDirectionFunction} direction\n * 0 means return the nearest,\n * > 0 means return the largest nearest,\n * < 0 means return the smallest nearest.\n * @return {number} Index.\n */\nexport function linearFindNearest(arr, target, direction) {\n var n = arr.length;\n if (arr[0] <= target) {\n return 0;\n }\n else if (target <= arr[n - 1]) {\n return n - 1;\n }\n else {\n var i = void 0;\n if (direction > 0) {\n for (i = 1; i < n; ++i) {\n if (arr[i] < target) {\n return i - 1;\n }\n }\n }\n else if (direction < 0) {\n for (i = 1; i < n; ++i) {\n if (arr[i] <= target) {\n return i;\n }\n }\n }\n else {\n for (i = 1; i < n; ++i) {\n if (arr[i] == target) {\n return i;\n }\n else if (arr[i] < target) {\n if (typeof direction === 'function') {\n if (direction(target, arr[i - 1], arr[i]) > 0) {\n return i - 1;\n }\n else {\n return i;\n }\n }\n else if (arr[i - 1] - target < target - arr[i]) {\n return i - 1;\n }\n else {\n return i;\n }\n }\n }\n }\n return n - 1;\n }\n}\n/**\n * @param {Array<*>} arr Array.\n * @param {number} begin Begin index.\n * @param {number} end End index.\n */\nexport function reverseSubArray(arr, begin, end) {\n while (begin < end) {\n var tmp = arr[begin];\n arr[begin] = arr[end];\n arr[end] = tmp;\n ++begin;\n --end;\n }\n}\n/**\n * @param {Array} arr The array to modify.\n * @param {!Array|VALUE} data The elements or arrays of elements to add to arr.\n * @template VALUE\n */\nexport function extend(arr, data) {\n var extension = Array.isArray(data) ? data : [data];\n var length = extension.length;\n for (var i = 0; i < length; i++) {\n arr[arr.length] = extension[i];\n }\n}\n/**\n * @param {Array} arr The array to modify.\n * @param {VALUE} obj The element to remove.\n * @template VALUE\n * @return {boolean} If the element was removed.\n */\nexport function remove(arr, obj) {\n var i = arr.indexOf(obj);\n var found = i > -1;\n if (found) {\n arr.splice(i, 1);\n }\n return found;\n}\n/**\n * @param {Array} arr The array to search in.\n * @param {function(VALUE, number, ?) : boolean} func The function to compare.\n * @template VALUE\n * @return {VALUE|null} The element found or null.\n */\nexport function find(arr, func) {\n var length = arr.length >>> 0;\n var value;\n for (var i = 0; i < length; i++) {\n value = arr[i];\n if (func(value, i, arr)) {\n return value;\n }\n }\n return null;\n}\n/**\n * @param {Array|Uint8ClampedArray} arr1 The first array to compare.\n * @param {Array|Uint8ClampedArray} arr2 The second array to compare.\n * @return {boolean} Whether the two arrays are equal.\n */\nexport function equals(arr1, arr2) {\n var len1 = arr1.length;\n if (len1 !== arr2.length) {\n return false;\n }\n for (var i = 0; i < len1; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n}\n/**\n * Sort the passed array such that the relative order of equal elements is preverved.\n * See https://en.wikipedia.org/wiki/Sorting_algorithm#Stability for details.\n * @param {Array<*>} arr The array to sort (modifies original).\n * @param {!function(*, *): number} compareFnc Comparison function.\n * @api\n */\nexport function stableSort(arr, compareFnc) {\n var length = arr.length;\n var tmp = Array(arr.length);\n var i;\n for (i = 0; i < length; i++) {\n tmp[i] = { index: i, value: arr[i] };\n }\n tmp.sort(function (a, b) {\n return compareFnc(a.value, b.value) || a.index - b.index;\n });\n for (i = 0; i < arr.length; i++) {\n arr[i] = tmp[i].value;\n }\n}\n/**\n * @param {Array<*>} arr The array to search in.\n * @param {Function} func Comparison function.\n * @return {number} Return index.\n */\nexport function findIndex(arr, func) {\n var index;\n var found = !arr.every(function (el, idx) {\n index = idx;\n return !func(el, idx, arr);\n });\n return found ? index : -1;\n}\n/**\n * @param {Array<*>} arr The array to test.\n * @param {Function} [opt_func] Comparison function.\n * @param {boolean} [opt_strict] Strictly sorted (default false).\n * @return {boolean} Return index.\n */\nexport function isSorted(arr, opt_func, opt_strict) {\n var compare = opt_func || numberSafeCompareFunction;\n return arr.every(function (currentVal, index) {\n if (index === 0) {\n return true;\n }\n var res = compare(arr[index - 1], currentVal);\n return !(res > 0 || (opt_strict && res === 0));\n });\n}\n//# sourceMappingURL=array.js.map","/**\n * @module ol/functions\n */\nimport { equals as arrayEquals } from './array.js';\n/**\n * Always returns true.\n * @return {boolean} true.\n */\nexport function TRUE() {\n return true;\n}\n/**\n * Always returns false.\n * @return {boolean} false.\n */\nexport function FALSE() {\n return false;\n}\n/**\n * A reusable function, used e.g. as a default for callbacks.\n *\n * @return {void} Nothing.\n */\nexport function VOID() { }\n/**\n * Wrap a function in another function that remembers the last return. If the\n * returned function is called twice in a row with the same arguments and the same\n * this object, it will return the value from the first call in the second call.\n *\n * @param {function(...any): ReturnType} fn The function to memoize.\n * @return {function(...any): ReturnType} The memoized function.\n * @template ReturnType\n */\nexport function memoizeOne(fn) {\n var called = false;\n /** @type {ReturnType} */\n var lastResult;\n /** @type {Array} */\n var lastArgs;\n var lastThis;\n return function () {\n var nextArgs = Array.prototype.slice.call(arguments);\n if (!called || this !== lastThis || !arrayEquals(nextArgs, lastArgs)) {\n called = true;\n lastThis = this;\n lastArgs = nextArgs;\n lastResult = fn.apply(this, arguments);\n }\n return lastResult;\n };\n}\n//# sourceMappingURL=functions.js.map","/**\n * @module ol/obj\n */\n/**\n * Polyfill for Object.assign(). Assigns enumerable and own properties from\n * one or more source objects to a target object.\n * See https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/assign.\n *\n * @param {!Object} target The target object.\n * @param {...Object} var_sources The source object(s).\n * @return {!Object} The modified target object.\n */\nexport var assign = typeof Object.assign === 'function'\n ? Object.assign\n : function (target, var_sources) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n var output = Object(target);\n for (var i = 1, ii = arguments.length; i < ii; ++i) {\n var source = arguments[i];\n if (source !== undefined && source !== null) {\n for (var key in source) {\n if (source.hasOwnProperty(key)) {\n output[key] = source[key];\n }\n }\n }\n }\n return output;\n };\n/**\n * Removes all properties from an object.\n * @param {Object} object The object to clear.\n */\nexport function clear(object) {\n for (var property in object) {\n delete object[property];\n }\n}\n/**\n * Polyfill for Object.values(). Get an array of property values from an object.\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/values\n *\n * @param {!Object} object The object from which to get the values.\n * @return {!Array} The property values.\n * @template K,V\n */\nexport var getValues = typeof Object.values === 'function'\n ? Object.values\n : function (object) {\n var values = [];\n for (var property in object) {\n values.push(object[property]);\n }\n return values;\n };\n/**\n * Determine if an object has any properties.\n * @param {Object} object The object to check.\n * @return {boolean} The object is empty.\n */\nexport function isEmpty(object) {\n var property;\n for (property in object) {\n return false;\n }\n return !property;\n}\n//# sourceMappingURL=obj.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/events/Target\n */\nimport Disposable from '../Disposable.js';\nimport Event from './Event.js';\nimport { VOID } from '../functions.js';\nimport { clear } from '../obj.js';\n/**\n * @typedef {EventTarget|Target} EventTargetLike\n */\n/**\n * @classdesc\n * A simplified implementation of the W3C DOM Level 2 EventTarget interface.\n * See https://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/events.html#Events-EventTarget.\n *\n * There are two important simplifications compared to the specification:\n *\n * 1. The handling of `useCapture` in `addEventListener` and\n * `removeEventListener`. There is no real capture model.\n * 2. The handling of `stopPropagation` and `preventDefault` on `dispatchEvent`.\n * There is no event target hierarchy. When a listener calls\n * `stopPropagation` or `preventDefault` on an event object, it means that no\n * more listeners after this one will be called. Same as when the listener\n * returns false.\n */\nvar Target = /** @class */ (function (_super) {\n __extends(Target, _super);\n /**\n * @param {*} [opt_target] Default event target for dispatched events.\n */\n function Target(opt_target) {\n var _this = _super.call(this) || this;\n /**\n * @private\n * @type {*}\n */\n _this.eventTarget_ = opt_target;\n /**\n * @private\n * @type {Object}\n */\n _this.pendingRemovals_ = null;\n /**\n * @private\n * @type {Object}\n */\n _this.dispatching_ = null;\n /**\n * @private\n * @type {Object>}\n */\n _this.listeners_ = null;\n return _this;\n }\n /**\n * @param {string} type Type.\n * @param {import(\"../events.js\").Listener} listener Listener.\n */\n Target.prototype.addEventListener = function (type, listener) {\n if (!type || !listener) {\n return;\n }\n var listeners = this.listeners_ || (this.listeners_ = {});\n var listenersForType = listeners[type] || (listeners[type] = []);\n if (listenersForType.indexOf(listener) === -1) {\n listenersForType.push(listener);\n }\n };\n /**\n * Dispatches an event and calls all listeners listening for events\n * of this type. The event parameter can either be a string or an\n * Object with a `type` property.\n *\n * @param {import(\"./Event.js\").default|string} event Event object.\n * @return {boolean|undefined} `false` if anyone called preventDefault on the\n * event object or if any of the listeners returned false.\n * @api\n */\n Target.prototype.dispatchEvent = function (event) {\n /** @type {import(\"./Event.js\").default|Event} */\n var evt = typeof event === 'string' ? new Event(event) : event;\n var type = evt.type;\n if (!evt.target) {\n evt.target = this.eventTarget_ || this;\n }\n var listeners = this.listeners_ && this.listeners_[type];\n var propagate;\n if (listeners) {\n var dispatching = this.dispatching_ || (this.dispatching_ = {});\n var pendingRemovals = this.pendingRemovals_ || (this.pendingRemovals_ = {});\n if (!(type in dispatching)) {\n dispatching[type] = 0;\n pendingRemovals[type] = 0;\n }\n ++dispatching[type];\n for (var i = 0, ii = listeners.length; i < ii; ++i) {\n if ('handleEvent' in listeners[i]) {\n propagate = /** @type {import(\"../events.js\").ListenerObject} */ (listeners[i]).handleEvent(evt);\n }\n else {\n propagate = /** @type {import(\"../events.js\").ListenerFunction} */ (listeners[i]).call(this, evt);\n }\n if (propagate === false || evt.propagationStopped) {\n propagate = false;\n break;\n }\n }\n --dispatching[type];\n if (dispatching[type] === 0) {\n var pr = pendingRemovals[type];\n delete pendingRemovals[type];\n while (pr--) {\n this.removeEventListener(type, VOID);\n }\n delete dispatching[type];\n }\n return propagate;\n }\n };\n /**\n * Clean up.\n */\n Target.prototype.disposeInternal = function () {\n this.listeners_ && clear(this.listeners_);\n };\n /**\n * Get the listeners for a specified event type. Listeners are returned in the\n * order that they will be called in.\n *\n * @param {string} type Type.\n * @return {Array|undefined} Listeners.\n */\n Target.prototype.getListeners = function (type) {\n return (this.listeners_ && this.listeners_[type]) || undefined;\n };\n /**\n * @param {string} [opt_type] Type. If not provided,\n * `true` will be returned if this event target has any listeners.\n * @return {boolean} Has listeners.\n */\n Target.prototype.hasListener = function (opt_type) {\n if (!this.listeners_) {\n return false;\n }\n return opt_type\n ? opt_type in this.listeners_\n : Object.keys(this.listeners_).length > 0;\n };\n /**\n * @param {string} type Type.\n * @param {import(\"../events.js\").Listener} listener Listener.\n */\n Target.prototype.removeEventListener = function (type, listener) {\n var listeners = this.listeners_ && this.listeners_[type];\n if (listeners) {\n var index = listeners.indexOf(listener);\n if (index !== -1) {\n if (this.pendingRemovals_ && type in this.pendingRemovals_) {\n // make listener a no-op, and remove later in #dispatchEvent()\n listeners[index] = VOID;\n ++this.pendingRemovals_[type];\n }\n else {\n listeners.splice(index, 1);\n if (listeners.length === 0) {\n delete this.listeners_[type];\n }\n }\n }\n }\n };\n return Target;\n}(Disposable));\nexport default Target;\n//# sourceMappingURL=Target.js.map","/**\n * @module ol/events/EventType\n */\n/**\n * @enum {string}\n * @const\n */\nexport default {\n /**\n * Generic change event. Triggered when the revision counter is increased.\n * @event module:ol/events/Event~BaseEvent#change\n * @api\n */\n CHANGE: 'change',\n /**\n * Generic error event. Triggered when an error occurs.\n * @event module:ol/events/Event~BaseEvent#error\n * @api\n */\n ERROR: 'error',\n BLUR: 'blur',\n CLEAR: 'clear',\n CONTEXTMENU: 'contextmenu',\n CLICK: 'click',\n DBLCLICK: 'dblclick',\n DRAGENTER: 'dragenter',\n DRAGOVER: 'dragover',\n DROP: 'drop',\n FOCUS: 'focus',\n KEYDOWN: 'keydown',\n KEYPRESS: 'keypress',\n LOAD: 'load',\n RESIZE: 'resize',\n TOUCHMOVE: 'touchmove',\n WHEEL: 'wheel',\n};\n//# sourceMappingURL=EventType.js.map","/**\n * @module ol/events\n */\nimport { clear } from './obj.js';\n/**\n * Key to use with {@link module:ol/Observable~Observable#unByKey}.\n * @typedef {Object} EventsKey\n * @property {ListenerFunction} listener Listener.\n * @property {import(\"./events/Target.js\").EventTargetLike} target Target.\n * @property {string} type Type.\n * @api\n */\n/**\n * Listener function. This function is called with an event object as argument.\n * When the function returns `false`, event propagation will stop.\n *\n * @typedef {function((Event|import(\"./events/Event.js\").default)): (void|boolean)} ListenerFunction\n * @api\n */\n/**\n * @typedef {Object} ListenerObject\n * @property {ListenerFunction} handleEvent HandleEvent listener function.\n */\n/**\n * @typedef {ListenerFunction|ListenerObject} Listener\n */\n/**\n * Registers an event listener on an event target. Inspired by\n * https://google.github.io/closure-library/api/source/closure/goog/events/events.js.src.html\n *\n * This function efficiently binds a `listener` to a `this` object, and returns\n * a key for use with {@link module:ol/events.unlistenByKey}.\n *\n * @param {import(\"./events/Target.js\").EventTargetLike} target Event target.\n * @param {string} type Event type.\n * @param {ListenerFunction} listener Listener.\n * @param {Object} [opt_this] Object referenced by the `this` keyword in the\n * listener. Default is the `target`.\n * @param {boolean} [opt_once] If true, add the listener as one-off listener.\n * @return {EventsKey} Unique key for the listener.\n */\nexport function listen(target, type, listener, opt_this, opt_once) {\n if (opt_this && opt_this !== target) {\n listener = listener.bind(opt_this);\n }\n if (opt_once) {\n var originalListener_1 = listener;\n listener = function () {\n target.removeEventListener(type, listener);\n originalListener_1.apply(this, arguments);\n };\n }\n var eventsKey = {\n target: target,\n type: type,\n listener: listener,\n };\n target.addEventListener(type, listener);\n return eventsKey;\n}\n/**\n * Registers a one-off event listener on an event target. Inspired by\n * https://google.github.io/closure-library/api/source/closure/goog/events/events.js.src.html\n *\n * This function efficiently binds a `listener` as self-unregistering listener\n * to a `this` object, and returns a key for use with\n * {@link module:ol/events.unlistenByKey} in case the listener needs to be\n * unregistered before it is called.\n *\n * When {@link module:ol/events.listen} is called with the same arguments after this\n * function, the self-unregistering listener will be turned into a permanent\n * listener.\n *\n * @param {import(\"./events/Target.js\").EventTargetLike} target Event target.\n * @param {string} type Event type.\n * @param {ListenerFunction} listener Listener.\n * @param {Object} [opt_this] Object referenced by the `this` keyword in the\n * listener. Default is the `target`.\n * @return {EventsKey} Key for unlistenByKey.\n */\nexport function listenOnce(target, type, listener, opt_this) {\n return listen(target, type, listener, opt_this, true);\n}\n/**\n * Unregisters event listeners on an event target. Inspired by\n * https://google.github.io/closure-library/api/source/closure/goog/events/events.js.src.html\n *\n * The argument passed to this function is the key returned from\n * {@link module:ol/events.listen} or {@link module:ol/events.listenOnce}.\n *\n * @param {EventsKey} key The key.\n */\nexport function unlistenByKey(key) {\n if (key && key.target) {\n key.target.removeEventListener(key.type, key.listener);\n clear(key);\n }\n}\n//# sourceMappingURL=events.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/Observable\n */\nimport EventTarget from './events/Target.js';\nimport EventType from './events/EventType.js';\nimport { listen, listenOnce, unlistenByKey } from './events.js';\n/***\n * @template {string} Type\n * @template {Event|import(\"./events/Event.js\").default} EventClass\n * @template Return\n * @typedef {(type: Type|Type[], listener: (event: EventClass) => ?) => Return} OnSignature\n */\n/***\n * @template {string} Type\n * @template Return\n * @typedef {(type: Type[], listener: (event: Event|import(\"./events/Event\").default) => ?) => Return} CombinedOnSignature\n */\n/***\n * @typedef {import(\"./events\").EventsKey|Array} OnReturn\n */\n/**\n * @typedef {'change'|'error'} EventTypes\n */\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * An event target providing convenient methods for listener registration\n * and unregistration. A generic `change` event is always available through\n * {@link module:ol/Observable~Observable#changed}.\n *\n * @fires import(\"./events/Event.js\").default\n * @api\n */\nvar Observable = /** @class */ (function (_super) {\n __extends(Observable, _super);\n function Observable() {\n var _this = _super.call(this) || this;\n /***\n * @type {OnSignature}\n */\n _this.on = _this.onInternal;\n /***\n * @type {OnSignature}\n */\n _this.once = _this.onceInternal;\n /***\n * @type {OnSignature}\n */\n _this.un = _this.unInternal;\n /**\n * @private\n * @type {number}\n */\n _this.revision_ = 0;\n return _this;\n }\n /**\n * Increases the revision counter and dispatches a 'change' event.\n * @api\n */\n Observable.prototype.changed = function () {\n ++this.revision_;\n this.dispatchEvent(EventType.CHANGE);\n };\n /**\n * Get the version number for this object. Each time the object is modified,\n * its version number will be incremented.\n * @return {number} Revision.\n * @api\n */\n Observable.prototype.getRevision = function () {\n return this.revision_;\n };\n /**\n * @param {string|Array} type Type.\n * @param {function(?): ?} listener Listener.\n * @return {import(\"./events.js\").EventsKey|Array} Event key.\n * @protected\n */\n Observable.prototype.onInternal = function (type, listener) {\n if (Array.isArray(type)) {\n var len = type.length;\n var keys = new Array(len);\n for (var i = 0; i < len; ++i) {\n keys[i] = listen(this, type[i], listener);\n }\n return keys;\n }\n else {\n return listen(this, /** @type {string} */ (type), listener);\n }\n };\n /**\n * @param {string|Array} type Type.\n * @param {function(?): ?} listener Listener.\n * @return {import(\"./events.js\").EventsKey|Array} Event key.\n * @protected\n */\n Observable.prototype.onceInternal = function (type, listener) {\n var key;\n if (Array.isArray(type)) {\n var len = type.length;\n key = new Array(len);\n for (var i = 0; i < len; ++i) {\n key[i] = listenOnce(this, type[i], listener);\n }\n }\n else {\n key = listenOnce(this, /** @type {string} */ (type), listener);\n }\n /** @type {Object} */ (listener).ol_key = key;\n return key;\n };\n /**\n * Unlisten for a certain type of event.\n * @param {string|Array} type Type.\n * @param {function(?): ?} listener Listener.\n * @protected\n */\n Observable.prototype.unInternal = function (type, listener) {\n var key = /** @type {Object} */ (listener).ol_key;\n if (key) {\n unByKey(key);\n }\n else if (Array.isArray(type)) {\n for (var i = 0, ii = type.length; i < ii; ++i) {\n this.removeEventListener(type[i], listener);\n }\n }\n else {\n this.removeEventListener(type, listener);\n }\n };\n return Observable;\n}(EventTarget));\n/**\n * Listen for a certain type of event.\n * @function\n * @param {string|Array} type The event type or array of event types.\n * @param {function((Event|import(\"./events/Event\").default)): ?} listener The listener function.\n * @return {import(\"./events.js\").EventsKey|Array} Unique key for the listener. If\n * called with an array of event types as the first argument, the return\n * will be an array of keys.\n * @api\n */\nObservable.prototype.on;\n/**\n * Listen once for a certain type of event.\n * @function\n * @param {string|Array} type The event type or array of event types.\n * @param {function((Event|import(\"./events/Event\").default)): ?} listener The listener function.\n * @return {import(\"./events.js\").EventsKey|Array} Unique key for the listener. If\n * called with an array of event types as the first argument, the return\n * will be an array of keys.\n * @api\n */\nObservable.prototype.once;\n/**\n * Unlisten for a certain type of event.\n * @function\n * @param {string|Array} type The event type or array of event types.\n * @param {function((Event|import(\"./events/Event\").default)): ?} listener The listener function.\n * @api\n */\nObservable.prototype.un;\n/**\n * Removes an event listener using the key returned by `on()` or `once()`.\n * @param {import(\"./events.js\").EventsKey|Array} key The key returned by `on()`\n * or `once()` (or an array of keys).\n * @api\n */\nexport function unByKey(key) {\n if (Array.isArray(key)) {\n for (var i = 0, ii = key.length; i < ii; ++i) {\n unlistenByKey(key[i]);\n }\n }\n else {\n unlistenByKey(/** @type {import(\"./events.js\").EventsKey} */ (key));\n }\n}\nexport default Observable;\n//# sourceMappingURL=Observable.js.map","/**\n * @module ol/util\n */\n/**\n * @return {?} Any return.\n */\nexport function abstract() {\n return /** @type {?} */ ((function () {\n throw new Error('Unimplemented abstract method.');\n })());\n}\n/**\n * Counter for getUid.\n * @type {number}\n * @private\n */\nvar uidCounter_ = 0;\n/**\n * Gets a unique ID for an object. This mutates the object so that further calls\n * with the same object as a parameter returns the same value. Unique IDs are generated\n * as a strictly increasing sequence. Adapted from goog.getUid.\n *\n * @param {Object} obj The object to get the unique ID for.\n * @return {string} The unique ID for the object.\n * @api\n */\nexport function getUid(obj) {\n return obj.ol_uid || (obj.ol_uid = String(++uidCounter_));\n}\n/**\n * OpenLayers version.\n * @type {string}\n */\nexport var VERSION = '6.6.1';\n//# sourceMappingURL=util.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/Object\n */\nimport Event from './events/Event.js';\nimport ObjectEventType from './ObjectEventType.js';\nimport Observable from './Observable.js';\nimport { assign, isEmpty } from './obj.js';\nimport { getUid } from './util.js';\n/**\n * @classdesc\n * Events emitted by {@link module:ol/Object~BaseObject} instances are instances of this type.\n */\nvar ObjectEvent = /** @class */ (function (_super) {\n __extends(ObjectEvent, _super);\n /**\n * @param {string} type The event type.\n * @param {string} key The property name.\n * @param {*} oldValue The old value for `key`.\n */\n function ObjectEvent(type, key, oldValue) {\n var _this = _super.call(this, type) || this;\n /**\n * The name of the property whose value is changing.\n * @type {string}\n * @api\n */\n _this.key = key;\n /**\n * The old value. To get the new value use `e.target.get(e.key)` where\n * `e` is the event object.\n * @type {*}\n * @api\n */\n _this.oldValue = oldValue;\n return _this;\n }\n return ObjectEvent;\n}(Event));\nexport { ObjectEvent };\n/***\n * @template Return\n * @typedef {import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature &\n * import(\"./Observable\").CombinedOnSignature} ObjectOnSignature\n */\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * Most non-trivial classes inherit from this.\n *\n * This extends {@link module:ol/Observable} with observable\n * properties, where each property is observable as well as the object as a\n * whole.\n *\n * Classes that inherit from this have pre-defined properties, to which you can\n * add your owns. The pre-defined properties are listed in this documentation as\n * 'Observable Properties', and have their own accessors; for example,\n * {@link module:ol/Map~Map} has a `target` property, accessed with\n * `getTarget()` and changed with `setTarget()`. Not all properties are however\n * settable. There are also general-purpose accessors `get()` and `set()`. For\n * example, `get('target')` is equivalent to `getTarget()`.\n *\n * The `set` accessors trigger a change event, and you can monitor this by\n * registering a listener. For example, {@link module:ol/View~View} has a\n * `center` property, so `view.on('change:center', function(evt) {...});` would\n * call the function whenever the value of the center property changes. Within\n * the function, `evt.target` would be the view, so `evt.target.getCenter()`\n * would return the new center.\n *\n * You can add your own observable properties with\n * `object.set('prop', 'value')`, and retrieve that with `object.get('prop')`.\n * You can listen for changes on that property value with\n * `object.on('change:prop', listener)`. You can get a list of all\n * properties with {@link module:ol/Object~BaseObject#getProperties}.\n *\n * Note that the observable properties are separate from standard JS properties.\n * You can, for example, give your map object a title with\n * `map.title='New title'` and with `map.set('title', 'Another title')`. The\n * first will be a `hasOwnProperty`; the second will appear in\n * `getProperties()`. Only the second is observable.\n *\n * Properties can be deleted by using the unset method. E.g.\n * object.unset('foo').\n *\n * @fires ObjectEvent\n * @api\n */\nvar BaseObject = /** @class */ (function (_super) {\n __extends(BaseObject, _super);\n /**\n * @param {Object} [opt_values] An object with key-value pairs.\n */\n function BaseObject(opt_values) {\n var _this = _super.call(this) || this;\n /***\n * @type {ObjectOnSignature}\n */\n _this.on;\n /***\n * @type {ObjectOnSignature}\n */\n _this.once;\n /***\n * @type {ObjectOnSignature}\n */\n _this.un;\n // Call {@link module:ol/util.getUid} to ensure that the order of objects' ids is\n // the same as the order in which they were created. This also helps to\n // ensure that object properties are always added in the same order, which\n // helps many JavaScript engines generate faster code.\n getUid(_this);\n /**\n * @private\n * @type {Object}\n */\n _this.values_ = null;\n if (opt_values !== undefined) {\n _this.setProperties(opt_values);\n }\n return _this;\n }\n /**\n * Gets a value.\n * @param {string} key Key name.\n * @return {*} Value.\n * @api\n */\n BaseObject.prototype.get = function (key) {\n var value;\n if (this.values_ && this.values_.hasOwnProperty(key)) {\n value = this.values_[key];\n }\n return value;\n };\n /**\n * Get a list of object property names.\n * @return {Array} List of property names.\n * @api\n */\n BaseObject.prototype.getKeys = function () {\n return (this.values_ && Object.keys(this.values_)) || [];\n };\n /**\n * Get an object of all property names and values.\n * @return {Object} Object.\n * @api\n */\n BaseObject.prototype.getProperties = function () {\n return (this.values_ && assign({}, this.values_)) || {};\n };\n /**\n * @return {boolean} The object has properties.\n */\n BaseObject.prototype.hasProperties = function () {\n return !!this.values_;\n };\n /**\n * @param {string} key Key name.\n * @param {*} oldValue Old value.\n */\n BaseObject.prototype.notify = function (key, oldValue) {\n var eventType;\n eventType = \"change:\" + key;\n this.dispatchEvent(new ObjectEvent(eventType, key, oldValue));\n eventType = ObjectEventType.PROPERTYCHANGE;\n this.dispatchEvent(new ObjectEvent(eventType, key, oldValue));\n };\n /**\n * @param {string} key Key name.\n * @param {import(\"./events.js\").Listener} listener Listener.\n */\n BaseObject.prototype.addChangeListener = function (key, listener) {\n this.addEventListener(\"change:\" + key, listener);\n };\n /**\n * @param {string} key Key name.\n * @param {import(\"./events.js\").Listener} listener Listener.\n */\n BaseObject.prototype.removeChangeListener = function (key, listener) {\n this.removeEventListener(\"change:\" + key, listener);\n };\n /**\n * Sets a value.\n * @param {string} key Key name.\n * @param {*} value Value.\n * @param {boolean} [opt_silent] Update without triggering an event.\n * @api\n */\n BaseObject.prototype.set = function (key, value, opt_silent) {\n var values = this.values_ || (this.values_ = {});\n if (opt_silent) {\n values[key] = value;\n }\n else {\n var oldValue = values[key];\n values[key] = value;\n if (oldValue !== value) {\n this.notify(key, oldValue);\n }\n }\n };\n /**\n * Sets a collection of key-value pairs. Note that this changes any existing\n * properties and adds new ones (it does not remove any existing properties).\n * @param {Object} values Values.\n * @param {boolean} [opt_silent] Update without triggering an event.\n * @api\n */\n BaseObject.prototype.setProperties = function (values, opt_silent) {\n for (var key in values) {\n this.set(key, values[key], opt_silent);\n }\n };\n /**\n * Apply any properties from another object without triggering events.\n * @param {BaseObject} source The source object.\n * @protected\n */\n BaseObject.prototype.applyProperties = function (source) {\n if (!source.values_) {\n return;\n }\n assign(this.values_ || (this.values_ = {}), source.values_);\n };\n /**\n * Unsets a property.\n * @param {string} key Key name.\n * @param {boolean} [opt_silent] Unset without triggering an event.\n * @api\n */\n BaseObject.prototype.unset = function (key, opt_silent) {\n if (this.values_ && key in this.values_) {\n var oldValue = this.values_[key];\n delete this.values_[key];\n if (isEmpty(this.values_)) {\n this.values_ = null;\n }\n if (!opt_silent) {\n this.notify(key, oldValue);\n }\n }\n };\n return BaseObject;\n}(Observable));\nexport default BaseObject;\n//# sourceMappingURL=Object.js.map","/**\n * @module ol/MapEventType\n */\n/**\n * @enum {string}\n */\nexport default {\n /**\n * Triggered after a map frame is rendered.\n * @event module:ol/MapEvent~MapEvent#postrender\n * @api\n */\n POSTRENDER: 'postrender',\n /**\n * Triggered when the map starts moving.\n * @event module:ol/MapEvent~MapEvent#movestart\n * @api\n */\n MOVESTART: 'movestart',\n /**\n * Triggered after the map is moved.\n * @event module:ol/MapEvent~MapEvent#moveend\n * @api\n */\n MOVEEND: 'moveend',\n};\n/***\n * @typedef {'postrender'|'movestart'|'moveend'} Types\n */\n//# sourceMappingURL=MapEventType.js.map","/**\n * @module ol/has\n */\nvar ua = typeof navigator !== 'undefined' && typeof navigator.userAgent !== 'undefined'\n ? navigator.userAgent.toLowerCase()\n : '';\n/**\n * User agent string says we are dealing with Firefox as browser.\n * @type {boolean}\n */\nexport var FIREFOX = ua.indexOf('firefox') !== -1;\n/**\n * User agent string says we are dealing with Safari as browser.\n * @type {boolean}\n */\nexport var SAFARI = ua.indexOf('safari') !== -1 && ua.indexOf('chrom') == -1;\n/**\n * User agent string says we are dealing with a WebKit engine.\n * @type {boolean}\n */\nexport var WEBKIT = ua.indexOf('webkit') !== -1 && ua.indexOf('edge') == -1;\n/**\n * User agent string says we are dealing with a Mac as platform.\n * @type {boolean}\n */\nexport var MAC = ua.indexOf('macintosh') !== -1;\n/**\n * The ratio between physical pixels and device-independent pixels\n * (dips) on the device (`window.devicePixelRatio`).\n * @const\n * @type {number}\n * @api\n */\nexport var DEVICE_PIXEL_RATIO = typeof devicePixelRatio !== 'undefined' ? devicePixelRatio : 1;\n/**\n * The execution context is a worker with OffscreenCanvas available.\n * @const\n * @type {boolean}\n */\nexport var WORKER_OFFSCREEN_CANVAS = typeof WorkerGlobalScope !== 'undefined' &&\n typeof OffscreenCanvas !== 'undefined' &&\n self instanceof WorkerGlobalScope; //eslint-disable-line\n/**\n * Image.prototype.decode() is supported.\n * @type {boolean}\n */\nexport var IMAGE_DECODE = typeof Image !== 'undefined' && Image.prototype.decode;\n/**\n * @type {boolean}\n */\nexport var PASSIVE_EVENT_LISTENERS = (function () {\n var passive = false;\n try {\n var options = Object.defineProperty({}, 'passive', {\n get: function () {\n passive = true;\n },\n });\n window.addEventListener('_', null, options);\n window.removeEventListener('_', null, options);\n }\n catch (error) {\n // passive not supported\n }\n return passive;\n})();\n//# sourceMappingURL=has.js.map","import { WORKER_OFFSCREEN_CANVAS } from './has.js';\n/**\n * @module ol/dom\n */\n//FIXME Move this function to the canvas module\n/**\n * Create an html canvas element and returns its 2d context.\n * @param {number} [opt_width] Canvas width.\n * @param {number} [opt_height] Canvas height.\n * @param {Array} [opt_canvasPool] Canvas pool to take existing canvas from.\n * @param {CanvasRenderingContext2DSettings} [opt_Context2DSettings] CanvasRenderingContext2DSettings\n * @return {CanvasRenderingContext2D} The context.\n */\nexport function createCanvasContext2D(opt_width, opt_height, opt_canvasPool, opt_Context2DSettings) {\n var canvas = opt_canvasPool && opt_canvasPool.length\n ? opt_canvasPool.shift()\n : WORKER_OFFSCREEN_CANVAS\n ? new OffscreenCanvas(opt_width || 300, opt_height || 300)\n : document.createElement('canvas');\n if (opt_width) {\n canvas.width = opt_width;\n }\n if (opt_height) {\n canvas.height = opt_height;\n }\n //FIXME Allow OffscreenCanvasRenderingContext2D as return type\n return /** @type {CanvasRenderingContext2D} */ (canvas.getContext('2d', opt_Context2DSettings));\n}\n/**\n * Get the current computed width for the given element including margin,\n * padding and border.\n * Equivalent to jQuery's `$(el).outerWidth(true)`.\n * @param {!HTMLElement} element Element.\n * @return {number} The width.\n */\nexport function outerWidth(element) {\n var width = element.offsetWidth;\n var style = getComputedStyle(element);\n width += parseInt(style.marginLeft, 10) + parseInt(style.marginRight, 10);\n return width;\n}\n/**\n * Get the current computed height for the given element including margin,\n * padding and border.\n * Equivalent to jQuery's `$(el).outerHeight(true)`.\n * @param {!HTMLElement} element Element.\n * @return {number} The height.\n */\nexport function outerHeight(element) {\n var height = element.offsetHeight;\n var style = getComputedStyle(element);\n height += parseInt(style.marginTop, 10) + parseInt(style.marginBottom, 10);\n return height;\n}\n/**\n * @param {Node} newNode Node to replace old node\n * @param {Node} oldNode The node to be replaced\n */\nexport function replaceNode(newNode, oldNode) {\n var parent = oldNode.parentNode;\n if (parent) {\n parent.replaceChild(newNode, oldNode);\n }\n}\n/**\n * @param {Node} node The node to remove.\n * @return {Node} The node that was removed or null.\n */\nexport function removeNode(node) {\n return node && node.parentNode ? node.parentNode.removeChild(node) : null;\n}\n/**\n * @param {Node} node The node to remove the children from.\n */\nexport function removeChildren(node) {\n while (node.lastChild) {\n node.removeChild(node.lastChild);\n }\n}\n/**\n * Transform the children of a parent node so they match the\n * provided list of children. This function aims to efficiently\n * remove, add, and reorder child nodes while maintaining a simple\n * implementation (it is not guaranteed to minimize DOM operations).\n * @param {Node} node The parent node whose children need reworking.\n * @param {Array} children The desired children.\n */\nexport function replaceChildren(node, children) {\n var oldChildren = node.childNodes;\n for (var i = 0; true; ++i) {\n var oldChild = oldChildren[i];\n var newChild = children[i];\n // check if our work is done\n if (!oldChild && !newChild) {\n break;\n }\n // check if children match\n if (oldChild === newChild) {\n continue;\n }\n // check if a new child needs to be added\n if (!oldChild) {\n node.appendChild(newChild);\n continue;\n }\n // check if an old child needs to be removed\n if (!newChild) {\n node.removeChild(oldChild);\n --i;\n continue;\n }\n // reorder\n node.insertBefore(newChild, oldChild);\n }\n}\n//# sourceMappingURL=dom.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/control/Control\n */\nimport BaseObject from '../Object.js';\nimport MapEventType from '../MapEventType.js';\nimport { VOID } from '../functions.js';\nimport { listen, unlistenByKey } from '../events.js';\nimport { removeNode } from '../dom.js';\n/**\n * @typedef {Object} Options\n * @property {HTMLElement} [element] The element is the control's\n * container element. This only needs to be specified if you're developing\n * a custom control.\n * @property {function(import(\"../MapEvent.js\").default):void} [render] Function called when\n * the control should be re-rendered. This is called in a `requestAnimationFrame`\n * callback.\n * @property {HTMLElement|string} [target] Specify a target if you want\n * the control to be rendered outside of the map's viewport.\n */\n/**\n * @classdesc\n * A control is a visible widget with a DOM element in a fixed position on the\n * screen. They can involve user input (buttons), or be informational only;\n * the position is determined using CSS. By default these are placed in the\n * container with CSS class name `ol-overlaycontainer-stopevent`, but can use\n * any outside DOM element.\n *\n * This is the base class for controls. You can use it for simple custom\n * controls by creating the element with listeners, creating an instance:\n * ```js\n * var myControl = new Control({element: myElement});\n * ```\n * and then adding this to the map.\n *\n * The main advantage of having this as a control rather than a simple separate\n * DOM element is that preventing propagation is handled for you. Controls\n * will also be objects in a {@link module:ol/Collection~Collection}, so you can use their methods.\n *\n * You can also extend this base for your own control class. See\n * examples/custom-controls for an example of how to do this.\n *\n * @api\n */\nvar Control = /** @class */ (function (_super) {\n __extends(Control, _super);\n /**\n * @param {Options} options Control options.\n */\n function Control(options) {\n var _this = _super.call(this) || this;\n var element = options.element;\n if (element && !options.target && !element.style.pointerEvents) {\n element.style.pointerEvents = 'auto';\n }\n /**\n * @protected\n * @type {HTMLElement}\n */\n _this.element = element ? element : null;\n /**\n * @private\n * @type {HTMLElement}\n */\n _this.target_ = null;\n /**\n * @private\n * @type {import(\"../PluggableMap.js\").default}\n */\n _this.map_ = null;\n /**\n * @protected\n * @type {!Array}\n */\n _this.listenerKeys = [];\n if (options.render) {\n _this.render = options.render;\n }\n if (options.target) {\n _this.setTarget(options.target);\n }\n return _this;\n }\n /**\n * Clean up.\n */\n Control.prototype.disposeInternal = function () {\n removeNode(this.element);\n _super.prototype.disposeInternal.call(this);\n };\n /**\n * Get the map associated with this control.\n * @return {import(\"../PluggableMap.js\").default} Map.\n * @api\n */\n Control.prototype.getMap = function () {\n return this.map_;\n };\n /**\n * Remove the control from its current map and attach it to the new map.\n * Subclasses may set up event handlers to get notified about changes to\n * the map here.\n * @param {import(\"../PluggableMap.js\").default} map Map.\n * @api\n */\n Control.prototype.setMap = function (map) {\n if (this.map_) {\n removeNode(this.element);\n }\n for (var i = 0, ii = this.listenerKeys.length; i < ii; ++i) {\n unlistenByKey(this.listenerKeys[i]);\n }\n this.listenerKeys.length = 0;\n this.map_ = map;\n if (this.map_) {\n var target = this.target_\n ? this.target_\n : map.getOverlayContainerStopEvent();\n target.appendChild(this.element);\n if (this.render !== VOID) {\n this.listenerKeys.push(listen(map, MapEventType.POSTRENDER, this.render, this));\n }\n map.render();\n }\n };\n /**\n * Renders the control.\n * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n * @api\n */\n Control.prototype.render = function (mapEvent) { };\n /**\n * This function is used to set a target element for the control. It has no\n * effect if it is called after the control has been added to the map (i.e.\n * after `setMap` is called on the control). If no `target` is set in the\n * options passed to the control constructor and if `setTarget` is not called\n * then the control is added to the map's overlay container.\n * @param {HTMLElement|string} target Target.\n * @api\n */\n Control.prototype.setTarget = function (target) {\n this.target_ =\n typeof target === 'string' ? document.getElementById(target) : target;\n };\n return Control;\n}(BaseObject));\nexport default Control;\n//# sourceMappingURL=Control.js.map","/**\n * @module ol/css\n */\n/**\n * @typedef {Object} FontParameters\n * @property {string} style Style.\n * @property {string} variant Variant.\n * @property {string} weight Weight.\n * @property {string} size Size.\n * @property {string} lineHeight LineHeight.\n * @property {string} family Family.\n * @property {Array} families Families.\n */\n/**\n * The CSS class for hidden feature.\n *\n * @const\n * @type {string}\n */\nexport var CLASS_HIDDEN = 'ol-hidden';\n/**\n * The CSS class that we'll give the DOM elements to have them selectable.\n *\n * @const\n * @type {string}\n */\nexport var CLASS_SELECTABLE = 'ol-selectable';\n/**\n * The CSS class that we'll give the DOM elements to have them unselectable.\n *\n * @const\n * @type {string}\n */\nexport var CLASS_UNSELECTABLE = 'ol-unselectable';\n/**\n * The CSS class for unsupported feature.\n *\n * @const\n * @type {string}\n */\nexport var CLASS_UNSUPPORTED = 'ol-unsupported';\n/**\n * The CSS class for controls.\n *\n * @const\n * @type {string}\n */\nexport var CLASS_CONTROL = 'ol-control';\n/**\n * The CSS class that we'll give the DOM elements that are collapsed, i.e.\n * to those elements which usually can be expanded.\n *\n * @const\n * @type {string}\n */\nexport var CLASS_COLLAPSED = 'ol-collapsed';\n/**\n * From https://stackoverflow.com/questions/10135697/regex-to-parse-any-css-font\n * @type {RegExp}\n */\nvar fontRegEx = new RegExp([\n '^\\\\s*(?=(?:(?:[-a-z]+\\\\s*){0,2}(italic|oblique))?)',\n '(?=(?:(?:[-a-z]+\\\\s*){0,2}(small-caps))?)',\n '(?=(?:(?:[-a-z]+\\\\s*){0,2}(bold(?:er)?|lighter|[1-9]00 ))?)',\n '(?:(?:normal|\\\\1|\\\\2|\\\\3)\\\\s*){0,3}((?:xx?-)?',\n '(?:small|large)|medium|smaller|larger|[\\\\.\\\\d]+(?:\\\\%|in|[cem]m|ex|p[ctx]))',\n '(?:\\\\s*\\\\/\\\\s*(normal|[\\\\.\\\\d]+(?:\\\\%|in|[cem]m|ex|p[ctx])?))',\n '?\\\\s*([-,\\\\\"\\\\\\'\\\\sa-z]+?)\\\\s*$',\n].join(''), 'i');\nvar fontRegExMatchIndex = [\n 'style',\n 'variant',\n 'weight',\n 'size',\n 'lineHeight',\n 'family',\n];\n/**\n * Get the list of font families from a font spec. Note that this doesn't work\n * for font families that have commas in them.\n * @param {string} fontSpec The CSS font property.\n * @return {FontParameters} The font parameters (or null if the input spec is invalid).\n */\nexport var getFontParameters = function (fontSpec) {\n var match = fontSpec.match(fontRegEx);\n if (!match) {\n return null;\n }\n var style = /** @type {FontParameters} */ ({\n lineHeight: 'normal',\n size: '1.2em',\n style: 'normal',\n weight: 'normal',\n variant: 'normal',\n });\n for (var i = 0, ii = fontRegExMatchIndex.length; i < ii; ++i) {\n var value = match[i + 1];\n if (value !== undefined) {\n style[fontRegExMatchIndex[i]] = value;\n }\n }\n style.families = style.family.split(/,\\s?/);\n return style;\n};\n//# sourceMappingURL=css.js.map","/**\n * @module ol/easing\n */\n/**\n * Start slow and speed up.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function easeIn(t) {\n return Math.pow(t, 3);\n}\n/**\n * Start fast and slow down.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function easeOut(t) {\n return 1 - easeIn(1 - t);\n}\n/**\n * Start slow, speed up, and then slow down again.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function inAndOut(t) {\n return 3 * t * t - 2 * t * t * t;\n}\n/**\n * Maintain a constant speed over time.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function linear(t) {\n return t;\n}\n/**\n * Start slow, speed up, and at the very end slow down again. This has the\n * same general behavior as {@link module:ol/easing.inAndOut}, but the final\n * slowdown is delayed.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function upAndDown(t) {\n if (t < 0.5) {\n return inAndOut(2 * t);\n }\n else {\n return 1 - inAndOut(2 * (t - 0.5));\n }\n}\n//# sourceMappingURL=easing.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/control/Rotate\n */\nimport Control from './Control.js';\nimport EventType from '../events/EventType.js';\nimport { CLASS_CONTROL, CLASS_HIDDEN, CLASS_UNSELECTABLE } from '../css.js';\nimport { easeOut } from '../easing.js';\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-rotate'] CSS class name.\n * @property {string|HTMLElement} [label='⇧'] Text label to use for the rotate button.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string} [tipLabel='Reset rotation'] Text label to use for the rotate tip.\n * @property {string} [compassClassName='ol-compass'] CSS class name for the compass.\n * @property {number} [duration=250] Animation duration in milliseconds.\n * @property {boolean} [autoHide=true] Hide the control when rotation is 0.\n * @property {function(import(\"../MapEvent.js\").default):void} [render] Function called when the control should\n * be re-rendered. This is called in a `requestAnimationFrame` callback.\n * @property {function():void} [resetNorth] Function called when the control is clicked.\n * This will override the default `resetNorth`.\n * @property {HTMLElement|string} [target] Specify a target if you want the control to be\n * rendered outside of the map's viewport.\n */\n/**\n * @classdesc\n * A button control to reset rotation to 0.\n * To style this control use css selector `.ol-rotate`. A `.ol-hidden` css\n * selector is added to the button when the rotation is 0.\n *\n * @api\n */\nvar Rotate = /** @class */ (function (_super) {\n __extends(Rotate, _super);\n /**\n * @param {Options} [opt_options] Rotate options.\n */\n function Rotate(opt_options) {\n var _this = this;\n var options = opt_options ? opt_options : {};\n _this = _super.call(this, {\n element: document.createElement('div'),\n render: options.render,\n target: options.target,\n }) || this;\n var className = options.className !== undefined ? options.className : 'ol-rotate';\n var label = options.label !== undefined ? options.label : '\\u21E7';\n var compassClassName = options.compassClassName !== undefined\n ? options.compassClassName\n : 'ol-compass';\n /**\n * @type {HTMLElement}\n * @private\n */\n _this.label_ = null;\n if (typeof label === 'string') {\n _this.label_ = document.createElement('span');\n _this.label_.className = compassClassName;\n _this.label_.textContent = label;\n }\n else {\n _this.label_ = label;\n _this.label_.classList.add(compassClassName);\n }\n var tipLabel = options.tipLabel ? options.tipLabel : 'Reset rotation';\n var button = document.createElement('button');\n button.className = className + '-reset';\n button.setAttribute('type', 'button');\n button.title = tipLabel;\n button.appendChild(_this.label_);\n button.addEventListener(EventType.CLICK, _this.handleClick_.bind(_this), false);\n var cssClasses = className + ' ' + CLASS_UNSELECTABLE + ' ' + CLASS_CONTROL;\n var element = _this.element;\n element.className = cssClasses;\n element.appendChild(button);\n _this.callResetNorth_ = options.resetNorth ? options.resetNorth : undefined;\n /**\n * @type {number}\n * @private\n */\n _this.duration_ = options.duration !== undefined ? options.duration : 250;\n /**\n * @type {boolean}\n * @private\n */\n _this.autoHide_ = options.autoHide !== undefined ? options.autoHide : true;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.rotation_ = undefined;\n if (_this.autoHide_) {\n _this.element.classList.add(CLASS_HIDDEN);\n }\n return _this;\n }\n /**\n * @param {MouseEvent} event The event to handle\n * @private\n */\n Rotate.prototype.handleClick_ = function (event) {\n event.preventDefault();\n if (this.callResetNorth_ !== undefined) {\n this.callResetNorth_();\n }\n else {\n this.resetNorth_();\n }\n };\n /**\n * @private\n */\n Rotate.prototype.resetNorth_ = function () {\n var map = this.getMap();\n var view = map.getView();\n if (!view) {\n // the map does not have a view, so we can't act\n // upon it\n return;\n }\n var rotation = view.getRotation();\n if (rotation !== undefined) {\n if (this.duration_ > 0 && rotation % (2 * Math.PI) !== 0) {\n view.animate({\n rotation: 0,\n duration: this.duration_,\n easing: easeOut,\n });\n }\n else {\n view.setRotation(0);\n }\n }\n };\n /**\n * Update the rotate control element.\n * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n * @override\n */\n Rotate.prototype.render = function (mapEvent) {\n var frameState = mapEvent.frameState;\n if (!frameState) {\n return;\n }\n var rotation = frameState.viewState.rotation;\n if (rotation != this.rotation_) {\n var transform = 'rotate(' + rotation + 'rad)';\n if (this.autoHide_) {\n var contains = this.element.classList.contains(CLASS_HIDDEN);\n if (!contains && rotation === 0) {\n this.element.classList.add(CLASS_HIDDEN);\n }\n else if (contains && rotation !== 0) {\n this.element.classList.remove(CLASS_HIDDEN);\n }\n }\n this.label_.style.transform = transform;\n }\n this.rotation_ = rotation;\n };\n return Rotate;\n}(Control));\nexport default Rotate;\n//# sourceMappingURL=Rotate.js.map","/**\n * @module ol/proj/Units\n */\n/**\n * Projection units: `'degrees'`, `'ft'`, `'m'`, `'pixels'`, `'tile-pixels'` or\n * `'us-ft'`.\n * @enum {string}\n */\nvar Units = {\n /**\n * Degrees\n * @api\n */\n DEGREES: 'degrees',\n /**\n * Feet\n * @api\n */\n FEET: 'ft',\n /**\n * Meters\n * @api\n */\n METERS: 'm',\n /**\n * Pixels\n * @api\n */\n PIXELS: 'pixels',\n /**\n * Tile Pixels\n * @api\n */\n TILE_PIXELS: 'tile-pixels',\n /**\n * US Feet\n * @api\n */\n USFEET: 'us-ft',\n};\n/**\n * Meters per unit lookup table.\n * @const\n * @type {Object}\n * @api\n */\nexport var METERS_PER_UNIT = {};\n// use the radius of the Normal sphere\nMETERS_PER_UNIT[Units.DEGREES] = (2 * Math.PI * 6370997) / 360;\nMETERS_PER_UNIT[Units.FEET] = 0.3048;\nMETERS_PER_UNIT[Units.METERS] = 1;\nMETERS_PER_UNIT[Units.USFEET] = 1200 / 3937;\nexport default Units;\n//# sourceMappingURL=Units.js.map","/**\n * @module ol/proj/Projection\n */\nimport { METERS_PER_UNIT } from './Units.js';\n/**\n * @typedef {Object} Options\n * @property {string} code The SRS identifier code, e.g. `EPSG:4326`.\n * @property {import(\"./Units.js\").default|string} [units] Units. Required unless a\n * proj4 projection is defined for `code`.\n * @property {import(\"../extent.js\").Extent} [extent] The validity extent for the SRS.\n * @property {string} [axisOrientation='enu'] The axis orientation as specified in Proj4.\n * @property {boolean} [global=false] Whether the projection is valid for the whole globe.\n * @property {number} [metersPerUnit] The meters per unit for the SRS.\n * If not provided, the `units` are used to get the meters per unit from the {@link module:ol/proj/Units~METERS_PER_UNIT}\n * lookup table.\n * @property {import(\"../extent.js\").Extent} [worldExtent] The world extent for the SRS.\n * @property {function(number, import(\"../coordinate.js\").Coordinate):number} [getPointResolution]\n * Function to determine resolution at a point. The function is called with a\n * `number` view resolution and a {@link module:ol/coordinate~Coordinate Coordinate} as arguments, and returns\n * the `number` resolution in projection units at the passed coordinate. If this is `undefined`,\n * the default {@link module:ol/proj.getPointResolution getPointResolution()} function will be used.\n */\n/**\n * @classdesc\n * Projection definition class. One of these is created for each projection\n * supported in the application and stored in the {@link module:ol/proj} namespace.\n * You can use these in applications, but this is not required, as API params\n * and options use {@link module:ol/proj~ProjectionLike} which means the simple string\n * code will suffice.\n *\n * You can use {@link module:ol/proj.get} to retrieve the object for a particular\n * projection.\n *\n * The library includes definitions for `EPSG:4326` and `EPSG:3857`, together\n * with the following aliases:\n * * `EPSG:4326`: CRS:84, urn:ogc:def:crs:EPSG:6.6:4326,\n * urn:ogc:def:crs:OGC:1.3:CRS84, urn:ogc:def:crs:OGC:2:84,\n * http://www.opengis.net/gml/srs/epsg.xml#4326,\n * urn:x-ogc:def:crs:EPSG:4326\n * * `EPSG:3857`: EPSG:102100, EPSG:102113, EPSG:900913,\n * urn:ogc:def:crs:EPSG:6.18:3:3857,\n * http://www.opengis.net/gml/srs/epsg.xml#3857\n *\n * If you use [proj4js](https://github.com/proj4js/proj4js), aliases can\n * be added using `proj4.defs()`. After all required projection definitions are\n * added, call the {@link module:ol/proj/proj4.register} function.\n *\n * @api\n */\nvar Projection = /** @class */ (function () {\n /**\n * @param {Options} options Projection options.\n */\n function Projection(options) {\n /**\n * @private\n * @type {string}\n */\n this.code_ = options.code;\n /**\n * Units of projected coordinates. When set to `TILE_PIXELS`, a\n * `this.extent_` and `this.worldExtent_` must be configured properly for each\n * tile.\n * @private\n * @type {import(\"./Units.js\").default}\n */\n this.units_ = /** @type {import(\"./Units.js\").default} */ (options.units);\n /**\n * Validity extent of the projection in projected coordinates. For projections\n * with `TILE_PIXELS` units, this is the extent of the tile in\n * tile pixel space.\n * @private\n * @type {import(\"../extent.js\").Extent}\n */\n this.extent_ = options.extent !== undefined ? options.extent : null;\n /**\n * Extent of the world in EPSG:4326. For projections with\n * `TILE_PIXELS` units, this is the extent of the tile in\n * projected coordinate space.\n * @private\n * @type {import(\"../extent.js\").Extent}\n */\n this.worldExtent_ =\n options.worldExtent !== undefined ? options.worldExtent : null;\n /**\n * @private\n * @type {string}\n */\n this.axisOrientation_ =\n options.axisOrientation !== undefined ? options.axisOrientation : 'enu';\n /**\n * @private\n * @type {boolean}\n */\n this.global_ = options.global !== undefined ? options.global : false;\n /**\n * @private\n * @type {boolean}\n */\n this.canWrapX_ = !!(this.global_ && this.extent_);\n /**\n * @private\n * @type {function(number, import(\"../coordinate.js\").Coordinate):number|undefined}\n */\n this.getPointResolutionFunc_ = options.getPointResolution;\n /**\n * @private\n * @type {import(\"../tilegrid/TileGrid.js\").default}\n */\n this.defaultTileGrid_ = null;\n /**\n * @private\n * @type {number|undefined}\n */\n this.metersPerUnit_ = options.metersPerUnit;\n }\n /**\n * @return {boolean} The projection is suitable for wrapping the x-axis\n */\n Projection.prototype.canWrapX = function () {\n return this.canWrapX_;\n };\n /**\n * Get the code for this projection, e.g. 'EPSG:4326'.\n * @return {string} Code.\n * @api\n */\n Projection.prototype.getCode = function () {\n return this.code_;\n };\n /**\n * Get the validity extent for this projection.\n * @return {import(\"../extent.js\").Extent} Extent.\n * @api\n */\n Projection.prototype.getExtent = function () {\n return this.extent_;\n };\n /**\n * Get the units of this projection.\n * @return {import(\"./Units.js\").default} Units.\n * @api\n */\n Projection.prototype.getUnits = function () {\n return this.units_;\n };\n /**\n * Get the amount of meters per unit of this projection. If the projection is\n * not configured with `metersPerUnit` or a units identifier, the return is\n * `undefined`.\n * @return {number|undefined} Meters.\n * @api\n */\n Projection.prototype.getMetersPerUnit = function () {\n return this.metersPerUnit_ || METERS_PER_UNIT[this.units_];\n };\n /**\n * Get the world extent for this projection.\n * @return {import(\"../extent.js\").Extent} Extent.\n * @api\n */\n Projection.prototype.getWorldExtent = function () {\n return this.worldExtent_;\n };\n /**\n * Get the axis orientation of this projection.\n * Example values are:\n * enu - the default easting, northing, elevation.\n * neu - northing, easting, up - useful for \"lat/long\" geographic coordinates,\n * or south orientated transverse mercator.\n * wnu - westing, northing, up - some planetary coordinate systems have\n * \"west positive\" coordinate systems\n * @return {string} Axis orientation.\n * @api\n */\n Projection.prototype.getAxisOrientation = function () {\n return this.axisOrientation_;\n };\n /**\n * Is this projection a global projection which spans the whole world?\n * @return {boolean} Whether the projection is global.\n * @api\n */\n Projection.prototype.isGlobal = function () {\n return this.global_;\n };\n /**\n * Set if the projection is a global projection which spans the whole world\n * @param {boolean} global Whether the projection is global.\n * @api\n */\n Projection.prototype.setGlobal = function (global) {\n this.global_ = global;\n this.canWrapX_ = !!(global && this.extent_);\n };\n /**\n * @return {import(\"../tilegrid/TileGrid.js\").default} The default tile grid.\n */\n Projection.prototype.getDefaultTileGrid = function () {\n return this.defaultTileGrid_;\n };\n /**\n * @param {import(\"../tilegrid/TileGrid.js\").default} tileGrid The default tile grid.\n */\n Projection.prototype.setDefaultTileGrid = function (tileGrid) {\n this.defaultTileGrid_ = tileGrid;\n };\n /**\n * Set the validity extent for this projection.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @api\n */\n Projection.prototype.setExtent = function (extent) {\n this.extent_ = extent;\n this.canWrapX_ = !!(this.global_ && extent);\n };\n /**\n * Set the world extent for this projection.\n * @param {import(\"../extent.js\").Extent} worldExtent World extent\n * [minlon, minlat, maxlon, maxlat].\n * @api\n */\n Projection.prototype.setWorldExtent = function (worldExtent) {\n this.worldExtent_ = worldExtent;\n };\n /**\n * Set the getPointResolution function (see {@link module:ol/proj.getPointResolution}\n * for this projection.\n * @param {function(number, import(\"../coordinate.js\").Coordinate):number} func Function\n * @api\n */\n Projection.prototype.setGetPointResolution = function (func) {\n this.getPointResolutionFunc_ = func;\n };\n /**\n * Get the custom point resolution function for this projection (if set).\n * @return {function(number, import(\"../coordinate.js\").Coordinate):number|undefined} The custom point\n * resolution function (if set).\n */\n Projection.prototype.getPointResolutionFunc = function () {\n return this.getPointResolutionFunc_;\n };\n return Projection;\n}());\nexport default Projection;\n//# sourceMappingURL=Projection.js.map","/**\n * @module ol/math\n */\n/**\n * Takes a number and clamps it to within the provided bounds.\n * @param {number} value The input number.\n * @param {number} min The minimum value to return.\n * @param {number} max The maximum value to return.\n * @return {number} The input number if it is within bounds, or the nearest\n * number within the bounds.\n */\nexport function clamp(value, min, max) {\n return Math.min(Math.max(value, min), max);\n}\n/**\n * Return the hyperbolic cosine of a given number. The method will use the\n * native `Math.cosh` function if it is available, otherwise the hyperbolic\n * cosine will be calculated via the reference implementation of the Mozilla\n * developer network.\n *\n * @param {number} x X.\n * @return {number} Hyperbolic cosine of x.\n */\nexport var cosh = (function () {\n // Wrapped in a iife, to save the overhead of checking for the native\n // implementation on every invocation.\n var cosh;\n if ('cosh' in Math) {\n // The environment supports the native Math.cosh function, use it…\n cosh = Math.cosh;\n }\n else {\n // … else, use the reference implementation of MDN:\n cosh = function (x) {\n var y = /** @type {Math} */ (Math).exp(x);\n return (y + 1 / y) / 2;\n };\n }\n return cosh;\n})();\n/**\n * Return the base 2 logarithm of a given number. The method will use the\n * native `Math.log2` function if it is available, otherwise the base 2\n * logarithm will be calculated via the reference implementation of the\n * Mozilla developer network.\n *\n * @param {number} x X.\n * @return {number} Base 2 logarithm of x.\n */\nexport var log2 = (function () {\n // Wrapped in a iife, to save the overhead of checking for the native\n // implementation on every invocation.\n var log2;\n if ('log2' in Math) {\n // The environment supports the native Math.log2 function, use it…\n log2 = Math.log2;\n }\n else {\n // … else, use the reference implementation of MDN:\n log2 = function (x) {\n return Math.log(x) * Math.LOG2E;\n };\n }\n return log2;\n})();\n/**\n * Returns the square of the closest distance between the point (x, y) and the\n * line segment (x1, y1) to (x2, y2).\n * @param {number} x X.\n * @param {number} y Y.\n * @param {number} x1 X1.\n * @param {number} y1 Y1.\n * @param {number} x2 X2.\n * @param {number} y2 Y2.\n * @return {number} Squared distance.\n */\nexport function squaredSegmentDistance(x, y, x1, y1, x2, y2) {\n var dx = x2 - x1;\n var dy = y2 - y1;\n if (dx !== 0 || dy !== 0) {\n var t = ((x - x1) * dx + (y - y1) * dy) / (dx * dx + dy * dy);\n if (t > 1) {\n x1 = x2;\n y1 = y2;\n }\n else if (t > 0) {\n x1 += dx * t;\n y1 += dy * t;\n }\n }\n return squaredDistance(x, y, x1, y1);\n}\n/**\n * Returns the square of the distance between the points (x1, y1) and (x2, y2).\n * @param {number} x1 X1.\n * @param {number} y1 Y1.\n * @param {number} x2 X2.\n * @param {number} y2 Y2.\n * @return {number} Squared distance.\n */\nexport function squaredDistance(x1, y1, x2, y2) {\n var dx = x2 - x1;\n var dy = y2 - y1;\n return dx * dx + dy * dy;\n}\n/**\n * Solves system of linear equations using Gaussian elimination method.\n *\n * @param {Array>} mat Augmented matrix (n x n + 1 column)\n * in row-major order.\n * @return {Array} The resulting vector.\n */\nexport function solveLinearSystem(mat) {\n var n = mat.length;\n for (var i = 0; i < n; i++) {\n // Find max in the i-th column (ignoring i - 1 first rows)\n var maxRow = i;\n var maxEl = Math.abs(mat[i][i]);\n for (var r = i + 1; r < n; r++) {\n var absValue = Math.abs(mat[r][i]);\n if (absValue > maxEl) {\n maxEl = absValue;\n maxRow = r;\n }\n }\n if (maxEl === 0) {\n return null; // matrix is singular\n }\n // Swap max row with i-th (current) row\n var tmp = mat[maxRow];\n mat[maxRow] = mat[i];\n mat[i] = tmp;\n // Subtract the i-th row to make all the remaining rows 0 in the i-th column\n for (var j = i + 1; j < n; j++) {\n var coef = -mat[j][i] / mat[i][i];\n for (var k = i; k < n + 1; k++) {\n if (i == k) {\n mat[j][k] = 0;\n }\n else {\n mat[j][k] += coef * mat[i][k];\n }\n }\n }\n }\n // Solve Ax=b for upper triangular matrix A (mat)\n var x = new Array(n);\n for (var l = n - 1; l >= 0; l--) {\n x[l] = mat[l][n] / mat[l][l];\n for (var m = l - 1; m >= 0; m--) {\n mat[m][n] -= mat[m][l] * x[l];\n }\n }\n return x;\n}\n/**\n * Converts radians to to degrees.\n *\n * @param {number} angleInRadians Angle in radians.\n * @return {number} Angle in degrees.\n */\nexport function toDegrees(angleInRadians) {\n return (angleInRadians * 180) / Math.PI;\n}\n/**\n * Converts degrees to radians.\n *\n * @param {number} angleInDegrees Angle in degrees.\n * @return {number} Angle in radians.\n */\nexport function toRadians(angleInDegrees) {\n return (angleInDegrees * Math.PI) / 180;\n}\n/**\n * Returns the modulo of a / b, depending on the sign of b.\n *\n * @param {number} a Dividend.\n * @param {number} b Divisor.\n * @return {number} Modulo.\n */\nexport function modulo(a, b) {\n var r = a % b;\n return r * b < 0 ? r + b : r;\n}\n/**\n * Calculates the linearly interpolated value of x between a and b.\n *\n * @param {number} a Number\n * @param {number} b Number\n * @param {number} x Value to be interpolated.\n * @return {number} Interpolated value.\n */\nexport function lerp(a, b, x) {\n return a + x * (b - a);\n}\n//# sourceMappingURL=math.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/proj/epsg3857\n */\nimport Projection from './Projection.js';\nimport Units from './Units.js';\nimport { cosh } from '../math.js';\n/**\n * Radius of WGS84 sphere\n *\n * @const\n * @type {number}\n */\nexport var RADIUS = 6378137;\n/**\n * @const\n * @type {number}\n */\nexport var HALF_SIZE = Math.PI * RADIUS;\n/**\n * @const\n * @type {import(\"../extent.js\").Extent}\n */\nexport var EXTENT = [-HALF_SIZE, -HALF_SIZE, HALF_SIZE, HALF_SIZE];\n/**\n * @const\n * @type {import(\"../extent.js\").Extent}\n */\nexport var WORLD_EXTENT = [-180, -85, 180, 85];\n/**\n * Maximum safe value in y direction\n * @const\n * @type {number}\n */\nexport var MAX_SAFE_Y = RADIUS * Math.log(Math.tan(Math.PI / 2));\n/**\n * @classdesc\n * Projection object for web/spherical Mercator (EPSG:3857).\n */\nvar EPSG3857Projection = /** @class */ (function (_super) {\n __extends(EPSG3857Projection, _super);\n /**\n * @param {string} code Code.\n */\n function EPSG3857Projection(code) {\n return _super.call(this, {\n code: code,\n units: Units.METERS,\n extent: EXTENT,\n global: true,\n worldExtent: WORLD_EXTENT,\n getPointResolution: function (resolution, point) {\n return resolution / cosh(point[1] / RADIUS);\n },\n }) || this;\n }\n return EPSG3857Projection;\n}(Projection));\n/**\n * Projections equal to EPSG:3857.\n *\n * @const\n * @type {Array}\n */\nexport var PROJECTIONS = [\n new EPSG3857Projection('EPSG:3857'),\n new EPSG3857Projection('EPSG:102100'),\n new EPSG3857Projection('EPSG:102113'),\n new EPSG3857Projection('EPSG:900913'),\n new EPSG3857Projection('http://www.opengis.net/gml/srs/epsg.xml#3857'),\n];\n/**\n * Transformation from EPSG:4326 to EPSG:3857.\n *\n * @param {Array} input Input array of coordinate values.\n * @param {Array} [opt_output] Output array of coordinate values.\n * @param {number} [opt_dimension] Dimension (default is `2`).\n * @return {Array} Output array of coordinate values.\n */\nexport function fromEPSG4326(input, opt_output, opt_dimension) {\n var length = input.length;\n var dimension = opt_dimension > 1 ? opt_dimension : 2;\n var output = opt_output;\n if (output === undefined) {\n if (dimension > 2) {\n // preserve values beyond second dimension\n output = input.slice();\n }\n else {\n output = new Array(length);\n }\n }\n for (var i = 0; i < length; i += dimension) {\n output[i] = (HALF_SIZE * input[i]) / 180;\n var y = RADIUS * Math.log(Math.tan((Math.PI * (+input[i + 1] + 90)) / 360));\n if (y > MAX_SAFE_Y) {\n y = MAX_SAFE_Y;\n }\n else if (y < -MAX_SAFE_Y) {\n y = -MAX_SAFE_Y;\n }\n output[i + 1] = y;\n }\n return output;\n}\n/**\n * Transformation from EPSG:3857 to EPSG:4326.\n *\n * @param {Array} input Input array of coordinate values.\n * @param {Array} [opt_output] Output array of coordinate values.\n * @param {number} [opt_dimension] Dimension (default is `2`).\n * @return {Array} Output array of coordinate values.\n */\nexport function toEPSG4326(input, opt_output, opt_dimension) {\n var length = input.length;\n var dimension = opt_dimension > 1 ? opt_dimension : 2;\n var output = opt_output;\n if (output === undefined) {\n if (dimension > 2) {\n // preserve values beyond second dimension\n output = input.slice();\n }\n else {\n output = new Array(length);\n }\n }\n for (var i = 0; i < length; i += dimension) {\n output[i] = (180 * input[i]) / HALF_SIZE;\n output[i + 1] =\n (360 * Math.atan(Math.exp(input[i + 1] / RADIUS))) / Math.PI - 90;\n }\n return output;\n}\n//# sourceMappingURL=epsg3857.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/proj/epsg4326\n */\nimport Projection from './Projection.js';\nimport Units from './Units.js';\n/**\n * Semi-major radius of the WGS84 ellipsoid.\n *\n * @const\n * @type {number}\n */\nexport var RADIUS = 6378137;\n/**\n * Extent of the EPSG:4326 projection which is the whole world.\n *\n * @const\n * @type {import(\"../extent.js\").Extent}\n */\nexport var EXTENT = [-180, -90, 180, 90];\n/**\n * @const\n * @type {number}\n */\nexport var METERS_PER_UNIT = (Math.PI * RADIUS) / 180;\n/**\n * @classdesc\n * Projection object for WGS84 geographic coordinates (EPSG:4326).\n *\n * Note that OpenLayers does not strictly comply with the EPSG definition.\n * The EPSG registry defines 4326 as a CRS for Latitude,Longitude (y,x).\n * OpenLayers treats EPSG:4326 as a pseudo-projection, with x,y coordinates.\n */\nvar EPSG4326Projection = /** @class */ (function (_super) {\n __extends(EPSG4326Projection, _super);\n /**\n * @param {string} code Code.\n * @param {string} [opt_axisOrientation] Axis orientation.\n */\n function EPSG4326Projection(code, opt_axisOrientation) {\n return _super.call(this, {\n code: code,\n units: Units.DEGREES,\n extent: EXTENT,\n axisOrientation: opt_axisOrientation,\n global: true,\n metersPerUnit: METERS_PER_UNIT,\n worldExtent: EXTENT,\n }) || this;\n }\n return EPSG4326Projection;\n}(Projection));\n/**\n * Projections equal to EPSG:4326.\n *\n * @const\n * @type {Array}\n */\nexport var PROJECTIONS = [\n new EPSG4326Projection('CRS:84'),\n new EPSG4326Projection('EPSG:4326', 'neu'),\n new EPSG4326Projection('urn:ogc:def:crs:OGC:1.3:CRS84'),\n new EPSG4326Projection('urn:ogc:def:crs:OGC:2:84'),\n new EPSG4326Projection('http://www.opengis.net/gml/srs/epsg.xml#4326', 'neu'),\n];\n//# sourceMappingURL=epsg4326.js.map","/**\n * @module ol/proj/projections\n */\n/**\n * @type {Object}\n */\nvar cache = {};\n/**\n * Clear the projections cache.\n */\nexport function clear() {\n cache = {};\n}\n/**\n * Get a cached projection by code.\n * @param {string} code The code for the projection.\n * @return {import(\"./Projection.js\").default} The projection (if cached).\n */\nexport function get(code) {\n return (cache[code] ||\n cache[code.replace(/urn:(x-)?ogc:def:crs:EPSG:(.*:)?(\\w+)$/, 'EPSG:$3')] ||\n null);\n}\n/**\n * Add a projection to the cache.\n * @param {string} code The projection code.\n * @param {import(\"./Projection.js\").default} projection The projection to cache.\n */\nexport function add(code, projection) {\n cache[code] = projection;\n}\n//# sourceMappingURL=projections.js.map","/**\n * @module ol/proj/transforms\n */\nimport { isEmpty } from '../obj.js';\n/**\n * @private\n * @type {!Object>}\n */\nvar transforms = {};\n/**\n * Clear the transform cache.\n */\nexport function clear() {\n transforms = {};\n}\n/**\n * Registers a conversion function to convert coordinates from the source\n * projection to the destination projection.\n *\n * @param {import(\"./Projection.js\").default} source Source.\n * @param {import(\"./Projection.js\").default} destination Destination.\n * @param {import(\"../proj.js\").TransformFunction} transformFn Transform.\n */\nexport function add(source, destination, transformFn) {\n var sourceCode = source.getCode();\n var destinationCode = destination.getCode();\n if (!(sourceCode in transforms)) {\n transforms[sourceCode] = {};\n }\n transforms[sourceCode][destinationCode] = transformFn;\n}\n/**\n * Unregisters the conversion function to convert coordinates from the source\n * projection to the destination projection. This method is used to clean up\n * cached transforms during testing.\n *\n * @param {import(\"./Projection.js\").default} source Source projection.\n * @param {import(\"./Projection.js\").default} destination Destination projection.\n * @return {import(\"../proj.js\").TransformFunction} transformFn The unregistered transform.\n */\nexport function remove(source, destination) {\n var sourceCode = source.getCode();\n var destinationCode = destination.getCode();\n var transform = transforms[sourceCode][destinationCode];\n delete transforms[sourceCode][destinationCode];\n if (isEmpty(transforms[sourceCode])) {\n delete transforms[sourceCode];\n }\n return transform;\n}\n/**\n * Get a transform given a source code and a destination code.\n * @param {string} sourceCode The code for the source projection.\n * @param {string} destinationCode The code for the destination projection.\n * @return {import(\"../proj.js\").TransformFunction|undefined} The transform function (if found).\n */\nexport function get(sourceCode, destinationCode) {\n var transform;\n if (sourceCode in transforms && destinationCode in transforms[sourceCode]) {\n transform = transforms[sourceCode][destinationCode];\n }\n return transform;\n}\n//# sourceMappingURL=transforms.js.map","/**\n * @module ol/extent/Corner\n */\n/**\n * Extent corner.\n * @enum {string}\n */\nexport default {\n BOTTOM_LEFT: 'bottom-left',\n BOTTOM_RIGHT: 'bottom-right',\n TOP_LEFT: 'top-left',\n TOP_RIGHT: 'top-right',\n};\n//# sourceMappingURL=Corner.js.map","/**\n * @module ol/extent/Relationship\n */\n/**\n * Relationship to an extent.\n * @enum {number}\n */\nexport default {\n UNKNOWN: 0,\n INTERSECTING: 1,\n ABOVE: 2,\n RIGHT: 4,\n BELOW: 8,\n LEFT: 16,\n};\n//# sourceMappingURL=Relationship.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/AssertionError\n */\nimport { VERSION } from './util.js';\n/**\n * Error object thrown when an assertion failed. This is an ECMA-262 Error,\n * extended with a `code` property.\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error.\n */\nvar AssertionError = /** @class */ (function (_super) {\n __extends(AssertionError, _super);\n /**\n * @param {number} code Error code.\n */\n function AssertionError(code) {\n var _this = this;\n var path = VERSION === 'latest' ? VERSION : 'v' + VERSION.split('-')[0];\n var message = 'Assertion failed. See https://openlayers.org/en/' +\n path +\n '/doc/errors/#' +\n code +\n ' for details.';\n _this = _super.call(this, message) || this;\n /**\n * Error code. The meaning of the code can be found on\n * https://openlayers.org/en/latest/doc/errors/ (replace `latest` with\n * the version found in the OpenLayers script's header comment if a version\n * other than the latest is used).\n * @type {number}\n * @api\n */\n _this.code = code;\n /**\n * @type {string}\n */\n _this.name = 'AssertionError';\n // Re-assign message, see https://github.com/Rich-Harris/buble/issues/40\n _this.message = message;\n return _this;\n }\n return AssertionError;\n}(Error));\nexport default AssertionError;\n//# sourceMappingURL=AssertionError.js.map","/**\n * @module ol/asserts\n */\nimport AssertionError from './AssertionError.js';\n/**\n * @param {*} assertion Assertion we expected to be truthy.\n * @param {number} errorCode Error code.\n */\nexport function assert(assertion, errorCode) {\n if (!assertion) {\n throw new AssertionError(errorCode);\n }\n}\n//# sourceMappingURL=asserts.js.map","/**\n * @module ol/extent\n */\nimport Corner from './extent/Corner.js';\nimport Relationship from './extent/Relationship.js';\nimport { assert } from './asserts.js';\n/**\n * An array of numbers representing an extent: `[minx, miny, maxx, maxy]`.\n * @typedef {Array} Extent\n * @api\n */\n/**\n * Build an extent that includes all given coordinates.\n *\n * @param {Array} coordinates Coordinates.\n * @return {Extent} Bounding extent.\n * @api\n */\nexport function boundingExtent(coordinates) {\n var extent = createEmpty();\n for (var i = 0, ii = coordinates.length; i < ii; ++i) {\n extendCoordinate(extent, coordinates[i]);\n }\n return extent;\n}\n/**\n * @param {Array} xs Xs.\n * @param {Array} ys Ys.\n * @param {Extent} [opt_extent] Destination extent.\n * @private\n * @return {Extent} Extent.\n */\nfunction _boundingExtentXYs(xs, ys, opt_extent) {\n var minX = Math.min.apply(null, xs);\n var minY = Math.min.apply(null, ys);\n var maxX = Math.max.apply(null, xs);\n var maxY = Math.max.apply(null, ys);\n return createOrUpdate(minX, minY, maxX, maxY, opt_extent);\n}\n/**\n * Return extent increased by the provided value.\n * @param {Extent} extent Extent.\n * @param {number} value The amount by which the extent should be buffered.\n * @param {Extent} [opt_extent] Extent.\n * @return {Extent} Extent.\n * @api\n */\nexport function buffer(extent, value, opt_extent) {\n if (opt_extent) {\n opt_extent[0] = extent[0] - value;\n opt_extent[1] = extent[1] - value;\n opt_extent[2] = extent[2] + value;\n opt_extent[3] = extent[3] + value;\n return opt_extent;\n }\n else {\n return [\n extent[0] - value,\n extent[1] - value,\n extent[2] + value,\n extent[3] + value,\n ];\n }\n}\n/**\n * Creates a clone of an extent.\n *\n * @param {Extent} extent Extent to clone.\n * @param {Extent} [opt_extent] Extent.\n * @return {Extent} The clone.\n */\nexport function clone(extent, opt_extent) {\n if (opt_extent) {\n opt_extent[0] = extent[0];\n opt_extent[1] = extent[1];\n opt_extent[2] = extent[2];\n opt_extent[3] = extent[3];\n return opt_extent;\n }\n else {\n return extent.slice();\n }\n}\n/**\n * @param {Extent} extent Extent.\n * @param {number} x X.\n * @param {number} y Y.\n * @return {number} Closest squared distance.\n */\nexport function closestSquaredDistanceXY(extent, x, y) {\n var dx, dy;\n if (x < extent[0]) {\n dx = extent[0] - x;\n }\n else if (extent[2] < x) {\n dx = x - extent[2];\n }\n else {\n dx = 0;\n }\n if (y < extent[1]) {\n dy = extent[1] - y;\n }\n else if (extent[3] < y) {\n dy = y - extent[3];\n }\n else {\n dy = 0;\n }\n return dx * dx + dy * dy;\n}\n/**\n * Check if the passed coordinate is contained or on the edge of the extent.\n *\n * @param {Extent} extent Extent.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @return {boolean} The coordinate is contained in the extent.\n * @api\n */\nexport function containsCoordinate(extent, coordinate) {\n return containsXY(extent, coordinate[0], coordinate[1]);\n}\n/**\n * Check if one extent contains another.\n *\n * An extent is deemed contained if it lies completely within the other extent,\n * including if they share one or more edges.\n *\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @return {boolean} The second extent is contained by or on the edge of the\n * first.\n * @api\n */\nexport function containsExtent(extent1, extent2) {\n return (extent1[0] <= extent2[0] &&\n extent2[2] <= extent1[2] &&\n extent1[1] <= extent2[1] &&\n extent2[3] <= extent1[3]);\n}\n/**\n * Check if the passed coordinate is contained or on the edge of the extent.\n *\n * @param {Extent} extent Extent.\n * @param {number} x X coordinate.\n * @param {number} y Y coordinate.\n * @return {boolean} The x, y values are contained in the extent.\n * @api\n */\nexport function containsXY(extent, x, y) {\n return extent[0] <= x && x <= extent[2] && extent[1] <= y && y <= extent[3];\n}\n/**\n * Get the relationship between a coordinate and extent.\n * @param {Extent} extent The extent.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate The coordinate.\n * @return {import(\"./extent/Relationship.js\").default} The relationship (bitwise compare with\n * import(\"./extent/Relationship.js\").Relationship).\n */\nexport function coordinateRelationship(extent, coordinate) {\n var minX = extent[0];\n var minY = extent[1];\n var maxX = extent[2];\n var maxY = extent[3];\n var x = coordinate[0];\n var y = coordinate[1];\n var relationship = Relationship.UNKNOWN;\n if (x < minX) {\n relationship = relationship | Relationship.LEFT;\n }\n else if (x > maxX) {\n relationship = relationship | Relationship.RIGHT;\n }\n if (y < minY) {\n relationship = relationship | Relationship.BELOW;\n }\n else if (y > maxY) {\n relationship = relationship | Relationship.ABOVE;\n }\n if (relationship === Relationship.UNKNOWN) {\n relationship = Relationship.INTERSECTING;\n }\n return relationship;\n}\n/**\n * Create an empty extent.\n * @return {Extent} Empty extent.\n * @api\n */\nexport function createEmpty() {\n return [Infinity, Infinity, -Infinity, -Infinity];\n}\n/**\n * Create a new extent or update the provided extent.\n * @param {number} minX Minimum X.\n * @param {number} minY Minimum Y.\n * @param {number} maxX Maximum X.\n * @param {number} maxY Maximum Y.\n * @param {Extent} [opt_extent] Destination extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdate(minX, minY, maxX, maxY, opt_extent) {\n if (opt_extent) {\n opt_extent[0] = minX;\n opt_extent[1] = minY;\n opt_extent[2] = maxX;\n opt_extent[3] = maxY;\n return opt_extent;\n }\n else {\n return [minX, minY, maxX, maxY];\n }\n}\n/**\n * Create a new empty extent or make the provided one empty.\n * @param {Extent} [opt_extent] Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateEmpty(opt_extent) {\n return createOrUpdate(Infinity, Infinity, -Infinity, -Infinity, opt_extent);\n}\n/**\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {Extent} [opt_extent] Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromCoordinate(coordinate, opt_extent) {\n var x = coordinate[0];\n var y = coordinate[1];\n return createOrUpdate(x, y, x, y, opt_extent);\n}\n/**\n * @param {Array} coordinates Coordinates.\n * @param {Extent} [opt_extent] Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromCoordinates(coordinates, opt_extent) {\n var extent = createOrUpdateEmpty(opt_extent);\n return extendCoordinates(extent, coordinates);\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {Extent} [opt_extent] Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromFlatCoordinates(flatCoordinates, offset, end, stride, opt_extent) {\n var extent = createOrUpdateEmpty(opt_extent);\n return extendFlatCoordinates(extent, flatCoordinates, offset, end, stride);\n}\n/**\n * @param {Array>} rings Rings.\n * @param {Extent} [opt_extent] Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromRings(rings, opt_extent) {\n var extent = createOrUpdateEmpty(opt_extent);\n return extendRings(extent, rings);\n}\n/**\n * Determine if two extents are equivalent.\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @return {boolean} The two extents are equivalent.\n * @api\n */\nexport function equals(extent1, extent2) {\n return (extent1[0] == extent2[0] &&\n extent1[2] == extent2[2] &&\n extent1[1] == extent2[1] &&\n extent1[3] == extent2[3]);\n}\n/**\n * Determine if two extents are approximately equivalent.\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @param {number} tolerance Tolerance in extent coordinate units.\n * @return {boolean} The two extents differ by less than the tolerance.\n */\nexport function approximatelyEquals(extent1, extent2, tolerance) {\n return (Math.abs(extent1[0] - extent2[0]) < tolerance &&\n Math.abs(extent1[2] - extent2[2]) < tolerance &&\n Math.abs(extent1[1] - extent2[1]) < tolerance &&\n Math.abs(extent1[3] - extent2[3]) < tolerance);\n}\n/**\n * Modify an extent to include another extent.\n * @param {Extent} extent1 The extent to be modified.\n * @param {Extent} extent2 The extent that will be included in the first.\n * @return {Extent} A reference to the first (extended) extent.\n * @api\n */\nexport function extend(extent1, extent2) {\n if (extent2[0] < extent1[0]) {\n extent1[0] = extent2[0];\n }\n if (extent2[2] > extent1[2]) {\n extent1[2] = extent2[2];\n }\n if (extent2[1] < extent1[1]) {\n extent1[1] = extent2[1];\n }\n if (extent2[3] > extent1[3]) {\n extent1[3] = extent2[3];\n }\n return extent1;\n}\n/**\n * @param {Extent} extent Extent.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n */\nexport function extendCoordinate(extent, coordinate) {\n if (coordinate[0] < extent[0]) {\n extent[0] = coordinate[0];\n }\n if (coordinate[0] > extent[2]) {\n extent[2] = coordinate[0];\n }\n if (coordinate[1] < extent[1]) {\n extent[1] = coordinate[1];\n }\n if (coordinate[1] > extent[3]) {\n extent[3] = coordinate[1];\n }\n}\n/**\n * @param {Extent} extent Extent.\n * @param {Array} coordinates Coordinates.\n * @return {Extent} Extent.\n */\nexport function extendCoordinates(extent, coordinates) {\n for (var i = 0, ii = coordinates.length; i < ii; ++i) {\n extendCoordinate(extent, coordinates[i]);\n }\n return extent;\n}\n/**\n * @param {Extent} extent Extent.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @return {Extent} Extent.\n */\nexport function extendFlatCoordinates(extent, flatCoordinates, offset, end, stride) {\n for (; offset < end; offset += stride) {\n extendXY(extent, flatCoordinates[offset], flatCoordinates[offset + 1]);\n }\n return extent;\n}\n/**\n * @param {Extent} extent Extent.\n * @param {Array>} rings Rings.\n * @return {Extent} Extent.\n */\nexport function extendRings(extent, rings) {\n for (var i = 0, ii = rings.length; i < ii; ++i) {\n extendCoordinates(extent, rings[i]);\n }\n return extent;\n}\n/**\n * @param {Extent} extent Extent.\n * @param {number} x X.\n * @param {number} y Y.\n */\nexport function extendXY(extent, x, y) {\n extent[0] = Math.min(extent[0], x);\n extent[1] = Math.min(extent[1], y);\n extent[2] = Math.max(extent[2], x);\n extent[3] = Math.max(extent[3], y);\n}\n/**\n * This function calls `callback` for each corner of the extent. If the\n * callback returns a truthy value the function returns that value\n * immediately. Otherwise the function returns `false`.\n * @param {Extent} extent Extent.\n * @param {function(import(\"./coordinate.js\").Coordinate): S} callback Callback.\n * @return {S|boolean} Value.\n * @template S\n */\nexport function forEachCorner(extent, callback) {\n var val;\n val = callback(getBottomLeft(extent));\n if (val) {\n return val;\n }\n val = callback(getBottomRight(extent));\n if (val) {\n return val;\n }\n val = callback(getTopRight(extent));\n if (val) {\n return val;\n }\n val = callback(getTopLeft(extent));\n if (val) {\n return val;\n }\n return false;\n}\n/**\n * Get the size of an extent.\n * @param {Extent} extent Extent.\n * @return {number} Area.\n * @api\n */\nexport function getArea(extent) {\n var area = 0;\n if (!isEmpty(extent)) {\n area = getWidth(extent) * getHeight(extent);\n }\n return area;\n}\n/**\n * Get the bottom left coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Bottom left coordinate.\n * @api\n */\nexport function getBottomLeft(extent) {\n return [extent[0], extent[1]];\n}\n/**\n * Get the bottom right coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Bottom right coordinate.\n * @api\n */\nexport function getBottomRight(extent) {\n return [extent[2], extent[1]];\n}\n/**\n * Get the center coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Center.\n * @api\n */\nexport function getCenter(extent) {\n return [(extent[0] + extent[2]) / 2, (extent[1] + extent[3]) / 2];\n}\n/**\n * Get a corner coordinate of an extent.\n * @param {Extent} extent Extent.\n * @param {import(\"./extent/Corner.js\").default} corner Corner.\n * @return {import(\"./coordinate.js\").Coordinate} Corner coordinate.\n */\nexport function getCorner(extent, corner) {\n var coordinate;\n if (corner === Corner.BOTTOM_LEFT) {\n coordinate = getBottomLeft(extent);\n }\n else if (corner === Corner.BOTTOM_RIGHT) {\n coordinate = getBottomRight(extent);\n }\n else if (corner === Corner.TOP_LEFT) {\n coordinate = getTopLeft(extent);\n }\n else if (corner === Corner.TOP_RIGHT) {\n coordinate = getTopRight(extent);\n }\n else {\n assert(false, 13); // Invalid corner\n }\n return coordinate;\n}\n/**\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @return {number} Enlarged area.\n */\nexport function getEnlargedArea(extent1, extent2) {\n var minX = Math.min(extent1[0], extent2[0]);\n var minY = Math.min(extent1[1], extent2[1]);\n var maxX = Math.max(extent1[2], extent2[2]);\n var maxY = Math.max(extent1[3], extent2[3]);\n return (maxX - minX) * (maxY - minY);\n}\n/**\n * @param {import(\"./coordinate.js\").Coordinate} center Center.\n * @param {number} resolution Resolution.\n * @param {number} rotation Rotation.\n * @param {import(\"./size.js\").Size} size Size.\n * @param {Extent} [opt_extent] Destination extent.\n * @return {Extent} Extent.\n */\nexport function getForViewAndSize(center, resolution, rotation, size, opt_extent) {\n var dx = (resolution * size[0]) / 2;\n var dy = (resolution * size[1]) / 2;\n var cosRotation = Math.cos(rotation);\n var sinRotation = Math.sin(rotation);\n var xCos = dx * cosRotation;\n var xSin = dx * sinRotation;\n var yCos = dy * cosRotation;\n var ySin = dy * sinRotation;\n var x = center[0];\n var y = center[1];\n var x0 = x - xCos + ySin;\n var x1 = x - xCos - ySin;\n var x2 = x + xCos - ySin;\n var x3 = x + xCos + ySin;\n var y0 = y - xSin - yCos;\n var y1 = y - xSin + yCos;\n var y2 = y + xSin + yCos;\n var y3 = y + xSin - yCos;\n return createOrUpdate(Math.min(x0, x1, x2, x3), Math.min(y0, y1, y2, y3), Math.max(x0, x1, x2, x3), Math.max(y0, y1, y2, y3), opt_extent);\n}\n/**\n * Get the height of an extent.\n * @param {Extent} extent Extent.\n * @return {number} Height.\n * @api\n */\nexport function getHeight(extent) {\n return extent[3] - extent[1];\n}\n/**\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @return {number} Intersection area.\n */\nexport function getIntersectionArea(extent1, extent2) {\n var intersection = getIntersection(extent1, extent2);\n return getArea(intersection);\n}\n/**\n * Get the intersection of two extents.\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @param {Extent} [opt_extent] Optional extent to populate with intersection.\n * @return {Extent} Intersecting extent.\n * @api\n */\nexport function getIntersection(extent1, extent2, opt_extent) {\n var intersection = opt_extent ? opt_extent : createEmpty();\n if (intersects(extent1, extent2)) {\n if (extent1[0] > extent2[0]) {\n intersection[0] = extent1[0];\n }\n else {\n intersection[0] = extent2[0];\n }\n if (extent1[1] > extent2[1]) {\n intersection[1] = extent1[1];\n }\n else {\n intersection[1] = extent2[1];\n }\n if (extent1[2] < extent2[2]) {\n intersection[2] = extent1[2];\n }\n else {\n intersection[2] = extent2[2];\n }\n if (extent1[3] < extent2[3]) {\n intersection[3] = extent1[3];\n }\n else {\n intersection[3] = extent2[3];\n }\n }\n else {\n createOrUpdateEmpty(intersection);\n }\n return intersection;\n}\n/**\n * @param {Extent} extent Extent.\n * @return {number} Margin.\n */\nexport function getMargin(extent) {\n return getWidth(extent) + getHeight(extent);\n}\n/**\n * Get the size (width, height) of an extent.\n * @param {Extent} extent The extent.\n * @return {import(\"./size.js\").Size} The extent size.\n * @api\n */\nexport function getSize(extent) {\n return [extent[2] - extent[0], extent[3] - extent[1]];\n}\n/**\n * Get the top left coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Top left coordinate.\n * @api\n */\nexport function getTopLeft(extent) {\n return [extent[0], extent[3]];\n}\n/**\n * Get the top right coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Top right coordinate.\n * @api\n */\nexport function getTopRight(extent) {\n return [extent[2], extent[3]];\n}\n/**\n * Get the width of an extent.\n * @param {Extent} extent Extent.\n * @return {number} Width.\n * @api\n */\nexport function getWidth(extent) {\n return extent[2] - extent[0];\n}\n/**\n * Determine if one extent intersects another.\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent.\n * @return {boolean} The two extents intersect.\n * @api\n */\nexport function intersects(extent1, extent2) {\n return (extent1[0] <= extent2[2] &&\n extent1[2] >= extent2[0] &&\n extent1[1] <= extent2[3] &&\n extent1[3] >= extent2[1]);\n}\n/**\n * Determine if an extent is empty.\n * @param {Extent} extent Extent.\n * @return {boolean} Is empty.\n * @api\n */\nexport function isEmpty(extent) {\n return extent[2] < extent[0] || extent[3] < extent[1];\n}\n/**\n * @param {Extent} extent Extent.\n * @param {Extent} [opt_extent] Extent.\n * @return {Extent} Extent.\n */\nexport function returnOrUpdate(extent, opt_extent) {\n if (opt_extent) {\n opt_extent[0] = extent[0];\n opt_extent[1] = extent[1];\n opt_extent[2] = extent[2];\n opt_extent[3] = extent[3];\n return opt_extent;\n }\n else {\n return extent;\n }\n}\n/**\n * @param {Extent} extent Extent.\n * @param {number} value Value.\n */\nexport function scaleFromCenter(extent, value) {\n var deltaX = ((extent[2] - extent[0]) / 2) * (value - 1);\n var deltaY = ((extent[3] - extent[1]) / 2) * (value - 1);\n extent[0] -= deltaX;\n extent[2] += deltaX;\n extent[1] -= deltaY;\n extent[3] += deltaY;\n}\n/**\n * Determine if the segment between two coordinates intersects (crosses,\n * touches, or is contained by) the provided extent.\n * @param {Extent} extent The extent.\n * @param {import(\"./coordinate.js\").Coordinate} start Segment start coordinate.\n * @param {import(\"./coordinate.js\").Coordinate} end Segment end coordinate.\n * @return {boolean} The segment intersects the extent.\n */\nexport function intersectsSegment(extent, start, end) {\n var intersects = false;\n var startRel = coordinateRelationship(extent, start);\n var endRel = coordinateRelationship(extent, end);\n if (startRel === Relationship.INTERSECTING ||\n endRel === Relationship.INTERSECTING) {\n intersects = true;\n }\n else {\n var minX = extent[0];\n var minY = extent[1];\n var maxX = extent[2];\n var maxY = extent[3];\n var startX = start[0];\n var startY = start[1];\n var endX = end[0];\n var endY = end[1];\n var slope = (endY - startY) / (endX - startX);\n var x = void 0, y = void 0;\n if (!!(endRel & Relationship.ABOVE) && !(startRel & Relationship.ABOVE)) {\n // potentially intersects top\n x = endX - (endY - maxY) / slope;\n intersects = x >= minX && x <= maxX;\n }\n if (!intersects &&\n !!(endRel & Relationship.RIGHT) &&\n !(startRel & Relationship.RIGHT)) {\n // potentially intersects right\n y = endY - (endX - maxX) * slope;\n intersects = y >= minY && y <= maxY;\n }\n if (!intersects &&\n !!(endRel & Relationship.BELOW) &&\n !(startRel & Relationship.BELOW)) {\n // potentially intersects bottom\n x = endX - (endY - minY) / slope;\n intersects = x >= minX && x <= maxX;\n }\n if (!intersects &&\n !!(endRel & Relationship.LEFT) &&\n !(startRel & Relationship.LEFT)) {\n // potentially intersects left\n y = endY - (endX - minX) * slope;\n intersects = y >= minY && y <= maxY;\n }\n }\n return intersects;\n}\n/**\n * Apply a transform function to the extent.\n * @param {Extent} extent Extent.\n * @param {import(\"./proj.js\").TransformFunction} transformFn Transform function.\n * Called with `[minX, minY, maxX, maxY]` extent coordinates.\n * @param {Extent} [opt_extent] Destination extent.\n * @param {number} [opt_stops] Number of stops per side used for the transform.\n * By default only the corners are used.\n * @return {Extent} Extent.\n * @api\n */\nexport function applyTransform(extent, transformFn, opt_extent, opt_stops) {\n var coordinates = [];\n if (opt_stops > 1) {\n var width = extent[2] - extent[0];\n var height = extent[3] - extent[1];\n for (var i = 0; i < opt_stops; ++i) {\n coordinates.push(extent[0] + (width * i) / opt_stops, extent[1], extent[2], extent[1] + (height * i) / opt_stops, extent[2] - (width * i) / opt_stops, extent[3], extent[0], extent[3] - (height * i) / opt_stops);\n }\n }\n else {\n coordinates = [\n extent[0],\n extent[1],\n extent[2],\n extent[1],\n extent[2],\n extent[3],\n extent[0],\n extent[3],\n ];\n }\n transformFn(coordinates, coordinates, 2);\n var xs = [];\n var ys = [];\n for (var i = 0, l = coordinates.length; i < l; i += 2) {\n xs.push(coordinates[i]);\n ys.push(coordinates[i + 1]);\n }\n return _boundingExtentXYs(xs, ys, opt_extent);\n}\n/**\n * Modifies the provided extent in-place to be within the real world\n * extent.\n *\n * @param {Extent} extent Extent.\n * @param {import(\"./proj/Projection.js\").default} projection Projection\n * @return {Extent} The extent within the real world extent.\n */\nexport function wrapX(extent, projection) {\n var projectionExtent = projection.getExtent();\n var center = getCenter(extent);\n if (projection.canWrapX() &&\n (center[0] < projectionExtent[0] || center[0] >= projectionExtent[2])) {\n var worldWidth = getWidth(projectionExtent);\n var worldsAway = Math.floor((center[0] - projectionExtent[0]) / worldWidth);\n var offset = worldsAway * worldWidth;\n extent[0] -= offset;\n extent[2] -= offset;\n }\n return extent;\n}\n//# sourceMappingURL=extent.js.map","/**\n * @module ol/sphere\n */\nimport GeometryType from './geom/GeometryType.js';\nimport { toDegrees, toRadians } from './math.js';\n/**\n * Object literal with options for the {@link getLength} or {@link getArea}\n * functions.\n * @typedef {Object} SphereMetricOptions\n * @property {import(\"./proj.js\").ProjectionLike} [projection='EPSG:3857']\n * Projection of the geometry. By default, the geometry is assumed to be in\n * Web Mercator.\n * @property {number} [radius=6371008.8] Sphere radius. By default, the\n * [mean Earth radius](https://en.wikipedia.org/wiki/Earth_radius#Mean_radius)\n * for the WGS84 ellipsoid is used.\n */\n/**\n * The mean Earth radius (1/3 * (2a + b)) for the WGS84 ellipsoid.\n * https://en.wikipedia.org/wiki/Earth_radius#Mean_radius\n * @type {number}\n */\nexport var DEFAULT_RADIUS = 6371008.8;\n/**\n * Get the great circle distance (in meters) between two geographic coordinates.\n * @param {Array} c1 Starting coordinate.\n * @param {Array} c2 Ending coordinate.\n * @param {number} [opt_radius] The sphere radius to use. Defaults to the Earth's\n * mean radius using the WGS84 ellipsoid.\n * @return {number} The great circle distance between the points (in meters).\n * @api\n */\nexport function getDistance(c1, c2, opt_radius) {\n var radius = opt_radius || DEFAULT_RADIUS;\n var lat1 = toRadians(c1[1]);\n var lat2 = toRadians(c2[1]);\n var deltaLatBy2 = (lat2 - lat1) / 2;\n var deltaLonBy2 = toRadians(c2[0] - c1[0]) / 2;\n var a = Math.sin(deltaLatBy2) * Math.sin(deltaLatBy2) +\n Math.sin(deltaLonBy2) *\n Math.sin(deltaLonBy2) *\n Math.cos(lat1) *\n Math.cos(lat2);\n return 2 * radius * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n}\n/**\n * Get the cumulative great circle length of linestring coordinates (geographic).\n * @param {Array} coordinates Linestring coordinates.\n * @param {number} radius The sphere radius to use.\n * @return {number} The length (in meters).\n */\nfunction getLengthInternal(coordinates, radius) {\n var length = 0;\n for (var i = 0, ii = coordinates.length; i < ii - 1; ++i) {\n length += getDistance(coordinates[i], coordinates[i + 1], radius);\n }\n return length;\n}\n/**\n * Get the spherical length of a geometry. This length is the sum of the\n * great circle distances between coordinates. For polygons, the length is\n * the sum of all rings. For points, the length is zero. For multi-part\n * geometries, the length is the sum of the length of each part.\n * @param {import(\"./geom/Geometry.js\").default} geometry A geometry.\n * @param {SphereMetricOptions} [opt_options] Options for the\n * length calculation. By default, geometries are assumed to be in 'EPSG:3857'.\n * You can change this by providing a `projection` option.\n * @return {number} The spherical length (in meters).\n * @api\n */\nexport function getLength(geometry, opt_options) {\n var options = opt_options || {};\n var radius = options.radius || DEFAULT_RADIUS;\n var projection = options.projection || 'EPSG:3857';\n var type = geometry.getType();\n if (type !== GeometryType.GEOMETRY_COLLECTION) {\n geometry = geometry.clone().transform(projection, 'EPSG:4326');\n }\n var length = 0;\n var coordinates, coords, i, ii, j, jj;\n switch (type) {\n case GeometryType.POINT:\n case GeometryType.MULTI_POINT: {\n break;\n }\n case GeometryType.LINE_STRING:\n case GeometryType.LINEAR_RING: {\n coordinates = /** @type {import(\"./geom/SimpleGeometry.js\").default} */ (geometry).getCoordinates();\n length = getLengthInternal(coordinates, radius);\n break;\n }\n case GeometryType.MULTI_LINE_STRING:\n case GeometryType.POLYGON: {\n coordinates = /** @type {import(\"./geom/SimpleGeometry.js\").default} */ (geometry).getCoordinates();\n for (i = 0, ii = coordinates.length; i < ii; ++i) {\n length += getLengthInternal(coordinates[i], radius);\n }\n break;\n }\n case GeometryType.MULTI_POLYGON: {\n coordinates = /** @type {import(\"./geom/SimpleGeometry.js\").default} */ (geometry).getCoordinates();\n for (i = 0, ii = coordinates.length; i < ii; ++i) {\n coords = coordinates[i];\n for (j = 0, jj = coords.length; j < jj; ++j) {\n length += getLengthInternal(coords[j], radius);\n }\n }\n break;\n }\n case GeometryType.GEOMETRY_COLLECTION: {\n var geometries = \n /** @type {import(\"./geom/GeometryCollection.js\").default} */ (geometry).getGeometries();\n for (i = 0, ii = geometries.length; i < ii; ++i) {\n length += getLength(geometries[i], opt_options);\n }\n break;\n }\n default: {\n throw new Error('Unsupported geometry type: ' + type);\n }\n }\n return length;\n}\n/**\n * Returns the spherical area for a list of coordinates.\n *\n * [Reference](https://trs.jpl.nasa.gov/handle/2014/40409)\n * Robert. G. Chamberlain and William H. Duquette, \"Some Algorithms for\n * Polygons on a Sphere\", JPL Publication 07-03, Jet Propulsion\n * Laboratory, Pasadena, CA, June 2007\n *\n * @param {Array} coordinates List of coordinates of a linear\n * ring. If the ring is oriented clockwise, the area will be positive,\n * otherwise it will be negative.\n * @param {number} radius The sphere radius.\n * @return {number} Area (in square meters).\n */\nfunction getAreaInternal(coordinates, radius) {\n var area = 0;\n var len = coordinates.length;\n var x1 = coordinates[len - 1][0];\n var y1 = coordinates[len - 1][1];\n for (var i = 0; i < len; i++) {\n var x2 = coordinates[i][0];\n var y2 = coordinates[i][1];\n area +=\n toRadians(x2 - x1) *\n (2 + Math.sin(toRadians(y1)) + Math.sin(toRadians(y2)));\n x1 = x2;\n y1 = y2;\n }\n return (area * radius * radius) / 2.0;\n}\n/**\n * Get the spherical area of a geometry. This is the area (in meters) assuming\n * that polygon edges are segments of great circles on a sphere.\n * @param {import(\"./geom/Geometry.js\").default} geometry A geometry.\n * @param {SphereMetricOptions} [opt_options] Options for the area\n * calculation. By default, geometries are assumed to be in 'EPSG:3857'.\n * You can change this by providing a `projection` option.\n * @return {number} The spherical area (in square meters).\n * @api\n */\nexport function getArea(geometry, opt_options) {\n var options = opt_options || {};\n var radius = options.radius || DEFAULT_RADIUS;\n var projection = options.projection || 'EPSG:3857';\n var type = geometry.getType();\n if (type !== GeometryType.GEOMETRY_COLLECTION) {\n geometry = geometry.clone().transform(projection, 'EPSG:4326');\n }\n var area = 0;\n var coordinates, coords, i, ii, j, jj;\n switch (type) {\n case GeometryType.POINT:\n case GeometryType.MULTI_POINT:\n case GeometryType.LINE_STRING:\n case GeometryType.MULTI_LINE_STRING:\n case GeometryType.LINEAR_RING: {\n break;\n }\n case GeometryType.POLYGON: {\n coordinates = /** @type {import(\"./geom/Polygon.js\").default} */ (geometry).getCoordinates();\n area = Math.abs(getAreaInternal(coordinates[0], radius));\n for (i = 1, ii = coordinates.length; i < ii; ++i) {\n area -= Math.abs(getAreaInternal(coordinates[i], radius));\n }\n break;\n }\n case GeometryType.MULTI_POLYGON: {\n coordinates = /** @type {import(\"./geom/SimpleGeometry.js\").default} */ (geometry).getCoordinates();\n for (i = 0, ii = coordinates.length; i < ii; ++i) {\n coords = coordinates[i];\n area += Math.abs(getAreaInternal(coords[0], radius));\n for (j = 1, jj = coords.length; j < jj; ++j) {\n area -= Math.abs(getAreaInternal(coords[j], radius));\n }\n }\n break;\n }\n case GeometryType.GEOMETRY_COLLECTION: {\n var geometries = \n /** @type {import(\"./geom/GeometryCollection.js\").default} */ (geometry).getGeometries();\n for (i = 0, ii = geometries.length; i < ii; ++i) {\n area += getArea(geometries[i], opt_options);\n }\n break;\n }\n default: {\n throw new Error('Unsupported geometry type: ' + type);\n }\n }\n return area;\n}\n/**\n * Returns the coordinate at the given distance and bearing from `c1`.\n *\n * @param {import(\"./coordinate.js\").Coordinate} c1 The origin point (`[lon, lat]` in degrees).\n * @param {number} distance The great-circle distance between the origin\n * point and the target point.\n * @param {number} bearing The bearing (in radians).\n * @param {number} [opt_radius] The sphere radius to use. Defaults to the Earth's\n * mean radius using the WGS84 ellipsoid.\n * @return {import(\"./coordinate.js\").Coordinate} The target point.\n */\nexport function offset(c1, distance, bearing, opt_radius) {\n var radius = opt_radius || DEFAULT_RADIUS;\n var lat1 = toRadians(c1[1]);\n var lon1 = toRadians(c1[0]);\n var dByR = distance / radius;\n var lat = Math.asin(Math.sin(lat1) * Math.cos(dByR) +\n Math.cos(lat1) * Math.sin(dByR) * Math.cos(bearing));\n var lon = lon1 +\n Math.atan2(Math.sin(bearing) * Math.sin(dByR) * Math.cos(lat1), Math.cos(dByR) - Math.sin(lat1) * Math.sin(lat));\n return [toDegrees(lon), toDegrees(lat)];\n}\n//# sourceMappingURL=sphere.js.map","/**\n * @module ol/proj\n */\n/**\n * The ol/proj module stores:\n * * a list of {@link module:ol/proj/Projection}\n * objects, one for each projection supported by the application\n * * a list of transform functions needed to convert coordinates in one projection\n * into another.\n *\n * The static functions are the methods used to maintain these.\n * Each transform function can handle not only simple coordinate pairs, but also\n * large arrays of coordinates such as vector geometries.\n *\n * When loaded, the library adds projection objects for EPSG:4326 (WGS84\n * geographic coordinates) and EPSG:3857 (Web or Spherical Mercator, as used\n * for example by Bing Maps or OpenStreetMap), together with the relevant\n * transform functions.\n *\n * Additional transforms may be added by using the http://proj4js.org/\n * library (version 2.2 or later). You can use the full build supplied by\n * Proj4js, or create a custom build to support those projections you need; see\n * the Proj4js website for how to do this. You also need the Proj4js definitions\n * for the required projections. These definitions can be obtained from\n * https://epsg.io/, and are a JS function, so can be loaded in a script\n * tag (as in the examples) or pasted into your application.\n *\n * After all required projection definitions are added to proj4's registry (by\n * using `proj4.defs()`), simply call `register(proj4)` from the `ol/proj/proj4`\n * package. Existing transforms are not changed by this function. See\n * examples/wms-image-custom-proj for an example of this.\n *\n * Additional projection definitions can be registered with `proj4.defs()` any\n * time. Just make sure to call `register(proj4)` again; for example, with user-supplied data where you don't\n * know in advance what projections are needed, you can initially load minimal\n * support and then load whichever are requested.\n *\n * Note that Proj4js does not support projection extents. If you want to add\n * one for creating default tile grids, you can add it after the Projection\n * object has been created with `setExtent`, for example,\n * `get('EPSG:1234').setExtent(extent)`.\n *\n * In addition to Proj4js support, any transform functions can be added with\n * {@link module:ol/proj.addCoordinateTransforms}. To use this, you must first create\n * a {@link module:ol/proj/Projection} object for the new projection and add it with\n * {@link module:ol/proj.addProjection}. You can then add the forward and inverse\n * functions with {@link module:ol/proj.addCoordinateTransforms}. See\n * examples/wms-custom-proj for an example of this.\n *\n * Note that if no transforms are needed and you only need to define the\n * projection, just add a {@link module:ol/proj/Projection} with\n * {@link module:ol/proj.addProjection}. See examples/wms-no-proj for an example of\n * this.\n */\nimport Projection from './proj/Projection.js';\nimport Units, { METERS_PER_UNIT } from './proj/Units.js';\nimport { PROJECTIONS as EPSG3857_PROJECTIONS, fromEPSG4326, toEPSG4326, } from './proj/epsg3857.js';\nimport { PROJECTIONS as EPSG4326_PROJECTIONS } from './proj/epsg4326.js';\nimport { add as addProj, clear as clearProj, get as getProj, } from './proj/projections.js';\nimport { add as addTransformFunc, clear as clearTransformFuncs, get as getTransformFunc, } from './proj/transforms.js';\nimport { applyTransform, getWidth } from './extent.js';\nimport { clamp, modulo } from './math.js';\nimport { getDistance } from './sphere.js';\nimport { getWorldsAway } from './coordinate.js';\n/**\n * A projection as {@link module:ol/proj/Projection}, SRS identifier\n * string or undefined.\n * @typedef {Projection|string|undefined} ProjectionLike\n * @api\n */\n/**\n * A transform function accepts an array of input coordinate values, an optional\n * output array, and an optional dimension (default should be 2). The function\n * transforms the input coordinate values, populates the output array, and\n * returns the output array.\n *\n * @typedef {function(Array, Array=, number=): Array} TransformFunction\n * @api\n */\nexport { METERS_PER_UNIT };\nexport { Projection };\n/**\n * @param {Array} input Input coordinate array.\n * @param {Array} [opt_output] Output array of coordinate values.\n * @param {number} [opt_dimension] Dimension.\n * @return {Array} Output coordinate array (new array, same coordinate\n * values).\n */\nexport function cloneTransform(input, opt_output, opt_dimension) {\n var output;\n if (opt_output !== undefined) {\n for (var i = 0, ii = input.length; i < ii; ++i) {\n opt_output[i] = input[i];\n }\n output = opt_output;\n }\n else {\n output = input.slice();\n }\n return output;\n}\n/**\n * @param {Array} input Input coordinate array.\n * @param {Array} [opt_output] Output array of coordinate values.\n * @param {number} [opt_dimension] Dimension.\n * @return {Array} Input coordinate array (same array as input).\n */\nexport function identityTransform(input, opt_output, opt_dimension) {\n if (opt_output !== undefined && input !== opt_output) {\n for (var i = 0, ii = input.length; i < ii; ++i) {\n opt_output[i] = input[i];\n }\n input = opt_output;\n }\n return input;\n}\n/**\n * Add a Projection object to the list of supported projections that can be\n * looked up by their code.\n *\n * @param {Projection} projection Projection instance.\n * @api\n */\nexport function addProjection(projection) {\n addProj(projection.getCode(), projection);\n addTransformFunc(projection, projection, cloneTransform);\n}\n/**\n * @param {Array} projections Projections.\n */\nexport function addProjections(projections) {\n projections.forEach(addProjection);\n}\n/**\n * Fetches a Projection object for the code specified.\n *\n * @param {ProjectionLike} projectionLike Either a code string which is\n * a combination of authority and identifier such as \"EPSG:4326\", or an\n * existing projection object, or undefined.\n * @return {Projection} Projection object, or null if not in list.\n * @api\n */\nexport function get(projectionLike) {\n return typeof projectionLike === 'string'\n ? getProj(/** @type {string} */ (projectionLike))\n : /** @type {Projection} */ (projectionLike) || null;\n}\n/**\n * Get the resolution of the point in degrees or distance units.\n * For projections with degrees as the unit this will simply return the\n * provided resolution. For other projections the point resolution is\n * by default estimated by transforming the 'point' pixel to EPSG:4326,\n * measuring its width and height on the normal sphere,\n * and taking the average of the width and height.\n * A custom function can be provided for a specific projection, either\n * by setting the `getPointResolution` option in the\n * {@link module:ol/proj/Projection~Projection} constructor or by using\n * {@link module:ol/proj/Projection~Projection#setGetPointResolution} to change an existing\n * projection object.\n * @param {ProjectionLike} projection The projection.\n * @param {number} resolution Nominal resolution in projection units.\n * @param {import(\"./coordinate.js\").Coordinate} point Point to find adjusted resolution at.\n * @param {import(\"./proj/Units.js\").default} [opt_units] Units to get the point resolution in.\n * Default is the projection's units.\n * @return {number} Point resolution.\n * @api\n */\nexport function getPointResolution(projection, resolution, point, opt_units) {\n projection = get(projection);\n var pointResolution;\n var getter = projection.getPointResolutionFunc();\n if (getter) {\n pointResolution = getter(resolution, point);\n if (opt_units && opt_units !== projection.getUnits()) {\n var metersPerUnit = projection.getMetersPerUnit();\n if (metersPerUnit) {\n pointResolution =\n (pointResolution * metersPerUnit) / METERS_PER_UNIT[opt_units];\n }\n }\n }\n else {\n var units = projection.getUnits();\n if ((units == Units.DEGREES && !opt_units) || opt_units == Units.DEGREES) {\n pointResolution = resolution;\n }\n else {\n // Estimate point resolution by transforming the center pixel to EPSG:4326,\n // measuring its width and height on the normal sphere, and taking the\n // average of the width and height.\n var toEPSG4326_1 = getTransformFromProjections(projection, get('EPSG:4326'));\n if (toEPSG4326_1 === identityTransform && units !== Units.DEGREES) {\n // no transform is available\n pointResolution = resolution * projection.getMetersPerUnit();\n }\n else {\n var vertices = [\n point[0] - resolution / 2,\n point[1],\n point[0] + resolution / 2,\n point[1],\n point[0],\n point[1] - resolution / 2,\n point[0],\n point[1] + resolution / 2,\n ];\n vertices = toEPSG4326_1(vertices, vertices, 2);\n var width = getDistance(vertices.slice(0, 2), vertices.slice(2, 4));\n var height = getDistance(vertices.slice(4, 6), vertices.slice(6, 8));\n pointResolution = (width + height) / 2;\n }\n var metersPerUnit = opt_units\n ? METERS_PER_UNIT[opt_units]\n : projection.getMetersPerUnit();\n if (metersPerUnit !== undefined) {\n pointResolution /= metersPerUnit;\n }\n }\n }\n return pointResolution;\n}\n/**\n * Registers transformation functions that don't alter coordinates. Those allow\n * to transform between projections with equal meaning.\n *\n * @param {Array} projections Projections.\n * @api\n */\nexport function addEquivalentProjections(projections) {\n addProjections(projections);\n projections.forEach(function (source) {\n projections.forEach(function (destination) {\n if (source !== destination) {\n addTransformFunc(source, destination, cloneTransform);\n }\n });\n });\n}\n/**\n * Registers transformation functions to convert coordinates in any projection\n * in projection1 to any projection in projection2.\n *\n * @param {Array} projections1 Projections with equal\n * meaning.\n * @param {Array} projections2 Projections with equal\n * meaning.\n * @param {TransformFunction} forwardTransform Transformation from any\n * projection in projection1 to any projection in projection2.\n * @param {TransformFunction} inverseTransform Transform from any projection\n * in projection2 to any projection in projection1..\n */\nexport function addEquivalentTransforms(projections1, projections2, forwardTransform, inverseTransform) {\n projections1.forEach(function (projection1) {\n projections2.forEach(function (projection2) {\n addTransformFunc(projection1, projection2, forwardTransform);\n addTransformFunc(projection2, projection1, inverseTransform);\n });\n });\n}\n/**\n * Clear all cached projections and transforms.\n */\nexport function clearAllProjections() {\n clearProj();\n clearTransformFuncs();\n}\n/**\n * @param {Projection|string|undefined} projection Projection.\n * @param {string} defaultCode Default code.\n * @return {Projection} Projection.\n */\nexport function createProjection(projection, defaultCode) {\n if (!projection) {\n return get(defaultCode);\n }\n else if (typeof projection === 'string') {\n return get(projection);\n }\n else {\n return /** @type {Projection} */ (projection);\n }\n}\n/**\n * Creates a {@link module:ol/proj~TransformFunction} from a simple 2D coordinate transform\n * function.\n * @param {function(import(\"./coordinate.js\").Coordinate): import(\"./coordinate.js\").Coordinate} coordTransform Coordinate\n * transform.\n * @return {TransformFunction} Transform function.\n */\nexport function createTransformFromCoordinateTransform(coordTransform) {\n return (\n /**\n * @param {Array} input Input.\n * @param {Array} [opt_output] Output.\n * @param {number} [opt_dimension] Dimension.\n * @return {Array} Output.\n */\n function (input, opt_output, opt_dimension) {\n var length = input.length;\n var dimension = opt_dimension !== undefined ? opt_dimension : 2;\n var output = opt_output !== undefined ? opt_output : new Array(length);\n for (var i = 0; i < length; i += dimension) {\n var point = coordTransform([input[i], input[i + 1]]);\n output[i] = point[0];\n output[i + 1] = point[1];\n for (var j = dimension - 1; j >= 2; --j) {\n output[i + j] = input[i + j];\n }\n }\n return output;\n });\n}\n/**\n * Registers coordinate transform functions to convert coordinates between the\n * source projection and the destination projection.\n * The forward and inverse functions convert coordinate pairs; this function\n * converts these into the functions used internally which also handle\n * extents and coordinate arrays.\n *\n * @param {ProjectionLike} source Source projection.\n * @param {ProjectionLike} destination Destination projection.\n * @param {function(import(\"./coordinate.js\").Coordinate): import(\"./coordinate.js\").Coordinate} forward The forward transform\n * function (that is, from the source projection to the destination\n * projection) that takes a {@link module:ol/coordinate~Coordinate} as argument and returns\n * the transformed {@link module:ol/coordinate~Coordinate}.\n * @param {function(import(\"./coordinate.js\").Coordinate): import(\"./coordinate.js\").Coordinate} inverse The inverse transform\n * function (that is, from the destination projection to the source\n * projection) that takes a {@link module:ol/coordinate~Coordinate} as argument and returns\n * the transformed {@link module:ol/coordinate~Coordinate}.\n * @api\n */\nexport function addCoordinateTransforms(source, destination, forward, inverse) {\n var sourceProj = get(source);\n var destProj = get(destination);\n addTransformFunc(sourceProj, destProj, createTransformFromCoordinateTransform(forward));\n addTransformFunc(destProj, sourceProj, createTransformFromCoordinateTransform(inverse));\n}\n/**\n * Transforms a coordinate from longitude/latitude to a different projection.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate as longitude and latitude, i.e.\n * an array with longitude as 1st and latitude as 2nd element.\n * @param {ProjectionLike} [opt_projection] Target projection. The\n * default is Web Mercator, i.e. 'EPSG:3857'.\n * @return {import(\"./coordinate.js\").Coordinate} Coordinate projected to the target projection.\n * @api\n */\nexport function fromLonLat(coordinate, opt_projection) {\n return transform(coordinate, 'EPSG:4326', opt_projection !== undefined ? opt_projection : 'EPSG:3857');\n}\n/**\n * Transforms a coordinate to longitude/latitude.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Projected coordinate.\n * @param {ProjectionLike} [opt_projection] Projection of the coordinate.\n * The default is Web Mercator, i.e. 'EPSG:3857'.\n * @return {import(\"./coordinate.js\").Coordinate} Coordinate as longitude and latitude, i.e. an array\n * with longitude as 1st and latitude as 2nd element.\n * @api\n */\nexport function toLonLat(coordinate, opt_projection) {\n var lonLat = transform(coordinate, opt_projection !== undefined ? opt_projection : 'EPSG:3857', 'EPSG:4326');\n var lon = lonLat[0];\n if (lon < -180 || lon > 180) {\n lonLat[0] = modulo(lon + 180, 360) - 180;\n }\n return lonLat;\n}\n/**\n * Checks if two projections are the same, that is every coordinate in one\n * projection does represent the same geographic point as the same coordinate in\n * the other projection.\n *\n * @param {Projection} projection1 Projection 1.\n * @param {Projection} projection2 Projection 2.\n * @return {boolean} Equivalent.\n * @api\n */\nexport function equivalent(projection1, projection2) {\n if (projection1 === projection2) {\n return true;\n }\n var equalUnits = projection1.getUnits() === projection2.getUnits();\n if (projection1.getCode() === projection2.getCode()) {\n return equalUnits;\n }\n else {\n var transformFunc = getTransformFromProjections(projection1, projection2);\n return transformFunc === cloneTransform && equalUnits;\n }\n}\n/**\n * Searches in the list of transform functions for the function for converting\n * coordinates from the source projection to the destination projection.\n *\n * @param {Projection} sourceProjection Source Projection object.\n * @param {Projection} destinationProjection Destination Projection\n * object.\n * @return {TransformFunction} Transform function.\n */\nexport function getTransformFromProjections(sourceProjection, destinationProjection) {\n var sourceCode = sourceProjection.getCode();\n var destinationCode = destinationProjection.getCode();\n var transformFunc = getTransformFunc(sourceCode, destinationCode);\n if (!transformFunc) {\n transformFunc = identityTransform;\n }\n return transformFunc;\n}\n/**\n * Given the projection-like objects, searches for a transformation\n * function to convert a coordinates array from the source projection to the\n * destination projection.\n *\n * @param {ProjectionLike} source Source.\n * @param {ProjectionLike} destination Destination.\n * @return {TransformFunction} Transform function.\n * @api\n */\nexport function getTransform(source, destination) {\n var sourceProjection = get(source);\n var destinationProjection = get(destination);\n return getTransformFromProjections(sourceProjection, destinationProjection);\n}\n/**\n * Transforms a coordinate from source projection to destination projection.\n * This returns a new coordinate (and does not modify the original).\n *\n * See {@link module:ol/proj.transformExtent} for extent transformation.\n * See the transform method of {@link module:ol/geom/Geometry~Geometry} and its\n * subclasses for geometry transforms.\n *\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {ProjectionLike} source Source projection-like.\n * @param {ProjectionLike} destination Destination projection-like.\n * @return {import(\"./coordinate.js\").Coordinate} Coordinate.\n * @api\n */\nexport function transform(coordinate, source, destination) {\n var transformFunc = getTransform(source, destination);\n return transformFunc(coordinate, undefined, coordinate.length);\n}\n/**\n * Transforms an extent from source projection to destination projection. This\n * returns a new extent (and does not modify the original).\n *\n * @param {import(\"./extent.js\").Extent} extent The extent to transform.\n * @param {ProjectionLike} source Source projection-like.\n * @param {ProjectionLike} destination Destination projection-like.\n * @param {number} [opt_stops] Number of stops per side used for the transform.\n * By default only the corners are used.\n * @return {import(\"./extent.js\").Extent} The transformed extent.\n * @api\n */\nexport function transformExtent(extent, source, destination, opt_stops) {\n var transformFunc = getTransform(source, destination);\n return applyTransform(extent, transformFunc, undefined, opt_stops);\n}\n/**\n * Transforms the given point to the destination projection.\n *\n * @param {import(\"./coordinate.js\").Coordinate} point Point.\n * @param {Projection} sourceProjection Source projection.\n * @param {Projection} destinationProjection Destination projection.\n * @return {import(\"./coordinate.js\").Coordinate} Point.\n */\nexport function transformWithProjections(point, sourceProjection, destinationProjection) {\n var transformFunc = getTransformFromProjections(sourceProjection, destinationProjection);\n return transformFunc(point);\n}\n/**\n * @type {?Projection}\n */\nvar userProjection = null;\n/**\n * Set the projection for coordinates supplied from and returned by API methods.\n * Note that this method is not yet a part of the stable API. Support for user\n * projections is not yet complete and should be considered experimental.\n * @param {ProjectionLike} projection The user projection.\n */\nexport function setUserProjection(projection) {\n userProjection = get(projection);\n}\n/**\n * Clear the user projection if set. Note that this method is not yet a part of\n * the stable API. Support for user projections is not yet complete and should\n * be considered experimental.\n */\nexport function clearUserProjection() {\n userProjection = null;\n}\n/**\n * Get the projection for coordinates supplied from and returned by API methods.\n * Note that this method is not yet a part of the stable API. Support for user\n * projections is not yet complete and should be considered experimental.\n * @return {?Projection} The user projection (or null if not set).\n */\nexport function getUserProjection() {\n return userProjection;\n}\n/**\n * Use geographic coordinates (WGS-84 datum) in API methods. Note that this\n * method is not yet a part of the stable API. Support for user projections is\n * not yet complete and should be considered experimental.\n */\nexport function useGeographic() {\n setUserProjection('EPSG:4326');\n}\n/**\n * Return a coordinate transformed into the user projection. If no user projection\n * is set, the original coordinate is returned.\n * @param {Array} coordinate Input coordinate.\n * @param {ProjectionLike} sourceProjection The input coordinate projection.\n * @return {Array} The input coordinate in the user projection.\n */\nexport function toUserCoordinate(coordinate, sourceProjection) {\n if (!userProjection) {\n return coordinate;\n }\n return transform(coordinate, sourceProjection, userProjection);\n}\n/**\n * Return a coordinate transformed from the user projection. If no user projection\n * is set, the original coordinate is returned.\n * @param {Array} coordinate Input coordinate.\n * @param {ProjectionLike} destProjection The destination projection.\n * @return {Array} The input coordinate transformed.\n */\nexport function fromUserCoordinate(coordinate, destProjection) {\n if (!userProjection) {\n return coordinate;\n }\n return transform(coordinate, userProjection, destProjection);\n}\n/**\n * Return an extent transformed into the user projection. If no user projection\n * is set, the original extent is returned.\n * @param {import(\"./extent.js\").Extent} extent Input extent.\n * @param {ProjectionLike} sourceProjection The input extent projection.\n * @return {import(\"./extent.js\").Extent} The input extent in the user projection.\n */\nexport function toUserExtent(extent, sourceProjection) {\n if (!userProjection) {\n return extent;\n }\n return transformExtent(extent, sourceProjection, userProjection);\n}\n/**\n * Return an extent transformed from the user projection. If no user projection\n * is set, the original extent is returned.\n * @param {import(\"./extent.js\").Extent} extent Input extent.\n * @param {ProjectionLike} destProjection The destination projection.\n * @return {import(\"./extent.js\").Extent} The input extent transformed.\n */\nexport function fromUserExtent(extent, destProjection) {\n if (!userProjection) {\n return extent;\n }\n return transformExtent(extent, userProjection, destProjection);\n}\n/**\n * Creates a safe coordinate transform function from a coordinate transform function.\n * \"Safe\" means that it can handle wrapping of x-coordinates for global projections,\n * and that coordinates exceeding the source projection validity extent's range will be\n * clamped to the validity range.\n * @param {Projection} sourceProj Source projection.\n * @param {Projection} destProj Destination projection.\n * @param {function(import(\"./coordinate.js\").Coordinate): import(\"./coordinate.js\").Coordinate} transform Transform function (source to destiation).\n * @return {function(import(\"./coordinate.js\").Coordinate): import(\"./coordinate.js\").Coordinate} Safe transform function (source to destiation).\n */\nexport function createSafeCoordinateTransform(sourceProj, destProj, transform) {\n return function (coord) {\n var sourceX = coord[0];\n var sourceY = coord[1];\n var transformed, worldsAway;\n if (sourceProj.canWrapX()) {\n var sourceExtent = sourceProj.getExtent();\n var sourceExtentWidth = getWidth(sourceExtent);\n worldsAway = getWorldsAway(coord, sourceProj, sourceExtentWidth);\n if (worldsAway) {\n // Move x to the real world\n sourceX = sourceX - worldsAway * sourceExtentWidth;\n }\n sourceX = clamp(sourceX, sourceExtent[0], sourceExtent[2]);\n sourceY = clamp(sourceY, sourceExtent[1], sourceExtent[3]);\n transformed = transform([sourceX, sourceY]);\n }\n else {\n transformed = transform(coord);\n }\n if (worldsAway && destProj.canWrapX()) {\n // Move transformed coordinate back to the offset world\n transformed[0] += worldsAway * getWidth(destProj.getExtent());\n }\n return transformed;\n };\n}\n/**\n * Add transforms to and from EPSG:4326 and EPSG:3857. This function is called\n * by when this module is executed and should only need to be called again after\n * `clearAllProjections()` is called (e.g. in tests).\n */\nexport function addCommon() {\n // Add transformations that don't alter coordinates to convert within set of\n // projections with equal meaning.\n addEquivalentProjections(EPSG3857_PROJECTIONS);\n addEquivalentProjections(EPSG4326_PROJECTIONS);\n // Add transformations to convert EPSG:4326 like coordinates to EPSG:3857 like\n // coordinates and back.\n addEquivalentTransforms(EPSG4326_PROJECTIONS, EPSG3857_PROJECTIONS, fromEPSG4326, toEPSG4326);\n}\naddCommon();\n//# sourceMappingURL=proj.js.map","/**\n * @module ol/transform\n */\nimport { WORKER_OFFSCREEN_CANVAS } from './has.js';\nimport { assert } from './asserts.js';\n/**\n * An array representing an affine 2d transformation for use with\n * {@link module:ol/transform} functions. The array has 6 elements.\n * @typedef {!Array} Transform\n * @api\n */\n/**\n * Collection of affine 2d transformation functions. The functions work on an\n * array of 6 elements. The element order is compatible with the [SVGMatrix\n * interface](https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix) and is\n * a subset (elements a to f) of a 3×3 matrix:\n * ```\n * [ a c e ]\n * [ b d f ]\n * [ 0 0 1 ]\n * ```\n */\n/**\n * @private\n * @type {Transform}\n */\nvar tmp_ = new Array(6);\n/**\n * Create an identity transform.\n * @return {!Transform} Identity transform.\n */\nexport function create() {\n return [1, 0, 0, 1, 0, 0];\n}\n/**\n * Resets the given transform to an identity transform.\n * @param {!Transform} transform Transform.\n * @return {!Transform} Transform.\n */\nexport function reset(transform) {\n return set(transform, 1, 0, 0, 1, 0, 0);\n}\n/**\n * Multiply the underlying matrices of two transforms and return the result in\n * the first transform.\n * @param {!Transform} transform1 Transform parameters of matrix 1.\n * @param {!Transform} transform2 Transform parameters of matrix 2.\n * @return {!Transform} transform1 multiplied with transform2.\n */\nexport function multiply(transform1, transform2) {\n var a1 = transform1[0];\n var b1 = transform1[1];\n var c1 = transform1[2];\n var d1 = transform1[3];\n var e1 = transform1[4];\n var f1 = transform1[5];\n var a2 = transform2[0];\n var b2 = transform2[1];\n var c2 = transform2[2];\n var d2 = transform2[3];\n var e2 = transform2[4];\n var f2 = transform2[5];\n transform1[0] = a1 * a2 + c1 * b2;\n transform1[1] = b1 * a2 + d1 * b2;\n transform1[2] = a1 * c2 + c1 * d2;\n transform1[3] = b1 * c2 + d1 * d2;\n transform1[4] = a1 * e2 + c1 * f2 + e1;\n transform1[5] = b1 * e2 + d1 * f2 + f1;\n return transform1;\n}\n/**\n * Set the transform components a-f on a given transform.\n * @param {!Transform} transform Transform.\n * @param {number} a The a component of the transform.\n * @param {number} b The b component of the transform.\n * @param {number} c The c component of the transform.\n * @param {number} d The d component of the transform.\n * @param {number} e The e component of the transform.\n * @param {number} f The f component of the transform.\n * @return {!Transform} Matrix with transform applied.\n */\nexport function set(transform, a, b, c, d, e, f) {\n transform[0] = a;\n transform[1] = b;\n transform[2] = c;\n transform[3] = d;\n transform[4] = e;\n transform[5] = f;\n return transform;\n}\n/**\n * Set transform on one matrix from another matrix.\n * @param {!Transform} transform1 Matrix to set transform to.\n * @param {!Transform} transform2 Matrix to set transform from.\n * @return {!Transform} transform1 with transform from transform2 applied.\n */\nexport function setFromArray(transform1, transform2) {\n transform1[0] = transform2[0];\n transform1[1] = transform2[1];\n transform1[2] = transform2[2];\n transform1[3] = transform2[3];\n transform1[4] = transform2[4];\n transform1[5] = transform2[5];\n return transform1;\n}\n/**\n * Transforms the given coordinate with the given transform returning the\n * resulting, transformed coordinate. The coordinate will be modified in-place.\n *\n * @param {Transform} transform The transformation.\n * @param {import(\"./coordinate.js\").Coordinate|import(\"./pixel.js\").Pixel} coordinate The coordinate to transform.\n * @return {import(\"./coordinate.js\").Coordinate|import(\"./pixel.js\").Pixel} return coordinate so that operations can be\n * chained together.\n */\nexport function apply(transform, coordinate) {\n var x = coordinate[0];\n var y = coordinate[1];\n coordinate[0] = transform[0] * x + transform[2] * y + transform[4];\n coordinate[1] = transform[1] * x + transform[3] * y + transform[5];\n return coordinate;\n}\n/**\n * Applies rotation to the given transform.\n * @param {!Transform} transform Transform.\n * @param {number} angle Angle in radians.\n * @return {!Transform} The rotated transform.\n */\nexport function rotate(transform, angle) {\n var cos = Math.cos(angle);\n var sin = Math.sin(angle);\n return multiply(transform, set(tmp_, cos, sin, -sin, cos, 0, 0));\n}\n/**\n * Applies scale to a given transform.\n * @param {!Transform} transform Transform.\n * @param {number} x Scale factor x.\n * @param {number} y Scale factor y.\n * @return {!Transform} The scaled transform.\n */\nexport function scale(transform, x, y) {\n return multiply(transform, set(tmp_, x, 0, 0, y, 0, 0));\n}\n/**\n * Creates a scale transform.\n * @param {!Transform} target Transform to overwrite.\n * @param {number} x Scale factor x.\n * @param {number} y Scale factor y.\n * @return {!Transform} The scale transform.\n */\nexport function makeScale(target, x, y) {\n return set(target, x, 0, 0, y, 0, 0);\n}\n/**\n * Applies translation to the given transform.\n * @param {!Transform} transform Transform.\n * @param {number} dx Translation x.\n * @param {number} dy Translation y.\n * @return {!Transform} The translated transform.\n */\nexport function translate(transform, dx, dy) {\n return multiply(transform, set(tmp_, 1, 0, 0, 1, dx, dy));\n}\n/**\n * Creates a composite transform given an initial translation, scale, rotation, and\n * final translation (in that order only, not commutative).\n * @param {!Transform} transform The transform (will be modified in place).\n * @param {number} dx1 Initial translation x.\n * @param {number} dy1 Initial translation y.\n * @param {number} sx Scale factor x.\n * @param {number} sy Scale factor y.\n * @param {number} angle Rotation (in counter-clockwise radians).\n * @param {number} dx2 Final translation x.\n * @param {number} dy2 Final translation y.\n * @return {!Transform} The composite transform.\n */\nexport function compose(transform, dx1, dy1, sx, sy, angle, dx2, dy2) {\n var sin = Math.sin(angle);\n var cos = Math.cos(angle);\n transform[0] = sx * cos;\n transform[1] = sy * sin;\n transform[2] = -sx * sin;\n transform[3] = sy * cos;\n transform[4] = dx2 * sx * cos - dy2 * sx * sin + dx1;\n transform[5] = dx2 * sy * sin + dy2 * sy * cos + dy1;\n return transform;\n}\n/**\n * Creates a composite transform given an initial translation, scale, rotation, and\n * final translation (in that order only, not commutative). The resulting transform\n * string can be applied as `transform` property of an HTMLElement's style.\n * @param {number} dx1 Initial translation x.\n * @param {number} dy1 Initial translation y.\n * @param {number} sx Scale factor x.\n * @param {number} sy Scale factor y.\n * @param {number} angle Rotation (in counter-clockwise radians).\n * @param {number} dx2 Final translation x.\n * @param {number} dy2 Final translation y.\n * @return {string} The composite css transform.\n * @api\n */\nexport function composeCssTransform(dx1, dy1, sx, sy, angle, dx2, dy2) {\n return toString(compose(create(), dx1, dy1, sx, sy, angle, dx2, dy2));\n}\n/**\n * Invert the given transform.\n * @param {!Transform} source The source transform to invert.\n * @return {!Transform} The inverted (source) transform.\n */\nexport function invert(source) {\n return makeInverse(source, source);\n}\n/**\n * Invert the given transform.\n * @param {!Transform} target Transform to be set as the inverse of\n * the source transform.\n * @param {!Transform} source The source transform to invert.\n * @return {!Transform} The inverted (target) transform.\n */\nexport function makeInverse(target, source) {\n var det = determinant(source);\n assert(det !== 0, 32); // Transformation matrix cannot be inverted\n var a = source[0];\n var b = source[1];\n var c = source[2];\n var d = source[3];\n var e = source[4];\n var f = source[5];\n target[0] = d / det;\n target[1] = -b / det;\n target[2] = -c / det;\n target[3] = a / det;\n target[4] = (c * f - d * e) / det;\n target[5] = -(a * f - b * e) / det;\n return target;\n}\n/**\n * Returns the determinant of the given matrix.\n * @param {!Transform} mat Matrix.\n * @return {number} Determinant.\n */\nexport function determinant(mat) {\n return mat[0] * mat[3] - mat[1] * mat[2];\n}\n/**\n * @type {HTMLElement}\n * @private\n */\nvar transformStringDiv;\n/**\n * A rounded string version of the transform. This can be used\n * for CSS transforms.\n * @param {!Transform} mat Matrix.\n * @return {string} The transform as a string.\n */\nexport function toString(mat) {\n var transformString = 'matrix(' + mat.join(', ') + ')';\n if (WORKER_OFFSCREEN_CANVAS) {\n return transformString;\n }\n var node = transformStringDiv || (transformStringDiv = document.createElement('div'));\n node.style.transform = transformString;\n return node.style.transform;\n}\n//# sourceMappingURL=transform.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/control/ScaleLine\n */\nimport Control from './Control.js';\nimport ProjUnits from '../proj/Units.js';\nimport { CLASS_UNSELECTABLE } from '../css.js';\nimport { METERS_PER_UNIT, getPointResolution } from '../proj.js';\nimport { assert } from '../asserts.js';\n/**\n * @type {string}\n */\nvar UNITS_PROP = 'units';\n/**\n * Units for the scale line. Supported values are `'degrees'`, `'imperial'`,\n * `'nautical'`, `'metric'`, `'us'`.\n * @enum {string}\n */\nexport var Units = {\n DEGREES: 'degrees',\n IMPERIAL: 'imperial',\n NAUTICAL: 'nautical',\n METRIC: 'metric',\n US: 'us',\n};\n/**\n * @const\n * @type {Array}\n */\nvar LEADING_DIGITS = [1, 2, 5];\n/**\n * @const\n * @type {number}\n */\nvar DEFAULT_DPI = 25.4 / 0.28;\n/***\n * @template Return\n * @typedef {import(\"../Observable\").OnSignature &\n * import(\"../Observable\").OnSignature &\n * import(\"../Observable\").CombinedOnSignature} ScaleLineOnSignature\n */\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-scale-line'] CSS Class name.\n * @property {number} [minWidth=64] Minimum width in pixels at the OGC default dpi. The width will be\n * adjusted to match the dpi used.\n * @property {function(import(\"../MapEvent.js\").default):void} [render] Function called when the control\n * should be re-rendered. This is called in a `requestAnimationFrame` callback.\n * @property {HTMLElement|string} [target] Specify a target if you want the control\n * to be rendered outside of the map's viewport.\n * @property {import(\"./ScaleLine.js\").Units|string} [units='metric'] Units.\n * @property {boolean} [bar=false] Render scalebars instead of a line.\n * @property {number} [steps=4] Number of steps the scalebar should use. Use even numbers\n * for best results. Only applies when `bar` is `true`.\n * @property {boolean} [text=false] Render the text scale above of the scalebar. Only applies\n * when `bar` is `true`.\n * @property {number|undefined} [dpi=undefined] dpi of output device such as printer. Only applies\n * when `bar` is `true`. If undefined the OGC default screen pixel size of 0.28mm will be assumed.\n */\n/**\n * @classdesc\n * A control displaying rough y-axis distances, calculated for the center of the\n * viewport. For conformal projections (e.g. EPSG:3857, the default view\n * projection in OpenLayers), the scale is valid for all directions.\n * No scale line will be shown when the y-axis distance of a pixel at the\n * viewport center cannot be calculated in the view projection.\n * By default the scale line will show in the bottom left portion of the map,\n * but this can be changed by using the css selector `.ol-scale-line`.\n * When specifying `bar` as `true`, a scalebar will be rendered instead\n * of a scaleline.\n *\n * @api\n */\nvar ScaleLine = /** @class */ (function (_super) {\n __extends(ScaleLine, _super);\n /**\n * @param {Options} [opt_options] Scale line options.\n */\n function ScaleLine(opt_options) {\n var _this = this;\n var options = opt_options ? opt_options : {};\n var className = options.className !== undefined\n ? options.className\n : options.bar\n ? 'ol-scale-bar'\n : 'ol-scale-line';\n _this = _super.call(this, {\n element: document.createElement('div'),\n render: options.render,\n target: options.target,\n }) || this;\n /***\n * @type {ScaleLineOnSignature}\n */\n _this.on;\n /***\n * @type {ScaleLineOnSignature}\n */\n _this.once;\n /***\n * @type {ScaleLineOnSignature}\n */\n _this.un;\n /**\n * @private\n * @type {HTMLElement}\n */\n _this.innerElement_ = document.createElement('div');\n _this.innerElement_.className = className + '-inner';\n _this.element.className = className + ' ' + CLASS_UNSELECTABLE;\n _this.element.appendChild(_this.innerElement_);\n /**\n * @private\n * @type {?import(\"../View.js\").State}\n */\n _this.viewState_ = null;\n /**\n * @private\n * @type {number}\n */\n _this.minWidth_ = options.minWidth !== undefined ? options.minWidth : 64;\n /**\n * @private\n * @type {boolean}\n */\n _this.renderedVisible_ = false;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.renderedWidth_ = undefined;\n /**\n * @private\n * @type {string}\n */\n _this.renderedHTML_ = '';\n _this.addChangeListener(UNITS_PROP, _this.handleUnitsChanged_);\n _this.setUnits(options.units || Units.METRIC);\n /**\n * @private\n * @type {boolean}\n */\n _this.scaleBar_ = options.bar || false;\n /**\n * @private\n * @type {number}\n */\n _this.scaleBarSteps_ = options.steps || 4;\n /**\n * @private\n * @type {boolean}\n */\n _this.scaleBarText_ = options.text || false;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.dpi_ = options.dpi || undefined;\n return _this;\n }\n /**\n * Return the units to use in the scale line.\n * @return {import(\"./ScaleLine.js\").Units} The units\n * to use in the scale line.\n * @observable\n * @api\n */\n ScaleLine.prototype.getUnits = function () {\n return this.get(UNITS_PROP);\n };\n /**\n * @private\n */\n ScaleLine.prototype.handleUnitsChanged_ = function () {\n this.updateElement_();\n };\n /**\n * Set the units to use in the scale line.\n * @param {import(\"./ScaleLine.js\").Units} units The units to use in the scale line.\n * @observable\n * @api\n */\n ScaleLine.prototype.setUnits = function (units) {\n this.set(UNITS_PROP, units);\n };\n /**\n * Specify the dpi of output device such as printer.\n * @param {number|undefined} dpi The dpi of output device.\n * @api\n */\n ScaleLine.prototype.setDpi = function (dpi) {\n this.dpi_ = dpi;\n };\n /**\n * @private\n */\n ScaleLine.prototype.updateElement_ = function () {\n var viewState = this.viewState_;\n if (!viewState) {\n if (this.renderedVisible_) {\n this.element.style.display = 'none';\n this.renderedVisible_ = false;\n }\n return;\n }\n var center = viewState.center;\n var projection = viewState.projection;\n var units = this.getUnits();\n var pointResolutionUnits = units == Units.DEGREES ? ProjUnits.DEGREES : ProjUnits.METERS;\n var pointResolution = getPointResolution(projection, viewState.resolution, center, pointResolutionUnits);\n var minWidth = (this.minWidth_ * (this.dpi_ || DEFAULT_DPI)) / DEFAULT_DPI;\n var nominalCount = minWidth * pointResolution;\n var suffix = '';\n if (units == Units.DEGREES) {\n var metersPerDegree = METERS_PER_UNIT[ProjUnits.DEGREES];\n nominalCount *= metersPerDegree;\n if (nominalCount < metersPerDegree / 60) {\n suffix = '\\u2033'; // seconds\n pointResolution *= 3600;\n }\n else if (nominalCount < metersPerDegree) {\n suffix = '\\u2032'; // minutes\n pointResolution *= 60;\n }\n else {\n suffix = '\\u00b0'; // degrees\n }\n }\n else if (units == Units.IMPERIAL) {\n if (nominalCount < 0.9144) {\n suffix = 'in';\n pointResolution /= 0.0254;\n }\n else if (nominalCount < 1609.344) {\n suffix = 'ft';\n pointResolution /= 0.3048;\n }\n else {\n suffix = 'mi';\n pointResolution /= 1609.344;\n }\n }\n else if (units == Units.NAUTICAL) {\n pointResolution /= 1852;\n suffix = 'nm';\n }\n else if (units == Units.METRIC) {\n if (nominalCount < 0.001) {\n suffix = 'μm';\n pointResolution *= 1000000;\n }\n else if (nominalCount < 1) {\n suffix = 'mm';\n pointResolution *= 1000;\n }\n else if (nominalCount < 1000) {\n suffix = 'm';\n }\n else {\n suffix = 'km';\n pointResolution /= 1000;\n }\n }\n else if (units == Units.US) {\n if (nominalCount < 0.9144) {\n suffix = 'in';\n pointResolution *= 39.37;\n }\n else if (nominalCount < 1609.344) {\n suffix = 'ft';\n pointResolution /= 0.30480061;\n }\n else {\n suffix = 'mi';\n pointResolution /= 1609.3472;\n }\n }\n else {\n assert(false, 33); // Invalid units\n }\n var i = 3 * Math.floor(Math.log(minWidth * pointResolution) / Math.log(10));\n var count, width, decimalCount;\n while (true) {\n decimalCount = Math.floor(i / 3);\n var decimal = Math.pow(10, decimalCount);\n count = LEADING_DIGITS[((i % 3) + 3) % 3] * decimal;\n width = Math.round(count / pointResolution);\n if (isNaN(width)) {\n this.element.style.display = 'none';\n this.renderedVisible_ = false;\n return;\n }\n else if (width >= minWidth) {\n break;\n }\n ++i;\n }\n var html;\n if (this.scaleBar_) {\n html = this.createScaleBar(width, count, suffix);\n }\n else {\n html = count.toFixed(decimalCount < 0 ? -decimalCount : 0) + ' ' + suffix;\n }\n if (this.renderedHTML_ != html) {\n this.innerElement_.innerHTML = html;\n this.renderedHTML_ = html;\n }\n if (this.renderedWidth_ != width) {\n this.innerElement_.style.width = width + 'px';\n this.renderedWidth_ = width;\n }\n if (!this.renderedVisible_) {\n this.element.style.display = '';\n this.renderedVisible_ = true;\n }\n };\n /**\n * @private\n * @param {number} width The current width of the scalebar.\n * @param {number} scale The current scale.\n * @param {string} suffix The suffix to append to the scale text.\n * @return {string} The stringified HTML of the scalebar.\n */\n ScaleLine.prototype.createScaleBar = function (width, scale, suffix) {\n var mapScale = '1 : ' + Math.round(this.getScaleForResolution()).toLocaleString();\n var scaleSteps = [];\n var stepWidth = width / this.scaleBarSteps_;\n var backgroundColor = '#ffffff';\n for (var i = 0; i < this.scaleBarSteps_; i++) {\n if (i === 0) {\n // create the first marker at position 0\n scaleSteps.push(this.createMarker('absolute', i));\n }\n scaleSteps.push('
' +\n '
' +\n '
' +\n this.createMarker('relative', i) +\n /*render text every second step, except when only 2 steps */\n (i % 2 === 0 || this.scaleBarSteps_ === 2\n ? this.createStepText(i, width, false, scale, suffix)\n : '') +\n '
');\n if (i === this.scaleBarSteps_ - 1) {\n {\n /*render text at the end */\n }\n scaleSteps.push(this.createStepText(i + 1, width, true, scale, suffix));\n }\n // switch colors of steps between black and white\n if (backgroundColor === '#ffffff') {\n backgroundColor = '#000000';\n }\n else {\n backgroundColor = '#ffffff';\n }\n }\n var scaleBarText;\n if (this.scaleBarText_) {\n scaleBarText =\n '
' +\n mapScale +\n '
';\n }\n else {\n scaleBarText = '';\n }\n var container = '
' +\n scaleBarText +\n scaleSteps.join('') +\n '
';\n return container;\n };\n /**\n * Creates a marker at given position\n * @param {string} position The position, absolute or relative\n * @param {number} i The iterator\n * @return {string} The stringified div containing the marker\n */\n ScaleLine.prototype.createMarker = function (position, i) {\n var top = position === 'absolute' ? 3 : -10;\n return ('
');\n };\n /**\n * Creates the label for a marker marker at given position\n * @param {number} i The iterator\n * @param {number} width The width the scalebar will currently use\n * @param {boolean} isLast Flag indicating if we add the last step text\n * @param {number} scale The current scale for the whole scalebar\n * @param {string} suffix The suffix for the scale\n * @return {string} The stringified div containing the step text\n */\n ScaleLine.prototype.createStepText = function (i, width, isLast, scale, suffix) {\n var length = i === 0 ? 0 : Math.round((scale / this.scaleBarSteps_) * i * 100) / 100;\n var lengthString = length + (i === 0 ? '' : ' ' + suffix);\n var margin = i === 0 ? -3 : (width / this.scaleBarSteps_) * -1;\n var minWidth = i === 0 ? 0 : (width / this.scaleBarSteps_) * 2;\n return ('
' +\n lengthString +\n '
');\n };\n /**\n * Returns the appropriate scale for the given resolution and units.\n * @return {number} The appropriate scale.\n */\n ScaleLine.prototype.getScaleForResolution = function () {\n var resolution = getPointResolution(this.viewState_.projection, this.viewState_.resolution, this.viewState_.center);\n var dpi = this.dpi_ || DEFAULT_DPI;\n var mpu = this.viewState_.projection.getMetersPerUnit();\n var inchesPerMeter = 1000 / 25.4;\n return parseFloat(resolution.toString()) * mpu * inchesPerMeter * dpi;\n };\n /**\n * Update the scale line element.\n * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n * @override\n */\n ScaleLine.prototype.render = function (mapEvent) {\n var frameState = mapEvent.frameState;\n if (!frameState) {\n this.viewState_ = null;\n }\n else {\n this.viewState_ = frameState.viewState;\n }\n this.updateElement_();\n };\n return ScaleLine;\n}(Control));\nexport default ScaleLine;\n//# sourceMappingURL=ScaleLine.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/control/Zoom\n */\nimport Control from './Control.js';\nimport EventType from '../events/EventType.js';\nimport { CLASS_CONTROL, CLASS_UNSELECTABLE } from '../css.js';\nimport { easeOut } from '../easing.js';\n/**\n * @typedef {Object} Options\n * @property {number} [duration=250] Animation duration in milliseconds.\n * @property {string} [className='ol-zoom'] CSS class name.\n * @property {string} [zoomInClassName=className + '-in'] CSS class name for the zoom-in button.\n * @property {string} [zoomOutClassName=className + '-out'] CSS class name for the zoom-out button.\n * @property {string|HTMLElement} [zoomInLabel='+'] Text label to use for the zoom-in\n * button. Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string|HTMLElement} [zoomOutLabel='-'] Text label to use for the zoom-out button.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string} [zoomInTipLabel='Zoom in'] Text label to use for the button tip.\n * @property {string} [zoomOutTipLabel='Zoom out'] Text label to use for the button tip.\n * @property {number} [delta=1] The zoom delta applied on each click.\n * @property {HTMLElement|string} [target] Specify a target if you want the control to be\n * rendered outside of the map's viewport.\n */\n/**\n * @classdesc\n * A control with 2 buttons, one for zoom in and one for zoom out.\n * This control is one of the default controls of a map. To style this control\n * use css selectors `.ol-zoom-in` and `.ol-zoom-out`.\n *\n * @api\n */\nvar Zoom = /** @class */ (function (_super) {\n __extends(Zoom, _super);\n /**\n * @param {Options} [opt_options] Zoom options.\n */\n function Zoom(opt_options) {\n var _this = this;\n var options = opt_options ? opt_options : {};\n _this = _super.call(this, {\n element: document.createElement('div'),\n target: options.target,\n }) || this;\n var className = options.className !== undefined ? options.className : 'ol-zoom';\n var delta = options.delta !== undefined ? options.delta : 1;\n var zoomInClassName = options.zoomInClassName !== undefined\n ? options.zoomInClassName\n : className + '-in';\n var zoomOutClassName = options.zoomOutClassName !== undefined\n ? options.zoomOutClassName\n : className + '-out';\n var zoomInLabel = options.zoomInLabel !== undefined ? options.zoomInLabel : '+';\n var zoomOutLabel = options.zoomOutLabel !== undefined ? options.zoomOutLabel : '\\u2212';\n var zoomInTipLabel = options.zoomInTipLabel !== undefined ? options.zoomInTipLabel : 'Zoom in';\n var zoomOutTipLabel = options.zoomOutTipLabel !== undefined\n ? options.zoomOutTipLabel\n : 'Zoom out';\n var inElement = document.createElement('button');\n inElement.className = zoomInClassName;\n inElement.setAttribute('type', 'button');\n inElement.title = zoomInTipLabel;\n inElement.appendChild(typeof zoomInLabel === 'string'\n ? document.createTextNode(zoomInLabel)\n : zoomInLabel);\n inElement.addEventListener(EventType.CLICK, _this.handleClick_.bind(_this, delta), false);\n var outElement = document.createElement('button');\n outElement.className = zoomOutClassName;\n outElement.setAttribute('type', 'button');\n outElement.title = zoomOutTipLabel;\n outElement.appendChild(typeof zoomOutLabel === 'string'\n ? document.createTextNode(zoomOutLabel)\n : zoomOutLabel);\n outElement.addEventListener(EventType.CLICK, _this.handleClick_.bind(_this, -delta), false);\n var cssClasses = className + ' ' + CLASS_UNSELECTABLE + ' ' + CLASS_CONTROL;\n var element = _this.element;\n element.className = cssClasses;\n element.appendChild(inElement);\n element.appendChild(outElement);\n /**\n * @type {number}\n * @private\n */\n _this.duration_ = options.duration !== undefined ? options.duration : 250;\n return _this;\n }\n /**\n * @param {number} delta Zoom delta.\n * @param {MouseEvent} event The event to handle\n * @private\n */\n Zoom.prototype.handleClick_ = function (delta, event) {\n event.preventDefault();\n this.zoomByDelta_(delta);\n };\n /**\n * @param {number} delta Zoom delta.\n * @private\n */\n Zoom.prototype.zoomByDelta_ = function (delta) {\n var map = this.getMap();\n var view = map.getView();\n if (!view) {\n // the map does not have a view, so we can't act\n // upon it\n return;\n }\n var currentZoom = view.getZoom();\n if (currentZoom !== undefined) {\n var newZoom = view.getConstrainedZoom(currentZoom + delta);\n if (this.duration_ > 0) {\n if (view.getAnimating()) {\n view.cancelAnimations();\n }\n view.animate({\n zoom: newZoom,\n duration: this.duration_,\n easing: easeOut,\n });\n }\n else {\n view.setZoom(newZoom);\n }\n }\n };\n return Zoom;\n}(Control));\nexport default Zoom;\n//# sourceMappingURL=Zoom.js.map","/**\n * @module ol/geom/GeometryLayout\n */\n/**\n * The coordinate layout for geometries, indicating whether a 3rd or 4th z ('Z')\n * or measure ('M') coordinate is available. Supported values are `'XY'`,\n * `'XYZ'`, `'XYM'`, `'XYZM'`.\n * @enum {string}\n */\nexport default {\n XY: 'XY',\n XYZ: 'XYZ',\n XYM: 'XYM',\n XYZM: 'XYZM',\n};\n//# sourceMappingURL=GeometryLayout.js.map","/**\n * @module ol/geom/GeometryType\n */\n/**\n * The geometry type. One of `'Point'`, `'LineString'`, `'LinearRing'`,\n * `'Polygon'`, `'MultiPoint'`, `'MultiLineString'`, `'MultiPolygon'`,\n * `'GeometryCollection'`, `'Circle'`.\n * @enum {string}\n */\nexport default {\n POINT: 'Point',\n LINE_STRING: 'LineString',\n LINEAR_RING: 'LinearRing',\n POLYGON: 'Polygon',\n MULTI_POINT: 'MultiPoint',\n MULTI_LINE_STRING: 'MultiLineString',\n MULTI_POLYGON: 'MultiPolygon',\n GEOMETRY_COLLECTION: 'GeometryCollection',\n CIRCLE: 'Circle',\n};\n//# sourceMappingURL=GeometryType.js.map","/**\n * @module ol/geom/flat/transform\n */\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {import(\"../../transform.js\").Transform} transform Transform.\n * @param {Array} [opt_dest] Destination.\n * @return {Array} Transformed coordinates.\n */\nexport function transform2D(flatCoordinates, offset, end, stride, transform, opt_dest) {\n var dest = opt_dest ? opt_dest : [];\n var i = 0;\n for (var j = offset; j < end; j += stride) {\n var x = flatCoordinates[j];\n var y = flatCoordinates[j + 1];\n dest[i++] = transform[0] * x + transform[2] * y + transform[4];\n dest[i++] = transform[1] * x + transform[3] * y + transform[5];\n }\n if (opt_dest && dest.length != i) {\n dest.length = i;\n }\n return dest;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} angle Angle.\n * @param {Array} anchor Rotation anchor point.\n * @param {Array} [opt_dest] Destination.\n * @return {Array} Transformed coordinates.\n */\nexport function rotate(flatCoordinates, offset, end, stride, angle, anchor, opt_dest) {\n var dest = opt_dest ? opt_dest : [];\n var cos = Math.cos(angle);\n var sin = Math.sin(angle);\n var anchorX = anchor[0];\n var anchorY = anchor[1];\n var i = 0;\n for (var j = offset; j < end; j += stride) {\n var deltaX = flatCoordinates[j] - anchorX;\n var deltaY = flatCoordinates[j + 1] - anchorY;\n dest[i++] = anchorX + deltaX * cos - deltaY * sin;\n dest[i++] = anchorY + deltaX * sin + deltaY * cos;\n for (var k = j + 2; k < j + stride; ++k) {\n dest[i++] = flatCoordinates[k];\n }\n }\n if (opt_dest && dest.length != i) {\n dest.length = i;\n }\n return dest;\n}\n/**\n * Scale the coordinates.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} sx Scale factor in the x-direction.\n * @param {number} sy Scale factor in the y-direction.\n * @param {Array} anchor Scale anchor point.\n * @param {Array} [opt_dest] Destination.\n * @return {Array} Transformed coordinates.\n */\nexport function scale(flatCoordinates, offset, end, stride, sx, sy, anchor, opt_dest) {\n var dest = opt_dest ? opt_dest : [];\n var anchorX = anchor[0];\n var anchorY = anchor[1];\n var i = 0;\n for (var j = offset; j < end; j += stride) {\n var deltaX = flatCoordinates[j] - anchorX;\n var deltaY = flatCoordinates[j + 1] - anchorY;\n dest[i++] = anchorX + sx * deltaX;\n dest[i++] = anchorY + sy * deltaY;\n for (var k = j + 2; k < j + stride; ++k) {\n dest[i++] = flatCoordinates[k];\n }\n }\n if (opt_dest && dest.length != i) {\n dest.length = i;\n }\n return dest;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} deltaX Delta X.\n * @param {number} deltaY Delta Y.\n * @param {Array} [opt_dest] Destination.\n * @return {Array} Transformed coordinates.\n */\nexport function translate(flatCoordinates, offset, end, stride, deltaX, deltaY, opt_dest) {\n var dest = opt_dest ? opt_dest : [];\n var i = 0;\n for (var j = offset; j < end; j += stride) {\n dest[i++] = flatCoordinates[j] + deltaX;\n dest[i++] = flatCoordinates[j + 1] + deltaY;\n for (var k = j + 2; k < j + stride; ++k) {\n dest[i++] = flatCoordinates[k];\n }\n }\n if (opt_dest && dest.length != i) {\n dest.length = i;\n }\n return dest;\n}\n//# sourceMappingURL=transform.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/geom/Geometry\n */\nimport BaseObject from '../Object.js';\nimport Units from '../proj/Units.js';\nimport { abstract } from '../util.js';\nimport { compose as composeTransform, create as createTransform, } from '../transform.js';\nimport { createEmpty, createOrUpdateEmpty, getHeight, returnOrUpdate, } from '../extent.js';\nimport { get as getProjection, getTransform } from '../proj.js';\nimport { memoizeOne } from '../functions.js';\nimport { transform2D } from './flat/transform.js';\n/**\n * @type {import(\"../transform.js\").Transform}\n */\nvar tmpTransform = createTransform();\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * Base class for vector geometries.\n *\n * To get notified of changes to the geometry, register a listener for the\n * generic `change` event on your geometry instance.\n *\n * @abstract\n * @api\n */\nvar Geometry = /** @class */ (function (_super) {\n __extends(Geometry, _super);\n function Geometry() {\n var _this = _super.call(this) || this;\n /**\n * @private\n * @type {import(\"../extent.js\").Extent}\n */\n _this.extent_ = createEmpty();\n /**\n * @private\n * @type {number}\n */\n _this.extentRevision_ = -1;\n /**\n * @protected\n * @type {number}\n */\n _this.simplifiedGeometryMaxMinSquaredTolerance = 0;\n /**\n * @protected\n * @type {number}\n */\n _this.simplifiedGeometryRevision = 0;\n /**\n * Get a transformed and simplified version of the geometry.\n * @abstract\n * @param {number} revision The geometry revision.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {import(\"../proj.js\").TransformFunction} [opt_transform] Optional transform function.\n * @return {Geometry} Simplified geometry.\n */\n _this.simplifyTransformedInternal = memoizeOne(function (revision, squaredTolerance, opt_transform) {\n if (!opt_transform) {\n return this.getSimplifiedGeometry(squaredTolerance);\n }\n var clone = this.clone();\n clone.applyTransform(opt_transform);\n return clone.getSimplifiedGeometry(squaredTolerance);\n });\n return _this;\n }\n /**\n * Get a transformed and simplified version of the geometry.\n * @abstract\n * @param {number} squaredTolerance Squared tolerance.\n * @param {import(\"../proj.js\").TransformFunction} [opt_transform] Optional transform function.\n * @return {Geometry} Simplified geometry.\n */\n Geometry.prototype.simplifyTransformed = function (squaredTolerance, opt_transform) {\n return this.simplifyTransformedInternal(this.getRevision(), squaredTolerance, opt_transform);\n };\n /**\n * Make a complete copy of the geometry.\n * @abstract\n * @return {!Geometry} Clone.\n */\n Geometry.prototype.clone = function () {\n return abstract();\n };\n /**\n * @abstract\n * @param {number} x X.\n * @param {number} y Y.\n * @param {import(\"../coordinate.js\").Coordinate} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @return {number} Minimum squared distance.\n */\n Geometry.prototype.closestPointXY = function (x, y, closestPoint, minSquaredDistance) {\n return abstract();\n };\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @return {boolean} Contains (x, y).\n */\n Geometry.prototype.containsXY = function (x, y) {\n var coord = this.getClosestPoint([x, y]);\n return coord[0] === x && coord[1] === y;\n };\n /**\n * Return the closest point of the geometry to the passed point as\n * {@link module:ol/coordinate~Coordinate coordinate}.\n * @param {import(\"../coordinate.js\").Coordinate} point Point.\n * @param {import(\"../coordinate.js\").Coordinate} [opt_closestPoint] Closest point.\n * @return {import(\"../coordinate.js\").Coordinate} Closest point.\n * @api\n */\n Geometry.prototype.getClosestPoint = function (point, opt_closestPoint) {\n var closestPoint = opt_closestPoint ? opt_closestPoint : [NaN, NaN];\n this.closestPointXY(point[0], point[1], closestPoint, Infinity);\n return closestPoint;\n };\n /**\n * Returns true if this geometry includes the specified coordinate. If the\n * coordinate is on the boundary of the geometry, returns false.\n * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n * @return {boolean} Contains coordinate.\n * @api\n */\n Geometry.prototype.intersectsCoordinate = function (coordinate) {\n return this.containsXY(coordinate[0], coordinate[1]);\n };\n /**\n * @abstract\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @protected\n * @return {import(\"../extent.js\").Extent} extent Extent.\n */\n Geometry.prototype.computeExtent = function (extent) {\n return abstract();\n };\n /**\n * Get the extent of the geometry.\n * @param {import(\"../extent.js\").Extent} [opt_extent] Extent.\n * @return {import(\"../extent.js\").Extent} extent Extent.\n * @api\n */\n Geometry.prototype.getExtent = function (opt_extent) {\n if (this.extentRevision_ != this.getRevision()) {\n var extent = this.computeExtent(this.extent_);\n if (isNaN(extent[0]) || isNaN(extent[1])) {\n createOrUpdateEmpty(extent);\n }\n this.extentRevision_ = this.getRevision();\n }\n return returnOrUpdate(this.extent_, opt_extent);\n };\n /**\n * Rotate the geometry around a given coordinate. This modifies the geometry\n * coordinates in place.\n * @abstract\n * @param {number} angle Rotation angle in radians.\n * @param {import(\"../coordinate.js\").Coordinate} anchor The rotation center.\n * @api\n */\n Geometry.prototype.rotate = function (angle, anchor) {\n abstract();\n };\n /**\n * Scale the geometry (with an optional origin). This modifies the geometry\n * coordinates in place.\n * @abstract\n * @param {number} sx The scaling factor in the x-direction.\n * @param {number} [opt_sy] The scaling factor in the y-direction (defaults to sx).\n * @param {import(\"../coordinate.js\").Coordinate} [opt_anchor] The scale origin (defaults to the center\n * of the geometry extent).\n * @api\n */\n Geometry.prototype.scale = function (sx, opt_sy, opt_anchor) {\n abstract();\n };\n /**\n * Create a simplified version of this geometry. For linestrings, this uses\n * the [Douglas Peucker](https://en.wikipedia.org/wiki/Ramer-Douglas-Peucker_algorithm)\n * algorithm. For polygons, a quantization-based\n * simplification is used to preserve topology.\n * @param {number} tolerance The tolerance distance for simplification.\n * @return {Geometry} A new, simplified version of the original geometry.\n * @api\n */\n Geometry.prototype.simplify = function (tolerance) {\n return this.getSimplifiedGeometry(tolerance * tolerance);\n };\n /**\n * Create a simplified version of this geometry using the Douglas Peucker\n * algorithm.\n * See https://en.wikipedia.org/wiki/Ramer-Douglas-Peucker_algorithm.\n * @abstract\n * @param {number} squaredTolerance Squared tolerance.\n * @return {Geometry} Simplified geometry.\n */\n Geometry.prototype.getSimplifiedGeometry = function (squaredTolerance) {\n return abstract();\n };\n /**\n * Get the type of this geometry.\n * @abstract\n * @return {import(\"./GeometryType.js\").default} Geometry type.\n */\n Geometry.prototype.getType = function () {\n return abstract();\n };\n /**\n * Apply a transform function to the coordinates of the geometry.\n * The geometry is modified in place.\n * If you do not want the geometry modified in place, first `clone()` it and\n * then use this function on the clone.\n * @abstract\n * @param {import(\"../proj.js\").TransformFunction} transformFn Transform function.\n * Called with a flat array of geometry coordinates.\n */\n Geometry.prototype.applyTransform = function (transformFn) {\n abstract();\n };\n /**\n * Test if the geometry and the passed extent intersect.\n * @abstract\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @return {boolean} `true` if the geometry and the extent intersect.\n */\n Geometry.prototype.intersectsExtent = function (extent) {\n return abstract();\n };\n /**\n * Translate the geometry. This modifies the geometry coordinates in place. If\n * instead you want a new geometry, first `clone()` this geometry.\n * @abstract\n * @param {number} deltaX Delta X.\n * @param {number} deltaY Delta Y.\n * @api\n */\n Geometry.prototype.translate = function (deltaX, deltaY) {\n abstract();\n };\n /**\n * Transform each coordinate of the geometry from one coordinate reference\n * system to another. The geometry is modified in place.\n * For example, a line will be transformed to a line and a circle to a circle.\n * If you do not want the geometry modified in place, first `clone()` it and\n * then use this function on the clone.\n *\n * @param {import(\"../proj.js\").ProjectionLike} source The current projection. Can be a\n * string identifier or a {@link module:ol/proj/Projection~Projection} object.\n * @param {import(\"../proj.js\").ProjectionLike} destination The desired projection. Can be a\n * string identifier or a {@link module:ol/proj/Projection~Projection} object.\n * @return {Geometry} This geometry. Note that original geometry is\n * modified in place.\n * @api\n */\n Geometry.prototype.transform = function (source, destination) {\n /** @type {import(\"../proj/Projection.js\").default} */\n var sourceProj = getProjection(source);\n var transformFn = sourceProj.getUnits() == Units.TILE_PIXELS\n ? function (inCoordinates, outCoordinates, stride) {\n var pixelExtent = sourceProj.getExtent();\n var projectedExtent = sourceProj.getWorldExtent();\n var scale = getHeight(projectedExtent) / getHeight(pixelExtent);\n composeTransform(tmpTransform, projectedExtent[0], projectedExtent[3], scale, -scale, 0, 0, 0);\n transform2D(inCoordinates, 0, inCoordinates.length, stride, tmpTransform, outCoordinates);\n return getTransform(sourceProj, destination)(inCoordinates, outCoordinates, stride);\n }\n : getTransform(sourceProj, destination);\n this.applyTransform(transformFn);\n return this;\n };\n return Geometry;\n}(BaseObject));\nexport default Geometry;\n//# sourceMappingURL=Geometry.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/geom/SimpleGeometry\n */\nimport Geometry from './Geometry.js';\nimport GeometryLayout from './GeometryLayout.js';\nimport { abstract } from '../util.js';\nimport { createOrUpdateFromFlatCoordinates, getCenter } from '../extent.js';\nimport { rotate, scale, transform2D, translate } from './flat/transform.js';\n/**\n * @classdesc\n * Abstract base class; only used for creating subclasses; do not instantiate\n * in apps, as cannot be rendered.\n *\n * @abstract\n * @api\n */\nvar SimpleGeometry = /** @class */ (function (_super) {\n __extends(SimpleGeometry, _super);\n function SimpleGeometry() {\n var _this = _super.call(this) || this;\n /**\n * @protected\n * @type {import(\"./GeometryLayout.js\").default}\n */\n _this.layout = GeometryLayout.XY;\n /**\n * @protected\n * @type {number}\n */\n _this.stride = 2;\n /**\n * @protected\n * @type {Array}\n */\n _this.flatCoordinates = null;\n return _this;\n }\n /**\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @protected\n * @return {import(\"../extent.js\").Extent} extent Extent.\n */\n SimpleGeometry.prototype.computeExtent = function (extent) {\n return createOrUpdateFromFlatCoordinates(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, extent);\n };\n /**\n * @abstract\n * @return {Array<*>} Coordinates.\n */\n SimpleGeometry.prototype.getCoordinates = function () {\n return abstract();\n };\n /**\n * Return the first coordinate of the geometry.\n * @return {import(\"../coordinate.js\").Coordinate} First coordinate.\n * @api\n */\n SimpleGeometry.prototype.getFirstCoordinate = function () {\n return this.flatCoordinates.slice(0, this.stride);\n };\n /**\n * @return {Array} Flat coordinates.\n */\n SimpleGeometry.prototype.getFlatCoordinates = function () {\n return this.flatCoordinates;\n };\n /**\n * Return the last coordinate of the geometry.\n * @return {import(\"../coordinate.js\").Coordinate} Last point.\n * @api\n */\n SimpleGeometry.prototype.getLastCoordinate = function () {\n return this.flatCoordinates.slice(this.flatCoordinates.length - this.stride);\n };\n /**\n * Return the {@link module:ol/geom/GeometryLayout layout} of the geometry.\n * @return {import(\"./GeometryLayout.js\").default} Layout.\n * @api\n */\n SimpleGeometry.prototype.getLayout = function () {\n return this.layout;\n };\n /**\n * Create a simplified version of this geometry using the Douglas Peucker algorithm.\n * @param {number} squaredTolerance Squared tolerance.\n * @return {SimpleGeometry} Simplified geometry.\n */\n SimpleGeometry.prototype.getSimplifiedGeometry = function (squaredTolerance) {\n if (this.simplifiedGeometryRevision !== this.getRevision()) {\n this.simplifiedGeometryMaxMinSquaredTolerance = 0;\n this.simplifiedGeometryRevision = this.getRevision();\n }\n // If squaredTolerance is negative or if we know that simplification will not\n // have any effect then just return this.\n if (squaredTolerance < 0 ||\n (this.simplifiedGeometryMaxMinSquaredTolerance !== 0 &&\n squaredTolerance <= this.simplifiedGeometryMaxMinSquaredTolerance)) {\n return this;\n }\n var simplifiedGeometry = this.getSimplifiedGeometryInternal(squaredTolerance);\n var simplifiedFlatCoordinates = simplifiedGeometry.getFlatCoordinates();\n if (simplifiedFlatCoordinates.length < this.flatCoordinates.length) {\n return simplifiedGeometry;\n }\n else {\n // Simplification did not actually remove any coordinates. We now know\n // that any calls to getSimplifiedGeometry with a squaredTolerance less\n // than or equal to the current squaredTolerance will also not have any\n // effect. This allows us to short circuit simplification (saving CPU\n // cycles) and prevents the cache of simplified geometries from filling\n // up with useless identical copies of this geometry (saving memory).\n this.simplifiedGeometryMaxMinSquaredTolerance = squaredTolerance;\n return this;\n }\n };\n /**\n * @param {number} squaredTolerance Squared tolerance.\n * @return {SimpleGeometry} Simplified geometry.\n * @protected\n */\n SimpleGeometry.prototype.getSimplifiedGeometryInternal = function (squaredTolerance) {\n return this;\n };\n /**\n * @return {number} Stride.\n */\n SimpleGeometry.prototype.getStride = function () {\n return this.stride;\n };\n /**\n * @param {import(\"./GeometryLayout.js\").default} layout Layout.\n * @param {Array} flatCoordinates Flat coordinates.\n */\n SimpleGeometry.prototype.setFlatCoordinates = function (layout, flatCoordinates) {\n this.stride = getStrideForLayout(layout);\n this.layout = layout;\n this.flatCoordinates = flatCoordinates;\n };\n /**\n * @abstract\n * @param {!Array<*>} coordinates Coordinates.\n * @param {import(\"./GeometryLayout.js\").default} [opt_layout] Layout.\n */\n SimpleGeometry.prototype.setCoordinates = function (coordinates, opt_layout) {\n abstract();\n };\n /**\n * @param {import(\"./GeometryLayout.js\").default|undefined} layout Layout.\n * @param {Array<*>} coordinates Coordinates.\n * @param {number} nesting Nesting.\n * @protected\n */\n SimpleGeometry.prototype.setLayout = function (layout, coordinates, nesting) {\n /** @type {number} */\n var stride;\n if (layout) {\n stride = getStrideForLayout(layout);\n }\n else {\n for (var i = 0; i < nesting; ++i) {\n if (coordinates.length === 0) {\n this.layout = GeometryLayout.XY;\n this.stride = 2;\n return;\n }\n else {\n coordinates = /** @type {Array} */ (coordinates[0]);\n }\n }\n stride = coordinates.length;\n layout = getLayoutForStride(stride);\n }\n this.layout = layout;\n this.stride = stride;\n };\n /**\n * Apply a transform function to the coordinates of the geometry.\n * The geometry is modified in place.\n * If you do not want the geometry modified in place, first `clone()` it and\n * then use this function on the clone.\n * @param {import(\"../proj.js\").TransformFunction} transformFn Transform function.\n * Called with a flat array of geometry coordinates.\n * @api\n */\n SimpleGeometry.prototype.applyTransform = function (transformFn) {\n if (this.flatCoordinates) {\n transformFn(this.flatCoordinates, this.flatCoordinates, this.stride);\n this.changed();\n }\n };\n /**\n * Rotate the geometry around a given coordinate. This modifies the geometry\n * coordinates in place.\n * @param {number} angle Rotation angle in counter-clockwise radians.\n * @param {import(\"../coordinate.js\").Coordinate} anchor The rotation center.\n * @api\n */\n SimpleGeometry.prototype.rotate = function (angle, anchor) {\n var flatCoordinates = this.getFlatCoordinates();\n if (flatCoordinates) {\n var stride = this.getStride();\n rotate(flatCoordinates, 0, flatCoordinates.length, stride, angle, anchor, flatCoordinates);\n this.changed();\n }\n };\n /**\n * Scale the geometry (with an optional origin). This modifies the geometry\n * coordinates in place.\n * @param {number} sx The scaling factor in the x-direction.\n * @param {number} [opt_sy] The scaling factor in the y-direction (defaults to sx).\n * @param {import(\"../coordinate.js\").Coordinate} [opt_anchor] The scale origin (defaults to the center\n * of the geometry extent).\n * @api\n */\n SimpleGeometry.prototype.scale = function (sx, opt_sy, opt_anchor) {\n var sy = opt_sy;\n if (sy === undefined) {\n sy = sx;\n }\n var anchor = opt_anchor;\n if (!anchor) {\n anchor = getCenter(this.getExtent());\n }\n var flatCoordinates = this.getFlatCoordinates();\n if (flatCoordinates) {\n var stride = this.getStride();\n scale(flatCoordinates, 0, flatCoordinates.length, stride, sx, sy, anchor, flatCoordinates);\n this.changed();\n }\n };\n /**\n * Translate the geometry. This modifies the geometry coordinates in place. If\n * instead you want a new geometry, first `clone()` this geometry.\n * @param {number} deltaX Delta X.\n * @param {number} deltaY Delta Y.\n * @api\n */\n SimpleGeometry.prototype.translate = function (deltaX, deltaY) {\n var flatCoordinates = this.getFlatCoordinates();\n if (flatCoordinates) {\n var stride = this.getStride();\n translate(flatCoordinates, 0, flatCoordinates.length, stride, deltaX, deltaY, flatCoordinates);\n this.changed();\n }\n };\n return SimpleGeometry;\n}(Geometry));\n/**\n * @param {number} stride Stride.\n * @return {import(\"./GeometryLayout.js\").default} layout Layout.\n */\nfunction getLayoutForStride(stride) {\n var layout;\n if (stride == 2) {\n layout = GeometryLayout.XY;\n }\n else if (stride == 3) {\n layout = GeometryLayout.XYZ;\n }\n else if (stride == 4) {\n layout = GeometryLayout.XYZM;\n }\n return /** @type {import(\"./GeometryLayout.js\").default} */ (layout);\n}\n/**\n * @param {import(\"./GeometryLayout.js\").default} layout Layout.\n * @return {number} Stride.\n */\nexport function getStrideForLayout(layout) {\n var stride;\n if (layout == GeometryLayout.XY) {\n stride = 2;\n }\n else if (layout == GeometryLayout.XYZ || layout == GeometryLayout.XYM) {\n stride = 3;\n }\n else if (layout == GeometryLayout.XYZM) {\n stride = 4;\n }\n return /** @type {number} */ (stride);\n}\n/**\n * @param {SimpleGeometry} simpleGeometry Simple geometry.\n * @param {import(\"../transform.js\").Transform} transform Transform.\n * @param {Array} [opt_dest] Destination.\n * @return {Array} Transformed flat coordinates.\n */\nexport function transformGeom2D(simpleGeometry, transform, opt_dest) {\n var flatCoordinates = simpleGeometry.getFlatCoordinates();\n if (!flatCoordinates) {\n return null;\n }\n else {\n var stride = simpleGeometry.getStride();\n return transform2D(flatCoordinates, 0, flatCoordinates.length, stride, transform, opt_dest);\n }\n}\nexport default SimpleGeometry;\n//# sourceMappingURL=SimpleGeometry.js.map","/**\n * @module ol/geom/flat/closest\n */\nimport { lerp, squaredDistance as squaredDx } from '../../math.js';\n/**\n * Returns the point on the 2D line segment flatCoordinates[offset1] to\n * flatCoordinates[offset2] that is closest to the point (x, y). Extra\n * dimensions are linearly interpolated.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset1 Offset 1.\n * @param {number} offset2 Offset 2.\n * @param {number} stride Stride.\n * @param {number} x X.\n * @param {number} y Y.\n * @param {Array} closestPoint Closest point.\n */\nfunction assignClosest(flatCoordinates, offset1, offset2, stride, x, y, closestPoint) {\n var x1 = flatCoordinates[offset1];\n var y1 = flatCoordinates[offset1 + 1];\n var dx = flatCoordinates[offset2] - x1;\n var dy = flatCoordinates[offset2 + 1] - y1;\n var offset;\n if (dx === 0 && dy === 0) {\n offset = offset1;\n }\n else {\n var t = ((x - x1) * dx + (y - y1) * dy) / (dx * dx + dy * dy);\n if (t > 1) {\n offset = offset2;\n }\n else if (t > 0) {\n for (var i = 0; i < stride; ++i) {\n closestPoint[i] = lerp(flatCoordinates[offset1 + i], flatCoordinates[offset2 + i], t);\n }\n closestPoint.length = stride;\n return;\n }\n else {\n offset = offset1;\n }\n }\n for (var i = 0; i < stride; ++i) {\n closestPoint[i] = flatCoordinates[offset + i];\n }\n closestPoint.length = stride;\n}\n/**\n * Return the squared of the largest distance between any pair of consecutive\n * coordinates.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} max Max squared delta.\n * @return {number} Max squared delta.\n */\nexport function maxSquaredDelta(flatCoordinates, offset, end, stride, max) {\n var x1 = flatCoordinates[offset];\n var y1 = flatCoordinates[offset + 1];\n for (offset += stride; offset < end; offset += stride) {\n var x2 = flatCoordinates[offset];\n var y2 = flatCoordinates[offset + 1];\n var squaredDelta = squaredDx(x1, y1, x2, y2);\n if (squaredDelta > max) {\n max = squaredDelta;\n }\n x1 = x2;\n y1 = y2;\n }\n return max;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {number} max Max squared delta.\n * @return {number} Max squared delta.\n */\nexport function arrayMaxSquaredDelta(flatCoordinates, offset, ends, stride, max) {\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n max = maxSquaredDelta(flatCoordinates, offset, end, stride, max);\n offset = end;\n }\n return max;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {number} max Max squared delta.\n * @return {number} Max squared delta.\n */\nexport function multiArrayMaxSquaredDelta(flatCoordinates, offset, endss, stride, max) {\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i];\n max = arrayMaxSquaredDelta(flatCoordinates, offset, ends, stride, max);\n offset = ends[ends.length - 1];\n }\n return max;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} maxDelta Max delta.\n * @param {boolean} isRing Is ring.\n * @param {number} x X.\n * @param {number} y Y.\n * @param {Array} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @param {Array} [opt_tmpPoint] Temporary point object.\n * @return {number} Minimum squared distance.\n */\nexport function assignClosestPoint(flatCoordinates, offset, end, stride, maxDelta, isRing, x, y, closestPoint, minSquaredDistance, opt_tmpPoint) {\n if (offset == end) {\n return minSquaredDistance;\n }\n var i, squaredDistance;\n if (maxDelta === 0) {\n // All points are identical, so just test the first point.\n squaredDistance = squaredDx(x, y, flatCoordinates[offset], flatCoordinates[offset + 1]);\n if (squaredDistance < minSquaredDistance) {\n for (i = 0; i < stride; ++i) {\n closestPoint[i] = flatCoordinates[offset + i];\n }\n closestPoint.length = stride;\n return squaredDistance;\n }\n else {\n return minSquaredDistance;\n }\n }\n var tmpPoint = opt_tmpPoint ? opt_tmpPoint : [NaN, NaN];\n var index = offset + stride;\n while (index < end) {\n assignClosest(flatCoordinates, index - stride, index, stride, x, y, tmpPoint);\n squaredDistance = squaredDx(x, y, tmpPoint[0], tmpPoint[1]);\n if (squaredDistance < minSquaredDistance) {\n minSquaredDistance = squaredDistance;\n for (i = 0; i < stride; ++i) {\n closestPoint[i] = tmpPoint[i];\n }\n closestPoint.length = stride;\n index += stride;\n }\n else {\n // Skip ahead multiple points, because we know that all the skipped\n // points cannot be any closer than the closest point we have found so\n // far. We know this because we know how close the current point is, how\n // close the closest point we have found so far is, and the maximum\n // distance between consecutive points. For example, if we're currently\n // at distance 10, the best we've found so far is 3, and that the maximum\n // distance between consecutive points is 2, then we'll need to skip at\n // least (10 - 3) / 2 == 3 (rounded down) points to have any chance of\n // finding a closer point. We use Math.max(..., 1) to ensure that we\n // always advance at least one point, to avoid an infinite loop.\n index +=\n stride *\n Math.max(((Math.sqrt(squaredDistance) - Math.sqrt(minSquaredDistance)) /\n maxDelta) |\n 0, 1);\n }\n }\n if (isRing) {\n // Check the closing segment.\n assignClosest(flatCoordinates, end - stride, offset, stride, x, y, tmpPoint);\n squaredDistance = squaredDx(x, y, tmpPoint[0], tmpPoint[1]);\n if (squaredDistance < minSquaredDistance) {\n minSquaredDistance = squaredDistance;\n for (i = 0; i < stride; ++i) {\n closestPoint[i] = tmpPoint[i];\n }\n closestPoint.length = stride;\n }\n }\n return minSquaredDistance;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {number} maxDelta Max delta.\n * @param {boolean} isRing Is ring.\n * @param {number} x X.\n * @param {number} y Y.\n * @param {Array} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @param {Array} [opt_tmpPoint] Temporary point object.\n * @return {number} Minimum squared distance.\n */\nexport function assignClosestArrayPoint(flatCoordinates, offset, ends, stride, maxDelta, isRing, x, y, closestPoint, minSquaredDistance, opt_tmpPoint) {\n var tmpPoint = opt_tmpPoint ? opt_tmpPoint : [NaN, NaN];\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n minSquaredDistance = assignClosestPoint(flatCoordinates, offset, end, stride, maxDelta, isRing, x, y, closestPoint, minSquaredDistance, tmpPoint);\n offset = end;\n }\n return minSquaredDistance;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {number} maxDelta Max delta.\n * @param {boolean} isRing Is ring.\n * @param {number} x X.\n * @param {number} y Y.\n * @param {Array} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @param {Array} [opt_tmpPoint] Temporary point object.\n * @return {number} Minimum squared distance.\n */\nexport function assignClosestMultiArrayPoint(flatCoordinates, offset, endss, stride, maxDelta, isRing, x, y, closestPoint, minSquaredDistance, opt_tmpPoint) {\n var tmpPoint = opt_tmpPoint ? opt_tmpPoint : [NaN, NaN];\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i];\n minSquaredDistance = assignClosestArrayPoint(flatCoordinates, offset, ends, stride, maxDelta, isRing, x, y, closestPoint, minSquaredDistance, tmpPoint);\n offset = ends[ends.length - 1];\n }\n return minSquaredDistance;\n}\n//# sourceMappingURL=closest.js.map","/**\n * @module ol/geom/flat/deflate\n */\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {import(\"../../coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {number} stride Stride.\n * @return {number} offset Offset.\n */\nexport function deflateCoordinate(flatCoordinates, offset, coordinate, stride) {\n for (var i = 0, ii = coordinate.length; i < ii; ++i) {\n flatCoordinates[offset++] = coordinate[i];\n }\n return offset;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} coordinates Coordinates.\n * @param {number} stride Stride.\n * @return {number} offset Offset.\n */\nexport function deflateCoordinates(flatCoordinates, offset, coordinates, stride) {\n for (var i = 0, ii = coordinates.length; i < ii; ++i) {\n var coordinate = coordinates[i];\n for (var j = 0; j < stride; ++j) {\n flatCoordinates[offset++] = coordinate[j];\n }\n }\n return offset;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} coordinatess Coordinatess.\n * @param {number} stride Stride.\n * @param {Array} [opt_ends] Ends.\n * @return {Array} Ends.\n */\nexport function deflateCoordinatesArray(flatCoordinates, offset, coordinatess, stride, opt_ends) {\n var ends = opt_ends ? opt_ends : [];\n var i = 0;\n for (var j = 0, jj = coordinatess.length; j < jj; ++j) {\n var end = deflateCoordinates(flatCoordinates, offset, coordinatess[j], stride);\n ends[i++] = end;\n offset = end;\n }\n ends.length = i;\n return ends;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>>} coordinatesss Coordinatesss.\n * @param {number} stride Stride.\n * @param {Array>} [opt_endss] Endss.\n * @return {Array>} Endss.\n */\nexport function deflateMultiCoordinatesArray(flatCoordinates, offset, coordinatesss, stride, opt_endss) {\n var endss = opt_endss ? opt_endss : [];\n var i = 0;\n for (var j = 0, jj = coordinatesss.length; j < jj; ++j) {\n var ends = deflateCoordinatesArray(flatCoordinates, offset, coordinatesss[j], stride, endss[i]);\n endss[i++] = ends;\n offset = ends[ends.length - 1];\n }\n endss.length = i;\n return endss;\n}\n//# sourceMappingURL=deflate.js.map","/**\n * @module ol/geom/flat/simplify\n */\n// Based on simplify-js https://github.com/mourner/simplify-js\n// Copyright (c) 2012, Vladimir Agafonkin\n// All rights reserved.\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are met:\n//\n// 1. Redistributions of source code must retain the above copyright notice,\n// this list of conditions and the following disclaimer.\n//\n// 2. Redistributions in binary form must reproduce the above copyright\n// notice, this list of conditions and the following disclaimer in the\n// documentation and/or other materials provided with the distribution.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n// POSSIBILITY OF SUCH DAMAGE.\nimport { squaredDistance, squaredSegmentDistance } from '../../math.js';\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {boolean} highQuality Highest quality.\n * @param {Array} [opt_simplifiedFlatCoordinates] Simplified flat\n * coordinates.\n * @return {Array} Simplified line string.\n */\nexport function simplifyLineString(flatCoordinates, offset, end, stride, squaredTolerance, highQuality, opt_simplifiedFlatCoordinates) {\n var simplifiedFlatCoordinates = opt_simplifiedFlatCoordinates !== undefined\n ? opt_simplifiedFlatCoordinates\n : [];\n if (!highQuality) {\n end = radialDistance(flatCoordinates, offset, end, stride, squaredTolerance, simplifiedFlatCoordinates, 0);\n flatCoordinates = simplifiedFlatCoordinates;\n offset = 0;\n stride = 2;\n }\n simplifiedFlatCoordinates.length = douglasPeucker(flatCoordinates, offset, end, stride, squaredTolerance, simplifiedFlatCoordinates, 0);\n return simplifiedFlatCoordinates;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @return {number} Simplified offset.\n */\nexport function douglasPeucker(flatCoordinates, offset, end, stride, squaredTolerance, simplifiedFlatCoordinates, simplifiedOffset) {\n var n = (end - offset) / stride;\n if (n < 3) {\n for (; offset < end; offset += stride) {\n simplifiedFlatCoordinates[simplifiedOffset++] = flatCoordinates[offset];\n simplifiedFlatCoordinates[simplifiedOffset++] =\n flatCoordinates[offset + 1];\n }\n return simplifiedOffset;\n }\n /** @type {Array} */\n var markers = new Array(n);\n markers[0] = 1;\n markers[n - 1] = 1;\n /** @type {Array} */\n var stack = [offset, end - stride];\n var index = 0;\n while (stack.length > 0) {\n var last = stack.pop();\n var first = stack.pop();\n var maxSquaredDistance = 0;\n var x1 = flatCoordinates[first];\n var y1 = flatCoordinates[first + 1];\n var x2 = flatCoordinates[last];\n var y2 = flatCoordinates[last + 1];\n for (var i = first + stride; i < last; i += stride) {\n var x = flatCoordinates[i];\n var y = flatCoordinates[i + 1];\n var squaredDistance_1 = squaredSegmentDistance(x, y, x1, y1, x2, y2);\n if (squaredDistance_1 > maxSquaredDistance) {\n index = i;\n maxSquaredDistance = squaredDistance_1;\n }\n }\n if (maxSquaredDistance > squaredTolerance) {\n markers[(index - offset) / stride] = 1;\n if (first + stride < index) {\n stack.push(first, index);\n }\n if (index + stride < last) {\n stack.push(index, last);\n }\n }\n }\n for (var i = 0; i < n; ++i) {\n if (markers[i]) {\n simplifiedFlatCoordinates[simplifiedOffset++] =\n flatCoordinates[offset + i * stride];\n simplifiedFlatCoordinates[simplifiedOffset++] =\n flatCoordinates[offset + i * stride + 1];\n }\n }\n return simplifiedOffset;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @param {Array} simplifiedEnds Simplified ends.\n * @return {number} Simplified offset.\n */\nexport function douglasPeuckerArray(flatCoordinates, offset, ends, stride, squaredTolerance, simplifiedFlatCoordinates, simplifiedOffset, simplifiedEnds) {\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n simplifiedOffset = douglasPeucker(flatCoordinates, offset, end, stride, squaredTolerance, simplifiedFlatCoordinates, simplifiedOffset);\n simplifiedEnds.push(simplifiedOffset);\n offset = end;\n }\n return simplifiedOffset;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @param {Array>} simplifiedEndss Simplified endss.\n * @return {number} Simplified offset.\n */\nexport function douglasPeuckerMultiArray(flatCoordinates, offset, endss, stride, squaredTolerance, simplifiedFlatCoordinates, simplifiedOffset, simplifiedEndss) {\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i];\n var simplifiedEnds = [];\n simplifiedOffset = douglasPeuckerArray(flatCoordinates, offset, ends, stride, squaredTolerance, simplifiedFlatCoordinates, simplifiedOffset, simplifiedEnds);\n simplifiedEndss.push(simplifiedEnds);\n offset = ends[ends.length - 1];\n }\n return simplifiedOffset;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @return {number} Simplified offset.\n */\nexport function radialDistance(flatCoordinates, offset, end, stride, squaredTolerance, simplifiedFlatCoordinates, simplifiedOffset) {\n if (end <= offset + stride) {\n // zero or one point, no simplification possible, so copy and return\n for (; offset < end; offset += stride) {\n simplifiedFlatCoordinates[simplifiedOffset++] = flatCoordinates[offset];\n simplifiedFlatCoordinates[simplifiedOffset++] =\n flatCoordinates[offset + 1];\n }\n return simplifiedOffset;\n }\n var x1 = flatCoordinates[offset];\n var y1 = flatCoordinates[offset + 1];\n // copy first point\n simplifiedFlatCoordinates[simplifiedOffset++] = x1;\n simplifiedFlatCoordinates[simplifiedOffset++] = y1;\n var x2 = x1;\n var y2 = y1;\n for (offset += stride; offset < end; offset += stride) {\n x2 = flatCoordinates[offset];\n y2 = flatCoordinates[offset + 1];\n if (squaredDistance(x1, y1, x2, y2) > squaredTolerance) {\n // copy point at offset\n simplifiedFlatCoordinates[simplifiedOffset++] = x2;\n simplifiedFlatCoordinates[simplifiedOffset++] = y2;\n x1 = x2;\n y1 = y2;\n }\n }\n if (x2 != x1 || y2 != y1) {\n // copy last point\n simplifiedFlatCoordinates[simplifiedOffset++] = x2;\n simplifiedFlatCoordinates[simplifiedOffset++] = y2;\n }\n return simplifiedOffset;\n}\n/**\n * @param {number} value Value.\n * @param {number} tolerance Tolerance.\n * @return {number} Rounded value.\n */\nexport function snap(value, tolerance) {\n return tolerance * Math.round(value / tolerance);\n}\n/**\n * Simplifies a line string using an algorithm designed by Tim Schaub.\n * Coordinates are snapped to the nearest value in a virtual grid and\n * consecutive duplicate coordinates are discarded. This effectively preserves\n * topology as the simplification of any subsection of a line string is\n * independent of the rest of the line string. This means that, for examples,\n * the common edge between two polygons will be simplified to the same line\n * string independently in both polygons. This implementation uses a single\n * pass over the coordinates and eliminates intermediate collinear points.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} tolerance Tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @return {number} Simplified offset.\n */\nexport function quantize(flatCoordinates, offset, end, stride, tolerance, simplifiedFlatCoordinates, simplifiedOffset) {\n // do nothing if the line is empty\n if (offset == end) {\n return simplifiedOffset;\n }\n // snap the first coordinate (P1)\n var x1 = snap(flatCoordinates[offset], tolerance);\n var y1 = snap(flatCoordinates[offset + 1], tolerance);\n offset += stride;\n // add the first coordinate to the output\n simplifiedFlatCoordinates[simplifiedOffset++] = x1;\n simplifiedFlatCoordinates[simplifiedOffset++] = y1;\n // find the next coordinate that does not snap to the same value as the first\n // coordinate (P2)\n var x2, y2;\n do {\n x2 = snap(flatCoordinates[offset], tolerance);\n y2 = snap(flatCoordinates[offset + 1], tolerance);\n offset += stride;\n if (offset == end) {\n // all coordinates snap to the same value, the line collapses to a point\n // push the last snapped value anyway to ensure that the output contains\n // at least two points\n // FIXME should we really return at least two points anyway?\n simplifiedFlatCoordinates[simplifiedOffset++] = x2;\n simplifiedFlatCoordinates[simplifiedOffset++] = y2;\n return simplifiedOffset;\n }\n } while (x2 == x1 && y2 == y1);\n while (offset < end) {\n // snap the next coordinate (P3)\n var x3 = snap(flatCoordinates[offset], tolerance);\n var y3 = snap(flatCoordinates[offset + 1], tolerance);\n offset += stride;\n // skip P3 if it is equal to P2\n if (x3 == x2 && y3 == y2) {\n continue;\n }\n // calculate the delta between P1 and P2\n var dx1 = x2 - x1;\n var dy1 = y2 - y1;\n // calculate the delta between P3 and P1\n var dx2 = x3 - x1;\n var dy2 = y3 - y1;\n // if P1, P2, and P3 are colinear and P3 is further from P1 than P2 is from\n // P1 in the same direction then P2 is on the straight line between P1 and\n // P3\n if (dx1 * dy2 == dy1 * dx2 &&\n ((dx1 < 0 && dx2 < dx1) || dx1 == dx2 || (dx1 > 0 && dx2 > dx1)) &&\n ((dy1 < 0 && dy2 < dy1) || dy1 == dy2 || (dy1 > 0 && dy2 > dy1))) {\n // discard P2 and set P2 = P3\n x2 = x3;\n y2 = y3;\n continue;\n }\n // either P1, P2, and P3 are not colinear, or they are colinear but P3 is\n // between P3 and P1 or on the opposite half of the line to P2. add P2,\n // and continue with P1 = P2 and P2 = P3\n simplifiedFlatCoordinates[simplifiedOffset++] = x2;\n simplifiedFlatCoordinates[simplifiedOffset++] = y2;\n x1 = x2;\n y1 = y2;\n x2 = x3;\n y2 = y3;\n }\n // add the last point (P2)\n simplifiedFlatCoordinates[simplifiedOffset++] = x2;\n simplifiedFlatCoordinates[simplifiedOffset++] = y2;\n return simplifiedOffset;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {number} tolerance Tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @param {Array} simplifiedEnds Simplified ends.\n * @return {number} Simplified offset.\n */\nexport function quantizeArray(flatCoordinates, offset, ends, stride, tolerance, simplifiedFlatCoordinates, simplifiedOffset, simplifiedEnds) {\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n simplifiedOffset = quantize(flatCoordinates, offset, end, stride, tolerance, simplifiedFlatCoordinates, simplifiedOffset);\n simplifiedEnds.push(simplifiedOffset);\n offset = end;\n }\n return simplifiedOffset;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {number} tolerance Tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @param {Array>} simplifiedEndss Simplified endss.\n * @return {number} Simplified offset.\n */\nexport function quantizeMultiArray(flatCoordinates, offset, endss, stride, tolerance, simplifiedFlatCoordinates, simplifiedOffset, simplifiedEndss) {\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i];\n var simplifiedEnds = [];\n simplifiedOffset = quantizeArray(flatCoordinates, offset, ends, stride, tolerance, simplifiedFlatCoordinates, simplifiedOffset, simplifiedEnds);\n simplifiedEndss.push(simplifiedEnds);\n offset = ends[ends.length - 1];\n }\n return simplifiedOffset;\n}\n//# sourceMappingURL=simplify.js.map","/**\n * @module ol/geom/flat/inflate\n */\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {Array} [opt_coordinates] Coordinates.\n * @return {Array} Coordinates.\n */\nexport function inflateCoordinates(flatCoordinates, offset, end, stride, opt_coordinates) {\n var coordinates = opt_coordinates !== undefined ? opt_coordinates : [];\n var i = 0;\n for (var j = offset; j < end; j += stride) {\n coordinates[i++] = flatCoordinates.slice(j, j + stride);\n }\n coordinates.length = i;\n return coordinates;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {Array>} [opt_coordinatess] Coordinatess.\n * @return {Array>} Coordinatess.\n */\nexport function inflateCoordinatesArray(flatCoordinates, offset, ends, stride, opt_coordinatess) {\n var coordinatess = opt_coordinatess !== undefined ? opt_coordinatess : [];\n var i = 0;\n for (var j = 0, jj = ends.length; j < jj; ++j) {\n var end = ends[j];\n coordinatess[i++] = inflateCoordinates(flatCoordinates, offset, end, stride, coordinatess[i]);\n offset = end;\n }\n coordinatess.length = i;\n return coordinatess;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {Array>>} [opt_coordinatesss]\n * Coordinatesss.\n * @return {Array>>} Coordinatesss.\n */\nexport function inflateMultiCoordinatesArray(flatCoordinates, offset, endss, stride, opt_coordinatesss) {\n var coordinatesss = opt_coordinatesss !== undefined ? opt_coordinatesss : [];\n var i = 0;\n for (var j = 0, jj = endss.length; j < jj; ++j) {\n var ends = endss[j];\n coordinatesss[i++] = inflateCoordinatesArray(flatCoordinates, offset, ends, stride, coordinatesss[i]);\n offset = ends[ends.length - 1];\n }\n coordinatesss.length = i;\n return coordinatesss;\n}\n//# sourceMappingURL=inflate.js.map","/**\n * @module ol/geom/flat/area\n */\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @return {number} Area.\n */\nexport function linearRing(flatCoordinates, offset, end, stride) {\n var twiceArea = 0;\n var x1 = flatCoordinates[end - stride];\n var y1 = flatCoordinates[end - stride + 1];\n for (; offset < end; offset += stride) {\n var x2 = flatCoordinates[offset];\n var y2 = flatCoordinates[offset + 1];\n twiceArea += y1 * x2 - x1 * y2;\n x1 = x2;\n y1 = y2;\n }\n return twiceArea / 2;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @return {number} Area.\n */\nexport function linearRings(flatCoordinates, offset, ends, stride) {\n var area = 0;\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n area += linearRing(flatCoordinates, offset, end, stride);\n offset = end;\n }\n return area;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @return {number} Area.\n */\nexport function linearRingss(flatCoordinates, offset, endss, stride) {\n var area = 0;\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i];\n area += linearRings(flatCoordinates, offset, ends, stride);\n offset = ends[ends.length - 1];\n }\n return area;\n}\n//# sourceMappingURL=area.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/geom/LinearRing\n */\nimport GeometryLayout from './GeometryLayout.js';\nimport GeometryType from './GeometryType.js';\nimport SimpleGeometry from './SimpleGeometry.js';\nimport { assignClosestPoint, maxSquaredDelta } from './flat/closest.js';\nimport { closestSquaredDistanceXY } from '../extent.js';\nimport { deflateCoordinates } from './flat/deflate.js';\nimport { douglasPeucker } from './flat/simplify.js';\nimport { inflateCoordinates } from './flat/inflate.js';\nimport { linearRing as linearRingArea } from './flat/area.js';\n/**\n * @classdesc\n * Linear ring geometry. Only used as part of polygon; cannot be rendered\n * on its own.\n *\n * @api\n */\nvar LinearRing = /** @class */ (function (_super) {\n __extends(LinearRing, _super);\n /**\n * @param {Array|Array} coordinates Coordinates.\n * For internal use, flat coordinates in combination with `opt_layout` are also accepted.\n * @param {import(\"./GeometryLayout.js\").default} [opt_layout] Layout.\n */\n function LinearRing(coordinates, opt_layout) {\n var _this = _super.call(this) || this;\n /**\n * @private\n * @type {number}\n */\n _this.maxDelta_ = -1;\n /**\n * @private\n * @type {number}\n */\n _this.maxDeltaRevision_ = -1;\n if (opt_layout !== undefined && !Array.isArray(coordinates[0])) {\n _this.setFlatCoordinates(opt_layout, \n /** @type {Array} */ (coordinates));\n }\n else {\n _this.setCoordinates(\n /** @type {Array} */ (coordinates), opt_layout);\n }\n return _this;\n }\n /**\n * Make a complete copy of the geometry.\n * @return {!LinearRing} Clone.\n * @api\n */\n LinearRing.prototype.clone = function () {\n return new LinearRing(this.flatCoordinates.slice(), this.layout);\n };\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @param {import(\"../coordinate.js\").Coordinate} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @return {number} Minimum squared distance.\n */\n LinearRing.prototype.closestPointXY = function (x, y, closestPoint, minSquaredDistance) {\n if (minSquaredDistance < closestSquaredDistanceXY(this.getExtent(), x, y)) {\n return minSquaredDistance;\n }\n if (this.maxDeltaRevision_ != this.getRevision()) {\n this.maxDelta_ = Math.sqrt(maxSquaredDelta(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, 0));\n this.maxDeltaRevision_ = this.getRevision();\n }\n return assignClosestPoint(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, this.maxDelta_, true, x, y, closestPoint, minSquaredDistance);\n };\n /**\n * Return the area of the linear ring on projected plane.\n * @return {number} Area (on projected plane).\n * @api\n */\n LinearRing.prototype.getArea = function () {\n return linearRingArea(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride);\n };\n /**\n * Return the coordinates of the linear ring.\n * @return {Array} Coordinates.\n * @api\n */\n LinearRing.prototype.getCoordinates = function () {\n return inflateCoordinates(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride);\n };\n /**\n * @param {number} squaredTolerance Squared tolerance.\n * @return {LinearRing} Simplified LinearRing.\n * @protected\n */\n LinearRing.prototype.getSimplifiedGeometryInternal = function (squaredTolerance) {\n var simplifiedFlatCoordinates = [];\n simplifiedFlatCoordinates.length = douglasPeucker(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, squaredTolerance, simplifiedFlatCoordinates, 0);\n return new LinearRing(simplifiedFlatCoordinates, GeometryLayout.XY);\n };\n /**\n * Get the type of this geometry.\n * @return {import(\"./GeometryType.js\").default} Geometry type.\n * @api\n */\n LinearRing.prototype.getType = function () {\n return GeometryType.LINEAR_RING;\n };\n /**\n * Test if the geometry and the passed extent intersect.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @return {boolean} `true` if the geometry and the extent intersect.\n * @api\n */\n LinearRing.prototype.intersectsExtent = function (extent) {\n return false;\n };\n /**\n * Set the coordinates of the linear ring.\n * @param {!Array} coordinates Coordinates.\n * @param {import(\"./GeometryLayout.js\").default} [opt_layout] Layout.\n * @api\n */\n LinearRing.prototype.setCoordinates = function (coordinates, opt_layout) {\n this.setLayout(opt_layout, coordinates, 1);\n if (!this.flatCoordinates) {\n this.flatCoordinates = [];\n }\n this.flatCoordinates.length = deflateCoordinates(this.flatCoordinates, 0, coordinates, this.stride);\n this.changed();\n };\n return LinearRing;\n}(SimpleGeometry));\nexport default LinearRing;\n//# sourceMappingURL=LinearRing.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/geom/Point\n */\nimport GeometryType from './GeometryType.js';\nimport SimpleGeometry from './SimpleGeometry.js';\nimport { containsXY, createOrUpdateFromCoordinate } from '../extent.js';\nimport { deflateCoordinate } from './flat/deflate.js';\nimport { squaredDistance as squaredDx } from '../math.js';\n/**\n * @classdesc\n * Point geometry.\n *\n * @api\n */\nvar Point = /** @class */ (function (_super) {\n __extends(Point, _super);\n /**\n * @param {import(\"../coordinate.js\").Coordinate} coordinates Coordinates.\n * @param {import(\"./GeometryLayout.js\").default} [opt_layout] Layout.\n */\n function Point(coordinates, opt_layout) {\n var _this = _super.call(this) || this;\n _this.setCoordinates(coordinates, opt_layout);\n return _this;\n }\n /**\n * Make a complete copy of the geometry.\n * @return {!Point} Clone.\n * @api\n */\n Point.prototype.clone = function () {\n var point = new Point(this.flatCoordinates.slice(), this.layout);\n point.applyProperties(this);\n return point;\n };\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @param {import(\"../coordinate.js\").Coordinate} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @return {number} Minimum squared distance.\n */\n Point.prototype.closestPointXY = function (x, y, closestPoint, minSquaredDistance) {\n var flatCoordinates = this.flatCoordinates;\n var squaredDistance = squaredDx(x, y, flatCoordinates[0], flatCoordinates[1]);\n if (squaredDistance < minSquaredDistance) {\n var stride = this.stride;\n for (var i = 0; i < stride; ++i) {\n closestPoint[i] = flatCoordinates[i];\n }\n closestPoint.length = stride;\n return squaredDistance;\n }\n else {\n return minSquaredDistance;\n }\n };\n /**\n * Return the coordinate of the point.\n * @return {import(\"../coordinate.js\").Coordinate} Coordinates.\n * @api\n */\n Point.prototype.getCoordinates = function () {\n return !this.flatCoordinates ? [] : this.flatCoordinates.slice();\n };\n /**\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @protected\n * @return {import(\"../extent.js\").Extent} extent Extent.\n */\n Point.prototype.computeExtent = function (extent) {\n return createOrUpdateFromCoordinate(this.flatCoordinates, extent);\n };\n /**\n * Get the type of this geometry.\n * @return {import(\"./GeometryType.js\").default} Geometry type.\n * @api\n */\n Point.prototype.getType = function () {\n return GeometryType.POINT;\n };\n /**\n * Test if the geometry and the passed extent intersect.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @return {boolean} `true` if the geometry and the extent intersect.\n * @api\n */\n Point.prototype.intersectsExtent = function (extent) {\n return containsXY(extent, this.flatCoordinates[0], this.flatCoordinates[1]);\n };\n /**\n * @param {!Array<*>} coordinates Coordinates.\n * @param {import(\"./GeometryLayout.js\").default} [opt_layout] Layout.\n * @api\n */\n Point.prototype.setCoordinates = function (coordinates, opt_layout) {\n this.setLayout(opt_layout, coordinates, 0);\n if (!this.flatCoordinates) {\n this.flatCoordinates = [];\n }\n this.flatCoordinates.length = deflateCoordinate(this.flatCoordinates, 0, coordinates, this.stride);\n this.changed();\n };\n return Point;\n}(SimpleGeometry));\nexport default Point;\n//# sourceMappingURL=Point.js.map","/**\n * @module ol/geom/flat/contains\n */\nimport { forEachCorner } from '../../extent.js';\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @return {boolean} Contains extent.\n */\nexport function linearRingContainsExtent(flatCoordinates, offset, end, stride, extent) {\n var outside = forEachCorner(extent, \n /**\n * @param {import(\"../../coordinate.js\").Coordinate} coordinate Coordinate.\n * @return {boolean} Contains (x, y).\n */\n function (coordinate) {\n return !linearRingContainsXY(flatCoordinates, offset, end, stride, coordinate[0], coordinate[1]);\n });\n return !outside;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} x X.\n * @param {number} y Y.\n * @return {boolean} Contains (x, y).\n */\nexport function linearRingContainsXY(flatCoordinates, offset, end, stride, x, y) {\n // https://geomalgorithms.com/a03-_inclusion.html\n // Copyright 2000 softSurfer, 2012 Dan Sunday\n // This code may be freely used and modified for any purpose\n // providing that this copyright notice is included with it.\n // SoftSurfer makes no warranty for this code, and cannot be held\n // liable for any real or imagined damage resulting from its use.\n // Users of this code must verify correctness for their application.\n var wn = 0;\n var x1 = flatCoordinates[end - stride];\n var y1 = flatCoordinates[end - stride + 1];\n for (; offset < end; offset += stride) {\n var x2 = flatCoordinates[offset];\n var y2 = flatCoordinates[offset + 1];\n if (y1 <= y) {\n if (y2 > y && (x2 - x1) * (y - y1) - (x - x1) * (y2 - y1) > 0) {\n wn++;\n }\n }\n else if (y2 <= y && (x2 - x1) * (y - y1) - (x - x1) * (y2 - y1) < 0) {\n wn--;\n }\n x1 = x2;\n y1 = y2;\n }\n return wn !== 0;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {number} x X.\n * @param {number} y Y.\n * @return {boolean} Contains (x, y).\n */\nexport function linearRingsContainsXY(flatCoordinates, offset, ends, stride, x, y) {\n if (ends.length === 0) {\n return false;\n }\n if (!linearRingContainsXY(flatCoordinates, offset, ends[0], stride, x, y)) {\n return false;\n }\n for (var i = 1, ii = ends.length; i < ii; ++i) {\n if (linearRingContainsXY(flatCoordinates, ends[i - 1], ends[i], stride, x, y)) {\n return false;\n }\n }\n return true;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {number} x X.\n * @param {number} y Y.\n * @return {boolean} Contains (x, y).\n */\nexport function linearRingssContainsXY(flatCoordinates, offset, endss, stride, x, y) {\n if (endss.length === 0) {\n return false;\n }\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i];\n if (linearRingsContainsXY(flatCoordinates, offset, ends, stride, x, y)) {\n return true;\n }\n offset = ends[ends.length - 1];\n }\n return false;\n}\n//# sourceMappingURL=contains.js.map","/**\n * @module ol/geom/flat/interiorpoint\n */\nimport { linearRingsContainsXY } from './contains.js';\nimport { numberSafeCompareFunction } from '../../array.js';\n/**\n * Calculates a point that is likely to lie in the interior of the linear rings.\n * Inspired by JTS's com.vividsolutions.jts.geom.Geometry#getInteriorPoint.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {Array} flatCenters Flat centers.\n * @param {number} flatCentersOffset Flat center offset.\n * @param {Array} [opt_dest] Destination.\n * @return {Array} Destination point as XYM coordinate, where M is the\n * length of the horizontal intersection that the point belongs to.\n */\nexport function getInteriorPointOfArray(flatCoordinates, offset, ends, stride, flatCenters, flatCentersOffset, opt_dest) {\n var i, ii, x, x1, x2, y1, y2;\n var y = flatCenters[flatCentersOffset + 1];\n /** @type {Array} */\n var intersections = [];\n // Calculate intersections with the horizontal line\n for (var r = 0, rr = ends.length; r < rr; ++r) {\n var end = ends[r];\n x1 = flatCoordinates[end - stride];\n y1 = flatCoordinates[end - stride + 1];\n for (i = offset; i < end; i += stride) {\n x2 = flatCoordinates[i];\n y2 = flatCoordinates[i + 1];\n if ((y <= y1 && y2 <= y) || (y1 <= y && y <= y2)) {\n x = ((y - y1) / (y2 - y1)) * (x2 - x1) + x1;\n intersections.push(x);\n }\n x1 = x2;\n y1 = y2;\n }\n }\n // Find the longest segment of the horizontal line that has its center point\n // inside the linear ring.\n var pointX = NaN;\n var maxSegmentLength = -Infinity;\n intersections.sort(numberSafeCompareFunction);\n x1 = intersections[0];\n for (i = 1, ii = intersections.length; i < ii; ++i) {\n x2 = intersections[i];\n var segmentLength = Math.abs(x2 - x1);\n if (segmentLength > maxSegmentLength) {\n x = (x1 + x2) / 2;\n if (linearRingsContainsXY(flatCoordinates, offset, ends, stride, x, y)) {\n pointX = x;\n maxSegmentLength = segmentLength;\n }\n }\n x1 = x2;\n }\n if (isNaN(pointX)) {\n // There is no horizontal line that has its center point inside the linear\n // ring. Use the center of the the linear ring's extent.\n pointX = flatCenters[flatCentersOffset];\n }\n if (opt_dest) {\n opt_dest.push(pointX, y, maxSegmentLength);\n return opt_dest;\n }\n else {\n return [pointX, y, maxSegmentLength];\n }\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {Array} flatCenters Flat centers.\n * @return {Array} Interior points as XYM coordinates, where M is the\n * length of the horizontal intersection that the point belongs to.\n */\nexport function getInteriorPointsOfMultiArray(flatCoordinates, offset, endss, stride, flatCenters) {\n var interiorPoints = [];\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i];\n interiorPoints = getInteriorPointOfArray(flatCoordinates, offset, ends, stride, flatCenters, 2 * i, interiorPoints);\n offset = ends[ends.length - 1];\n }\n return interiorPoints;\n}\n//# sourceMappingURL=interiorpoint.js.map","/**\n * @module ol/geom/flat/segments\n */\n/**\n * This function calls `callback` for each segment of the flat coordinates\n * array. If the callback returns a truthy value the function returns that\n * value immediately. Otherwise the function returns `false`.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {function(import(\"../../coordinate.js\").Coordinate, import(\"../../coordinate.js\").Coordinate): T} callback Function\n * called for each segment.\n * @return {T|boolean} Value.\n * @template T\n */\nexport function forEach(flatCoordinates, offset, end, stride, callback) {\n var point1 = [flatCoordinates[offset], flatCoordinates[offset + 1]];\n var point2 = [];\n var ret;\n for (; offset + stride < end; offset += stride) {\n point2[0] = flatCoordinates[offset + stride];\n point2[1] = flatCoordinates[offset + stride + 1];\n ret = callback(point1, point2);\n if (ret) {\n return ret;\n }\n point1[0] = point2[0];\n point1[1] = point2[1];\n }\n return false;\n}\n//# sourceMappingURL=segments.js.map","/**\n * @module ol/geom/flat/intersectsextent\n */\nimport { containsExtent, createEmpty, extendFlatCoordinates, intersects, intersectsSegment, } from '../../extent.js';\nimport { forEach as forEachSegment } from './segments.js';\nimport { linearRingContainsExtent, linearRingContainsXY } from './contains.js';\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @return {boolean} True if the geometry and the extent intersect.\n */\nexport function intersectsLineString(flatCoordinates, offset, end, stride, extent) {\n var coordinatesExtent = extendFlatCoordinates(createEmpty(), flatCoordinates, offset, end, stride);\n if (!intersects(extent, coordinatesExtent)) {\n return false;\n }\n if (containsExtent(extent, coordinatesExtent)) {\n return true;\n }\n if (coordinatesExtent[0] >= extent[0] && coordinatesExtent[2] <= extent[2]) {\n return true;\n }\n if (coordinatesExtent[1] >= extent[1] && coordinatesExtent[3] <= extent[3]) {\n return true;\n }\n return forEachSegment(flatCoordinates, offset, end, stride, \n /**\n * @param {import(\"../../coordinate.js\").Coordinate} point1 Start point.\n * @param {import(\"../../coordinate.js\").Coordinate} point2 End point.\n * @return {boolean} `true` if the segment and the extent intersect,\n * `false` otherwise.\n */\n function (point1, point2) {\n return intersectsSegment(extent, point1, point2);\n });\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @return {boolean} True if the geometry and the extent intersect.\n */\nexport function intersectsLineStringArray(flatCoordinates, offset, ends, stride, extent) {\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n if (intersectsLineString(flatCoordinates, offset, ends[i], stride, extent)) {\n return true;\n }\n offset = ends[i];\n }\n return false;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @return {boolean} True if the geometry and the extent intersect.\n */\nexport function intersectsLinearRing(flatCoordinates, offset, end, stride, extent) {\n if (intersectsLineString(flatCoordinates, offset, end, stride, extent)) {\n return true;\n }\n if (linearRingContainsXY(flatCoordinates, offset, end, stride, extent[0], extent[1])) {\n return true;\n }\n if (linearRingContainsXY(flatCoordinates, offset, end, stride, extent[0], extent[3])) {\n return true;\n }\n if (linearRingContainsXY(flatCoordinates, offset, end, stride, extent[2], extent[1])) {\n return true;\n }\n if (linearRingContainsXY(flatCoordinates, offset, end, stride, extent[2], extent[3])) {\n return true;\n }\n return false;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @return {boolean} True if the geometry and the extent intersect.\n */\nexport function intersectsLinearRingArray(flatCoordinates, offset, ends, stride, extent) {\n if (!intersectsLinearRing(flatCoordinates, offset, ends[0], stride, extent)) {\n return false;\n }\n if (ends.length === 1) {\n return true;\n }\n for (var i = 1, ii = ends.length; i < ii; ++i) {\n if (linearRingContainsExtent(flatCoordinates, ends[i - 1], ends[i], stride, extent)) {\n if (!intersectsLineString(flatCoordinates, ends[i - 1], ends[i], stride, extent)) {\n return false;\n }\n }\n }\n return true;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @return {boolean} True if the geometry and the extent intersect.\n */\nexport function intersectsLinearRingMultiArray(flatCoordinates, offset, endss, stride, extent) {\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i];\n if (intersectsLinearRingArray(flatCoordinates, offset, ends, stride, extent)) {\n return true;\n }\n offset = ends[ends.length - 1];\n }\n return false;\n}\n//# sourceMappingURL=intersectsextent.js.map","/**\n * @module ol/geom/flat/reverse\n */\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n */\nexport function coordinates(flatCoordinates, offset, end, stride) {\n while (offset < end - stride) {\n for (var i = 0; i < stride; ++i) {\n var tmp = flatCoordinates[offset + i];\n flatCoordinates[offset + i] = flatCoordinates[end - stride + i];\n flatCoordinates[end - stride + i] = tmp;\n }\n offset += stride;\n end -= stride;\n }\n}\n//# sourceMappingURL=reverse.js.map","/**\n * @module ol/geom/flat/orient\n */\nimport { coordinates as reverseCoordinates } from './reverse.js';\n/**\n * Is the linear ring oriented clockwise in a coordinate system with a bottom-left\n * coordinate origin? For a coordinate system with a top-left coordinate origin,\n * the ring's orientation is clockwise when this function returns false.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @return {boolean} Is clockwise.\n */\nexport function linearRingIsClockwise(flatCoordinates, offset, end, stride) {\n // https://stackoverflow.com/q/1165647/clockwise-method#1165943\n // https://github.com/OSGeo/gdal/blob/master/gdal/ogr/ogrlinearring.cpp\n var edge = 0;\n var x1 = flatCoordinates[end - stride];\n var y1 = flatCoordinates[end - stride + 1];\n for (; offset < end; offset += stride) {\n var x2 = flatCoordinates[offset];\n var y2 = flatCoordinates[offset + 1];\n edge += (x2 - x1) * (y2 + y1);\n x1 = x2;\n y1 = y2;\n }\n return edge === 0 ? undefined : edge > 0;\n}\n/**\n * Determines if linear rings are oriented. By default, left-hand orientation\n * is tested (first ring must be clockwise, remaining rings counter-clockwise).\n * To test for right-hand orientation, use the `opt_right` argument.\n *\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Array of end indexes.\n * @param {number} stride Stride.\n * @param {boolean} [opt_right] Test for right-hand orientation\n * (counter-clockwise exterior ring and clockwise interior rings).\n * @return {boolean} Rings are correctly oriented.\n */\nexport function linearRingsAreOriented(flatCoordinates, offset, ends, stride, opt_right) {\n var right = opt_right !== undefined ? opt_right : false;\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n var isClockwise = linearRingIsClockwise(flatCoordinates, offset, end, stride);\n if (i === 0) {\n if ((right && isClockwise) || (!right && !isClockwise)) {\n return false;\n }\n }\n else {\n if ((right && !isClockwise) || (!right && isClockwise)) {\n return false;\n }\n }\n offset = end;\n }\n return true;\n}\n/**\n * Determines if linear rings are oriented. By default, left-hand orientation\n * is tested (first ring must be clockwise, remaining rings counter-clockwise).\n * To test for right-hand orientation, use the `opt_right` argument.\n *\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Array of array of end indexes.\n * @param {number} stride Stride.\n * @param {boolean} [opt_right] Test for right-hand orientation\n * (counter-clockwise exterior ring and clockwise interior rings).\n * @return {boolean} Rings are correctly oriented.\n */\nexport function linearRingssAreOriented(flatCoordinates, offset, endss, stride, opt_right) {\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i];\n if (!linearRingsAreOriented(flatCoordinates, offset, ends, stride, opt_right)) {\n return false;\n }\n if (ends.length) {\n offset = ends[ends.length - 1];\n }\n }\n return true;\n}\n/**\n * Orient coordinates in a flat array of linear rings. By default, rings\n * are oriented following the left-hand rule (clockwise for exterior and\n * counter-clockwise for interior rings). To orient according to the\n * right-hand rule, use the `opt_right` argument.\n *\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {boolean} [opt_right] Follow the right-hand rule for orientation.\n * @return {number} End.\n */\nexport function orientLinearRings(flatCoordinates, offset, ends, stride, opt_right) {\n var right = opt_right !== undefined ? opt_right : false;\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n var isClockwise = linearRingIsClockwise(flatCoordinates, offset, end, stride);\n var reverse = i === 0\n ? (right && isClockwise) || (!right && !isClockwise)\n : (right && !isClockwise) || (!right && isClockwise);\n if (reverse) {\n reverseCoordinates(flatCoordinates, offset, end, stride);\n }\n offset = end;\n }\n return offset;\n}\n/**\n * Orient coordinates in a flat array of linear rings. By default, rings\n * are oriented following the left-hand rule (clockwise for exterior and\n * counter-clockwise for interior rings). To orient according to the\n * right-hand rule, use the `opt_right` argument.\n *\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Array of array of end indexes.\n * @param {number} stride Stride.\n * @param {boolean} [opt_right] Follow the right-hand rule for orientation.\n * @return {number} End.\n */\nexport function orientLinearRingsArray(flatCoordinates, offset, endss, stride, opt_right) {\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n offset = orientLinearRings(flatCoordinates, offset, endss[i], stride, opt_right);\n }\n return offset;\n}\n//# sourceMappingURL=orient.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/geom/Polygon\n */\nimport GeometryLayout from './GeometryLayout.js';\nimport GeometryType from './GeometryType.js';\nimport LinearRing from './LinearRing.js';\nimport Point from './Point.js';\nimport SimpleGeometry from './SimpleGeometry.js';\nimport { arrayMaxSquaredDelta, assignClosestArrayPoint } from './flat/closest.js';\nimport { closestSquaredDistanceXY, getCenter } from '../extent.js';\nimport { deflateCoordinatesArray } from './flat/deflate.js';\nimport { extend } from '../array.js';\nimport { getInteriorPointOfArray } from './flat/interiorpoint.js';\nimport { inflateCoordinatesArray } from './flat/inflate.js';\nimport { intersectsLinearRingArray } from './flat/intersectsextent.js';\nimport { linearRingsAreOriented, orientLinearRings } from './flat/orient.js';\nimport { linearRings as linearRingsArea } from './flat/area.js';\nimport { linearRingsContainsXY } from './flat/contains.js';\nimport { modulo } from '../math.js';\nimport { quantizeArray } from './flat/simplify.js';\nimport { offset as sphereOffset } from '../sphere.js';\n/**\n * @classdesc\n * Polygon geometry.\n *\n * @api\n */\nvar Polygon = /** @class */ (function (_super) {\n __extends(Polygon, _super);\n /**\n * @param {!Array>|!Array} coordinates\n * Array of linear rings that define the polygon. The first linear ring of the\n * array defines the outer-boundary or surface of the polygon. Each subsequent\n * linear ring defines a hole in the surface of the polygon. A linear ring is\n * an array of vertices' coordinates where the first coordinate and the last are\n * equivalent. (For internal use, flat coordinates in combination with\n * `opt_layout` and `opt_ends` are also accepted.)\n * @param {import(\"./GeometryLayout.js\").default} [opt_layout] Layout.\n * @param {Array} [opt_ends] Ends (for internal use with flat coordinates).\n */\n function Polygon(coordinates, opt_layout, opt_ends) {\n var _this = _super.call(this) || this;\n /**\n * @type {Array}\n * @private\n */\n _this.ends_ = [];\n /**\n * @private\n * @type {number}\n */\n _this.flatInteriorPointRevision_ = -1;\n /**\n * @private\n * @type {import(\"../coordinate.js\").Coordinate}\n */\n _this.flatInteriorPoint_ = null;\n /**\n * @private\n * @type {number}\n */\n _this.maxDelta_ = -1;\n /**\n * @private\n * @type {number}\n */\n _this.maxDeltaRevision_ = -1;\n /**\n * @private\n * @type {number}\n */\n _this.orientedRevision_ = -1;\n /**\n * @private\n * @type {Array}\n */\n _this.orientedFlatCoordinates_ = null;\n if (opt_layout !== undefined && opt_ends) {\n _this.setFlatCoordinates(opt_layout, \n /** @type {Array} */ (coordinates));\n _this.ends_ = opt_ends;\n }\n else {\n _this.setCoordinates(\n /** @type {Array>} */ (coordinates), opt_layout);\n }\n return _this;\n }\n /**\n * Append the passed linear ring to this polygon.\n * @param {LinearRing} linearRing Linear ring.\n * @api\n */\n Polygon.prototype.appendLinearRing = function (linearRing) {\n if (!this.flatCoordinates) {\n this.flatCoordinates = linearRing.getFlatCoordinates().slice();\n }\n else {\n extend(this.flatCoordinates, linearRing.getFlatCoordinates());\n }\n this.ends_.push(this.flatCoordinates.length);\n this.changed();\n };\n /**\n * Make a complete copy of the geometry.\n * @return {!Polygon} Clone.\n * @api\n */\n Polygon.prototype.clone = function () {\n var polygon = new Polygon(this.flatCoordinates.slice(), this.layout, this.ends_.slice());\n polygon.applyProperties(this);\n return polygon;\n };\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @param {import(\"../coordinate.js\").Coordinate} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @return {number} Minimum squared distance.\n */\n Polygon.prototype.closestPointXY = function (x, y, closestPoint, minSquaredDistance) {\n if (minSquaredDistance < closestSquaredDistanceXY(this.getExtent(), x, y)) {\n return minSquaredDistance;\n }\n if (this.maxDeltaRevision_ != this.getRevision()) {\n this.maxDelta_ = Math.sqrt(arrayMaxSquaredDelta(this.flatCoordinates, 0, this.ends_, this.stride, 0));\n this.maxDeltaRevision_ = this.getRevision();\n }\n return assignClosestArrayPoint(this.flatCoordinates, 0, this.ends_, this.stride, this.maxDelta_, true, x, y, closestPoint, minSquaredDistance);\n };\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @return {boolean} Contains (x, y).\n */\n Polygon.prototype.containsXY = function (x, y) {\n return linearRingsContainsXY(this.getOrientedFlatCoordinates(), 0, this.ends_, this.stride, x, y);\n };\n /**\n * Return the area of the polygon on projected plane.\n * @return {number} Area (on projected plane).\n * @api\n */\n Polygon.prototype.getArea = function () {\n return linearRingsArea(this.getOrientedFlatCoordinates(), 0, this.ends_, this.stride);\n };\n /**\n * Get the coordinate array for this geometry. This array has the structure\n * of a GeoJSON coordinate array for polygons.\n *\n * @param {boolean} [opt_right] Orient coordinates according to the right-hand\n * rule (counter-clockwise for exterior and clockwise for interior rings).\n * If `false`, coordinates will be oriented according to the left-hand rule\n * (clockwise for exterior and counter-clockwise for interior rings).\n * By default, coordinate orientation will depend on how the geometry was\n * constructed.\n * @return {Array>} Coordinates.\n * @api\n */\n Polygon.prototype.getCoordinates = function (opt_right) {\n var flatCoordinates;\n if (opt_right !== undefined) {\n flatCoordinates = this.getOrientedFlatCoordinates().slice();\n orientLinearRings(flatCoordinates, 0, this.ends_, this.stride, opt_right);\n }\n else {\n flatCoordinates = this.flatCoordinates;\n }\n return inflateCoordinatesArray(flatCoordinates, 0, this.ends_, this.stride);\n };\n /**\n * @return {Array} Ends.\n */\n Polygon.prototype.getEnds = function () {\n return this.ends_;\n };\n /**\n * @return {Array} Interior point.\n */\n Polygon.prototype.getFlatInteriorPoint = function () {\n if (this.flatInteriorPointRevision_ != this.getRevision()) {\n var flatCenter = getCenter(this.getExtent());\n this.flatInteriorPoint_ = getInteriorPointOfArray(this.getOrientedFlatCoordinates(), 0, this.ends_, this.stride, flatCenter, 0);\n this.flatInteriorPointRevision_ = this.getRevision();\n }\n return this.flatInteriorPoint_;\n };\n /**\n * Return an interior point of the polygon.\n * @return {Point} Interior point as XYM coordinate, where M is the\n * length of the horizontal intersection that the point belongs to.\n * @api\n */\n Polygon.prototype.getInteriorPoint = function () {\n return new Point(this.getFlatInteriorPoint(), GeometryLayout.XYM);\n };\n /**\n * Return the number of rings of the polygon, this includes the exterior\n * ring and any interior rings.\n *\n * @return {number} Number of rings.\n * @api\n */\n Polygon.prototype.getLinearRingCount = function () {\n return this.ends_.length;\n };\n /**\n * Return the Nth linear ring of the polygon geometry. Return `null` if the\n * given index is out of range.\n * The exterior linear ring is available at index `0` and the interior rings\n * at index `1` and beyond.\n *\n * @param {number} index Index.\n * @return {LinearRing} Linear ring.\n * @api\n */\n Polygon.prototype.getLinearRing = function (index) {\n if (index < 0 || this.ends_.length <= index) {\n return null;\n }\n return new LinearRing(this.flatCoordinates.slice(index === 0 ? 0 : this.ends_[index - 1], this.ends_[index]), this.layout);\n };\n /**\n * Return the linear rings of the polygon.\n * @return {Array} Linear rings.\n * @api\n */\n Polygon.prototype.getLinearRings = function () {\n var layout = this.layout;\n var flatCoordinates = this.flatCoordinates;\n var ends = this.ends_;\n var linearRings = [];\n var offset = 0;\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n var linearRing = new LinearRing(flatCoordinates.slice(offset, end), layout);\n linearRings.push(linearRing);\n offset = end;\n }\n return linearRings;\n };\n /**\n * @return {Array} Oriented flat coordinates.\n */\n Polygon.prototype.getOrientedFlatCoordinates = function () {\n if (this.orientedRevision_ != this.getRevision()) {\n var flatCoordinates = this.flatCoordinates;\n if (linearRingsAreOriented(flatCoordinates, 0, this.ends_, this.stride)) {\n this.orientedFlatCoordinates_ = flatCoordinates;\n }\n else {\n this.orientedFlatCoordinates_ = flatCoordinates.slice();\n this.orientedFlatCoordinates_.length = orientLinearRings(this.orientedFlatCoordinates_, 0, this.ends_, this.stride);\n }\n this.orientedRevision_ = this.getRevision();\n }\n return this.orientedFlatCoordinates_;\n };\n /**\n * @param {number} squaredTolerance Squared tolerance.\n * @return {Polygon} Simplified Polygon.\n * @protected\n */\n Polygon.prototype.getSimplifiedGeometryInternal = function (squaredTolerance) {\n var simplifiedFlatCoordinates = [];\n var simplifiedEnds = [];\n simplifiedFlatCoordinates.length = quantizeArray(this.flatCoordinates, 0, this.ends_, this.stride, Math.sqrt(squaredTolerance), simplifiedFlatCoordinates, 0, simplifiedEnds);\n return new Polygon(simplifiedFlatCoordinates, GeometryLayout.XY, simplifiedEnds);\n };\n /**\n * Get the type of this geometry.\n * @return {import(\"./GeometryType.js\").default} Geometry type.\n * @api\n */\n Polygon.prototype.getType = function () {\n return GeometryType.POLYGON;\n };\n /**\n * Test if the geometry and the passed extent intersect.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @return {boolean} `true` if the geometry and the extent intersect.\n * @api\n */\n Polygon.prototype.intersectsExtent = function (extent) {\n return intersectsLinearRingArray(this.getOrientedFlatCoordinates(), 0, this.ends_, this.stride, extent);\n };\n /**\n * Set the coordinates of the polygon.\n * @param {!Array>} coordinates Coordinates.\n * @param {import(\"./GeometryLayout.js\").default} [opt_layout] Layout.\n * @api\n */\n Polygon.prototype.setCoordinates = function (coordinates, opt_layout) {\n this.setLayout(opt_layout, coordinates, 2);\n if (!this.flatCoordinates) {\n this.flatCoordinates = [];\n }\n var ends = deflateCoordinatesArray(this.flatCoordinates, 0, coordinates, this.stride, this.ends_);\n this.flatCoordinates.length = ends.length === 0 ? 0 : ends[ends.length - 1];\n this.changed();\n };\n return Polygon;\n}(SimpleGeometry));\nexport default Polygon;\n/**\n * Create an approximation of a circle on the surface of a sphere.\n * @param {import(\"../coordinate.js\").Coordinate} center Center (`[lon, lat]` in degrees).\n * @param {number} radius The great-circle distance from the center to\n * the polygon vertices in meters.\n * @param {number} [opt_n] Optional number of vertices for the resulting\n * polygon. Default is `32`.\n * @param {number} [opt_sphereRadius] Optional radius for the sphere (defaults to\n * the Earth's mean radius using the WGS84 ellipsoid).\n * @return {Polygon} The \"circular\" polygon.\n * @api\n */\nexport function circular(center, radius, opt_n, opt_sphereRadius) {\n var n = opt_n ? opt_n : 32;\n /** @type {Array} */\n var flatCoordinates = [];\n for (var i = 0; i < n; ++i) {\n extend(flatCoordinates, sphereOffset(center, radius, (2 * Math.PI * i) / n, opt_sphereRadius));\n }\n flatCoordinates.push(flatCoordinates[0], flatCoordinates[1]);\n return new Polygon(flatCoordinates, GeometryLayout.XY, [\n flatCoordinates.length,\n ]);\n}\n/**\n * Create a polygon from an extent. The layout used is `XY`.\n * @param {import(\"../extent.js\").Extent} extent The extent.\n * @return {Polygon} The polygon.\n * @api\n */\nexport function fromExtent(extent) {\n var minX = extent[0];\n var minY = extent[1];\n var maxX = extent[2];\n var maxY = extent[3];\n var flatCoordinates = [\n minX,\n minY,\n minX,\n maxY,\n maxX,\n maxY,\n maxX,\n minY,\n minX,\n minY,\n ];\n return new Polygon(flatCoordinates, GeometryLayout.XY, [\n flatCoordinates.length,\n ]);\n}\n/**\n * Create a regular polygon from a circle.\n * @param {import(\"./Circle.js\").default} circle Circle geometry.\n * @param {number} [opt_sides] Number of sides of the polygon. Default is 32.\n * @param {number} [opt_angle] Start angle for the first vertex of the polygon in\n * counter-clockwise radians. 0 means East. Default is 0.\n * @return {Polygon} Polygon geometry.\n * @api\n */\nexport function fromCircle(circle, opt_sides, opt_angle) {\n var sides = opt_sides ? opt_sides : 32;\n var stride = circle.getStride();\n var layout = circle.getLayout();\n var center = circle.getCenter();\n var arrayLength = stride * (sides + 1);\n var flatCoordinates = new Array(arrayLength);\n for (var i = 0; i < arrayLength; i += stride) {\n flatCoordinates[i] = 0;\n flatCoordinates[i + 1] = 0;\n for (var j = 2; j < stride; j++) {\n flatCoordinates[i + j] = center[j];\n }\n }\n var ends = [flatCoordinates.length];\n var polygon = new Polygon(flatCoordinates, layout, ends);\n makeRegular(polygon, center, circle.getRadius(), opt_angle);\n return polygon;\n}\n/**\n * Modify the coordinates of a polygon to make it a regular polygon.\n * @param {Polygon} polygon Polygon geometry.\n * @param {import(\"../coordinate.js\").Coordinate} center Center of the regular polygon.\n * @param {number} radius Radius of the regular polygon.\n * @param {number} [opt_angle] Start angle for the first vertex of the polygon in\n * counter-clockwise radians. 0 means East. Default is 0.\n */\nexport function makeRegular(polygon, center, radius, opt_angle) {\n var flatCoordinates = polygon.getFlatCoordinates();\n var stride = polygon.getStride();\n var sides = flatCoordinates.length / stride - 1;\n var startAngle = opt_angle ? opt_angle : 0;\n for (var i = 0; i <= sides; ++i) {\n var offset = i * stride;\n var angle = startAngle + (modulo(i, sides) * 2 * Math.PI) / sides;\n flatCoordinates[offset] = center[0] + radius * Math.cos(angle);\n flatCoordinates[offset + 1] = center[1] + radius * Math.sin(angle);\n }\n polygon.changed();\n}\n//# sourceMappingURL=Polygon.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/control/ZoomToExtent\n */\nimport Control from './Control.js';\nimport EventType from '../events/EventType.js';\nimport { CLASS_CONTROL, CLASS_UNSELECTABLE } from '../css.js';\nimport { fromExtent as polygonFromExtent } from '../geom/Polygon.js';\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-zoom-extent'] Class name.\n * @property {HTMLElement|string} [target] Specify a target if you want the control\n * to be rendered outside of the map's viewport.\n * @property {string|HTMLElement} [label='E'] Text label to use for the button.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string} [tipLabel='Fit to extent'] Text label to use for the button tip.\n * @property {import(\"../extent.js\").Extent} [extent] The extent to zoom to. If undefined the validity\n * extent of the view projection is used.\n */\n/**\n * @classdesc\n * A button control which, when pressed, changes the map view to a specific\n * extent. To style this control use the css selector `.ol-zoom-extent`.\n *\n * @api\n */\nvar ZoomToExtent = /** @class */ (function (_super) {\n __extends(ZoomToExtent, _super);\n /**\n * @param {Options} [opt_options] Options.\n */\n function ZoomToExtent(opt_options) {\n var _this = this;\n var options = opt_options ? opt_options : {};\n _this = _super.call(this, {\n element: document.createElement('div'),\n target: options.target,\n }) || this;\n /**\n * @type {?import(\"../extent.js\").Extent}\n * @protected\n */\n _this.extent = options.extent ? options.extent : null;\n var className = options.className !== undefined ? options.className : 'ol-zoom-extent';\n var label = options.label !== undefined ? options.label : 'E';\n var tipLabel = options.tipLabel !== undefined ? options.tipLabel : 'Fit to extent';\n var button = document.createElement('button');\n button.setAttribute('type', 'button');\n button.title = tipLabel;\n button.appendChild(typeof label === 'string' ? document.createTextNode(label) : label);\n button.addEventListener(EventType.CLICK, _this.handleClick_.bind(_this), false);\n var cssClasses = className + ' ' + CLASS_UNSELECTABLE + ' ' + CLASS_CONTROL;\n var element = _this.element;\n element.className = cssClasses;\n element.appendChild(button);\n return _this;\n }\n /**\n * @param {MouseEvent} event The event to handle\n * @private\n */\n ZoomToExtent.prototype.handleClick_ = function (event) {\n event.preventDefault();\n this.handleZoomToExtent();\n };\n /**\n * @protected\n */\n ZoomToExtent.prototype.handleZoomToExtent = function () {\n var map = this.getMap();\n var view = map.getView();\n var extent = !this.extent\n ? view.getProjection().getExtent()\n : this.extent;\n view.fitInternal(polygonFromExtent(extent));\n };\n return ZoomToExtent;\n}(Control));\nexport default ZoomToExtent;\n//# sourceMappingURL=ZoomToExtent.js.map","/**\n * @module ol/geom/flat/interpolate\n */\nimport { binarySearch } from '../../array.js';\nimport { lerp } from '../../math.js';\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} fraction Fraction.\n * @param {Array} [opt_dest] Destination.\n * @param {number} [opt_dimension] Destination dimension (default is `2`)\n * @return {Array} Destination.\n */\nexport function interpolatePoint(flatCoordinates, offset, end, stride, fraction, opt_dest, opt_dimension) {\n var o, t;\n var n = (end - offset) / stride;\n if (n === 1) {\n o = offset;\n }\n else if (n === 2) {\n o = offset;\n t = fraction;\n }\n else if (n !== 0) {\n var x1 = flatCoordinates[offset];\n var y1 = flatCoordinates[offset + 1];\n var length_1 = 0;\n var cumulativeLengths = [0];\n for (var i = offset + stride; i < end; i += stride) {\n var x2 = flatCoordinates[i];\n var y2 = flatCoordinates[i + 1];\n length_1 += Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n cumulativeLengths.push(length_1);\n x1 = x2;\n y1 = y2;\n }\n var target = fraction * length_1;\n var index = binarySearch(cumulativeLengths, target);\n if (index < 0) {\n t =\n (target - cumulativeLengths[-index - 2]) /\n (cumulativeLengths[-index - 1] - cumulativeLengths[-index - 2]);\n o = offset + (-index - 2) * stride;\n }\n else {\n o = offset + index * stride;\n }\n }\n var dimension = opt_dimension > 1 ? opt_dimension : 2;\n var dest = opt_dest ? opt_dest : new Array(dimension);\n for (var i = 0; i < dimension; ++i) {\n dest[i] =\n o === undefined\n ? NaN\n : t === undefined\n ? flatCoordinates[o + i]\n : lerp(flatCoordinates[o + i], flatCoordinates[o + stride + i], t);\n }\n return dest;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} m M.\n * @param {boolean} extrapolate Extrapolate.\n * @return {import(\"../../coordinate.js\").Coordinate} Coordinate.\n */\nexport function lineStringCoordinateAtM(flatCoordinates, offset, end, stride, m, extrapolate) {\n if (end == offset) {\n return null;\n }\n var coordinate;\n if (m < flatCoordinates[offset + stride - 1]) {\n if (extrapolate) {\n coordinate = flatCoordinates.slice(offset, offset + stride);\n coordinate[stride - 1] = m;\n return coordinate;\n }\n else {\n return null;\n }\n }\n else if (flatCoordinates[end - 1] < m) {\n if (extrapolate) {\n coordinate = flatCoordinates.slice(end - stride, end);\n coordinate[stride - 1] = m;\n return coordinate;\n }\n else {\n return null;\n }\n }\n // FIXME use O(1) search\n if (m == flatCoordinates[offset + stride - 1]) {\n return flatCoordinates.slice(offset, offset + stride);\n }\n var lo = offset / stride;\n var hi = end / stride;\n while (lo < hi) {\n var mid = (lo + hi) >> 1;\n if (m < flatCoordinates[(mid + 1) * stride - 1]) {\n hi = mid;\n }\n else {\n lo = mid + 1;\n }\n }\n var m0 = flatCoordinates[lo * stride - 1];\n if (m == m0) {\n return flatCoordinates.slice((lo - 1) * stride, (lo - 1) * stride + stride);\n }\n var m1 = flatCoordinates[(lo + 1) * stride - 1];\n var t = (m - m0) / (m1 - m0);\n coordinate = [];\n for (var i = 0; i < stride - 1; ++i) {\n coordinate.push(lerp(flatCoordinates[(lo - 1) * stride + i], flatCoordinates[lo * stride + i], t));\n }\n coordinate.push(m);\n return coordinate;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {number} m M.\n * @param {boolean} extrapolate Extrapolate.\n * @param {boolean} interpolate Interpolate.\n * @return {import(\"../../coordinate.js\").Coordinate} Coordinate.\n */\nexport function lineStringsCoordinateAtM(flatCoordinates, offset, ends, stride, m, extrapolate, interpolate) {\n if (interpolate) {\n return lineStringCoordinateAtM(flatCoordinates, offset, ends[ends.length - 1], stride, m, extrapolate);\n }\n var coordinate;\n if (m < flatCoordinates[stride - 1]) {\n if (extrapolate) {\n coordinate = flatCoordinates.slice(0, stride);\n coordinate[stride - 1] = m;\n return coordinate;\n }\n else {\n return null;\n }\n }\n if (flatCoordinates[flatCoordinates.length - 1] < m) {\n if (extrapolate) {\n coordinate = flatCoordinates.slice(flatCoordinates.length - stride);\n coordinate[stride - 1] = m;\n return coordinate;\n }\n else {\n return null;\n }\n }\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n if (offset == end) {\n continue;\n }\n if (m < flatCoordinates[offset + stride - 1]) {\n return null;\n }\n else if (m <= flatCoordinates[end - 1]) {\n return lineStringCoordinateAtM(flatCoordinates, offset, end, stride, m, false);\n }\n offset = end;\n }\n return null;\n}\n//# sourceMappingURL=interpolate.js.map","/**\n * @module ol/geom/flat/length\n */\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @return {number} Length.\n */\nexport function lineStringLength(flatCoordinates, offset, end, stride) {\n var x1 = flatCoordinates[offset];\n var y1 = flatCoordinates[offset + 1];\n var length = 0;\n for (var i = offset + stride; i < end; i += stride) {\n var x2 = flatCoordinates[i];\n var y2 = flatCoordinates[i + 1];\n length += Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n x1 = x2;\n y1 = y2;\n }\n return length;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @return {number} Perimeter.\n */\nexport function linearRingLength(flatCoordinates, offset, end, stride) {\n var perimeter = lineStringLength(flatCoordinates, offset, end, stride);\n var dx = flatCoordinates[end - stride] - flatCoordinates[offset];\n var dy = flatCoordinates[end - stride + 1] - flatCoordinates[offset + 1];\n perimeter += Math.sqrt(dx * dx + dy * dy);\n return perimeter;\n}\n//# sourceMappingURL=length.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/geom/LineString\n */\nimport GeometryLayout from './GeometryLayout.js';\nimport GeometryType from './GeometryType.js';\nimport SimpleGeometry from './SimpleGeometry.js';\nimport { assignClosestPoint, maxSquaredDelta } from './flat/closest.js';\nimport { closestSquaredDistanceXY } from '../extent.js';\nimport { deflateCoordinates } from './flat/deflate.js';\nimport { douglasPeucker } from './flat/simplify.js';\nimport { extend } from '../array.js';\nimport { forEach as forEachSegment } from './flat/segments.js';\nimport { inflateCoordinates } from './flat/inflate.js';\nimport { interpolatePoint, lineStringCoordinateAtM } from './flat/interpolate.js';\nimport { intersectsLineString } from './flat/intersectsextent.js';\nimport { lineStringLength } from './flat/length.js';\n/**\n * @classdesc\n * Linestring geometry.\n *\n * @api\n */\nvar LineString = /** @class */ (function (_super) {\n __extends(LineString, _super);\n /**\n * @param {Array|Array} coordinates Coordinates.\n * For internal use, flat coordinates in combination with `opt_layout` are also accepted.\n * @param {import(\"./GeometryLayout.js\").default} [opt_layout] Layout.\n */\n function LineString(coordinates, opt_layout) {\n var _this = _super.call(this) || this;\n /**\n * @private\n * @type {import(\"../coordinate.js\").Coordinate}\n */\n _this.flatMidpoint_ = null;\n /**\n * @private\n * @type {number}\n */\n _this.flatMidpointRevision_ = -1;\n /**\n * @private\n * @type {number}\n */\n _this.maxDelta_ = -1;\n /**\n * @private\n * @type {number}\n */\n _this.maxDeltaRevision_ = -1;\n if (opt_layout !== undefined && !Array.isArray(coordinates[0])) {\n _this.setFlatCoordinates(opt_layout, \n /** @type {Array} */ (coordinates));\n }\n else {\n _this.setCoordinates(\n /** @type {Array} */ (coordinates), opt_layout);\n }\n return _this;\n }\n /**\n * Append the passed coordinate to the coordinates of the linestring.\n * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n * @api\n */\n LineString.prototype.appendCoordinate = function (coordinate) {\n if (!this.flatCoordinates) {\n this.flatCoordinates = coordinate.slice();\n }\n else {\n extend(this.flatCoordinates, coordinate);\n }\n this.changed();\n };\n /**\n * Make a complete copy of the geometry.\n * @return {!LineString} Clone.\n * @api\n */\n LineString.prototype.clone = function () {\n var lineString = new LineString(this.flatCoordinates.slice(), this.layout);\n lineString.applyProperties(this);\n return lineString;\n };\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @param {import(\"../coordinate.js\").Coordinate} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @return {number} Minimum squared distance.\n */\n LineString.prototype.closestPointXY = function (x, y, closestPoint, minSquaredDistance) {\n if (minSquaredDistance < closestSquaredDistanceXY(this.getExtent(), x, y)) {\n return minSquaredDistance;\n }\n if (this.maxDeltaRevision_ != this.getRevision()) {\n this.maxDelta_ = Math.sqrt(maxSquaredDelta(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, 0));\n this.maxDeltaRevision_ = this.getRevision();\n }\n return assignClosestPoint(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, this.maxDelta_, false, x, y, closestPoint, minSquaredDistance);\n };\n /**\n * Iterate over each segment, calling the provided callback.\n * If the callback returns a truthy value the function returns that\n * value immediately. Otherwise the function returns `false`.\n *\n * @param {function(this: S, import(\"../coordinate.js\").Coordinate, import(\"../coordinate.js\").Coordinate): T} callback Function\n * called for each segment. The function will receive two arguments, the start and end coordinates of the segment.\n * @return {T|boolean} Value.\n * @template T,S\n * @api\n */\n LineString.prototype.forEachSegment = function (callback) {\n return forEachSegment(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, callback);\n };\n /**\n * Returns the coordinate at `m` using linear interpolation, or `null` if no\n * such coordinate exists.\n *\n * `opt_extrapolate` controls extrapolation beyond the range of Ms in the\n * MultiLineString. If `opt_extrapolate` is `true` then Ms less than the first\n * M will return the first coordinate and Ms greater than the last M will\n * return the last coordinate.\n *\n * @param {number} m M.\n * @param {boolean} [opt_extrapolate] Extrapolate. Default is `false`.\n * @return {import(\"../coordinate.js\").Coordinate} Coordinate.\n * @api\n */\n LineString.prototype.getCoordinateAtM = function (m, opt_extrapolate) {\n if (this.layout != GeometryLayout.XYM &&\n this.layout != GeometryLayout.XYZM) {\n return null;\n }\n var extrapolate = opt_extrapolate !== undefined ? opt_extrapolate : false;\n return lineStringCoordinateAtM(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, m, extrapolate);\n };\n /**\n * Return the coordinates of the linestring.\n * @return {Array} Coordinates.\n * @api\n */\n LineString.prototype.getCoordinates = function () {\n return inflateCoordinates(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride);\n };\n /**\n * Return the coordinate at the provided fraction along the linestring.\n * The `fraction` is a number between 0 and 1, where 0 is the start of the\n * linestring and 1 is the end.\n * @param {number} fraction Fraction.\n * @param {import(\"../coordinate.js\").Coordinate} [opt_dest] Optional coordinate whose values will\n * be modified. If not provided, a new coordinate will be returned.\n * @return {import(\"../coordinate.js\").Coordinate} Coordinate of the interpolated point.\n * @api\n */\n LineString.prototype.getCoordinateAt = function (fraction, opt_dest) {\n return interpolatePoint(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, fraction, opt_dest, this.stride);\n };\n /**\n * Return the length of the linestring on projected plane.\n * @return {number} Length (on projected plane).\n * @api\n */\n LineString.prototype.getLength = function () {\n return lineStringLength(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride);\n };\n /**\n * @return {Array} Flat midpoint.\n */\n LineString.prototype.getFlatMidpoint = function () {\n if (this.flatMidpointRevision_ != this.getRevision()) {\n this.flatMidpoint_ = this.getCoordinateAt(0.5, this.flatMidpoint_);\n this.flatMidpointRevision_ = this.getRevision();\n }\n return this.flatMidpoint_;\n };\n /**\n * @param {number} squaredTolerance Squared tolerance.\n * @return {LineString} Simplified LineString.\n * @protected\n */\n LineString.prototype.getSimplifiedGeometryInternal = function (squaredTolerance) {\n var simplifiedFlatCoordinates = [];\n simplifiedFlatCoordinates.length = douglasPeucker(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, squaredTolerance, simplifiedFlatCoordinates, 0);\n return new LineString(simplifiedFlatCoordinates, GeometryLayout.XY);\n };\n /**\n * Get the type of this geometry.\n * @return {import(\"./GeometryType.js\").default} Geometry type.\n * @api\n */\n LineString.prototype.getType = function () {\n return GeometryType.LINE_STRING;\n };\n /**\n * Test if the geometry and the passed extent intersect.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @return {boolean} `true` if the geometry and the extent intersect.\n * @api\n */\n LineString.prototype.intersectsExtent = function (extent) {\n return intersectsLineString(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, extent);\n };\n /**\n * Set the coordinates of the linestring.\n * @param {!Array} coordinates Coordinates.\n * @param {import(\"./GeometryLayout.js\").default} [opt_layout] Layout.\n * @api\n */\n LineString.prototype.setCoordinates = function (coordinates, opt_layout) {\n this.setLayout(opt_layout, coordinates, 1);\n if (!this.flatCoordinates) {\n this.flatCoordinates = [];\n }\n this.flatCoordinates.length = deflateCoordinates(this.flatCoordinates, 0, coordinates, this.stride);\n this.changed();\n };\n return LineString;\n}(SimpleGeometry));\nexport default LineString;\n//# sourceMappingURL=LineString.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/Feature\n */\nimport BaseObject from './Object.js';\nimport EventType from './events/EventType.js';\nimport { assert } from './asserts.js';\nimport { listen, unlistenByKey } from './events.js';\n/**\n * @typedef {typeof Feature|typeof import(\"./render/Feature.js\").default} FeatureClass\n */\n/**\n * @typedef {Feature|import(\"./render/Feature.js\").default} FeatureLike\n */\n/***\n * @template Return\n * @typedef {import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature &\n * import(\"./Observable\").CombinedOnSignature} FeatureOnSignature\n */\n/**\n * @classdesc\n * A vector object for geographic features with a geometry and other\n * attribute properties, similar to the features in vector file formats like\n * GeoJSON.\n *\n * Features can be styled individually with `setStyle`; otherwise they use the\n * style of their vector layer.\n *\n * Note that attribute properties are set as {@link module:ol/Object} properties on\n * the feature object, so they are observable, and have get/set accessors.\n *\n * Typically, a feature has a single geometry property. You can set the\n * geometry using the `setGeometry` method and get it with `getGeometry`.\n * It is possible to store more than one geometry on a feature using attribute\n * properties. By default, the geometry used for rendering is identified by\n * the property name `geometry`. If you want to use another geometry property\n * for rendering, use the `setGeometryName` method to change the attribute\n * property associated with the geometry for the feature. For example:\n *\n * ```js\n *\n * import Feature from 'ol/Feature';\n * import Polygon from 'ol/geom/Polygon';\n * import Point from 'ol/geom/Point';\n *\n * var feature = new Feature({\n * geometry: new Polygon(polyCoords),\n * labelPoint: new Point(labelCoords),\n * name: 'My Polygon'\n * });\n *\n * // get the polygon geometry\n * var poly = feature.getGeometry();\n *\n * // Render the feature as a point using the coordinates from labelPoint\n * feature.setGeometryName('labelPoint');\n *\n * // get the point geometry\n * var point = feature.getGeometry();\n * ```\n *\n * @api\n * @template {import(\"./geom/Geometry.js\").default} Geometry\n */\nvar Feature = /** @class */ (function (_super) {\n __extends(Feature, _super);\n /**\n * @param {Geometry|Object} [opt_geometryOrProperties]\n * You may pass a Geometry object directly, or an object literal containing\n * properties. If you pass an object literal, you may include a Geometry\n * associated with a `geometry` key.\n */\n function Feature(opt_geometryOrProperties) {\n var _this = _super.call(this) || this;\n /***\n * @type {FeatureOnSignature}\n */\n _this.on;\n /***\n * @type {FeatureOnSignature}\n */\n _this.once;\n /***\n * @type {FeatureOnSignature}\n */\n _this.un;\n /**\n * @private\n * @type {number|string|undefined}\n */\n _this.id_ = undefined;\n /**\n * @type {string}\n * @private\n */\n _this.geometryName_ = 'geometry';\n /**\n * User provided style.\n * @private\n * @type {import(\"./style/Style.js\").StyleLike}\n */\n _this.style_ = null;\n /**\n * @private\n * @type {import(\"./style/Style.js\").StyleFunction|undefined}\n */\n _this.styleFunction_ = undefined;\n /**\n * @private\n * @type {?import(\"./events.js\").EventsKey}\n */\n _this.geometryChangeKey_ = null;\n _this.addChangeListener(_this.geometryName_, _this.handleGeometryChanged_);\n if (opt_geometryOrProperties) {\n if (typeof (\n /** @type {?} */ (opt_geometryOrProperties).getSimplifiedGeometry) === 'function') {\n var geometry = /** @type {Geometry} */ (opt_geometryOrProperties);\n _this.setGeometry(geometry);\n }\n else {\n /** @type {Object} */\n var properties = opt_geometryOrProperties;\n _this.setProperties(properties);\n }\n }\n return _this;\n }\n /**\n * Clone this feature. If the original feature has a geometry it\n * is also cloned. The feature id is not set in the clone.\n * @return {Feature} The clone.\n * @api\n */\n Feature.prototype.clone = function () {\n var clone = new Feature(this.hasProperties() ? this.getProperties() : null);\n clone.setGeometryName(this.getGeometryName());\n var geometry = this.getGeometry();\n if (geometry) {\n clone.setGeometry(geometry.clone());\n }\n var style = this.getStyle();\n if (style) {\n clone.setStyle(style);\n }\n return clone;\n };\n /**\n * Get the feature's default geometry. A feature may have any number of named\n * geometries. The \"default\" geometry (the one that is rendered by default) is\n * set when calling {@link module:ol/Feature~Feature#setGeometry}.\n * @return {Geometry|undefined} The default geometry for the feature.\n * @api\n * @observable\n */\n Feature.prototype.getGeometry = function () {\n return /** @type {Geometry|undefined} */ (this.get(this.geometryName_));\n };\n /**\n * Get the feature identifier. This is a stable identifier for the feature and\n * is either set when reading data from a remote source or set explicitly by\n * calling {@link module:ol/Feature~Feature#setId}.\n * @return {number|string|undefined} Id.\n * @api\n */\n Feature.prototype.getId = function () {\n return this.id_;\n };\n /**\n * Get the name of the feature's default geometry. By default, the default\n * geometry is named `geometry`.\n * @return {string} Get the property name associated with the default geometry\n * for this feature.\n * @api\n */\n Feature.prototype.getGeometryName = function () {\n return this.geometryName_;\n };\n /**\n * Get the feature's style. Will return what was provided to the\n * {@link module:ol/Feature~Feature#setStyle} method.\n * @return {import(\"./style/Style.js\").StyleLike|undefined} The feature style.\n * @api\n */\n Feature.prototype.getStyle = function () {\n return this.style_;\n };\n /**\n * Get the feature's style function.\n * @return {import(\"./style/Style.js\").StyleFunction|undefined} Return a function\n * representing the current style of this feature.\n * @api\n */\n Feature.prototype.getStyleFunction = function () {\n return this.styleFunction_;\n };\n /**\n * @private\n */\n Feature.prototype.handleGeometryChange_ = function () {\n this.changed();\n };\n /**\n * @private\n */\n Feature.prototype.handleGeometryChanged_ = function () {\n if (this.geometryChangeKey_) {\n unlistenByKey(this.geometryChangeKey_);\n this.geometryChangeKey_ = null;\n }\n var geometry = this.getGeometry();\n if (geometry) {\n this.geometryChangeKey_ = listen(geometry, EventType.CHANGE, this.handleGeometryChange_, this);\n }\n this.changed();\n };\n /**\n * Set the default geometry for the feature. This will update the property\n * with the name returned by {@link module:ol/Feature~Feature#getGeometryName}.\n * @param {Geometry|undefined} geometry The new geometry.\n * @api\n * @observable\n */\n Feature.prototype.setGeometry = function (geometry) {\n this.set(this.geometryName_, geometry);\n };\n /**\n * Set the style for the feature to override the layer style. This can be a\n * single style object, an array of styles, or a function that takes a\n * resolution and returns an array of styles. To unset the feature style, call\n * `setStyle()` without arguments or a falsey value.\n * @param {import(\"./style/Style.js\").StyleLike} [opt_style] Style for this feature.\n * @api\n * @fires module:ol/events/Event~BaseEvent#event:change\n */\n Feature.prototype.setStyle = function (opt_style) {\n this.style_ = opt_style;\n this.styleFunction_ = !opt_style\n ? undefined\n : createStyleFunction(opt_style);\n this.changed();\n };\n /**\n * Set the feature id. The feature id is considered stable and may be used when\n * requesting features or comparing identifiers returned from a remote source.\n * The feature id can be used with the\n * {@link module:ol/source/Vector~VectorSource#getFeatureById} method.\n * @param {number|string|undefined} id The feature id.\n * @api\n * @fires module:ol/events/Event~BaseEvent#event:change\n */\n Feature.prototype.setId = function (id) {\n this.id_ = id;\n this.changed();\n };\n /**\n * Set the property name to be used when getting the feature's default geometry.\n * When calling {@link module:ol/Feature~Feature#getGeometry}, the value of the property with\n * this name will be returned.\n * @param {string} name The property name of the default geometry.\n * @api\n */\n Feature.prototype.setGeometryName = function (name) {\n this.removeChangeListener(this.geometryName_, this.handleGeometryChanged_);\n this.geometryName_ = name;\n this.addChangeListener(this.geometryName_, this.handleGeometryChanged_);\n this.handleGeometryChanged_();\n };\n return Feature;\n}(BaseObject));\n/**\n * Convert the provided object into a feature style function. Functions passed\n * through unchanged. Arrays of Style or single style objects wrapped\n * in a new feature style function.\n * @param {!import(\"./style/Style.js\").StyleFunction|!Array|!import(\"./style/Style.js\").default} obj\n * A feature style function, a single style, or an array of styles.\n * @return {import(\"./style/Style.js\").StyleFunction} A style function.\n */\nexport function createStyleFunction(obj) {\n if (typeof obj === 'function') {\n return obj;\n }\n else {\n /**\n * @type {Array}\n */\n var styles_1;\n if (Array.isArray(obj)) {\n styles_1 = obj;\n }\n else {\n assert(typeof ( /** @type {?} */(obj).getZIndex) === 'function', 41); // Expected an `import(\"./style/Style.js\").Style` or an array of `import(\"./style/Style.js\").Style`\n var style = /** @type {import(\"./style/Style.js\").default} */ (obj);\n styles_1 = [style];\n }\n return function () {\n return styles_1;\n };\n }\n}\nexport default Feature;\n//# sourceMappingURL=Feature.js.map","/**\n * @module ol/style/IconAnchorUnits\n */\n/**\n * Icon anchor units. One of 'fraction', 'pixels'.\n * @enum {string}\n */\nexport default {\n /**\n * Anchor is a fraction\n * @api\n */\n FRACTION: 'fraction',\n /**\n * Anchor is in pixels\n * @api\n */\n PIXELS: 'pixels',\n};\n//# sourceMappingURL=IconAnchorUnits.js.map","/**\n * @module ol/style/IconOrigin\n */\n/**\n * Icon origin. One of 'bottom-left', 'bottom-right', 'top-left', 'top-right'.\n * @enum {string}\n */\nexport default {\n /**\n * Origin is at bottom left\n * @api\n */\n BOTTOM_LEFT: 'bottom-left',\n /**\n * Origin is at bottom right\n * @api\n */\n BOTTOM_RIGHT: 'bottom-right',\n /**\n * Origin is at top left\n * @api\n */\n TOP_LEFT: 'top-left',\n /**\n * Origin is at top right\n * @api\n */\n TOP_RIGHT: 'top-right',\n};\n//# sourceMappingURL=IconOrigin.js.map","/**\n * @module ol/ImageState\n */\n/**\n * @enum {number}\n */\nexport default {\n IDLE: 0,\n LOADING: 1,\n LOADED: 2,\n ERROR: 3,\n EMPTY: 4,\n};\n//# sourceMappingURL=ImageState.js.map","/**\n * @module ol/size\n */\n/**\n * An array of numbers representing a size: `[width, height]`.\n * @typedef {Array} Size\n * @api\n */\n/**\n * Returns a buffered size.\n * @param {Size} size Size.\n * @param {number} num The amount by which to buffer.\n * @param {Size} [opt_size] Optional reusable size array.\n * @return {Size} The buffered size.\n */\nexport function buffer(size, num, opt_size) {\n if (opt_size === undefined) {\n opt_size = [0, 0];\n }\n opt_size[0] = size[0] + 2 * num;\n opt_size[1] = size[1] + 2 * num;\n return opt_size;\n}\n/**\n * Determines if a size has a positive area.\n * @param {Size} size The size to test.\n * @return {boolean} The size has a positive area.\n */\nexport function hasArea(size) {\n return size[0] > 0 && size[1] > 0;\n}\n/**\n * Returns a size scaled by a ratio. The result will be an array of integers.\n * @param {Size} size Size.\n * @param {number} ratio Ratio.\n * @param {Size} [opt_size] Optional reusable size array.\n * @return {Size} The scaled size.\n */\nexport function scale(size, ratio, opt_size) {\n if (opt_size === undefined) {\n opt_size = [0, 0];\n }\n opt_size[0] = (size[0] * ratio + 0.5) | 0;\n opt_size[1] = (size[1] * ratio + 0.5) | 0;\n return opt_size;\n}\n/**\n * Returns an `Size` array for the passed in number (meaning: square) or\n * `Size` array.\n * (meaning: non-square),\n * @param {number|Size} size Width and height.\n * @param {Size} [opt_size] Optional reusable size array.\n * @return {Size} Size.\n * @api\n */\nexport function toSize(size, opt_size) {\n if (Array.isArray(size)) {\n return size;\n }\n else {\n if (opt_size === undefined) {\n opt_size = [size, size];\n }\n else {\n opt_size[0] = size;\n opt_size[1] = size;\n }\n return opt_size;\n }\n}\n//# sourceMappingURL=size.js.map","/**\n * @module ol/style/Image\n */\nimport { abstract } from '../util.js';\nimport { toSize } from '../size.js';\n/**\n * @typedef {Object} Options\n * @property {number} opacity Opacity.\n * @property {boolean} rotateWithView If the image should get rotated with the view.\n * @property {number} rotation Rotation.\n * @property {number|import(\"../size.js\").Size} scale Scale.\n * @property {Array} displacement Displacement.\n */\n/**\n * @classdesc\n * A base class used for creating subclasses and not instantiated in\n * apps. Base class for {@link module:ol/style/Icon~Icon}, {@link module:ol/style/Circle~CircleStyle} and\n * {@link module:ol/style/RegularShape~RegularShape}.\n * @abstract\n * @api\n */\nvar ImageStyle = /** @class */ (function () {\n /**\n * @param {Options} options Options.\n */\n function ImageStyle(options) {\n /**\n * @private\n * @type {number}\n */\n this.opacity_ = options.opacity;\n /**\n * @private\n * @type {boolean}\n */\n this.rotateWithView_ = options.rotateWithView;\n /**\n * @private\n * @type {number}\n */\n this.rotation_ = options.rotation;\n /**\n * @private\n * @type {number|import(\"../size.js\").Size}\n */\n this.scale_ = options.scale;\n /**\n * @private\n * @type {import(\"../size.js\").Size}\n */\n this.scaleArray_ = toSize(options.scale);\n /**\n * @private\n * @type {Array}\n */\n this.displacement_ = options.displacement;\n }\n /**\n * Clones the style.\n * @return {ImageStyle} The cloned style.\n * @api\n */\n ImageStyle.prototype.clone = function () {\n var scale = this.getScale();\n return new ImageStyle({\n opacity: this.getOpacity(),\n scale: Array.isArray(scale) ? scale.slice() : scale,\n rotation: this.getRotation(),\n rotateWithView: this.getRotateWithView(),\n displacement: this.getDisplacement().slice(),\n });\n };\n /**\n * Get the symbolizer opacity.\n * @return {number} Opacity.\n * @api\n */\n ImageStyle.prototype.getOpacity = function () {\n return this.opacity_;\n };\n /**\n * Determine whether the symbolizer rotates with the map.\n * @return {boolean} Rotate with map.\n * @api\n */\n ImageStyle.prototype.getRotateWithView = function () {\n return this.rotateWithView_;\n };\n /**\n * Get the symoblizer rotation.\n * @return {number} Rotation.\n * @api\n */\n ImageStyle.prototype.getRotation = function () {\n return this.rotation_;\n };\n /**\n * Get the symbolizer scale.\n * @return {number|import(\"../size.js\").Size} Scale.\n * @api\n */\n ImageStyle.prototype.getScale = function () {\n return this.scale_;\n };\n /**\n * Get the symbolizer scale array.\n * @return {import(\"../size.js\").Size} Scale array.\n */\n ImageStyle.prototype.getScaleArray = function () {\n return this.scaleArray_;\n };\n /**\n * Get the displacement of the shape\n * @return {Array} Shape's center displacement\n * @api\n */\n ImageStyle.prototype.getDisplacement = function () {\n return this.displacement_;\n };\n /**\n * Get the anchor point in pixels. The anchor determines the center point for the\n * symbolizer.\n * @abstract\n * @return {Array} Anchor.\n */\n ImageStyle.prototype.getAnchor = function () {\n return abstract();\n };\n /**\n * Get the image element for the symbolizer.\n * @abstract\n * @param {number} pixelRatio Pixel ratio.\n * @return {HTMLCanvasElement|HTMLVideoElement|HTMLImageElement} Image element.\n */\n ImageStyle.prototype.getImage = function (pixelRatio) {\n return abstract();\n };\n /**\n * @abstract\n * @return {HTMLCanvasElement|HTMLVideoElement|HTMLImageElement} Image element.\n */\n ImageStyle.prototype.getHitDetectionImage = function () {\n return abstract();\n };\n /**\n * Get the image pixel ratio.\n * @param {number} pixelRatio Pixel ratio.\n * @return {number} Pixel ratio.\n */\n ImageStyle.prototype.getPixelRatio = function (pixelRatio) {\n return 1;\n };\n /**\n * @abstract\n * @return {import(\"../ImageState.js\").default} Image state.\n */\n ImageStyle.prototype.getImageState = function () {\n return abstract();\n };\n /**\n * @abstract\n * @return {import(\"../size.js\").Size} Image size.\n */\n ImageStyle.prototype.getImageSize = function () {\n return abstract();\n };\n /**\n * Get the origin of the symbolizer.\n * @abstract\n * @return {Array} Origin.\n */\n ImageStyle.prototype.getOrigin = function () {\n return abstract();\n };\n /**\n * Get the size of the symbolizer (in pixels).\n * @abstract\n * @return {import(\"../size.js\").Size} Size.\n */\n ImageStyle.prototype.getSize = function () {\n return abstract();\n };\n /**\n * Set the opacity.\n *\n * @param {number} opacity Opacity.\n * @api\n */\n ImageStyle.prototype.setOpacity = function (opacity) {\n this.opacity_ = opacity;\n };\n /**\n * Set whether to rotate the style with the view.\n *\n * @param {boolean} rotateWithView Rotate with map.\n * @api\n */\n ImageStyle.prototype.setRotateWithView = function (rotateWithView) {\n this.rotateWithView_ = rotateWithView;\n };\n /**\n * Set the rotation.\n *\n * @param {number} rotation Rotation.\n * @api\n */\n ImageStyle.prototype.setRotation = function (rotation) {\n this.rotation_ = rotation;\n };\n /**\n * Set the scale.\n *\n * @param {number|import(\"../size.js\").Size} scale Scale.\n * @api\n */\n ImageStyle.prototype.setScale = function (scale) {\n this.scale_ = scale;\n this.scaleArray_ = toSize(scale);\n };\n /**\n * @abstract\n * @param {function(import(\"../events/Event.js\").default): void} listener Listener function.\n */\n ImageStyle.prototype.listenImageChange = function (listener) {\n abstract();\n };\n /**\n * Load not yet loaded URI.\n * @abstract\n */\n ImageStyle.prototype.load = function () {\n abstract();\n };\n /**\n * @abstract\n * @param {function(import(\"../events/Event.js\").default): void} listener Listener function.\n */\n ImageStyle.prototype.unlistenImageChange = function (listener) {\n abstract();\n };\n return ImageStyle;\n}());\nexport default ImageStyle;\n//# sourceMappingURL=Image.js.map","/**\n * @module ol/color\n */\nimport { assert } from './asserts.js';\nimport { clamp } from './math.js';\n/**\n * A color represented as a short array [red, green, blue, alpha].\n * red, green, and blue should be integers in the range 0..255 inclusive.\n * alpha should be a float in the range 0..1 inclusive. If no alpha value is\n * given then `1` will be used.\n * @typedef {Array} Color\n * @api\n */\n/**\n * This RegExp matches # followed by 3, 4, 6, or 8 hex digits.\n * @const\n * @type {RegExp}\n * @private\n */\nvar HEX_COLOR_RE_ = /^#([a-f0-9]{3}|[a-f0-9]{4}(?:[a-f0-9]{2}){0,2})$/i;\n/**\n * Regular expression for matching potential named color style strings.\n * @const\n * @type {RegExp}\n * @private\n */\nvar NAMED_COLOR_RE_ = /^([a-z]*)$|^hsla?\\(.*\\)$/i;\n/**\n * Return the color as an rgba string.\n * @param {Color|string} color Color.\n * @return {string} Rgba string.\n * @api\n */\nexport function asString(color) {\n if (typeof color === 'string') {\n return color;\n }\n else {\n return toString(color);\n }\n}\n/**\n * Return named color as an rgba string.\n * @param {string} color Named color.\n * @return {string} Rgb string.\n */\nfunction fromNamed(color) {\n var el = document.createElement('div');\n el.style.color = color;\n if (el.style.color !== '') {\n document.body.appendChild(el);\n var rgb = getComputedStyle(el).color;\n document.body.removeChild(el);\n return rgb;\n }\n else {\n return '';\n }\n}\n/**\n * @param {string} s String.\n * @return {Color} Color.\n */\nexport var fromString = (function () {\n // We maintain a small cache of parsed strings. To provide cheap LRU-like\n // semantics, whenever the cache grows too large we simply delete an\n // arbitrary 25% of the entries.\n /**\n * @const\n * @type {number}\n */\n var MAX_CACHE_SIZE = 1024;\n /**\n * @type {Object}\n */\n var cache = {};\n /**\n * @type {number}\n */\n var cacheSize = 0;\n return (\n /**\n * @param {string} s String.\n * @return {Color} Color.\n */\n function (s) {\n var color;\n if (cache.hasOwnProperty(s)) {\n color = cache[s];\n }\n else {\n if (cacheSize >= MAX_CACHE_SIZE) {\n var i = 0;\n for (var key in cache) {\n if ((i++ & 3) === 0) {\n delete cache[key];\n --cacheSize;\n }\n }\n }\n color = fromStringInternal_(s);\n cache[s] = color;\n ++cacheSize;\n }\n return color;\n });\n})();\n/**\n * Return the color as an array. This function maintains a cache of calculated\n * arrays which means the result should not be modified.\n * @param {Color|string} color Color.\n * @return {Color} Color.\n * @api\n */\nexport function asArray(color) {\n if (Array.isArray(color)) {\n return color;\n }\n else {\n return fromString(color);\n }\n}\n/**\n * @param {string} s String.\n * @private\n * @return {Color} Color.\n */\nfunction fromStringInternal_(s) {\n var r, g, b, a, color;\n if (NAMED_COLOR_RE_.exec(s)) {\n s = fromNamed(s);\n }\n if (HEX_COLOR_RE_.exec(s)) {\n // hex\n var n = s.length - 1; // number of hex digits\n var d = // number of digits per channel\n void 0; // number of digits per channel\n if (n <= 4) {\n d = 1;\n }\n else {\n d = 2;\n }\n var hasAlpha = n === 4 || n === 8;\n r = parseInt(s.substr(1 + 0 * d, d), 16);\n g = parseInt(s.substr(1 + 1 * d, d), 16);\n b = parseInt(s.substr(1 + 2 * d, d), 16);\n if (hasAlpha) {\n a = parseInt(s.substr(1 + 3 * d, d), 16);\n }\n else {\n a = 255;\n }\n if (d == 1) {\n r = (r << 4) + r;\n g = (g << 4) + g;\n b = (b << 4) + b;\n if (hasAlpha) {\n a = (a << 4) + a;\n }\n }\n color = [r, g, b, a / 255];\n }\n else if (s.indexOf('rgba(') == 0) {\n // rgba()\n color = s.slice(5, -1).split(',').map(Number);\n normalize(color);\n }\n else if (s.indexOf('rgb(') == 0) {\n // rgb()\n color = s.slice(4, -1).split(',').map(Number);\n color.push(1);\n normalize(color);\n }\n else {\n assert(false, 14); // Invalid color\n }\n return color;\n}\n/**\n * TODO this function is only used in the test, we probably shouldn't export it\n * @param {Color} color Color.\n * @return {Color} Clamped color.\n */\nexport function normalize(color) {\n color[0] = clamp((color[0] + 0.5) | 0, 0, 255);\n color[1] = clamp((color[1] + 0.5) | 0, 0, 255);\n color[2] = clamp((color[2] + 0.5) | 0, 0, 255);\n color[3] = clamp(color[3], 0, 1);\n return color;\n}\n/**\n * @param {Color} color Color.\n * @return {string} String.\n */\nexport function toString(color) {\n var r = color[0];\n if (r != (r | 0)) {\n r = (r + 0.5) | 0;\n }\n var g = color[1];\n if (g != (g | 0)) {\n g = (g + 0.5) | 0;\n }\n var b = color[2];\n if (b != (b | 0)) {\n b = (b + 0.5) | 0;\n }\n var a = color[3] === undefined ? 1 : color[3];\n return 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')';\n}\n/**\n * @param {string} s String.\n * @return {boolean} Whether the string is actually a valid color\n */\nexport function isStringColor(s) {\n if (NAMED_COLOR_RE_.test(s)) {\n s = fromNamed(s);\n }\n return (HEX_COLOR_RE_.test(s) || s.indexOf('rgba(') === 0 || s.indexOf('rgb(') === 0);\n}\n//# sourceMappingURL=color.js.map","/**\n * @module ol/style/IconImageCache\n */\nimport { asString } from '../color.js';\n/**\n * @classdesc\n * Singleton class. Available through {@link module:ol/style/IconImageCache~shared}.\n */\nvar IconImageCache = /** @class */ (function () {\n function IconImageCache() {\n /**\n * @type {!Object}\n * @private\n */\n this.cache_ = {};\n /**\n * @type {number}\n * @private\n */\n this.cacheSize_ = 0;\n /**\n * @type {number}\n * @private\n */\n this.maxCacheSize_ = 32;\n }\n /**\n * FIXME empty description for jsdoc\n */\n IconImageCache.prototype.clear = function () {\n this.cache_ = {};\n this.cacheSize_ = 0;\n };\n /**\n * @return {boolean} Can expire cache.\n */\n IconImageCache.prototype.canExpireCache = function () {\n return this.cacheSize_ > this.maxCacheSize_;\n };\n /**\n * FIXME empty description for jsdoc\n */\n IconImageCache.prototype.expire = function () {\n if (this.canExpireCache()) {\n var i = 0;\n for (var key in this.cache_) {\n var iconImage = this.cache_[key];\n if ((i++ & 3) === 0 && !iconImage.hasListener()) {\n delete this.cache_[key];\n --this.cacheSize_;\n }\n }\n }\n };\n /**\n * @param {string} src Src.\n * @param {?string} crossOrigin Cross origin.\n * @param {import(\"../color.js\").Color} color Color.\n * @return {import(\"./IconImage.js\").default} Icon image.\n */\n IconImageCache.prototype.get = function (src, crossOrigin, color) {\n var key = getKey(src, crossOrigin, color);\n return key in this.cache_ ? this.cache_[key] : null;\n };\n /**\n * @param {string} src Src.\n * @param {?string} crossOrigin Cross origin.\n * @param {import(\"../color.js\").Color} color Color.\n * @param {import(\"./IconImage.js\").default} iconImage Icon image.\n */\n IconImageCache.prototype.set = function (src, crossOrigin, color, iconImage) {\n var key = getKey(src, crossOrigin, color);\n this.cache_[key] = iconImage;\n ++this.cacheSize_;\n };\n /**\n * Set the cache size of the icon cache. Default is `32`. Change this value when\n * your map uses more than 32 different icon images and you are not caching icon\n * styles on the application level.\n * @param {number} maxCacheSize Cache max size.\n * @api\n */\n IconImageCache.prototype.setSize = function (maxCacheSize) {\n this.maxCacheSize_ = maxCacheSize;\n this.expire();\n };\n return IconImageCache;\n}());\n/**\n * @param {string} src Src.\n * @param {?string} crossOrigin Cross origin.\n * @param {import(\"../color.js\").Color} color Color.\n * @return {string} Cache key.\n */\nfunction getKey(src, crossOrigin, color) {\n var colorString = color ? asString(color) : 'null';\n return crossOrigin + ':' + src + ':' + colorString;\n}\nexport default IconImageCache;\n/**\n * The {@link module:ol/style/IconImageCache~IconImageCache} for\n * {@link module:ol/style/Icon~Icon} images.\n * @api\n */\nexport var shared = new IconImageCache();\n//# sourceMappingURL=IconImageCache.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/ImageBase\n */\nimport EventTarget from './events/Target.js';\nimport EventType from './events/EventType.js';\nimport { abstract } from './util.js';\n/**\n * @abstract\n */\nvar ImageBase = /** @class */ (function (_super) {\n __extends(ImageBase, _super);\n /**\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {number|undefined} resolution Resolution.\n * @param {number} pixelRatio Pixel ratio.\n * @param {import(\"./ImageState.js\").default} state State.\n */\n function ImageBase(extent, resolution, pixelRatio, state) {\n var _this = _super.call(this) || this;\n /**\n * @protected\n * @type {import(\"./extent.js\").Extent}\n */\n _this.extent = extent;\n /**\n * @private\n * @type {number}\n */\n _this.pixelRatio_ = pixelRatio;\n /**\n * @protected\n * @type {number|undefined}\n */\n _this.resolution = resolution;\n /**\n * @protected\n * @type {import(\"./ImageState.js\").default}\n */\n _this.state = state;\n return _this;\n }\n /**\n * @protected\n */\n ImageBase.prototype.changed = function () {\n this.dispatchEvent(EventType.CHANGE);\n };\n /**\n * @return {import(\"./extent.js\").Extent} Extent.\n */\n ImageBase.prototype.getExtent = function () {\n return this.extent;\n };\n /**\n * @abstract\n * @return {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} Image.\n */\n ImageBase.prototype.getImage = function () {\n return abstract();\n };\n /**\n * @return {number} PixelRatio.\n */\n ImageBase.prototype.getPixelRatio = function () {\n return this.pixelRatio_;\n };\n /**\n * @return {number} Resolution.\n */\n ImageBase.prototype.getResolution = function () {\n return /** @type {number} */ (this.resolution);\n };\n /**\n * @return {import(\"./ImageState.js\").default} State.\n */\n ImageBase.prototype.getState = function () {\n return this.state;\n };\n /**\n * Load not yet loaded URI.\n * @abstract\n */\n ImageBase.prototype.load = function () {\n abstract();\n };\n return ImageBase;\n}(EventTarget));\nexport default ImageBase;\n//# sourceMappingURL=ImageBase.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/Image\n */\nimport EventType from './events/EventType.js';\nimport ImageBase from './ImageBase.js';\nimport ImageState from './ImageState.js';\nimport { IMAGE_DECODE } from './has.js';\nimport { getHeight } from './extent.js';\nimport { listenOnce, unlistenByKey } from './events.js';\n/**\n * A function that takes an {@link module:ol/Image~Image} for the image and a\n * `{string}` for the src as arguments. It is supposed to make it so the\n * underlying image {@link module:ol/Image~Image#getImage} is assigned the\n * content specified by the src. If not specified, the default is\n *\n * function(image, src) {\n * image.getImage().src = src;\n * }\n *\n * Providing a custom `imageLoadFunction` can be useful to load images with\n * post requests or - in general - through XHR requests, where the src of the\n * image element would be set to a data URI when the content is loaded.\n *\n * @typedef {function(ImageWrapper, string): void} LoadFunction\n * @api\n */\nvar ImageWrapper = /** @class */ (function (_super) {\n __extends(ImageWrapper, _super);\n /**\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {number|undefined} resolution Resolution.\n * @param {number} pixelRatio Pixel ratio.\n * @param {string} src Image source URI.\n * @param {?string} crossOrigin Cross origin.\n * @param {LoadFunction} imageLoadFunction Image load function.\n */\n function ImageWrapper(extent, resolution, pixelRatio, src, crossOrigin, imageLoadFunction) {\n var _this = _super.call(this, extent, resolution, pixelRatio, ImageState.IDLE) || this;\n /**\n * @private\n * @type {string}\n */\n _this.src_ = src;\n /**\n * @private\n * @type {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement}\n */\n _this.image_ = new Image();\n if (crossOrigin !== null) {\n _this.image_.crossOrigin = crossOrigin;\n }\n /**\n * @private\n * @type {?function():void}\n */\n _this.unlisten_ = null;\n /**\n * @protected\n * @type {import(\"./ImageState.js\").default}\n */\n _this.state = ImageState.IDLE;\n /**\n * @private\n * @type {LoadFunction}\n */\n _this.imageLoadFunction_ = imageLoadFunction;\n return _this;\n }\n /**\n * @return {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} Image.\n * @api\n */\n ImageWrapper.prototype.getImage = function () {\n return this.image_;\n };\n /**\n * Tracks loading or read errors.\n *\n * @private\n */\n ImageWrapper.prototype.handleImageError_ = function () {\n this.state = ImageState.ERROR;\n this.unlistenImage_();\n this.changed();\n };\n /**\n * Tracks successful image load.\n *\n * @private\n */\n ImageWrapper.prototype.handleImageLoad_ = function () {\n if (this.resolution === undefined) {\n this.resolution = getHeight(this.extent) / this.image_.height;\n }\n this.state = ImageState.LOADED;\n this.unlistenImage_();\n this.changed();\n };\n /**\n * Load the image or retry if loading previously failed.\n * Loading is taken care of by the tile queue, and calling this method is\n * only needed for preloading or for reloading in case of an error.\n * @api\n */\n ImageWrapper.prototype.load = function () {\n if (this.state == ImageState.IDLE || this.state == ImageState.ERROR) {\n this.state = ImageState.LOADING;\n this.changed();\n this.imageLoadFunction_(this, this.src_);\n this.unlisten_ = listenImage(this.image_, this.handleImageLoad_.bind(this), this.handleImageError_.bind(this));\n }\n };\n /**\n * @param {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} image Image.\n */\n ImageWrapper.prototype.setImage = function (image) {\n this.image_ = image;\n this.resolution = getHeight(this.extent) / this.image_.height;\n };\n /**\n * Discards event handlers which listen for load completion or errors.\n *\n * @private\n */\n ImageWrapper.prototype.unlistenImage_ = function () {\n if (this.unlisten_) {\n this.unlisten_();\n this.unlisten_ = null;\n }\n };\n return ImageWrapper;\n}(ImageBase));\n/**\n * @param {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} image Image element.\n * @param {function():any} loadHandler Load callback function.\n * @param {function():any} errorHandler Error callback function.\n * @return {function():void} Callback to stop listening.\n */\nexport function listenImage(image, loadHandler, errorHandler) {\n var img = /** @type {HTMLImageElement} */ (image);\n if (img.src && IMAGE_DECODE) {\n var promise = img.decode();\n var listening_1 = true;\n var unlisten = function () {\n listening_1 = false;\n };\n promise\n .then(function () {\n if (listening_1) {\n loadHandler();\n }\n })\n .catch(function (error) {\n if (listening_1) {\n // FIXME: Unconditionally call errorHandler() when this bug is fixed upstream:\n // https://bugs.webkit.org/show_bug.cgi?id=198527\n if (error.name === 'EncodingError' &&\n error.message === 'Invalid image type.') {\n loadHandler();\n }\n else {\n errorHandler();\n }\n }\n });\n return unlisten;\n }\n var listenerKeys = [\n listenOnce(img, EventType.LOAD, loadHandler),\n listenOnce(img, EventType.ERROR, errorHandler),\n ];\n return function unlisten() {\n listenerKeys.forEach(unlistenByKey);\n };\n}\nexport default ImageWrapper;\n//# sourceMappingURL=Image.js.map","/**\n * @module ol/style/IconImage\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport EventTarget from '../events/Target.js';\nimport EventType from '../events/EventType.js';\nimport ImageState from '../ImageState.js';\nimport { asString } from '../color.js';\nimport { createCanvasContext2D } from '../dom.js';\nimport { shared as iconImageCache } from './IconImageCache.js';\nimport { listenImage } from '../Image.js';\n/**\n * @type {CanvasRenderingContext2D}\n */\nvar taintedTestContext = null;\nvar IconImage = /** @class */ (function (_super) {\n __extends(IconImage, _super);\n /**\n * @param {HTMLImageElement|HTMLCanvasElement} image Image.\n * @param {string|undefined} src Src.\n * @param {import(\"../size.js\").Size} size Size.\n * @param {?string} crossOrigin Cross origin.\n * @param {import(\"../ImageState.js\").default} imageState Image state.\n * @param {import(\"../color.js\").Color} color Color.\n */\n function IconImage(image, src, size, crossOrigin, imageState, color) {\n var _this = _super.call(this) || this;\n /**\n * @private\n * @type {HTMLImageElement|HTMLCanvasElement}\n */\n _this.hitDetectionImage_ = null;\n /**\n * @private\n * @type {HTMLImageElement|HTMLCanvasElement}\n */\n _this.image_ = !image ? new Image() : image;\n if (crossOrigin !== null) {\n /** @type {HTMLImageElement} */ (_this.image_).crossOrigin = crossOrigin;\n }\n /**\n * @private\n * @type {Object}\n */\n _this.canvas_ = {};\n /**\n * @private\n * @type {import(\"../color.js\").Color}\n */\n _this.color_ = color;\n /**\n * @private\n * @type {?function():void}\n */\n _this.unlisten_ = null;\n /**\n * @private\n * @type {import(\"../ImageState.js\").default}\n */\n _this.imageState_ = imageState;\n /**\n * @private\n * @type {import(\"../size.js\").Size}\n */\n _this.size_ = size;\n /**\n * @private\n * @type {string|undefined}\n */\n _this.src_ = src;\n /**\n * @private\n */\n _this.tainted_;\n return _this;\n }\n /**\n * @private\n * @return {boolean} The image canvas is tainted.\n */\n IconImage.prototype.isTainted_ = function () {\n if (this.tainted_ === undefined && this.imageState_ === ImageState.LOADED) {\n if (!taintedTestContext) {\n taintedTestContext = createCanvasContext2D(1, 1);\n }\n taintedTestContext.drawImage(this.image_, 0, 0);\n try {\n taintedTestContext.getImageData(0, 0, 1, 1);\n this.tainted_ = false;\n }\n catch (e) {\n taintedTestContext = null;\n this.tainted_ = true;\n }\n }\n return this.tainted_ === true;\n };\n /**\n * @private\n */\n IconImage.prototype.dispatchChangeEvent_ = function () {\n this.dispatchEvent(EventType.CHANGE);\n };\n /**\n * @private\n */\n IconImage.prototype.handleImageError_ = function () {\n this.imageState_ = ImageState.ERROR;\n this.unlistenImage_();\n this.dispatchChangeEvent_();\n };\n /**\n * @private\n */\n IconImage.prototype.handleImageLoad_ = function () {\n this.imageState_ = ImageState.LOADED;\n if (this.size_) {\n this.image_.width = this.size_[0];\n this.image_.height = this.size_[1];\n }\n else {\n this.size_ = [this.image_.width, this.image_.height];\n }\n this.unlistenImage_();\n this.dispatchChangeEvent_();\n };\n /**\n * @param {number} pixelRatio Pixel ratio.\n * @return {HTMLImageElement|HTMLCanvasElement} Image or Canvas element.\n */\n IconImage.prototype.getImage = function (pixelRatio) {\n this.replaceColor_(pixelRatio);\n return this.canvas_[pixelRatio] ? this.canvas_[pixelRatio] : this.image_;\n };\n /**\n * @param {number} pixelRatio Pixel ratio.\n * @return {number} Image or Canvas element.\n */\n IconImage.prototype.getPixelRatio = function (pixelRatio) {\n this.replaceColor_(pixelRatio);\n return this.canvas_[pixelRatio] ? pixelRatio : 1;\n };\n /**\n * @return {import(\"../ImageState.js\").default} Image state.\n */\n IconImage.prototype.getImageState = function () {\n return this.imageState_;\n };\n /**\n * @return {HTMLImageElement|HTMLCanvasElement} Image element.\n */\n IconImage.prototype.getHitDetectionImage = function () {\n if (!this.hitDetectionImage_) {\n if (this.isTainted_()) {\n var width = this.size_[0];\n var height = this.size_[1];\n var context = createCanvasContext2D(width, height);\n context.fillRect(0, 0, width, height);\n this.hitDetectionImage_ = context.canvas;\n }\n else {\n this.hitDetectionImage_ = this.image_;\n }\n }\n return this.hitDetectionImage_;\n };\n /**\n * Get the size of the icon (in pixels).\n * @return {import(\"../size.js\").Size} Image size.\n */\n IconImage.prototype.getSize = function () {\n return this.size_;\n };\n /**\n * @return {string|undefined} Image src.\n */\n IconImage.prototype.getSrc = function () {\n return this.src_;\n };\n /**\n * Load not yet loaded URI.\n */\n IconImage.prototype.load = function () {\n if (this.imageState_ == ImageState.IDLE) {\n this.imageState_ = ImageState.LOADING;\n try {\n /** @type {HTMLImageElement} */ (this.image_).src = this.src_;\n }\n catch (e) {\n this.handleImageError_();\n }\n this.unlisten_ = listenImage(this.image_, this.handleImageLoad_.bind(this), this.handleImageError_.bind(this));\n }\n };\n /**\n * @param {number} pixelRatio Pixel ratio.\n * @private\n */\n IconImage.prototype.replaceColor_ = function (pixelRatio) {\n if (!this.color_ || this.canvas_[pixelRatio]) {\n return;\n }\n var canvas = document.createElement('canvas');\n this.canvas_[pixelRatio] = canvas;\n canvas.width = Math.ceil(this.image_.width * pixelRatio);\n canvas.height = Math.ceil(this.image_.height * pixelRatio);\n var ctx = canvas.getContext('2d');\n ctx.scale(pixelRatio, pixelRatio);\n ctx.drawImage(this.image_, 0, 0);\n ctx.globalCompositeOperation = 'multiply';\n // Internet Explorer 11 does not support the multiply operation.\n // If the canvas is tainted in Internet Explorer this still produces\n // a solid color image with the shape of the icon.\n if (ctx.globalCompositeOperation === 'multiply' || this.isTainted_()) {\n ctx.fillStyle = asString(this.color_);\n ctx.fillRect(0, 0, canvas.width / pixelRatio, canvas.height / pixelRatio);\n ctx.globalCompositeOperation = 'destination-in';\n ctx.drawImage(this.image_, 0, 0);\n }\n else {\n var imgData = ctx.getImageData(0, 0, canvas.width, canvas.height);\n var data = imgData.data;\n var r = this.color_[0] / 255.0;\n var g = this.color_[1] / 255.0;\n var b = this.color_[2] / 255.0;\n var a = this.color_[3];\n for (var i = 0, ii = data.length; i < ii; i += 4) {\n data[i] *= r;\n data[i + 1] *= g;\n data[i + 2] *= b;\n data[i + 3] *= a;\n }\n ctx.putImageData(imgData, 0, 0);\n }\n };\n /**\n * Discards event handlers which listen for load completion or errors.\n *\n * @private\n */\n IconImage.prototype.unlistenImage_ = function () {\n if (this.unlisten_) {\n this.unlisten_();\n this.unlisten_ = null;\n }\n };\n return IconImage;\n}(EventTarget));\n/**\n * @param {HTMLImageElement|HTMLCanvasElement} image Image.\n * @param {string} src Src.\n * @param {import(\"../size.js\").Size} size Size.\n * @param {?string} crossOrigin Cross origin.\n * @param {import(\"../ImageState.js\").default} imageState Image state.\n * @param {import(\"../color.js\").Color} color Color.\n * @return {IconImage} Icon image.\n */\nexport function get(image, src, size, crossOrigin, imageState, color) {\n var iconImage = iconImageCache.get(src, crossOrigin, color);\n if (!iconImage) {\n iconImage = new IconImage(image, src, size, crossOrigin, imageState, color);\n iconImageCache.set(src, crossOrigin, color, iconImage);\n }\n return iconImage;\n}\nexport default IconImage;\n//# sourceMappingURL=IconImage.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/style/Icon\n */\nimport EventType from '../events/EventType.js';\nimport IconAnchorUnits from './IconAnchorUnits.js';\nimport IconOrigin from './IconOrigin.js';\nimport ImageState from '../ImageState.js';\nimport ImageStyle from './Image.js';\nimport { asArray } from '../color.js';\nimport { assert } from '../asserts.js';\nimport { get as getIconImage } from './IconImage.js';\nimport { getUid } from '../util.js';\n/**\n * @typedef {Object} Options\n * @property {Array} [anchor=[0.5, 0.5]] Anchor. Default value is the icon center.\n * @property {import(\"./IconOrigin.js\").default} [anchorOrigin='top-left'] Origin of the anchor: `bottom-left`, `bottom-right`,\n * `top-left` or `top-right`.\n * @property {import(\"./IconAnchorUnits.js\").default} [anchorXUnits='fraction'] Units in which the anchor x value is\n * specified. A value of `'fraction'` indicates the x value is a fraction of the icon. A value of `'pixels'` indicates\n * the x value in pixels.\n * @property {import(\"./IconAnchorUnits.js\").default} [anchorYUnits='fraction'] Units in which the anchor y value is\n * specified. A value of `'fraction'` indicates the y value is a fraction of the icon. A value of `'pixels'` indicates\n * the y value in pixels.\n * @property {import(\"../color.js\").Color|string} [color] Color to tint the icon. If not specified,\n * the icon will be left as is.\n * @property {null|string} [crossOrigin] The `crossOrigin` attribute for loaded images. Note that you must provide a\n * `crossOrigin` value if you want to access pixel data with the Canvas renderer.\n * See https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image for more detail.\n * @property {HTMLImageElement|HTMLCanvasElement} [img] Image object for the icon. If the `src` option is not provided then the\n * provided image must already be loaded. And in that case, it is required\n * to provide the size of the image, with the `imgSize` option.\n * @property {Array} [offset=[0, 0]] Offset, which, together with the size and the offset origin, define the\n * sub-rectangle to use from the original icon image.\n * @property {Array} [displacement=[0,0]] Displacement the icon\n * @property {import(\"./IconOrigin.js\").default} [offsetOrigin='top-left'] Origin of the offset: `bottom-left`, `bottom-right`,\n * `top-left` or `top-right`.\n * @property {number} [opacity=1] Opacity of the icon.\n * @property {number|import(\"../size.js\").Size} [scale=1] Scale.\n * @property {boolean} [rotateWithView=false] Whether to rotate the icon with the view.\n * @property {number} [rotation=0] Rotation in radians (positive rotation clockwise).\n * @property {import(\"../size.js\").Size} [size] Icon size in pixel. Can be used together with `offset` to define the\n * sub-rectangle to use from the origin (sprite) icon image.\n * @property {import(\"../size.js\").Size} [imgSize] Image size in pixels. Only required if `img` is set and `src` is not, and\n * for SVG images in Internet Explorer 11. The provided `imgSize` needs to match the actual size of the image.\n * @property {string} [src] Image source URI.\n */\n/**\n * @classdesc\n * Set icon style for vector features.\n * @api\n */\nvar Icon = /** @class */ (function (_super) {\n __extends(Icon, _super);\n /**\n * @param {Options} [opt_options] Options.\n */\n function Icon(opt_options) {\n var _this = this;\n var options = opt_options || {};\n /**\n * @type {number}\n */\n var opacity = options.opacity !== undefined ? options.opacity : 1;\n /**\n * @type {number}\n */\n var rotation = options.rotation !== undefined ? options.rotation : 0;\n /**\n * @type {number|import(\"../size.js\").Size}\n */\n var scale = options.scale !== undefined ? options.scale : 1;\n /**\n * @type {boolean}\n */\n var rotateWithView = options.rotateWithView !== undefined ? options.rotateWithView : false;\n _this = _super.call(this, {\n opacity: opacity,\n rotation: rotation,\n scale: scale,\n displacement: options.displacement !== undefined ? options.displacement : [0, 0],\n rotateWithView: rotateWithView,\n }) || this;\n /**\n * @private\n * @type {Array}\n */\n _this.anchor_ = options.anchor !== undefined ? options.anchor : [0.5, 0.5];\n /**\n * @private\n * @type {Array}\n */\n _this.normalizedAnchor_ = null;\n /**\n * @private\n * @type {import(\"./IconOrigin.js\").default}\n */\n _this.anchorOrigin_ =\n options.anchorOrigin !== undefined\n ? options.anchorOrigin\n : IconOrigin.TOP_LEFT;\n /**\n * @private\n * @type {import(\"./IconAnchorUnits.js\").default}\n */\n _this.anchorXUnits_ =\n options.anchorXUnits !== undefined\n ? options.anchorXUnits\n : IconAnchorUnits.FRACTION;\n /**\n * @private\n * @type {import(\"./IconAnchorUnits.js\").default}\n */\n _this.anchorYUnits_ =\n options.anchorYUnits !== undefined\n ? options.anchorYUnits\n : IconAnchorUnits.FRACTION;\n /**\n * @private\n * @type {?string}\n */\n _this.crossOrigin_ =\n options.crossOrigin !== undefined ? options.crossOrigin : null;\n /**\n * @type {HTMLImageElement|HTMLCanvasElement}\n */\n var image = options.img !== undefined ? options.img : null;\n /**\n * @type {import(\"../size.js\").Size}\n */\n var imgSize = options.imgSize !== undefined ? options.imgSize : null;\n /**\n * @type {string|undefined}\n */\n var src = options.src;\n assert(!(src !== undefined && image), 4); // `image` and `src` cannot be provided at the same time\n assert(!image || (image && imgSize), 5); // `imgSize` must be set when `image` is provided\n if ((src === undefined || src.length === 0) && image) {\n src = /** @type {HTMLImageElement} */ (image).src || getUid(image);\n }\n assert(src !== undefined && src.length > 0, 6); // A defined and non-empty `src` or `image` must be provided\n /**\n * @type {import(\"../ImageState.js\").default}\n */\n var imageState = options.src !== undefined ? ImageState.IDLE : ImageState.LOADED;\n /**\n * @private\n * @type {import(\"../color.js\").Color}\n */\n _this.color_ = options.color !== undefined ? asArray(options.color) : null;\n /**\n * @private\n * @type {import(\"./IconImage.js\").default}\n */\n _this.iconImage_ = getIconImage(image, \n /** @type {string} */ (src), imgSize, _this.crossOrigin_, imageState, _this.color_);\n /**\n * @private\n * @type {Array}\n */\n _this.offset_ = options.offset !== undefined ? options.offset : [0, 0];\n /**\n * @private\n * @type {import(\"./IconOrigin.js\").default}\n */\n _this.offsetOrigin_ =\n options.offsetOrigin !== undefined\n ? options.offsetOrigin\n : IconOrigin.TOP_LEFT;\n /**\n * @private\n * @type {Array}\n */\n _this.origin_ = null;\n /**\n * @private\n * @type {import(\"../size.js\").Size}\n */\n _this.size_ = options.size !== undefined ? options.size : null;\n return _this;\n }\n /**\n * Clones the style. The underlying Image/HTMLCanvasElement is not cloned.\n * @return {Icon} The cloned style.\n * @api\n */\n Icon.prototype.clone = function () {\n var scale = this.getScale();\n return new Icon({\n anchor: this.anchor_.slice(),\n anchorOrigin: this.anchorOrigin_,\n anchorXUnits: this.anchorXUnits_,\n anchorYUnits: this.anchorYUnits_,\n crossOrigin: this.crossOrigin_,\n color: this.color_ && this.color_.slice\n ? this.color_.slice()\n : this.color_ || undefined,\n src: this.getSrc(),\n offset: this.offset_.slice(),\n offsetOrigin: this.offsetOrigin_,\n size: this.size_ !== null ? this.size_.slice() : undefined,\n opacity: this.getOpacity(),\n scale: Array.isArray(scale) ? scale.slice() : scale,\n rotation: this.getRotation(),\n rotateWithView: this.getRotateWithView(),\n });\n };\n /**\n * Get the anchor point in pixels. The anchor determines the center point for the\n * symbolizer.\n * @return {Array} Anchor.\n * @api\n */\n Icon.prototype.getAnchor = function () {\n if (this.normalizedAnchor_) {\n return this.normalizedAnchor_;\n }\n var anchor = this.anchor_;\n var size = this.getSize();\n if (this.anchorXUnits_ == IconAnchorUnits.FRACTION ||\n this.anchorYUnits_ == IconAnchorUnits.FRACTION) {\n if (!size) {\n return null;\n }\n anchor = this.anchor_.slice();\n if (this.anchorXUnits_ == IconAnchorUnits.FRACTION) {\n anchor[0] *= size[0];\n }\n if (this.anchorYUnits_ == IconAnchorUnits.FRACTION) {\n anchor[1] *= size[1];\n }\n }\n if (this.anchorOrigin_ != IconOrigin.TOP_LEFT) {\n if (!size) {\n return null;\n }\n if (anchor === this.anchor_) {\n anchor = this.anchor_.slice();\n }\n if (this.anchorOrigin_ == IconOrigin.TOP_RIGHT ||\n this.anchorOrigin_ == IconOrigin.BOTTOM_RIGHT) {\n anchor[0] = -anchor[0] + size[0];\n }\n if (this.anchorOrigin_ == IconOrigin.BOTTOM_LEFT ||\n this.anchorOrigin_ == IconOrigin.BOTTOM_RIGHT) {\n anchor[1] = -anchor[1] + size[1];\n }\n }\n var displacement = this.getDisplacement();\n anchor[0] -= displacement[0];\n anchor[1] += displacement[1];\n this.normalizedAnchor_ = anchor;\n return this.normalizedAnchor_;\n };\n /**\n * Set the anchor point. The anchor determines the center point for the\n * symbolizer.\n *\n * @param {Array} anchor Anchor.\n * @api\n */\n Icon.prototype.setAnchor = function (anchor) {\n this.anchor_ = anchor;\n this.normalizedAnchor_ = null;\n };\n /**\n * Get the icon color.\n * @return {import(\"../color.js\").Color} Color.\n * @api\n */\n Icon.prototype.getColor = function () {\n return this.color_;\n };\n /**\n * Get the image icon.\n * @param {number} pixelRatio Pixel ratio.\n * @return {HTMLImageElement|HTMLCanvasElement} Image or Canvas element.\n * @api\n */\n Icon.prototype.getImage = function (pixelRatio) {\n return this.iconImage_.getImage(pixelRatio);\n };\n /**\n * Get the pixel ratio.\n * @param {number} pixelRatio Pixel ratio.\n * @return {number} The pixel ratio of the image.\n * @api\n */\n Icon.prototype.getPixelRatio = function (pixelRatio) {\n return this.iconImage_.getPixelRatio(pixelRatio);\n };\n /**\n * @return {import(\"../size.js\").Size} Image size.\n */\n Icon.prototype.getImageSize = function () {\n return this.iconImage_.getSize();\n };\n /**\n * @return {import(\"../ImageState.js\").default} Image state.\n */\n Icon.prototype.getImageState = function () {\n return this.iconImage_.getImageState();\n };\n /**\n * @return {HTMLImageElement|HTMLCanvasElement} Image element.\n */\n Icon.prototype.getHitDetectionImage = function () {\n return this.iconImage_.getHitDetectionImage();\n };\n /**\n * Get the origin of the symbolizer.\n * @return {Array} Origin.\n * @api\n */\n Icon.prototype.getOrigin = function () {\n if (this.origin_) {\n return this.origin_;\n }\n var offset = this.offset_;\n if (this.offsetOrigin_ != IconOrigin.TOP_LEFT) {\n var size = this.getSize();\n var iconImageSize = this.iconImage_.getSize();\n if (!size || !iconImageSize) {\n return null;\n }\n offset = offset.slice();\n if (this.offsetOrigin_ == IconOrigin.TOP_RIGHT ||\n this.offsetOrigin_ == IconOrigin.BOTTOM_RIGHT) {\n offset[0] = iconImageSize[0] - size[0] - offset[0];\n }\n if (this.offsetOrigin_ == IconOrigin.BOTTOM_LEFT ||\n this.offsetOrigin_ == IconOrigin.BOTTOM_RIGHT) {\n offset[1] = iconImageSize[1] - size[1] - offset[1];\n }\n }\n this.origin_ = offset;\n return this.origin_;\n };\n /**\n * Get the image URL.\n * @return {string|undefined} Image src.\n * @api\n */\n Icon.prototype.getSrc = function () {\n return this.iconImage_.getSrc();\n };\n /**\n * Get the size of the icon (in pixels).\n * @return {import(\"../size.js\").Size} Image size.\n * @api\n */\n Icon.prototype.getSize = function () {\n return !this.size_ ? this.iconImage_.getSize() : this.size_;\n };\n /**\n * @param {function(import(\"../events/Event.js\").default): void} listener Listener function.\n */\n Icon.prototype.listenImageChange = function (listener) {\n this.iconImage_.addEventListener(EventType.CHANGE, listener);\n };\n /**\n * Load not yet loaded URI.\n * When rendering a feature with an icon style, the vector renderer will\n * automatically call this method. However, you might want to call this\n * method yourself for preloading or other purposes.\n * @api\n */\n Icon.prototype.load = function () {\n this.iconImage_.load();\n };\n /**\n * @param {function(import(\"../events/Event.js\").default): void} listener Listener function.\n */\n Icon.prototype.unlistenImageChange = function (listener) {\n this.iconImage_.removeEventListener(EventType.CHANGE, listener);\n };\n return Icon;\n}(ImageStyle));\nexport default Icon;\n//# sourceMappingURL=Icon.js.map","/**\n * @module ol/layer/Property\n */\n/**\n * @enum {string}\n */\nexport default {\n OPACITY: 'opacity',\n VISIBLE: 'visible',\n EXTENT: 'extent',\n Z_INDEX: 'zIndex',\n MAX_RESOLUTION: 'maxResolution',\n MIN_RESOLUTION: 'minResolution',\n MAX_ZOOM: 'maxZoom',\n MIN_ZOOM: 'minZoom',\n SOURCE: 'source',\n};\n//# sourceMappingURL=Property.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/layer/Base\n */\nimport BaseObject from '../Object.js';\nimport LayerProperty from './Property.js';\nimport { abstract } from '../util.js';\nimport { assert } from '../asserts.js';\nimport { assign } from '../obj.js';\nimport { clamp } from '../math.js';\n/**\n * @typedef {import(\"../ObjectEventType\").Types|'change:extent'|'change:maxResolution'|'change:maxZoom'|\n * 'change:minResolution'|'change:minZoom'|'change:opacity'|'change:visible'|'change:zIndex'} BaseLayerObjectEventTypes\n */\n/***\n * @template Return\n * @typedef {import(\"../Observable\").OnSignature &\n * import(\"../Observable\").OnSignature &\n * import(\"../Observable\").CombinedOnSignature} BaseLayerOnSignature\n */\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-layer'] A CSS class name to set to the layer element.\n * @property {number} [opacity=1] Opacity (0, 1).\n * @property {boolean} [visible=true] Visibility.\n * @property {import(\"../extent.js\").Extent} [extent] The bounding extent for layer rendering. The layer will not be\n * rendered outside of this extent.\n * @property {number} [zIndex] The z-index for layer rendering. At rendering time, the layers\n * will be ordered, first by Z-index and then by position. When `undefined`, a `zIndex` of 0 is assumed\n * for layers that are added to the map's `layers` collection, or `Infinity` when the layer's `setMap()`\n * method was used.\n * @property {number} [minResolution] The minimum resolution (inclusive) at which this layer will be\n * visible.\n * @property {number} [maxResolution] The maximum resolution (exclusive) below which this layer will\n * be visible.\n * @property {number} [minZoom] The minimum view zoom level (exclusive) above which this layer will be\n * visible.\n * @property {number} [maxZoom] The maximum view zoom level (inclusive) at which this layer will\n * be visible.\n * @property {Object} [properties] Arbitrary observable properties. Can be accessed with `#get()` and `#set()`.\n */\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * Note that with {@link module:ol/layer/Base} and all its subclasses, any property set in\n * the options is set as a {@link module:ol/Object} property on the layer object, so\n * is observable, and has get/set accessors.\n *\n * @api\n */\nvar BaseLayer = /** @class */ (function (_super) {\n __extends(BaseLayer, _super);\n /**\n * @param {Options} options Layer options.\n */\n function BaseLayer(options) {\n var _this = _super.call(this) || this;\n /***\n * @type {BaseLayerOnSignature}\n */\n _this.on;\n /***\n * @type {BaseLayerOnSignature}\n */\n _this.once;\n /***\n * @type {BaseLayerOnSignature}\n */\n _this.un;\n /**\n * @type {Object}\n */\n var properties = assign({}, options);\n if (typeof options.properties === 'object') {\n delete properties.properties;\n assign(properties, options.properties);\n }\n properties[LayerProperty.OPACITY] =\n options.opacity !== undefined ? options.opacity : 1;\n assert(typeof properties[LayerProperty.OPACITY] === 'number', 64); // Layer opacity must be a number\n properties[LayerProperty.VISIBLE] =\n options.visible !== undefined ? options.visible : true;\n properties[LayerProperty.Z_INDEX] = options.zIndex;\n properties[LayerProperty.MAX_RESOLUTION] =\n options.maxResolution !== undefined ? options.maxResolution : Infinity;\n properties[LayerProperty.MIN_RESOLUTION] =\n options.minResolution !== undefined ? options.minResolution : 0;\n properties[LayerProperty.MIN_ZOOM] =\n options.minZoom !== undefined ? options.minZoom : -Infinity;\n properties[LayerProperty.MAX_ZOOM] =\n options.maxZoom !== undefined ? options.maxZoom : Infinity;\n /**\n * @type {string}\n * @private\n */\n _this.className_ =\n properties.className !== undefined ? options.className : 'ol-layer';\n delete properties.className;\n _this.setProperties(properties);\n /**\n * @type {import(\"./Layer.js\").State}\n * @private\n */\n _this.state_ = null;\n return _this;\n }\n /**\n * @return {string} CSS class name.\n */\n BaseLayer.prototype.getClassName = function () {\n return this.className_;\n };\n /**\n * This method is not meant to be called by layers or layer renderers because the state\n * is incorrect if the layer is included in a layer group.\n *\n * @param {boolean} [opt_managed] Layer is managed.\n * @return {import(\"./Layer.js\").State} Layer state.\n */\n BaseLayer.prototype.getLayerState = function (opt_managed) {\n /** @type {import(\"./Layer.js\").State} */\n var state = this.state_ ||\n /** @type {?} */ ({\n layer: this,\n managed: opt_managed === undefined ? true : opt_managed,\n });\n var zIndex = this.getZIndex();\n state.opacity = clamp(Math.round(this.getOpacity() * 100) / 100, 0, 1);\n state.sourceState = this.getSourceState();\n state.visible = this.getVisible();\n state.extent = this.getExtent();\n state.zIndex = zIndex === undefined && !state.managed ? Infinity : zIndex;\n state.maxResolution = this.getMaxResolution();\n state.minResolution = Math.max(this.getMinResolution(), 0);\n state.minZoom = this.getMinZoom();\n state.maxZoom = this.getMaxZoom();\n this.state_ = state;\n return state;\n };\n /**\n * @abstract\n * @param {Array} [opt_array] Array of layers (to be\n * modified in place).\n * @return {Array} Array of layers.\n */\n BaseLayer.prototype.getLayersArray = function (opt_array) {\n return abstract();\n };\n /**\n * @abstract\n * @param {Array} [opt_states] Optional list of layer\n * states (to be modified in place).\n * @return {Array} List of layer states.\n */\n BaseLayer.prototype.getLayerStatesArray = function (opt_states) {\n return abstract();\n };\n /**\n * Return the {@link module:ol/extent~Extent extent} of the layer or `undefined` if it\n * will be visible regardless of extent.\n * @return {import(\"../extent.js\").Extent|undefined} The layer extent.\n * @observable\n * @api\n */\n BaseLayer.prototype.getExtent = function () {\n return /** @type {import(\"../extent.js\").Extent|undefined} */ (this.get(LayerProperty.EXTENT));\n };\n /**\n * Return the maximum resolution of the layer.\n * @return {number} The maximum resolution of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.getMaxResolution = function () {\n return /** @type {number} */ (this.get(LayerProperty.MAX_RESOLUTION));\n };\n /**\n * Return the minimum resolution of the layer.\n * @return {number} The minimum resolution of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.getMinResolution = function () {\n return /** @type {number} */ (this.get(LayerProperty.MIN_RESOLUTION));\n };\n /**\n * Return the minimum zoom level of the layer.\n * @return {number} The minimum zoom level of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.getMinZoom = function () {\n return /** @type {number} */ (this.get(LayerProperty.MIN_ZOOM));\n };\n /**\n * Return the maximum zoom level of the layer.\n * @return {number} The maximum zoom level of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.getMaxZoom = function () {\n return /** @type {number} */ (this.get(LayerProperty.MAX_ZOOM));\n };\n /**\n * Return the opacity of the layer (between 0 and 1).\n * @return {number} The opacity of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.getOpacity = function () {\n return /** @type {number} */ (this.get(LayerProperty.OPACITY));\n };\n /**\n * @abstract\n * @return {import(\"../source/State.js\").default} Source state.\n */\n BaseLayer.prototype.getSourceState = function () {\n return abstract();\n };\n /**\n * Return the visibility of the layer (`true` or `false`).\n * @return {boolean} The visibility of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.getVisible = function () {\n return /** @type {boolean} */ (this.get(LayerProperty.VISIBLE));\n };\n /**\n * Return the Z-index of the layer, which is used to order layers before\n * rendering. The default Z-index is 0.\n * @return {number} The Z-index of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.getZIndex = function () {\n return /** @type {number} */ (this.get(LayerProperty.Z_INDEX));\n };\n /**\n * Set the extent at which the layer is visible. If `undefined`, the layer\n * will be visible at all extents.\n * @param {import(\"../extent.js\").Extent|undefined} extent The extent of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.setExtent = function (extent) {\n this.set(LayerProperty.EXTENT, extent);\n };\n /**\n * Set the maximum resolution at which the layer is visible.\n * @param {number} maxResolution The maximum resolution of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.setMaxResolution = function (maxResolution) {\n this.set(LayerProperty.MAX_RESOLUTION, maxResolution);\n };\n /**\n * Set the minimum resolution at which the layer is visible.\n * @param {number} minResolution The minimum resolution of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.setMinResolution = function (minResolution) {\n this.set(LayerProperty.MIN_RESOLUTION, minResolution);\n };\n /**\n * Set the maximum zoom (exclusive) at which the layer is visible.\n * Note that the zoom levels for layer visibility are based on the\n * view zoom level, which may be different from a tile source zoom level.\n * @param {number} maxZoom The maximum zoom of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.setMaxZoom = function (maxZoom) {\n this.set(LayerProperty.MAX_ZOOM, maxZoom);\n };\n /**\n * Set the minimum zoom (inclusive) at which the layer is visible.\n * Note that the zoom levels for layer visibility are based on the\n * view zoom level, which may be different from a tile source zoom level.\n * @param {number} minZoom The minimum zoom of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.setMinZoom = function (minZoom) {\n this.set(LayerProperty.MIN_ZOOM, minZoom);\n };\n /**\n * Set the opacity of the layer, allowed values range from 0 to 1.\n * @param {number} opacity The opacity of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.setOpacity = function (opacity) {\n assert(typeof opacity === 'number', 64); // Layer opacity must be a number\n this.set(LayerProperty.OPACITY, opacity);\n };\n /**\n * Set the visibility of the layer (`true` or `false`).\n * @param {boolean} visible The visibility of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.setVisible = function (visible) {\n this.set(LayerProperty.VISIBLE, visible);\n };\n /**\n * Set Z-index of the layer, which is used to order layers before rendering.\n * The default Z-index is 0.\n * @param {number} zindex The z-index of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.setZIndex = function (zindex) {\n this.set(LayerProperty.Z_INDEX, zindex);\n };\n /**\n * Clean up.\n */\n BaseLayer.prototype.disposeInternal = function () {\n if (this.state_) {\n this.state_.layer = null;\n this.state_ = null;\n }\n _super.prototype.disposeInternal.call(this);\n };\n return BaseLayer;\n}(BaseObject));\nexport default BaseLayer;\n//# sourceMappingURL=Base.js.map","/**\n * @module ol/render/EventType\n */\n/**\n * @enum {string}\n */\nexport default {\n /**\n * Triggered before a layer is rendered.\n * @event module:ol/render/Event~RenderEvent#prerender\n * @api\n */\n PRERENDER: 'prerender',\n /**\n * Triggered after a layer is rendered.\n * @event module:ol/render/Event~RenderEvent#postrender\n * @api\n */\n POSTRENDER: 'postrender',\n /**\n * Triggered before layers are rendered.\n * The event object will not have a `context` set.\n * @event module:ol/render/Event~RenderEvent#precompose\n * @api\n */\n PRECOMPOSE: 'precompose',\n /**\n * Triggered after all layers are rendered.\n * The event object will not have a `context` set.\n * @event module:ol/render/Event~RenderEvent#postcompose\n * @api\n */\n POSTCOMPOSE: 'postcompose',\n /**\n * Triggered when rendering is complete, i.e. all sources and tiles have\n * finished loading for the current viewport, and all tiles are faded in.\n * The event object will not have a `context` set.\n * @event module:ol/render/Event~RenderEvent#rendercomplete\n * @api\n */\n RENDERCOMPLETE: 'rendercomplete',\n};\n/**\n * @typedef {'postrender'|'precompose'|'postcompose'|'rendercomplete'} MapRenderEventTypes\n */\n/**\n * @typedef {'postrender'|'prerender'} LayerRenderEventTypes\n */\n//# sourceMappingURL=EventType.js.map","/**\n * @module ol/source/State\n */\n/**\n * @enum {string}\n * State of the source, one of 'undefined', 'loading', 'ready' or 'error'.\n */\nexport default {\n UNDEFINED: 'undefined',\n LOADING: 'loading',\n READY: 'ready',\n ERROR: 'error',\n};\n//# sourceMappingURL=State.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/layer/Layer\n */\nimport BaseLayer from './Base.js';\nimport EventType from '../events/EventType.js';\nimport LayerProperty from './Property.js';\nimport RenderEventType from '../render/EventType.js';\nimport SourceState from '../source/State.js';\nimport { assert } from '../asserts.js';\nimport { assign } from '../obj.js';\nimport { listen, unlistenByKey } from '../events.js';\n/**\n * @typedef {function(import(\"../PluggableMap.js\").FrameState):HTMLElement} RenderFunction\n */\n/***\n * @template Return\n * @typedef {import(\"../Observable\").OnSignature &\n * import(\"../Observable\").OnSignature &\n * import(\"../Observable\").OnSignature &\n * import(\"../Observable\").CombinedOnSignature} LayerOnSignature\n */\n/**\n * @template {import(\"../source/Source.js\").default} SourceType\n * @typedef {Object} Options\n * @property {string} [className='ol-layer'] A CSS class name to set to the layer element.\n * @property {number} [opacity=1] Opacity (0, 1).\n * @property {boolean} [visible=true] Visibility.\n * @property {import(\"../extent.js\").Extent} [extent] The bounding extent for layer rendering. The layer will not be\n * rendered outside of this extent.\n * @property {number} [zIndex] The z-index for layer rendering. At rendering time, the layers\n * will be ordered, first by Z-index and then by position. When `undefined`, a `zIndex` of 0 is assumed\n * for layers that are added to the map's `layers` collection, or `Infinity` when the layer's `setMap()`\n * method was used.\n * @property {number} [minResolution] The minimum resolution (inclusive) at which this layer will be\n * visible.\n * @property {number} [maxResolution] The maximum resolution (exclusive) below which this layer will\n * be visible.\n * @property {number} [minZoom] The minimum view zoom level (exclusive) above which this layer will be\n * visible.\n * @property {number} [maxZoom] The maximum view zoom level (inclusive) at which this layer will\n * be visible.\n * @property {SourceType} [source] Source for this layer. If not provided to the constructor,\n * the source can be set by calling {@link module:ol/layer/Layer~Layer#setSource layer.setSource(source)} after\n * construction.\n * @property {import(\"../PluggableMap.js\").default} [map] Map.\n * @property {RenderFunction} [render] Render function. Takes the frame state as input and is expected to return an\n * HTML element. Will overwrite the default rendering for the layer.\n * @property {Object} [properties] Arbitrary observable properties. Can be accessed with `#get()` and `#set()`.\n */\n/**\n * @typedef {Object} State\n * @property {import(\"./Layer.js\").default} layer Layer.\n * @property {number} opacity Opacity, the value is rounded to two digits to appear after the decimal point.\n * @property {import(\"../source/State.js\").default} sourceState SourceState.\n * @property {boolean} visible Visible.\n * @property {boolean} managed Managed.\n * @property {import(\"../extent.js\").Extent} [extent] Extent.\n * @property {number} zIndex ZIndex.\n * @property {number} maxResolution Maximum resolution.\n * @property {number} minResolution Minimum resolution.\n * @property {number} minZoom Minimum zoom.\n * @property {number} maxZoom Maximum zoom.\n */\n/**\n * @classdesc\n * Base class from which all layer types are derived. This should only be instantiated\n * in the case where a custom layer is be added to the map with a custom `render` function.\n * Such a function can be specified in the `options` object, and is expected to return an HTML element.\n *\n * A visual representation of raster or vector map data.\n * Layers group together those properties that pertain to how the data is to be\n * displayed, irrespective of the source of that data.\n *\n * Layers are usually added to a map with {@link import(\"../PluggableMap.js\").default#addLayer map.addLayer()}. Components\n * like {@link module:ol/interaction/Select~Select} use unmanaged layers\n * internally. These unmanaged layers are associated with the map using\n * {@link module:ol/layer/Layer~Layer#setMap} instead.\n *\n * A generic `change` event is fired when the state of the source changes.\n *\n * Please note that for performance reasons several layers might get rendered to\n * the same HTML element, which will cause {@link import(\"../PluggableMap.js\").default#forEachLayerAtPixel map.forEachLayerAtPixel()} to\n * give false positives. To avoid this, apply different `className` properties to the\n * layers at creation time.\n *\n * @fires import(\"../render/Event.js\").RenderEvent#prerender\n * @fires import(\"../render/Event.js\").RenderEvent#postrender\n *\n * @template {import(\"../source/Source.js\").default} SourceType\n * @api\n */\nvar Layer = /** @class */ (function (_super) {\n __extends(Layer, _super);\n /**\n * @param {Options} options Layer options.\n */\n function Layer(options) {\n var _this = this;\n var baseOptions = assign({}, options);\n delete baseOptions.source;\n _this = _super.call(this, baseOptions) || this;\n /***\n * @type {LayerOnSignature}\n */\n _this.on;\n /***\n * @type {LayerOnSignature}\n */\n _this.once;\n /***\n * @type {LayerOnSignature}\n */\n _this.un;\n /**\n * @private\n * @type {?import(\"../events.js\").EventsKey}\n */\n _this.mapPrecomposeKey_ = null;\n /**\n * @private\n * @type {?import(\"../events.js\").EventsKey}\n */\n _this.mapRenderKey_ = null;\n /**\n * @private\n * @type {?import(\"../events.js\").EventsKey}\n */\n _this.sourceChangeKey_ = null;\n /**\n * @private\n * @type {import(\"../renderer/Layer.js\").default}\n */\n _this.renderer_ = null;\n // Overwrite default render method with a custom one\n if (options.render) {\n _this.render = options.render;\n }\n if (options.map) {\n _this.setMap(options.map);\n }\n _this.addChangeListener(LayerProperty.SOURCE, _this.handleSourcePropertyChange_);\n var source = options.source\n ? /** @type {SourceType} */ (options.source)\n : null;\n _this.setSource(source);\n return _this;\n }\n /**\n * @param {Array} [opt_array] Array of layers (to be modified in place).\n * @return {Array} Array of layers.\n */\n Layer.prototype.getLayersArray = function (opt_array) {\n var array = opt_array ? opt_array : [];\n array.push(this);\n return array;\n };\n /**\n * @param {Array} [opt_states] Optional list of layer states (to be modified in place).\n * @return {Array} List of layer states.\n */\n Layer.prototype.getLayerStatesArray = function (opt_states) {\n var states = opt_states ? opt_states : [];\n states.push(this.getLayerState());\n return states;\n };\n /**\n * Get the layer source.\n * @return {SourceType} The layer source (or `null` if not yet set).\n * @observable\n * @api\n */\n Layer.prototype.getSource = function () {\n return /** @type {SourceType} */ (this.get(LayerProperty.SOURCE)) || null;\n };\n /**\n * @return {import(\"../source/State.js\").default} Source state.\n */\n Layer.prototype.getSourceState = function () {\n var source = this.getSource();\n return !source ? SourceState.UNDEFINED : source.getState();\n };\n /**\n * @private\n */\n Layer.prototype.handleSourceChange_ = function () {\n this.changed();\n };\n /**\n * @private\n */\n Layer.prototype.handleSourcePropertyChange_ = function () {\n if (this.sourceChangeKey_) {\n unlistenByKey(this.sourceChangeKey_);\n this.sourceChangeKey_ = null;\n }\n var source = this.getSource();\n if (source) {\n this.sourceChangeKey_ = listen(source, EventType.CHANGE, this.handleSourceChange_, this);\n }\n this.changed();\n };\n /**\n * @param {import(\"../pixel\").Pixel} pixel Pixel.\n * @return {Promise>} Promise that resolves with\n * an array of features.\n */\n Layer.prototype.getFeatures = function (pixel) {\n if (!this.renderer_) {\n return new Promise(function (resolve) { return resolve([]); });\n }\n return this.renderer_.getFeatures(pixel);\n };\n /**\n * In charge to manage the rendering of the layer. One layer type is\n * bounded with one layer renderer.\n * @param {?import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n * @param {HTMLElement} target Target which the renderer may (but need not) use\n * for rendering its content.\n * @return {HTMLElement} The rendered element.\n */\n Layer.prototype.render = function (frameState, target) {\n var layerRenderer = this.getRenderer();\n if (layerRenderer.prepareFrame(frameState)) {\n return layerRenderer.renderFrame(frameState, target);\n }\n };\n /**\n * Sets the layer to be rendered on top of other layers on a map. The map will\n * not manage this layer in its layers collection, and the callback in\n * {@link module:ol/Map~Map#forEachLayerAtPixel} will receive `null` as layer. This\n * is useful for temporary layers. To remove an unmanaged layer from the map,\n * use `#setMap(null)`.\n *\n * To add the layer to a map and have it managed by the map, use\n * {@link module:ol/Map~Map#addLayer} instead.\n * @param {import(\"../PluggableMap.js\").default} map Map.\n * @api\n */\n Layer.prototype.setMap = function (map) {\n if (this.mapPrecomposeKey_) {\n unlistenByKey(this.mapPrecomposeKey_);\n this.mapPrecomposeKey_ = null;\n }\n if (!map) {\n this.changed();\n }\n if (this.mapRenderKey_) {\n unlistenByKey(this.mapRenderKey_);\n this.mapRenderKey_ = null;\n }\n if (map) {\n this.mapPrecomposeKey_ = listen(map, RenderEventType.PRECOMPOSE, function (evt) {\n var renderEvent = \n /** @type {import(\"../render/Event.js\").default} */ (evt);\n var layerStatesArray = renderEvent.frameState.layerStatesArray;\n var layerState = this.getLayerState(false);\n // A layer can only be added to the map once. Use either `layer.setMap()` or `map.addLayer()`, not both.\n assert(!layerStatesArray.some(function (arrayLayerState) {\n return arrayLayerState.layer === layerState.layer;\n }), 67);\n layerStatesArray.push(layerState);\n }, this);\n this.mapRenderKey_ = listen(this, EventType.CHANGE, map.render, map);\n this.changed();\n }\n };\n /**\n * Set the layer source.\n * @param {SourceType} source The layer source.\n * @observable\n * @api\n */\n Layer.prototype.setSource = function (source) {\n this.set(LayerProperty.SOURCE, source);\n };\n /**\n * Get the renderer for this layer.\n * @return {import(\"../renderer/Layer.js\").default} The layer renderer.\n */\n Layer.prototype.getRenderer = function () {\n if (!this.renderer_) {\n this.renderer_ = this.createRenderer();\n }\n return this.renderer_;\n };\n /**\n * @return {boolean} The layer has a renderer.\n */\n Layer.prototype.hasRenderer = function () {\n return !!this.renderer_;\n };\n /**\n * Create a renderer for this layer.\n * @return {import(\"../renderer/Layer.js\").default} A layer renderer.\n * @protected\n */\n Layer.prototype.createRenderer = function () {\n return null;\n };\n /**\n * Clean up.\n */\n Layer.prototype.disposeInternal = function () {\n this.setSource(null);\n _super.prototype.disposeInternal.call(this);\n };\n return Layer;\n}(BaseLayer));\n/**\n * Return `true` if the layer is visible and if the provided view state\n * has resolution and zoom levels that are in range of the layer's min/max.\n * @param {State} layerState Layer state.\n * @param {import(\"../View.js\").State} viewState View state.\n * @return {boolean} The layer is visible at the given view state.\n */\nexport function inView(layerState, viewState) {\n if (!layerState.visible) {\n return false;\n }\n var resolution = viewState.resolution;\n if (resolution < layerState.minResolution ||\n resolution >= layerState.maxResolution) {\n return false;\n }\n var zoom = viewState.zoom;\n return zoom > layerState.minZoom && zoom <= layerState.maxZoom;\n}\nexport default Layer;\n//# sourceMappingURL=Layer.js.map","/**\n * @module ol/coordinate\n */\nimport { getWidth } from './extent.js';\nimport { modulo } from './math.js';\nimport { padNumber } from './string.js';\n/**\n * An array of numbers representing an xy coordinate. Example: `[16, 48]`.\n * @typedef {Array} Coordinate\n * @api\n */\n/**\n * A function that takes a {@link module:ol/coordinate~Coordinate} and\n * transforms it into a `{string}`.\n *\n * @typedef {function((Coordinate|undefined)): string} CoordinateFormat\n * @api\n */\n/**\n * Add `delta` to `coordinate`. `coordinate` is modified in place and returned\n * by the function.\n *\n * Example:\n *\n * import {add} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * add(coord, [-2, 4]);\n * // coord is now [5.85, 51.983333]\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {Coordinate} delta Delta.\n * @return {Coordinate} The input coordinate adjusted by\n * the given delta.\n * @api\n */\nexport function add(coordinate, delta) {\n coordinate[0] += +delta[0];\n coordinate[1] += +delta[1];\n return coordinate;\n}\n/**\n * Calculates the point closest to the passed coordinate on the passed circle.\n *\n * @param {Coordinate} coordinate The coordinate.\n * @param {import(\"./geom/Circle.js\").default} circle The circle.\n * @return {Coordinate} Closest point on the circumference.\n */\nexport function closestOnCircle(coordinate, circle) {\n var r = circle.getRadius();\n var center = circle.getCenter();\n var x0 = center[0];\n var y0 = center[1];\n var x1 = coordinate[0];\n var y1 = coordinate[1];\n var dx = x1 - x0;\n var dy = y1 - y0;\n if (dx === 0 && dy === 0) {\n dx = 1;\n }\n var d = Math.sqrt(dx * dx + dy * dy);\n var x = x0 + (r * dx) / d;\n var y = y0 + (r * dy) / d;\n return [x, y];\n}\n/**\n * Calculates the point closest to the passed coordinate on the passed segment.\n * This is the foot of the perpendicular of the coordinate to the segment when\n * the foot is on the segment, or the closest segment coordinate when the foot\n * is outside the segment.\n *\n * @param {Coordinate} coordinate The coordinate.\n * @param {Array} segment The two coordinates\n * of the segment.\n * @return {Coordinate} The foot of the perpendicular of\n * the coordinate to the segment.\n */\nexport function closestOnSegment(coordinate, segment) {\n var x0 = coordinate[0];\n var y0 = coordinate[1];\n var start = segment[0];\n var end = segment[1];\n var x1 = start[0];\n var y1 = start[1];\n var x2 = end[0];\n var y2 = end[1];\n var dx = x2 - x1;\n var dy = y2 - y1;\n var along = dx === 0 && dy === 0\n ? 0\n : (dx * (x0 - x1) + dy * (y0 - y1)) / (dx * dx + dy * dy || 0);\n var x, y;\n if (along <= 0) {\n x = x1;\n y = y1;\n }\n else if (along >= 1) {\n x = x2;\n y = y2;\n }\n else {\n x = x1 + along * dx;\n y = y1 + along * dy;\n }\n return [x, y];\n}\n/**\n * Returns a {@link module:ol/coordinate~CoordinateFormat} function that can be\n * used to format\n * a {Coordinate} to a string.\n *\n * Example without specifying the fractional digits:\n *\n * import {createStringXY} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var stringifyFunc = createStringXY();\n * var out = stringifyFunc(coord);\n * // out is now '8, 48'\n *\n * Example with explicitly specifying 2 fractional digits:\n *\n * import {createStringXY} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var stringifyFunc = createStringXY(2);\n * var out = stringifyFunc(coord);\n * // out is now '7.85, 47.98'\n *\n * @param {number} [opt_fractionDigits] The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {CoordinateFormat} Coordinate format.\n * @api\n */\nexport function createStringXY(opt_fractionDigits) {\n return (\n /**\n * @param {Coordinate} coordinate Coordinate.\n * @return {string} String XY.\n */\n function (coordinate) {\n return toStringXY(coordinate, opt_fractionDigits);\n });\n}\n/**\n * @param {string} hemispheres Hemispheres.\n * @param {number} degrees Degrees.\n * @param {number} [opt_fractionDigits] The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {string} String.\n */\nexport function degreesToStringHDMS(hemispheres, degrees, opt_fractionDigits) {\n var normalizedDegrees = modulo(degrees + 180, 360) - 180;\n var x = Math.abs(3600 * normalizedDegrees);\n var dflPrecision = opt_fractionDigits || 0;\n var precision = Math.pow(10, dflPrecision);\n var deg = Math.floor(x / 3600);\n var min = Math.floor((x - deg * 3600) / 60);\n var sec = x - deg * 3600 - min * 60;\n sec = Math.ceil(sec * precision) / precision;\n if (sec >= 60) {\n sec = 0;\n min += 1;\n }\n if (min >= 60) {\n min = 0;\n deg += 1;\n }\n return (deg +\n '\\u00b0 ' +\n padNumber(min, 2) +\n '\\u2032 ' +\n padNumber(sec, 2, dflPrecision) +\n '\\u2033' +\n (normalizedDegrees == 0\n ? ''\n : ' ' + hemispheres.charAt(normalizedDegrees < 0 ? 1 : 0)));\n}\n/**\n * Transforms the given {@link module:ol/coordinate~Coordinate} to a string\n * using the given string template. The strings `{x}` and `{y}` in the template\n * will be replaced with the first and second coordinate values respectively.\n *\n * Example without specifying the fractional digits:\n *\n * import {format} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var template = 'Coordinate is ({x}|{y}).';\n * var out = format(coord, template);\n * // out is now 'Coordinate is (8|48).'\n *\n * Example explicitly specifying the fractional digits:\n *\n * import {format} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var template = 'Coordinate is ({x}|{y}).';\n * var out = format(coord, template, 2);\n * // out is now 'Coordinate is (7.85|47.98).'\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {string} template A template string with `{x}` and `{y}` placeholders\n * that will be replaced by first and second coordinate values.\n * @param {number} [opt_fractionDigits] The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {string} Formatted coordinate.\n * @api\n */\nexport function format(coordinate, template, opt_fractionDigits) {\n if (coordinate) {\n return template\n .replace('{x}', coordinate[0].toFixed(opt_fractionDigits))\n .replace('{y}', coordinate[1].toFixed(opt_fractionDigits));\n }\n else {\n return '';\n }\n}\n/**\n * @param {Coordinate} coordinate1 First coordinate.\n * @param {Coordinate} coordinate2 Second coordinate.\n * @return {boolean} The two coordinates are equal.\n */\nexport function equals(coordinate1, coordinate2) {\n var equals = true;\n for (var i = coordinate1.length - 1; i >= 0; --i) {\n if (coordinate1[i] != coordinate2[i]) {\n equals = false;\n break;\n }\n }\n return equals;\n}\n/**\n * Rotate `coordinate` by `angle`. `coordinate` is modified in place and\n * returned by the function.\n *\n * Example:\n *\n * import {rotate} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var rotateRadians = Math.PI / 2; // 90 degrees\n * rotate(coord, rotateRadians);\n * // coord is now [-47.983333, 7.85]\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {number} angle Angle in radian.\n * @return {Coordinate} Coordinate.\n * @api\n */\nexport function rotate(coordinate, angle) {\n var cosAngle = Math.cos(angle);\n var sinAngle = Math.sin(angle);\n var x = coordinate[0] * cosAngle - coordinate[1] * sinAngle;\n var y = coordinate[1] * cosAngle + coordinate[0] * sinAngle;\n coordinate[0] = x;\n coordinate[1] = y;\n return coordinate;\n}\n/**\n * Scale `coordinate` by `scale`. `coordinate` is modified in place and returned\n * by the function.\n *\n * Example:\n *\n * import {scale as scaleCoordinate} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var scale = 1.2;\n * scaleCoordinate(coord, scale);\n * // coord is now [9.42, 57.5799996]\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {number} scale Scale factor.\n * @return {Coordinate} Coordinate.\n */\nexport function scale(coordinate, scale) {\n coordinate[0] *= scale;\n coordinate[1] *= scale;\n return coordinate;\n}\n/**\n * @param {Coordinate} coord1 First coordinate.\n * @param {Coordinate} coord2 Second coordinate.\n * @return {number} Squared distance between coord1 and coord2.\n */\nexport function squaredDistance(coord1, coord2) {\n var dx = coord1[0] - coord2[0];\n var dy = coord1[1] - coord2[1];\n return dx * dx + dy * dy;\n}\n/**\n * @param {Coordinate} coord1 First coordinate.\n * @param {Coordinate} coord2 Second coordinate.\n * @return {number} Distance between coord1 and coord2.\n */\nexport function distance(coord1, coord2) {\n return Math.sqrt(squaredDistance(coord1, coord2));\n}\n/**\n * Calculate the squared distance from a coordinate to a line segment.\n *\n * @param {Coordinate} coordinate Coordinate of the point.\n * @param {Array} segment Line segment (2\n * coordinates).\n * @return {number} Squared distance from the point to the line segment.\n */\nexport function squaredDistanceToSegment(coordinate, segment) {\n return squaredDistance(coordinate, closestOnSegment(coordinate, segment));\n}\n/**\n * Format a geographic coordinate with the hemisphere, degrees, minutes, and\n * seconds.\n *\n * Example without specifying fractional digits:\n *\n * import {toStringHDMS} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var out = toStringHDMS(coord);\n * // out is now '47° 58′ 60″ N 7° 50′ 60″ E'\n *\n * Example explicitly specifying 1 fractional digit:\n *\n * import {toStringHDMS} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var out = toStringHDMS(coord, 1);\n * // out is now '47° 58′ 60.0″ N 7° 50′ 60.0″ E'\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {number} [opt_fractionDigits] The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {string} Hemisphere, degrees, minutes and seconds.\n * @api\n */\nexport function toStringHDMS(coordinate, opt_fractionDigits) {\n if (coordinate) {\n return (degreesToStringHDMS('NS', coordinate[1], opt_fractionDigits) +\n ' ' +\n degreesToStringHDMS('EW', coordinate[0], opt_fractionDigits));\n }\n else {\n return '';\n }\n}\n/**\n * Format a coordinate as a comma delimited string.\n *\n * Example without specifying fractional digits:\n *\n * import {toStringXY} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var out = toStringXY(coord);\n * // out is now '8, 48'\n *\n * Example explicitly specifying 1 fractional digit:\n *\n * import {toStringXY} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var out = toStringXY(coord, 1);\n * // out is now '7.8, 48.0'\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {number} [opt_fractionDigits] The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {string} XY.\n * @api\n */\nexport function toStringXY(coordinate, opt_fractionDigits) {\n return format(coordinate, '{x}, {y}', opt_fractionDigits);\n}\n/**\n * Modifies the provided coordinate in-place to be within the real world\n * extent. The lower projection extent boundary is inclusive, the upper one\n * exclusive.\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {import(\"./proj/Projection.js\").default} projection Projection.\n * @return {Coordinate} The coordinate within the real world extent.\n */\nexport function wrapX(coordinate, projection) {\n if (projection.canWrapX()) {\n var worldWidth = getWidth(projection.getExtent());\n var worldsAway = getWorldsAway(coordinate, projection, worldWidth);\n if (worldsAway) {\n coordinate[0] -= worldsAway * worldWidth;\n }\n }\n return coordinate;\n}\n/**\n * @param {Coordinate} coordinate Coordinate.\n * @param {import(\"./proj/Projection.js\").default} projection Projection.\n * @param {number} [opt_sourceExtentWidth] Width of the source extent.\n * @return {number} Offset in world widths.\n */\nexport function getWorldsAway(coordinate, projection, opt_sourceExtentWidth) {\n var projectionExtent = projection.getExtent();\n var worldsAway = 0;\n if (projection.canWrapX() &&\n (coordinate[0] < projectionExtent[0] || coordinate[0] > projectionExtent[2])) {\n var sourceExtentWidth = opt_sourceExtentWidth || getWidth(projectionExtent);\n worldsAway = Math.floor((coordinate[0] - projectionExtent[0]) / sourceExtentWidth);\n }\n return worldsAway;\n}\n//# sourceMappingURL=coordinate.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/renderer/Map\n */\nimport Disposable from '../Disposable.js';\nimport { TRUE } from '../functions.js';\nimport { abstract } from '../util.js';\nimport { compose as composeTransform, makeInverse } from '../transform.js';\nimport { getWidth } from '../extent.js';\nimport { shared as iconImageCache } from '../style/IconImageCache.js';\nimport { inView } from '../layer/Layer.js';\nimport { wrapX } from '../coordinate.js';\n/**\n * @typedef HitMatch\n * @property {import(\"../Feature.js\").FeatureLike} feature Feature.\n * @property {import(\"../layer/Layer.js\").default} layer Layer.\n * @property {import(\"../geom/SimpleGeometry.js\").default} geometry Geometry.\n * @property {number} distanceSq Squared distance.\n * @property {import(\"./vector.js\").FeatureCallback} callback Callback.\n * @template T\n */\n/**\n * @abstract\n */\nvar MapRenderer = /** @class */ (function (_super) {\n __extends(MapRenderer, _super);\n /**\n * @param {import(\"../PluggableMap.js\").default} map Map.\n */\n function MapRenderer(map) {\n var _this = _super.call(this) || this;\n /**\n * @private\n * @type {import(\"../PluggableMap.js\").default}\n */\n _this.map_ = map;\n return _this;\n }\n /**\n * @abstract\n * @param {import(\"../render/EventType.js\").default} type Event type.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n */\n MapRenderer.prototype.dispatchRenderEvent = function (type, frameState) {\n abstract();\n };\n /**\n * @param {import(\"../PluggableMap.js\").FrameState} frameState FrameState.\n * @protected\n */\n MapRenderer.prototype.calculateMatrices2D = function (frameState) {\n var viewState = frameState.viewState;\n var coordinateToPixelTransform = frameState.coordinateToPixelTransform;\n var pixelToCoordinateTransform = frameState.pixelToCoordinateTransform;\n composeTransform(coordinateToPixelTransform, frameState.size[0] / 2, frameState.size[1] / 2, 1 / viewState.resolution, -1 / viewState.resolution, -viewState.rotation, -viewState.center[0], -viewState.center[1]);\n makeInverse(pixelToCoordinateTransform, coordinateToPixelTransform);\n };\n /**\n * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState FrameState.\n * @param {number} hitTolerance Hit tolerance in pixels.\n * @param {boolean} checkWrapped Check for wrapped geometries.\n * @param {import(\"./vector.js\").FeatureCallback} callback Feature callback.\n * @param {S} thisArg Value to use as `this` when executing `callback`.\n * @param {function(this: U, import(\"../layer/Layer.js\").default): boolean} layerFilter Layer filter\n * function, only layers which are visible and for which this function\n * returns `true` will be tested for features. By default, all visible\n * layers will be tested.\n * @param {U} thisArg2 Value to use as `this` when executing `layerFilter`.\n * @return {T|undefined} Callback result.\n * @template S,T,U\n */\n MapRenderer.prototype.forEachFeatureAtCoordinate = function (coordinate, frameState, hitTolerance, checkWrapped, callback, thisArg, layerFilter, thisArg2) {\n var result;\n var viewState = frameState.viewState;\n /**\n * @param {boolean} managed Managed layer.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n * @param {import(\"../layer/Layer.js\").default} layer Layer.\n * @param {import(\"../geom/Geometry.js\").default} geometry Geometry.\n * @return {T|undefined} Callback result.\n */\n function forEachFeatureAtCoordinate(managed, feature, layer, geometry) {\n return callback.call(thisArg, feature, managed ? layer : null, geometry);\n }\n var projection = viewState.projection;\n var translatedCoordinate = wrapX(coordinate.slice(), projection);\n var offsets = [[0, 0]];\n if (projection.canWrapX() && checkWrapped) {\n var projectionExtent = projection.getExtent();\n var worldWidth = getWidth(projectionExtent);\n offsets.push([-worldWidth, 0], [worldWidth, 0]);\n }\n var layerStates = frameState.layerStatesArray;\n var numLayers = layerStates.length;\n var matches = /** @type {Array>} */ ([]);\n var tmpCoord = [];\n for (var i = 0; i < offsets.length; i++) {\n for (var j = numLayers - 1; j >= 0; --j) {\n var layerState = layerStates[j];\n var layer = layerState.layer;\n if (layer.hasRenderer() &&\n inView(layerState, viewState) &&\n layerFilter.call(thisArg2, layer)) {\n var layerRenderer = layer.getRenderer();\n var source = layer.getSource();\n if (layerRenderer && source) {\n var coordinates = source.getWrapX()\n ? translatedCoordinate\n : coordinate;\n var callback_1 = forEachFeatureAtCoordinate.bind(null, layerState.managed);\n tmpCoord[0] = coordinates[0] + offsets[i][0];\n tmpCoord[1] = coordinates[1] + offsets[i][1];\n result = layerRenderer.forEachFeatureAtCoordinate(tmpCoord, frameState, hitTolerance, callback_1, matches);\n }\n if (result) {\n return result;\n }\n }\n }\n }\n if (matches.length === 0) {\n return undefined;\n }\n var order = 1 / matches.length;\n matches.forEach(function (m, i) { return (m.distanceSq += i * order); });\n matches.sort(function (a, b) { return a.distanceSq - b.distanceSq; });\n matches.some(function (m) {\n return (result = m.callback(m.feature, m.layer, m.geometry));\n });\n return result;\n };\n /**\n * @abstract\n * @param {import(\"../pixel.js\").Pixel} pixel Pixel.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState FrameState.\n * @param {number} hitTolerance Hit tolerance in pixels.\n * @param {function(import(\"../layer/Layer.js\").default, (Uint8ClampedArray|Uint8Array)): T} callback Layer\n * callback.\n * @param {function(import(\"../layer/Layer.js\").default): boolean} layerFilter Layer filter\n * function, only layers which are visible and for which this function\n * returns `true` will be tested for features. By default, all visible\n * layers will be tested.\n * @return {T|undefined} Callback result.\n * @template T\n */\n MapRenderer.prototype.forEachLayerAtPixel = function (pixel, frameState, hitTolerance, callback, layerFilter) {\n return abstract();\n };\n /**\n * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState FrameState.\n * @param {number} hitTolerance Hit tolerance in pixels.\n * @param {boolean} checkWrapped Check for wrapped geometries.\n * @param {function(this: U, import(\"../layer/Layer.js\").default): boolean} layerFilter Layer filter\n * function, only layers which are visible and for which this function\n * returns `true` will be tested for features. By default, all visible\n * layers will be tested.\n * @param {U} thisArg Value to use as `this` when executing `layerFilter`.\n * @return {boolean} Is there a feature at the given coordinate?\n * @template U\n */\n MapRenderer.prototype.hasFeatureAtCoordinate = function (coordinate, frameState, hitTolerance, checkWrapped, layerFilter, thisArg) {\n var hasFeature = this.forEachFeatureAtCoordinate(coordinate, frameState, hitTolerance, checkWrapped, TRUE, this, layerFilter, thisArg);\n return hasFeature !== undefined;\n };\n /**\n * @return {import(\"../PluggableMap.js\").default} Map.\n */\n MapRenderer.prototype.getMap = function () {\n return this.map_;\n };\n /**\n * Render.\n * @abstract\n * @param {?import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n */\n MapRenderer.prototype.renderFrame = function (frameState) {\n abstract();\n };\n /**\n * @param {import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n * @protected\n */\n MapRenderer.prototype.scheduleExpireIconCache = function (frameState) {\n if (iconImageCache.canExpireCache()) {\n frameState.postRenderFunctions.push(expireIconCache);\n }\n };\n return MapRenderer;\n}(Disposable));\n/**\n * @param {import(\"../PluggableMap.js\").default} map Map.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n */\nfunction expireIconCache(map, frameState) {\n iconImageCache.expire();\n}\nexport default MapRenderer;\n//# sourceMappingURL=Map.js.map","/**\n * @module ol/render/Event\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport Event from '../events/Event.js';\nvar RenderEvent = /** @class */ (function (_super) {\n __extends(RenderEvent, _super);\n /**\n * @param {import(\"./EventType.js\").default} type Type.\n * @param {import(\"../transform.js\").Transform} [opt_inversePixelTransform] Transform for\n * CSS pixels to rendered pixels.\n * @param {import(\"../PluggableMap.js\").FrameState} [opt_frameState] Frame state.\n * @param {?CanvasRenderingContext2D} [opt_context] Context.\n */\n function RenderEvent(type, opt_inversePixelTransform, opt_frameState, opt_context) {\n var _this = _super.call(this, type) || this;\n /**\n * Transform from CSS pixels (relative to the top-left corner of the map viewport)\n * to rendered pixels on this event's `context`. Only available when a Canvas renderer is used, null otherwise.\n * @type {import(\"../transform.js\").Transform|undefined}\n * @api\n */\n _this.inversePixelTransform = opt_inversePixelTransform;\n /**\n * An object representing the current render frame state.\n * @type {import(\"../PluggableMap.js\").FrameState|undefined}\n * @api\n */\n _this.frameState = opt_frameState;\n /**\n * Canvas context. Not available when the event is dispatched by the map. Only available\n * when a Canvas renderer is used, null otherwise.\n * @type {CanvasRenderingContext2D|null|undefined}\n * @api\n */\n _this.context = opt_context;\n return _this;\n }\n return RenderEvent;\n}(Event));\nexport default RenderEvent;\n//# sourceMappingURL=Event.js.map","/**\n * @module ol/render/canvas\n */\nimport BaseObject from '../Object.js';\nimport EventTarget from '../events/Target.js';\nimport { WORKER_OFFSCREEN_CANVAS } from '../has.js';\nimport { clear } from '../obj.js';\nimport { createCanvasContext2D } from '../dom.js';\nimport { getFontParameters } from '../css.js';\n/**\n * @typedef {Object} FillState\n * @property {import(\"../colorlike.js\").ColorLike} fillStyle FillStyle.\n */\n/**\n * @typedef Label\n * @property {number} width Width.\n * @property {number} height Height.\n * @property {Array} contextInstructions ContextInstructions.\n */\n/**\n * @typedef {Object} FillStrokeState\n * @property {import(\"../colorlike.js\").ColorLike} [currentFillStyle] Current FillStyle.\n * @property {import(\"../colorlike.js\").ColorLike} [currentStrokeStyle] Current StrokeStyle.\n * @property {CanvasLineCap} [currentLineCap] Current LineCap.\n * @property {Array} currentLineDash Current LineDash.\n * @property {number} [currentLineDashOffset] Current LineDashOffset.\n * @property {CanvasLineJoin} [currentLineJoin] Current LineJoin.\n * @property {number} [currentLineWidth] Current LineWidth.\n * @property {number} [currentMiterLimit] Current MiterLimit.\n * @property {number} [lastStroke] Last stroke.\n * @property {import(\"../colorlike.js\").ColorLike} [fillStyle] FillStyle.\n * @property {import(\"../colorlike.js\").ColorLike} [strokeStyle] StrokeStyle.\n * @property {CanvasLineCap} [lineCap] LineCap.\n * @property {Array} lineDash LineDash.\n * @property {number} [lineDashOffset] LineDashOffset.\n * @property {CanvasLineJoin} [lineJoin] LineJoin.\n * @property {number} [lineWidth] LineWidth.\n * @property {number} [miterLimit] MiterLimit.\n */\n/**\n * @typedef {Object} StrokeState\n * @property {CanvasLineCap} lineCap LineCap.\n * @property {Array} lineDash LineDash.\n * @property {number} lineDashOffset LineDashOffset.\n * @property {CanvasLineJoin} lineJoin LineJoin.\n * @property {number} lineWidth LineWidth.\n * @property {number} miterLimit MiterLimit.\n * @property {import(\"../colorlike.js\").ColorLike} strokeStyle StrokeStyle.\n */\n/**\n * @typedef {Object} TextState\n * @property {string} font Font.\n * @property {string} [textAlign] TextAlign.\n * @property {string} textBaseline TextBaseline.\n * @property {string} [placement] Placement.\n * @property {number} [maxAngle] MaxAngle.\n * @property {boolean} [overflow] Overflow.\n * @property {import(\"../style/Fill.js\").default} [backgroundFill] BackgroundFill.\n * @property {import(\"../style/Stroke.js\").default} [backgroundStroke] BackgroundStroke.\n * @property {import(\"../size.js\").Size} [scale] Scale.\n * @property {Array} [padding] Padding.\n */\n/**\n * @typedef {Object} SerializableInstructions\n * @property {Array<*>} instructions The rendering instructions.\n * @property {Array<*>} hitDetectionInstructions The rendering hit detection instructions.\n * @property {Array} coordinates The array of all coordinates.\n * @property {!Object} [textStates] The text states (decluttering).\n * @property {!Object} [fillStates] The fill states (decluttering).\n * @property {!Object} [strokeStates] The stroke states (decluttering).\n */\n/**\n * @typedef {Object} DeclutterImageWithText\n */\n/**\n * @const\n * @type {string}\n */\nexport var defaultFont = '10px sans-serif';\n/**\n * @const\n * @type {import(\"../colorlike.js\").ColorLike}\n */\nexport var defaultFillStyle = '#000';\n/**\n * @const\n * @type {CanvasLineCap}\n */\nexport var defaultLineCap = 'round';\n/**\n * @const\n * @type {Array}\n */\nexport var defaultLineDash = [];\n/**\n * @const\n * @type {number}\n */\nexport var defaultLineDashOffset = 0;\n/**\n * @const\n * @type {CanvasLineJoin}\n */\nexport var defaultLineJoin = 'round';\n/**\n * @const\n * @type {number}\n */\nexport var defaultMiterLimit = 10;\n/**\n * @const\n * @type {import(\"../colorlike.js\").ColorLike}\n */\nexport var defaultStrokeStyle = '#000';\n/**\n * @const\n * @type {string}\n */\nexport var defaultTextAlign = 'center';\n/**\n * @const\n * @type {string}\n */\nexport var defaultTextBaseline = 'middle';\n/**\n * @const\n * @type {Array}\n */\nexport var defaultPadding = [0, 0, 0, 0];\n/**\n * @const\n * @type {number}\n */\nexport var defaultLineWidth = 1;\n/**\n * @type {BaseObject}\n */\nexport var checkedFonts = new BaseObject();\n/**\n * The label cache for text rendering. To change the default cache size of 2048\n * entries, use {@link module:ol/structs/LRUCache~LRUCache#setSize cache.setSize()}.\n * Deprecated - there is no label cache any more.\n * @type {?}\n * @api\n * @deprecated\n */\nexport var labelCache = new EventTarget();\nlabelCache.setSize = function () {\n console.warn('labelCache is deprecated.'); //eslint-disable-line\n};\n/**\n * @type {CanvasRenderingContext2D}\n */\nvar measureContext = null;\n/**\n * @type {string}\n */\nvar measureFont;\n/**\n * @type {!Object}\n */\nexport var textHeights = {};\n/**\n * Clears the label cache when a font becomes available.\n * @param {string} fontSpec CSS font spec.\n */\nexport var registerFont = (function () {\n var retries = 100;\n var size = '32px ';\n var referenceFonts = ['monospace', 'serif'];\n var len = referenceFonts.length;\n var text = 'wmytzilWMYTZIL@#/&?$%10\\uF013';\n var interval, referenceWidth;\n /**\n * @param {string} fontStyle Css font-style\n * @param {string} fontWeight Css font-weight\n * @param {*} fontFamily Css font-family\n * @return {boolean} Font with style and weight is available\n */\n function isAvailable(fontStyle, fontWeight, fontFamily) {\n var available = true;\n for (var i = 0; i < len; ++i) {\n var referenceFont = referenceFonts[i];\n referenceWidth = measureTextWidth(fontStyle + ' ' + fontWeight + ' ' + size + referenceFont, text);\n if (fontFamily != referenceFont) {\n var width = measureTextWidth(fontStyle +\n ' ' +\n fontWeight +\n ' ' +\n size +\n fontFamily +\n ',' +\n referenceFont, text);\n // If width and referenceWidth are the same, then the fallback was used\n // instead of the font we wanted, so the font is not available.\n available = available && width != referenceWidth;\n }\n }\n if (available) {\n return true;\n }\n return false;\n }\n function check() {\n var done = true;\n var fonts = checkedFonts.getKeys();\n for (var i = 0, ii = fonts.length; i < ii; ++i) {\n var font = fonts[i];\n if (checkedFonts.get(font) < retries) {\n if (isAvailable.apply(this, font.split('\\n'))) {\n clear(textHeights);\n // Make sure that loaded fonts are picked up by Safari\n measureContext = null;\n measureFont = undefined;\n checkedFonts.set(font, retries);\n }\n else {\n checkedFonts.set(font, checkedFonts.get(font) + 1, true);\n done = false;\n }\n }\n }\n if (done) {\n clearInterval(interval);\n interval = undefined;\n }\n }\n return function (fontSpec) {\n var font = getFontParameters(fontSpec);\n if (!font) {\n return;\n }\n var families = font.families;\n for (var i = 0, ii = families.length; i < ii; ++i) {\n var family = families[i];\n var key = font.style + '\\n' + font.weight + '\\n' + family;\n if (checkedFonts.get(key) === undefined) {\n checkedFonts.set(key, retries, true);\n if (!isAvailable(font.style, font.weight, family)) {\n checkedFonts.set(key, 0, true);\n if (interval === undefined) {\n interval = setInterval(check, 32);\n }\n }\n }\n }\n };\n})();\n/**\n * @param {string} font Font to use for measuring.\n * @return {import(\"../size.js\").Size} Measurement.\n */\nexport var measureTextHeight = (function () {\n /**\n * @type {HTMLDivElement}\n */\n var measureElement;\n return function (fontSpec) {\n var height = textHeights[fontSpec];\n if (height == undefined) {\n if (WORKER_OFFSCREEN_CANVAS) {\n var font = getFontParameters(fontSpec);\n var metrics = measureText(fontSpec, 'Žg');\n var lineHeight = isNaN(Number(font.lineHeight))\n ? 1.2\n : Number(font.lineHeight);\n height =\n lineHeight *\n (metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent);\n }\n else {\n if (!measureElement) {\n measureElement = document.createElement('div');\n measureElement.innerHTML = 'M';\n measureElement.style.minHeight = '0';\n measureElement.style.maxHeight = 'none';\n measureElement.style.height = 'auto';\n measureElement.style.padding = '0';\n measureElement.style.border = 'none';\n measureElement.style.position = 'absolute';\n measureElement.style.display = 'block';\n measureElement.style.left = '-99999px';\n }\n measureElement.style.font = fontSpec;\n document.body.appendChild(measureElement);\n height = measureElement.offsetHeight;\n document.body.removeChild(measureElement);\n }\n textHeights[fontSpec] = height;\n }\n return height;\n };\n})();\n/**\n * @param {string} font Font.\n * @param {string} text Text.\n * @return {TextMetrics} Text metrics.\n */\nfunction measureText(font, text) {\n if (!measureContext) {\n measureContext = createCanvasContext2D(1, 1);\n }\n if (font != measureFont) {\n measureContext.font = font;\n measureFont = measureContext.font;\n }\n return measureContext.measureText(text);\n}\n/**\n * @param {string} font Font.\n * @param {string} text Text.\n * @return {number} Width.\n */\nexport function measureTextWidth(font, text) {\n return measureText(font, text).width;\n}\n/**\n * Measure text width using a cache.\n * @param {string} font The font.\n * @param {string} text The text to measure.\n * @param {Object} cache A lookup of cached widths by text.\n * @return {number} The text width.\n */\nexport function measureAndCacheTextWidth(font, text, cache) {\n if (text in cache) {\n return cache[text];\n }\n var width = measureTextWidth(font, text);\n cache[text] = width;\n return width;\n}\n/**\n * @param {string} font Font to use for measuring.\n * @param {Array} lines Lines to measure.\n * @param {Array} widths Array will be populated with the widths of\n * each line.\n * @return {number} Width of the whole text.\n */\nexport function measureTextWidths(font, lines, widths) {\n var numLines = lines.length;\n var width = 0;\n for (var i = 0; i < numLines; ++i) {\n var currentWidth = measureTextWidth(font, lines[i]);\n width = Math.max(width, currentWidth);\n widths.push(currentWidth);\n }\n return width;\n}\n/**\n * @param {CanvasRenderingContext2D} context Context.\n * @param {number} rotation Rotation.\n * @param {number} offsetX X offset.\n * @param {number} offsetY Y offset.\n */\nexport function rotateAtOffset(context, rotation, offsetX, offsetY) {\n if (rotation !== 0) {\n context.translate(offsetX, offsetY);\n context.rotate(rotation);\n context.translate(-offsetX, -offsetY);\n }\n}\n/**\n * @param {CanvasRenderingContext2D} context Context.\n * @param {import(\"../transform.js\").Transform|null} transform Transform.\n * @param {number} opacity Opacity.\n * @param {Label|HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} labelOrImage Label.\n * @param {number} originX Origin X.\n * @param {number} originY Origin Y.\n * @param {number} w Width.\n * @param {number} h Height.\n * @param {number} x X.\n * @param {number} y Y.\n * @param {import(\"../size.js\").Size} scale Scale.\n */\nexport function drawImageOrLabel(context, transform, opacity, labelOrImage, originX, originY, w, h, x, y, scale) {\n context.save();\n if (opacity !== 1) {\n context.globalAlpha *= opacity;\n }\n if (transform) {\n context.setTransform.apply(context, transform);\n }\n if ( /** @type {*} */(labelOrImage).contextInstructions) {\n // label\n context.translate(x, y);\n context.scale(scale[0], scale[1]);\n executeLabelInstructions(/** @type {Label} */ (labelOrImage), context);\n }\n else if (scale[0] < 0 || scale[1] < 0) {\n // flipped image\n context.translate(x, y);\n context.scale(scale[0], scale[1]);\n context.drawImage(\n /** @type {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} */ (labelOrImage), originX, originY, w, h, 0, 0, w, h);\n }\n else {\n // if image not flipped translate and scale can be avoided\n context.drawImage(\n /** @type {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} */ (labelOrImage), originX, originY, w, h, x, y, w * scale[0], h * scale[1]);\n }\n context.restore();\n}\n/**\n * @param {Label} label Label.\n * @param {CanvasRenderingContext2D} context Context.\n */\nfunction executeLabelInstructions(label, context) {\n var contextInstructions = label.contextInstructions;\n for (var i = 0, ii = contextInstructions.length; i < ii; i += 2) {\n if (Array.isArray(contextInstructions[i + 1])) {\n context[contextInstructions[i]].apply(context, contextInstructions[i + 1]);\n }\n else {\n context[contextInstructions[i]] = contextInstructions[i + 1];\n }\n }\n}\n//# sourceMappingURL=canvas.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/renderer/Composite\n */\nimport MapRenderer from './Map.js';\nimport ObjectEventType from '../ObjectEventType.js';\nimport RenderEvent from '../render/Event.js';\nimport RenderEventType from '../render/EventType.js';\nimport SourceState from '../source/State.js';\nimport { CLASS_UNSELECTABLE } from '../css.js';\nimport { checkedFonts } from '../render/canvas.js';\nimport { inView } from '../layer/Layer.js';\nimport { listen, unlistenByKey } from '../events.js';\nimport { replaceChildren } from '../dom.js';\n/**\n * @classdesc\n * Canvas map renderer.\n * @api\n */\nvar CompositeMapRenderer = /** @class */ (function (_super) {\n __extends(CompositeMapRenderer, _super);\n /**\n * @param {import(\"../PluggableMap.js\").default} map Map.\n */\n function CompositeMapRenderer(map) {\n var _this = _super.call(this, map) || this;\n /**\n * @type {import(\"../events.js\").EventsKey}\n */\n _this.fontChangeListenerKey_ = listen(checkedFonts, ObjectEventType.PROPERTYCHANGE, map.redrawText.bind(map));\n /**\n * @private\n * @type {HTMLDivElement}\n */\n _this.element_ = document.createElement('div');\n var style = _this.element_.style;\n style.position = 'absolute';\n style.width = '100%';\n style.height = '100%';\n style.zIndex = '0';\n _this.element_.className = CLASS_UNSELECTABLE + ' ol-layers';\n var container = map.getViewport();\n container.insertBefore(_this.element_, container.firstChild || null);\n /**\n * @private\n * @type {Array}\n */\n _this.children_ = [];\n /**\n * @private\n * @type {boolean}\n */\n _this.renderedVisible_ = true;\n return _this;\n }\n /**\n * @param {import(\"../render/EventType.js\").default} type Event type.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n */\n CompositeMapRenderer.prototype.dispatchRenderEvent = function (type, frameState) {\n var map = this.getMap();\n if (map.hasListener(type)) {\n var event_1 = new RenderEvent(type, undefined, frameState);\n map.dispatchEvent(event_1);\n }\n };\n CompositeMapRenderer.prototype.disposeInternal = function () {\n unlistenByKey(this.fontChangeListenerKey_);\n this.element_.parentNode.removeChild(this.element_);\n _super.prototype.disposeInternal.call(this);\n };\n /**\n * Render.\n * @param {?import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n */\n CompositeMapRenderer.prototype.renderFrame = function (frameState) {\n if (!frameState) {\n if (this.renderedVisible_) {\n this.element_.style.display = 'none';\n this.renderedVisible_ = false;\n }\n return;\n }\n this.calculateMatrices2D(frameState);\n this.dispatchRenderEvent(RenderEventType.PRECOMPOSE, frameState);\n var layerStatesArray = frameState.layerStatesArray.sort(function (a, b) {\n return a.zIndex - b.zIndex;\n });\n var viewState = frameState.viewState;\n this.children_.length = 0;\n /**\n * @type {Array}\n */\n var declutterLayers = [];\n var previousElement = null;\n for (var i = 0, ii = layerStatesArray.length; i < ii; ++i) {\n var layerState = layerStatesArray[i];\n frameState.layerIndex = i;\n if (!inView(layerState, viewState) ||\n (layerState.sourceState != SourceState.READY &&\n layerState.sourceState != SourceState.UNDEFINED)) {\n continue;\n }\n var layer = layerState.layer;\n var element = layer.render(frameState, previousElement);\n if (!element) {\n continue;\n }\n if (element !== previousElement) {\n this.children_.push(element);\n previousElement = element;\n }\n if ('getDeclutter' in layer) {\n declutterLayers.push(\n /** @type {import(\"../layer/BaseVector.js\").default} */ (layer));\n }\n }\n for (var i = declutterLayers.length - 1; i >= 0; --i) {\n declutterLayers[i].renderDeclutter(frameState);\n }\n replaceChildren(this.element_, this.children_);\n this.dispatchRenderEvent(RenderEventType.POSTCOMPOSE, frameState);\n if (!this.renderedVisible_) {\n this.element_.style.display = '';\n this.renderedVisible_ = true;\n }\n this.scheduleExpireIconCache(frameState);\n };\n /**\n * @param {import(\"../pixel.js\").Pixel} pixel Pixel.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState FrameState.\n * @param {number} hitTolerance Hit tolerance in pixels.\n * @param {function(import(\"../layer/Layer.js\").default, (Uint8ClampedArray|Uint8Array)): T} callback Layer\n * callback.\n * @param {function(import(\"../layer/Layer.js\").default): boolean} layerFilter Layer filter\n * function, only layers which are visible and for which this function\n * returns `true` will be tested for features. By default, all visible\n * layers will be tested.\n * @return {T|undefined} Callback result.\n * @template T\n */\n CompositeMapRenderer.prototype.forEachLayerAtPixel = function (pixel, frameState, hitTolerance, callback, layerFilter) {\n var viewState = frameState.viewState;\n var layerStates = frameState.layerStatesArray;\n var numLayers = layerStates.length;\n for (var i = numLayers - 1; i >= 0; --i) {\n var layerState = layerStates[i];\n var layer = layerState.layer;\n if (layer.hasRenderer() &&\n inView(layerState, viewState) &&\n layerFilter(layer)) {\n var layerRenderer = layer.getRenderer();\n var data = layerRenderer.getDataAtPixel(pixel, frameState, hitTolerance);\n if (data) {\n var result = callback(layer, data);\n if (result) {\n return result;\n }\n }\n }\n }\n return undefined;\n };\n return CompositeMapRenderer;\n}(MapRenderer));\nexport default CompositeMapRenderer;\n//# sourceMappingURL=Composite.js.map","/**\n * @module ol/CollectionEventType\n */\n/**\n * @enum {string}\n */\nexport default {\n /**\n * Triggered when an item is added to the collection.\n * @event module:ol/Collection.CollectionEvent#add\n * @api\n */\n ADD: 'add',\n /**\n * Triggered when an item is removed from the collection.\n * @event module:ol/Collection.CollectionEvent#remove\n * @api\n */\n REMOVE: 'remove',\n};\n//# sourceMappingURL=CollectionEventType.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/Collection\n */\nimport AssertionError from './AssertionError.js';\nimport BaseObject from './Object.js';\nimport CollectionEventType from './CollectionEventType.js';\nimport Event from './events/Event.js';\n/**\n * @enum {string}\n * @private\n */\nvar Property = {\n LENGTH: 'length',\n};\n/**\n * @classdesc\n * Events emitted by {@link module:ol/Collection~Collection} instances are instances of this\n * type.\n */\nvar CollectionEvent = /** @class */ (function (_super) {\n __extends(CollectionEvent, _super);\n /**\n * @param {import(\"./CollectionEventType.js\").default} type Type.\n * @param {*} [opt_element] Element.\n * @param {number} [opt_index] The index of the added or removed element.\n */\n function CollectionEvent(type, opt_element, opt_index) {\n var _this = _super.call(this, type) || this;\n /**\n * The element that is added to or removed from the collection.\n * @type {*}\n * @api\n */\n _this.element = opt_element;\n /**\n * The index of the added or removed element.\n * @type {number}\n * @api\n */\n _this.index = opt_index;\n return _this;\n }\n return CollectionEvent;\n}(Event));\nexport { CollectionEvent };\n/***\n * @template Return\n * @typedef {import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature<'add'|'remove', CollectionEvent, Return> &\n * import(\"./Observable\").CombinedOnSignature} CollectionOnSignature\n */\n/**\n * @typedef {Object} Options\n * @property {boolean} [unique=false] Disallow the same item from being added to\n * the collection twice.\n */\n/**\n * @classdesc\n * An expanded version of standard JS Array, adding convenience methods for\n * manipulation. Add and remove changes to the Collection trigger a Collection\n * event. Note that this does not cover changes to the objects _within_ the\n * Collection; they trigger events on the appropriate object, not on the\n * Collection as a whole.\n *\n * @fires CollectionEvent\n *\n * @template T\n * @api\n */\nvar Collection = /** @class */ (function (_super) {\n __extends(Collection, _super);\n /**\n * @param {Array} [opt_array] Array.\n * @param {Options} [opt_options] Collection options.\n */\n function Collection(opt_array, opt_options) {\n var _this = _super.call(this) || this;\n /***\n * @type {CollectionOnSignature}\n */\n _this.on;\n /***\n * @type {CollectionOnSignature}\n */\n _this.once;\n /***\n * @type {CollectionOnSignature}\n */\n _this.un;\n var options = opt_options || {};\n /**\n * @private\n * @type {boolean}\n */\n _this.unique_ = !!options.unique;\n /**\n * @private\n * @type {!Array}\n */\n _this.array_ = opt_array ? opt_array : [];\n if (_this.unique_) {\n for (var i = 0, ii = _this.array_.length; i < ii; ++i) {\n _this.assertUnique_(_this.array_[i], i);\n }\n }\n _this.updateLength_();\n return _this;\n }\n /**\n * Remove all elements from the collection.\n * @api\n */\n Collection.prototype.clear = function () {\n while (this.getLength() > 0) {\n this.pop();\n }\n };\n /**\n * Add elements to the collection. This pushes each item in the provided array\n * to the end of the collection.\n * @param {!Array} arr Array.\n * @return {Collection} This collection.\n * @api\n */\n Collection.prototype.extend = function (arr) {\n for (var i = 0, ii = arr.length; i < ii; ++i) {\n this.push(arr[i]);\n }\n return this;\n };\n /**\n * Iterate over each element, calling the provided callback.\n * @param {function(T, number, Array): *} f The function to call\n * for every element. This function takes 3 arguments (the element, the\n * index and the array). The return value is ignored.\n * @api\n */\n Collection.prototype.forEach = function (f) {\n var array = this.array_;\n for (var i = 0, ii = array.length; i < ii; ++i) {\n f(array[i], i, array);\n }\n };\n /**\n * Get a reference to the underlying Array object. Warning: if the array\n * is mutated, no events will be dispatched by the collection, and the\n * collection's \"length\" property won't be in sync with the actual length\n * of the array.\n * @return {!Array} Array.\n * @api\n */\n Collection.prototype.getArray = function () {\n return this.array_;\n };\n /**\n * Get the element at the provided index.\n * @param {number} index Index.\n * @return {T} Element.\n * @api\n */\n Collection.prototype.item = function (index) {\n return this.array_[index];\n };\n /**\n * Get the length of this collection.\n * @return {number} The length of the array.\n * @observable\n * @api\n */\n Collection.prototype.getLength = function () {\n return this.get(Property.LENGTH);\n };\n /**\n * Insert an element at the provided index.\n * @param {number} index Index.\n * @param {T} elem Element.\n * @api\n */\n Collection.prototype.insertAt = function (index, elem) {\n if (this.unique_) {\n this.assertUnique_(elem);\n }\n this.array_.splice(index, 0, elem);\n this.updateLength_();\n this.dispatchEvent(new CollectionEvent(CollectionEventType.ADD, elem, index));\n };\n /**\n * Remove the last element of the collection and return it.\n * Return `undefined` if the collection is empty.\n * @return {T|undefined} Element.\n * @api\n */\n Collection.prototype.pop = function () {\n return this.removeAt(this.getLength() - 1);\n };\n /**\n * Insert the provided element at the end of the collection.\n * @param {T} elem Element.\n * @return {number} New length of the collection.\n * @api\n */\n Collection.prototype.push = function (elem) {\n if (this.unique_) {\n this.assertUnique_(elem);\n }\n var n = this.getLength();\n this.insertAt(n, elem);\n return this.getLength();\n };\n /**\n * Remove the first occurrence of an element from the collection.\n * @param {T} elem Element.\n * @return {T|undefined} The removed element or undefined if none found.\n * @api\n */\n Collection.prototype.remove = function (elem) {\n var arr = this.array_;\n for (var i = 0, ii = arr.length; i < ii; ++i) {\n if (arr[i] === elem) {\n return this.removeAt(i);\n }\n }\n return undefined;\n };\n /**\n * Remove the element at the provided index and return it.\n * Return `undefined` if the collection does not contain this index.\n * @param {number} index Index.\n * @return {T|undefined} Value.\n * @api\n */\n Collection.prototype.removeAt = function (index) {\n var prev = this.array_[index];\n this.array_.splice(index, 1);\n this.updateLength_();\n this.dispatchEvent(new CollectionEvent(CollectionEventType.REMOVE, prev, index));\n return prev;\n };\n /**\n * Set the element at the provided index.\n * @param {number} index Index.\n * @param {T} elem Element.\n * @api\n */\n Collection.prototype.setAt = function (index, elem) {\n var n = this.getLength();\n if (index < n) {\n if (this.unique_) {\n this.assertUnique_(elem, index);\n }\n var prev = this.array_[index];\n this.array_[index] = elem;\n this.dispatchEvent(new CollectionEvent(CollectionEventType.REMOVE, prev, index));\n this.dispatchEvent(new CollectionEvent(CollectionEventType.ADD, elem, index));\n }\n else {\n for (var j = n; j < index; ++j) {\n this.insertAt(j, undefined);\n }\n this.insertAt(index, elem);\n }\n };\n /**\n * @private\n */\n Collection.prototype.updateLength_ = function () {\n this.set(Property.LENGTH, this.array_.length);\n };\n /**\n * @private\n * @param {T} elem Element.\n * @param {number} [opt_except] Optional index to ignore.\n */\n Collection.prototype.assertUnique_ = function (elem, opt_except) {\n for (var i = 0, ii = this.array_.length; i < ii; ++i) {\n if (this.array_[i] === elem && i !== opt_except) {\n throw new AssertionError(58);\n }\n }\n };\n return Collection;\n}(BaseObject));\nexport default Collection;\n//# sourceMappingURL=Collection.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/layer/Group\n */\nimport BaseLayer from './Base.js';\nimport Collection from '../Collection.js';\nimport CollectionEventType from '../CollectionEventType.js';\nimport EventType from '../events/EventType.js';\nimport ObjectEventType from '../ObjectEventType.js';\nimport SourceState from '../source/State.js';\nimport { assert } from '../asserts.js';\nimport { assign, clear } from '../obj.js';\nimport { getIntersection } from '../extent.js';\nimport { getUid } from '../util.js';\nimport { listen, unlistenByKey } from '../events.js';\n/**\n * @typedef {Object} Options\n * @property {number} [opacity=1] Opacity (0, 1).\n * @property {boolean} [visible=true] Visibility.\n * @property {import(\"../extent.js\").Extent} [extent] The bounding extent for layer rendering. The layer will not be\n * rendered outside of this extent.\n * @property {number} [zIndex] The z-index for layer rendering. At rendering time, the layers\n * will be ordered, first by Z-index and then by position. When `undefined`, a `zIndex` of 0 is assumed\n * for layers that are added to the map's `layers` collection, or `Infinity` when the layer's `setMap()`\n * method was used.\n * @property {number} [minResolution] The minimum resolution (inclusive) at which this layer will be\n * visible.\n * @property {number} [maxResolution] The maximum resolution (exclusive) below which this layer will\n * be visible.\n * @property {number} [minZoom] The minimum view zoom level (exclusive) above which this layer will be\n * visible.\n * @property {number} [maxZoom] The maximum view zoom level (inclusive) at which this layer will\n * be visible.\n * @property {Array|import(\"../Collection.js\").default} [layers] Child layers.\n * @property {Object} [properties] Arbitrary observable properties. Can be accessed with `#get()` and `#set()`.\n */\n/**\n * @enum {string}\n * @private\n */\nvar Property = {\n LAYERS: 'layers',\n};\n/**\n * @classdesc\n * A {@link module:ol/Collection~Collection} of layers that are handled together.\n *\n * A generic `change` event is triggered when the group/Collection changes.\n *\n * @api\n */\nvar LayerGroup = /** @class */ (function (_super) {\n __extends(LayerGroup, _super);\n /**\n * @param {Options} [opt_options] Layer options.\n */\n function LayerGroup(opt_options) {\n var _this = this;\n var options = opt_options || {};\n var baseOptions = /** @type {Options} */ (assign({}, options));\n delete baseOptions.layers;\n var layers = options.layers;\n _this = _super.call(this, baseOptions) || this;\n /**\n * @private\n * @type {Array}\n */\n _this.layersListenerKeys_ = [];\n /**\n * @private\n * @type {Object>}\n */\n _this.listenerKeys_ = {};\n _this.addChangeListener(Property.LAYERS, _this.handleLayersChanged_);\n if (layers) {\n if (Array.isArray(layers)) {\n layers = new Collection(layers.slice(), { unique: true });\n }\n else {\n assert(typeof ( /** @type {?} */(layers).getArray) === 'function', 43); // Expected `layers` to be an array or a `Collection`\n }\n }\n else {\n layers = new Collection(undefined, { unique: true });\n }\n _this.setLayers(layers);\n return _this;\n }\n /**\n * @private\n */\n LayerGroup.prototype.handleLayerChange_ = function () {\n this.changed();\n };\n /**\n * @private\n */\n LayerGroup.prototype.handleLayersChanged_ = function () {\n this.layersListenerKeys_.forEach(unlistenByKey);\n this.layersListenerKeys_.length = 0;\n var layers = this.getLayers();\n this.layersListenerKeys_.push(listen(layers, CollectionEventType.ADD, this.handleLayersAdd_, this), listen(layers, CollectionEventType.REMOVE, this.handleLayersRemove_, this));\n for (var id in this.listenerKeys_) {\n this.listenerKeys_[id].forEach(unlistenByKey);\n }\n clear(this.listenerKeys_);\n var layersArray = layers.getArray();\n for (var i = 0, ii = layersArray.length; i < ii; i++) {\n var layer = layersArray[i];\n this.listenerKeys_[getUid(layer)] = [\n listen(layer, ObjectEventType.PROPERTYCHANGE, this.handleLayerChange_, this),\n listen(layer, EventType.CHANGE, this.handleLayerChange_, this),\n ];\n }\n this.changed();\n };\n /**\n * @param {import(\"../Collection.js\").CollectionEvent} collectionEvent CollectionEvent.\n * @private\n */\n LayerGroup.prototype.handleLayersAdd_ = function (collectionEvent) {\n var layer = /** @type {import(\"./Base.js\").default} */ (collectionEvent.element);\n this.listenerKeys_[getUid(layer)] = [\n listen(layer, ObjectEventType.PROPERTYCHANGE, this.handleLayerChange_, this),\n listen(layer, EventType.CHANGE, this.handleLayerChange_, this),\n ];\n this.changed();\n };\n /**\n * @param {import(\"../Collection.js\").CollectionEvent} collectionEvent CollectionEvent.\n * @private\n */\n LayerGroup.prototype.handleLayersRemove_ = function (collectionEvent) {\n var layer = /** @type {import(\"./Base.js\").default} */ (collectionEvent.element);\n var key = getUid(layer);\n this.listenerKeys_[key].forEach(unlistenByKey);\n delete this.listenerKeys_[key];\n this.changed();\n };\n /**\n * Returns the {@link module:ol/Collection collection} of {@link module:ol/layer/Layer~Layer layers}\n * in this group.\n * @return {!import(\"../Collection.js\").default} Collection of\n * {@link module:ol/layer/Base layers} that are part of this group.\n * @observable\n * @api\n */\n LayerGroup.prototype.getLayers = function () {\n return /** @type {!import(\"../Collection.js\").default} */ (this.get(Property.LAYERS));\n };\n /**\n * Set the {@link module:ol/Collection collection} of {@link module:ol/layer/Layer~Layer layers}\n * in this group.\n * @param {!import(\"../Collection.js\").default} layers Collection of\n * {@link module:ol/layer/Base layers} that are part of this group.\n * @observable\n * @api\n */\n LayerGroup.prototype.setLayers = function (layers) {\n this.set(Property.LAYERS, layers);\n };\n /**\n * @param {Array} [opt_array] Array of layers (to be modified in place).\n * @return {Array} Array of layers.\n */\n LayerGroup.prototype.getLayersArray = function (opt_array) {\n var array = opt_array !== undefined ? opt_array : [];\n this.getLayers().forEach(function (layer) {\n layer.getLayersArray(array);\n });\n return array;\n };\n /**\n * Get the layer states list and use this groups z-index as the default\n * for all layers in this and nested groups, if it is unset at this point.\n * If opt_states is not provided and this group's z-index is undefined\n * 0 is used a the default z-index.\n * @param {Array} [opt_states] Optional list\n * of layer states (to be modified in place).\n * @return {Array} List of layer states.\n */\n LayerGroup.prototype.getLayerStatesArray = function (opt_states) {\n var states = opt_states !== undefined ? opt_states : [];\n var pos = states.length;\n this.getLayers().forEach(function (layer) {\n layer.getLayerStatesArray(states);\n });\n var ownLayerState = this.getLayerState();\n var defaultZIndex = ownLayerState.zIndex;\n if (!opt_states && ownLayerState.zIndex === undefined) {\n defaultZIndex = 0;\n }\n for (var i = pos, ii = states.length; i < ii; i++) {\n var layerState = states[i];\n layerState.opacity *= ownLayerState.opacity;\n layerState.visible = layerState.visible && ownLayerState.visible;\n layerState.maxResolution = Math.min(layerState.maxResolution, ownLayerState.maxResolution);\n layerState.minResolution = Math.max(layerState.minResolution, ownLayerState.minResolution);\n layerState.minZoom = Math.max(layerState.minZoom, ownLayerState.minZoom);\n layerState.maxZoom = Math.min(layerState.maxZoom, ownLayerState.maxZoom);\n if (ownLayerState.extent !== undefined) {\n if (layerState.extent !== undefined) {\n layerState.extent = getIntersection(layerState.extent, ownLayerState.extent);\n }\n else {\n layerState.extent = ownLayerState.extent;\n }\n }\n if (layerState.zIndex === undefined) {\n layerState.zIndex = defaultZIndex;\n }\n }\n return states;\n };\n /**\n * @return {import(\"../source/State.js\").default} Source state.\n */\n LayerGroup.prototype.getSourceState = function () {\n return SourceState.READY;\n };\n return LayerGroup;\n}(BaseLayer));\nexport default LayerGroup;\n//# sourceMappingURL=Group.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/MapEvent\n */\nimport Event from './events/Event.js';\n/**\n * @classdesc\n * Events emitted as map events are instances of this type.\n * See {@link module:ol/PluggableMap~PluggableMap} for which events trigger a map event.\n */\nvar MapEvent = /** @class */ (function (_super) {\n __extends(MapEvent, _super);\n /**\n * @param {string} type Event type.\n * @param {import(\"./PluggableMap.js\").default} map Map.\n * @param {?import(\"./PluggableMap.js\").FrameState} [opt_frameState] Frame state.\n */\n function MapEvent(type, map, opt_frameState) {\n var _this = _super.call(this, type) || this;\n /**\n * The map where the event occurred.\n * @type {import(\"./PluggableMap.js\").default}\n * @api\n */\n _this.map = map;\n /**\n * The frame state at the time of the event.\n * @type {?import(\"./PluggableMap.js\").FrameState}\n * @api\n */\n _this.frameState = opt_frameState !== undefined ? opt_frameState : null;\n return _this;\n }\n return MapEvent;\n}(Event));\nexport default MapEvent;\n//# sourceMappingURL=MapEvent.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/MapBrowserEvent\n */\nimport MapEvent from './MapEvent.js';\n/**\n * @classdesc\n * Events emitted as map browser events are instances of this type.\n * See {@link module:ol/PluggableMap~PluggableMap} for which events trigger a map browser event.\n * @template {UIEvent} EVENT\n */\nvar MapBrowserEvent = /** @class */ (function (_super) {\n __extends(MapBrowserEvent, _super);\n /**\n * @param {string} type Event type.\n * @param {import(\"./PluggableMap.js\").default} map Map.\n * @param {EVENT} originalEvent Original event.\n * @param {boolean} [opt_dragging] Is the map currently being dragged?\n * @param {?import(\"./PluggableMap.js\").FrameState} [opt_frameState] Frame state.\n */\n function MapBrowserEvent(type, map, originalEvent, opt_dragging, opt_frameState) {\n var _this = _super.call(this, type, map, opt_frameState) || this;\n /**\n * The original browser event.\n * @const\n * @type {EVENT}\n * @api\n */\n _this.originalEvent = originalEvent;\n /**\n * The map pixel relative to the viewport corresponding to the original browser event.\n * @type {?import(\"./pixel.js\").Pixel}\n */\n _this.pixel_ = null;\n /**\n * The coordinate in the user projection corresponding to the original browser event.\n * @type {?import(\"./coordinate.js\").Coordinate}\n */\n _this.coordinate_ = null;\n /**\n * Indicates if the map is currently being dragged. Only set for\n * `POINTERDRAG` and `POINTERMOVE` events. Default is `false`.\n *\n * @type {boolean}\n * @api\n */\n _this.dragging = opt_dragging !== undefined ? opt_dragging : false;\n return _this;\n }\n Object.defineProperty(MapBrowserEvent.prototype, \"pixel\", {\n /**\n * The map pixel relative to the viewport corresponding to the original event.\n * @type {import(\"./pixel.js\").Pixel}\n * @api\n */\n get: function () {\n if (!this.pixel_) {\n this.pixel_ = this.map.getEventPixel(this.originalEvent);\n }\n return this.pixel_;\n },\n set: function (pixel) {\n this.pixel_ = pixel;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MapBrowserEvent.prototype, \"coordinate\", {\n /**\n * The coordinate corresponding to the original browser event. This will be in the user\n * projection if one is set. Otherwise it will be in the view projection.\n * @type {import(\"./coordinate.js\").Coordinate}\n * @api\n */\n get: function () {\n if (!this.coordinate_) {\n this.coordinate_ = this.map.getCoordinateFromPixel(this.pixel);\n }\n return this.coordinate_;\n },\n set: function (coordinate) {\n this.coordinate_ = coordinate;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Prevents the default browser action.\n * See https://developer.mozilla.org/en-US/docs/Web/API/event.preventDefault.\n * @api\n */\n MapBrowserEvent.prototype.preventDefault = function () {\n _super.prototype.preventDefault.call(this);\n if ('preventDefault' in this.originalEvent) {\n /** @type {UIEvent} */ (this.originalEvent).preventDefault();\n }\n };\n /**\n * Prevents further propagation of the current event.\n * See https://developer.mozilla.org/en-US/docs/Web/API/event.stopPropagation.\n * @api\n */\n MapBrowserEvent.prototype.stopPropagation = function () {\n _super.prototype.stopPropagation.call(this);\n if ('stopPropagation' in this.originalEvent) {\n /** @type {UIEvent} */ (this.originalEvent).stopPropagation();\n }\n };\n return MapBrowserEvent;\n}(MapEvent));\nexport default MapBrowserEvent;\n//# sourceMappingURL=MapBrowserEvent.js.map","/**\n * @module ol/MapBrowserEventType\n */\nimport EventType from './events/EventType.js';\n/**\n * Constants for event names.\n * @enum {string}\n */\nexport default {\n /**\n * A true single click with no dragging and no double click. Note that this\n * event is delayed by 250 ms to ensure that it is not a double click.\n * @event module:ol/MapBrowserEvent~MapBrowserEvent#singleclick\n * @api\n */\n SINGLECLICK: 'singleclick',\n /**\n * A click with no dragging. A double click will fire two of this.\n * @event module:ol/MapBrowserEvent~MapBrowserEvent#click\n * @api\n */\n CLICK: EventType.CLICK,\n /**\n * A true double click, with no dragging.\n * @event module:ol/MapBrowserEvent~MapBrowserEvent#dblclick\n * @api\n */\n DBLCLICK: EventType.DBLCLICK,\n /**\n * Triggered when a pointer is dragged.\n * @event module:ol/MapBrowserEvent~MapBrowserEvent#pointerdrag\n * @api\n */\n POINTERDRAG: 'pointerdrag',\n /**\n * Triggered when a pointer is moved. Note that on touch devices this is\n * triggered when the map is panned, so is not the same as mousemove.\n * @event module:ol/MapBrowserEvent~MapBrowserEvent#pointermove\n * @api\n */\n POINTERMOVE: 'pointermove',\n POINTERDOWN: 'pointerdown',\n POINTERUP: 'pointerup',\n POINTEROVER: 'pointerover',\n POINTEROUT: 'pointerout',\n POINTERENTER: 'pointerenter',\n POINTERLEAVE: 'pointerleave',\n POINTERCANCEL: 'pointercancel',\n};\n/***\n * @typedef {'singleclick'|'click'|'dblclick'|'pointerdrag'|'pointermove'} Types\n */\n//# sourceMappingURL=MapBrowserEventType.js.map","/**\n * @module ol/pointer/EventType\n */\n/**\n * Constants for event names.\n * @enum {string}\n */\nexport default {\n POINTERMOVE: 'pointermove',\n POINTERDOWN: 'pointerdown',\n POINTERUP: 'pointerup',\n POINTEROVER: 'pointerover',\n POINTEROUT: 'pointerout',\n POINTERENTER: 'pointerenter',\n POINTERLEAVE: 'pointerleave',\n POINTERCANCEL: 'pointercancel',\n};\n//# sourceMappingURL=EventType.js.map","/**\n * @module ol/MapBrowserEventHandler\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport EventType from './events/EventType.js';\nimport MapBrowserEvent from './MapBrowserEvent.js';\nimport MapBrowserEventType from './MapBrowserEventType.js';\nimport PointerEventType from './pointer/EventType.js';\nimport Target from './events/Target.js';\nimport { PASSIVE_EVENT_LISTENERS } from './has.js';\nimport { VOID } from './functions.js';\nimport { listen, unlistenByKey } from './events.js';\nvar MapBrowserEventHandler = /** @class */ (function (_super) {\n __extends(MapBrowserEventHandler, _super);\n /**\n * @param {import(\"./PluggableMap.js\").default} map The map with the viewport to listen to events on.\n * @param {number} [moveTolerance] The minimal distance the pointer must travel to trigger a move.\n */\n function MapBrowserEventHandler(map, moveTolerance) {\n var _this = _super.call(this, map) || this;\n /**\n * This is the element that we will listen to the real events on.\n * @type {import(\"./PluggableMap.js\").default}\n * @private\n */\n _this.map_ = map;\n /**\n * @type {any}\n * @private\n */\n _this.clickTimeoutId_;\n /**\n * Emulate dblclick and singleclick. Will be true when only one pointer is active.\n * @type {boolean}\n */\n _this.emulateClicks_ = false;\n /**\n * @type {boolean}\n * @private\n */\n _this.dragging_ = false;\n /**\n * @type {!Array}\n * @private\n */\n _this.dragListenerKeys_ = [];\n /**\n * @type {number}\n * @private\n */\n _this.moveTolerance_ = moveTolerance === undefined ? 1 : moveTolerance;\n /**\n * The most recent \"down\" type event (or null if none have occurred).\n * Set on pointerdown.\n * @type {PointerEvent}\n * @private\n */\n _this.down_ = null;\n var element = _this.map_.getViewport();\n /**\n * @type {number}\n * @private\n */\n _this.activePointers_ = 0;\n /**\n * @type {!Object}\n * @private\n */\n _this.trackedTouches_ = {};\n _this.element_ = element;\n /**\n * @type {?import(\"./events.js\").EventsKey}\n * @private\n */\n _this.pointerdownListenerKey_ = listen(element, PointerEventType.POINTERDOWN, _this.handlePointerDown_, _this);\n /**\n * @type {PointerEvent}\n * @private\n */\n _this.originalPointerMoveEvent_;\n /**\n * @type {?import(\"./events.js\").EventsKey}\n * @private\n */\n _this.relayedListenerKey_ = listen(element, PointerEventType.POINTERMOVE, _this.relayEvent_, _this);\n /**\n * @private\n */\n _this.boundHandleTouchMove_ = _this.handleTouchMove_.bind(_this);\n _this.element_.addEventListener(EventType.TOUCHMOVE, _this.boundHandleTouchMove_, PASSIVE_EVENT_LISTENERS ? { passive: false } : false);\n return _this;\n }\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n MapBrowserEventHandler.prototype.emulateClick_ = function (pointerEvent) {\n var newEvent = new MapBrowserEvent(MapBrowserEventType.CLICK, this.map_, pointerEvent);\n this.dispatchEvent(newEvent);\n if (this.clickTimeoutId_ !== undefined) {\n // double-click\n clearTimeout(this.clickTimeoutId_);\n this.clickTimeoutId_ = undefined;\n newEvent = new MapBrowserEvent(MapBrowserEventType.DBLCLICK, this.map_, pointerEvent);\n this.dispatchEvent(newEvent);\n }\n else {\n // click\n this.clickTimeoutId_ = setTimeout(\n /** @this {MapBrowserEventHandler} */\n function () {\n this.clickTimeoutId_ = undefined;\n var newEvent = new MapBrowserEvent(MapBrowserEventType.SINGLECLICK, this.map_, pointerEvent);\n this.dispatchEvent(newEvent);\n }.bind(this), 250);\n }\n };\n /**\n * Keeps track on how many pointers are currently active.\n *\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n MapBrowserEventHandler.prototype.updateActivePointers_ = function (pointerEvent) {\n var event = pointerEvent;\n if (event.type == MapBrowserEventType.POINTERUP ||\n event.type == MapBrowserEventType.POINTERCANCEL) {\n delete this.trackedTouches_[event.pointerId];\n }\n else if (event.type == MapBrowserEventType.POINTERDOWN) {\n this.trackedTouches_[event.pointerId] = true;\n }\n this.activePointers_ = Object.keys(this.trackedTouches_).length;\n };\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n MapBrowserEventHandler.prototype.handlePointerUp_ = function (pointerEvent) {\n this.updateActivePointers_(pointerEvent);\n var newEvent = new MapBrowserEvent(MapBrowserEventType.POINTERUP, this.map_, pointerEvent);\n this.dispatchEvent(newEvent);\n // We emulate click events on left mouse button click, touch contact, and pen\n // contact. isMouseActionButton returns true in these cases (evt.button is set\n // to 0).\n // See http://www.w3.org/TR/pointerevents/#button-states\n // We only fire click, singleclick, and doubleclick if nobody has called\n // event.preventDefault().\n if (this.emulateClicks_ &&\n !newEvent.defaultPrevented &&\n !this.dragging_ &&\n this.isMouseActionButton_(pointerEvent)) {\n this.emulateClick_(this.down_);\n }\n if (this.activePointers_ === 0) {\n this.dragListenerKeys_.forEach(unlistenByKey);\n this.dragListenerKeys_.length = 0;\n this.dragging_ = false;\n this.down_ = null;\n }\n };\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @return {boolean} If the left mouse button was pressed.\n * @private\n */\n MapBrowserEventHandler.prototype.isMouseActionButton_ = function (pointerEvent) {\n return pointerEvent.button === 0;\n };\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n MapBrowserEventHandler.prototype.handlePointerDown_ = function (pointerEvent) {\n this.emulateClicks_ = this.activePointers_ === 0;\n this.updateActivePointers_(pointerEvent);\n var newEvent = new MapBrowserEvent(MapBrowserEventType.POINTERDOWN, this.map_, pointerEvent);\n this.dispatchEvent(newEvent);\n // Store a copy of the down event\n this.down_ = /** @type {PointerEvent} */ ({});\n for (var property in pointerEvent) {\n var value = pointerEvent[property];\n this.down_[property] = typeof value === 'function' ? VOID : value;\n }\n if (this.dragListenerKeys_.length === 0) {\n var doc = this.map_.getOwnerDocument();\n this.dragListenerKeys_.push(listen(doc, MapBrowserEventType.POINTERMOVE, this.handlePointerMove_, this), listen(doc, MapBrowserEventType.POINTERUP, this.handlePointerUp_, this), \n /* Note that the listener for `pointercancel is set up on\n * `pointerEventHandler_` and not `documentPointerEventHandler_` like\n * the `pointerup` and `pointermove` listeners.\n *\n * The reason for this is the following: `TouchSource.vacuumTouches_()`\n * issues `pointercancel` events, when there was no `touchend` for a\n * `touchstart`. Now, let's say a first `touchstart` is registered on\n * `pointerEventHandler_`. The `documentPointerEventHandler_` is set up.\n * But `documentPointerEventHandler_` doesn't know about the first\n * `touchstart`. If there is no `touchend` for the `touchstart`, we can\n * only receive a `touchcancel` from `pointerEventHandler_`, because it is\n * only registered there.\n */\n listen(this.element_, MapBrowserEventType.POINTERCANCEL, this.handlePointerUp_, this));\n if (this.element_.getRootNode && this.element_.getRootNode() !== doc) {\n this.dragListenerKeys_.push(listen(this.element_.getRootNode(), MapBrowserEventType.POINTERUP, this.handlePointerUp_, this));\n }\n }\n };\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n MapBrowserEventHandler.prototype.handlePointerMove_ = function (pointerEvent) {\n // Between pointerdown and pointerup, pointermove events are triggered.\n // To avoid a 'false' touchmove event to be dispatched, we test if the pointer\n // moved a significant distance.\n if (this.isMoving_(pointerEvent)) {\n this.dragging_ = true;\n var newEvent = new MapBrowserEvent(MapBrowserEventType.POINTERDRAG, this.map_, pointerEvent, this.dragging_);\n this.dispatchEvent(newEvent);\n }\n };\n /**\n * Wrap and relay a pointer event. Note that this requires that the type\n * string for the MapBrowserEvent matches the PointerEvent type.\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n MapBrowserEventHandler.prototype.relayEvent_ = function (pointerEvent) {\n this.originalPointerMoveEvent_ = pointerEvent;\n var dragging = !!(this.down_ && this.isMoving_(pointerEvent));\n this.dispatchEvent(new MapBrowserEvent(pointerEvent.type, this.map_, pointerEvent, dragging));\n };\n /**\n * Flexible handling of a `touch-action: none` css equivalent: because calling\n * `preventDefault()` on a `pointermove` event does not stop native page scrolling\n * and zooming, we also listen for `touchmove` and call `preventDefault()` on it\n * when an interaction (currently `DragPan` handles the event.\n * @param {TouchEvent} event Event.\n * @private\n */\n MapBrowserEventHandler.prototype.handleTouchMove_ = function (event) {\n // Due to https://github.com/mpizenberg/elm-pep/issues/2, `this.originalPointerMoveEvent_`\n // may not be initialized yet when we get here on a platform without native pointer events.\n var originalEvent = this.originalPointerMoveEvent_;\n if ((!originalEvent || originalEvent.defaultPrevented) &&\n (typeof event.cancelable !== 'boolean' || event.cancelable === true)) {\n event.preventDefault();\n }\n };\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @return {boolean} Is moving.\n * @private\n */\n MapBrowserEventHandler.prototype.isMoving_ = function (pointerEvent) {\n return (this.dragging_ ||\n Math.abs(pointerEvent.clientX - this.down_.clientX) >\n this.moveTolerance_ ||\n Math.abs(pointerEvent.clientY - this.down_.clientY) > this.moveTolerance_);\n };\n /**\n * Clean up.\n */\n MapBrowserEventHandler.prototype.disposeInternal = function () {\n if (this.relayedListenerKey_) {\n unlistenByKey(this.relayedListenerKey_);\n this.relayedListenerKey_ = null;\n }\n this.element_.removeEventListener(EventType.TOUCHMOVE, this.boundHandleTouchMove_);\n if (this.pointerdownListenerKey_) {\n unlistenByKey(this.pointerdownListenerKey_);\n this.pointerdownListenerKey_ = null;\n }\n this.dragListenerKeys_.forEach(unlistenByKey);\n this.dragListenerKeys_.length = 0;\n this.element_ = null;\n _super.prototype.disposeInternal.call(this);\n };\n return MapBrowserEventHandler;\n}(Target));\nexport default MapBrowserEventHandler;\n//# sourceMappingURL=MapBrowserEventHandler.js.map","/**\n * @module ol/MapProperty\n */\n/**\n * @enum {string}\n */\nexport default {\n LAYERGROUP: 'layergroup',\n SIZE: 'size',\n TARGET: 'target',\n VIEW: 'view',\n};\n//# sourceMappingURL=MapProperty.js.map","/**\n * @module ol/structs/PriorityQueue\n */\nimport { assert } from '../asserts.js';\nimport { clear } from '../obj.js';\n/**\n * @type {number}\n */\nexport var DROP = Infinity;\n/**\n * @classdesc\n * Priority queue.\n *\n * The implementation is inspired from the Closure Library's Heap class and\n * Python's heapq module.\n *\n * See https://github.com/google/closure-library/blob/master/closure/goog/structs/heap.js\n * and https://hg.python.org/cpython/file/2.7/Lib/heapq.py.\n *\n * @template T\n */\nvar PriorityQueue = /** @class */ (function () {\n /**\n * @param {function(T): number} priorityFunction Priority function.\n * @param {function(T): string} keyFunction Key function.\n */\n function PriorityQueue(priorityFunction, keyFunction) {\n /**\n * @type {function(T): number}\n * @private\n */\n this.priorityFunction_ = priorityFunction;\n /**\n * @type {function(T): string}\n * @private\n */\n this.keyFunction_ = keyFunction;\n /**\n * @type {Array}\n * @private\n */\n this.elements_ = [];\n /**\n * @type {Array}\n * @private\n */\n this.priorities_ = [];\n /**\n * @type {!Object}\n * @private\n */\n this.queuedElements_ = {};\n }\n /**\n * FIXME empty description for jsdoc\n */\n PriorityQueue.prototype.clear = function () {\n this.elements_.length = 0;\n this.priorities_.length = 0;\n clear(this.queuedElements_);\n };\n /**\n * Remove and return the highest-priority element. O(log N).\n * @return {T} Element.\n */\n PriorityQueue.prototype.dequeue = function () {\n var elements = this.elements_;\n var priorities = this.priorities_;\n var element = elements[0];\n if (elements.length == 1) {\n elements.length = 0;\n priorities.length = 0;\n }\n else {\n elements[0] = elements.pop();\n priorities[0] = priorities.pop();\n this.siftUp_(0);\n }\n var elementKey = this.keyFunction_(element);\n delete this.queuedElements_[elementKey];\n return element;\n };\n /**\n * Enqueue an element. O(log N).\n * @param {T} element Element.\n * @return {boolean} The element was added to the queue.\n */\n PriorityQueue.prototype.enqueue = function (element) {\n assert(!(this.keyFunction_(element) in this.queuedElements_), 31); // Tried to enqueue an `element` that was already added to the queue\n var priority = this.priorityFunction_(element);\n if (priority != DROP) {\n this.elements_.push(element);\n this.priorities_.push(priority);\n this.queuedElements_[this.keyFunction_(element)] = true;\n this.siftDown_(0, this.elements_.length - 1);\n return true;\n }\n return false;\n };\n /**\n * @return {number} Count.\n */\n PriorityQueue.prototype.getCount = function () {\n return this.elements_.length;\n };\n /**\n * Gets the index of the left child of the node at the given index.\n * @param {number} index The index of the node to get the left child for.\n * @return {number} The index of the left child.\n * @private\n */\n PriorityQueue.prototype.getLeftChildIndex_ = function (index) {\n return index * 2 + 1;\n };\n /**\n * Gets the index of the right child of the node at the given index.\n * @param {number} index The index of the node to get the right child for.\n * @return {number} The index of the right child.\n * @private\n */\n PriorityQueue.prototype.getRightChildIndex_ = function (index) {\n return index * 2 + 2;\n };\n /**\n * Gets the index of the parent of the node at the given index.\n * @param {number} index The index of the node to get the parent for.\n * @return {number} The index of the parent.\n * @private\n */\n PriorityQueue.prototype.getParentIndex_ = function (index) {\n return (index - 1) >> 1;\n };\n /**\n * Make this a heap. O(N).\n * @private\n */\n PriorityQueue.prototype.heapify_ = function () {\n var i;\n for (i = (this.elements_.length >> 1) - 1; i >= 0; i--) {\n this.siftUp_(i);\n }\n };\n /**\n * @return {boolean} Is empty.\n */\n PriorityQueue.prototype.isEmpty = function () {\n return this.elements_.length === 0;\n };\n /**\n * @param {string} key Key.\n * @return {boolean} Is key queued.\n */\n PriorityQueue.prototype.isKeyQueued = function (key) {\n return key in this.queuedElements_;\n };\n /**\n * @param {T} element Element.\n * @return {boolean} Is queued.\n */\n PriorityQueue.prototype.isQueued = function (element) {\n return this.isKeyQueued(this.keyFunction_(element));\n };\n /**\n * @param {number} index The index of the node to move down.\n * @private\n */\n PriorityQueue.prototype.siftUp_ = function (index) {\n var elements = this.elements_;\n var priorities = this.priorities_;\n var count = elements.length;\n var element = elements[index];\n var priority = priorities[index];\n var startIndex = index;\n while (index < count >> 1) {\n var lIndex = this.getLeftChildIndex_(index);\n var rIndex = this.getRightChildIndex_(index);\n var smallerChildIndex = rIndex < count && priorities[rIndex] < priorities[lIndex]\n ? rIndex\n : lIndex;\n elements[index] = elements[smallerChildIndex];\n priorities[index] = priorities[smallerChildIndex];\n index = smallerChildIndex;\n }\n elements[index] = element;\n priorities[index] = priority;\n this.siftDown_(startIndex, index);\n };\n /**\n * @param {number} startIndex The index of the root.\n * @param {number} index The index of the node to move up.\n * @private\n */\n PriorityQueue.prototype.siftDown_ = function (startIndex, index) {\n var elements = this.elements_;\n var priorities = this.priorities_;\n var element = elements[index];\n var priority = priorities[index];\n while (index > startIndex) {\n var parentIndex = this.getParentIndex_(index);\n if (priorities[parentIndex] > priority) {\n elements[index] = elements[parentIndex];\n priorities[index] = priorities[parentIndex];\n index = parentIndex;\n }\n else {\n break;\n }\n }\n elements[index] = element;\n priorities[index] = priority;\n };\n /**\n * FIXME empty description for jsdoc\n */\n PriorityQueue.prototype.reprioritize = function () {\n var priorityFunction = this.priorityFunction_;\n var elements = this.elements_;\n var priorities = this.priorities_;\n var index = 0;\n var n = elements.length;\n var element, i, priority;\n for (i = 0; i < n; ++i) {\n element = elements[i];\n priority = priorityFunction(element);\n if (priority == DROP) {\n delete this.queuedElements_[this.keyFunction_(element)];\n }\n else {\n priorities[index] = priority;\n elements[index++] = element;\n }\n }\n elements.length = index;\n priorities.length = index;\n this.heapify_();\n };\n return PriorityQueue;\n}());\nexport default PriorityQueue;\n//# sourceMappingURL=PriorityQueue.js.map","/**\n * @module ol/TileState\n */\n/**\n * @enum {number}\n */\nexport default {\n IDLE: 0,\n LOADING: 1,\n LOADED: 2,\n /**\n * Indicates that tile loading failed\n * @type {number}\n */\n ERROR: 3,\n EMPTY: 4,\n};\n//# sourceMappingURL=TileState.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/TileQueue\n */\nimport EventType from './events/EventType.js';\nimport PriorityQueue, { DROP } from './structs/PriorityQueue.js';\nimport TileState from './TileState.js';\n/**\n * @typedef {function(import(\"./Tile.js\").default, string, import(\"./coordinate.js\").Coordinate, number): number} PriorityFunction\n */\nvar TileQueue = /** @class */ (function (_super) {\n __extends(TileQueue, _super);\n /**\n * @param {PriorityFunction} tilePriorityFunction Tile priority function.\n * @param {function(): ?} tileChangeCallback Function called on each tile change event.\n */\n function TileQueue(tilePriorityFunction, tileChangeCallback) {\n var _this = _super.call(this, \n /**\n * @param {Array} element Element.\n * @return {number} Priority.\n */\n function (element) {\n return tilePriorityFunction.apply(null, element);\n }, \n /**\n * @param {Array} element Element.\n * @return {string} Key.\n */\n function (element) {\n return /** @type {import(\"./Tile.js\").default} */ (element[0]).getKey();\n }) || this;\n /** @private */\n _this.boundHandleTileChange_ = _this.handleTileChange.bind(_this);\n /**\n * @private\n * @type {function(): ?}\n */\n _this.tileChangeCallback_ = tileChangeCallback;\n /**\n * @private\n * @type {number}\n */\n _this.tilesLoading_ = 0;\n /**\n * @private\n * @type {!Object}\n */\n _this.tilesLoadingKeys_ = {};\n return _this;\n }\n /**\n * @param {Array} element Element.\n * @return {boolean} The element was added to the queue.\n */\n TileQueue.prototype.enqueue = function (element) {\n var added = _super.prototype.enqueue.call(this, element);\n if (added) {\n var tile = element[0];\n tile.addEventListener(EventType.CHANGE, this.boundHandleTileChange_);\n }\n return added;\n };\n /**\n * @return {number} Number of tiles loading.\n */\n TileQueue.prototype.getTilesLoading = function () {\n return this.tilesLoading_;\n };\n /**\n * @param {import(\"./events/Event.js\").default} event Event.\n * @protected\n */\n TileQueue.prototype.handleTileChange = function (event) {\n var tile = /** @type {import(\"./Tile.js\").default} */ (event.target);\n var state = tile.getState();\n if (state === TileState.LOADED ||\n state === TileState.ERROR ||\n state === TileState.EMPTY) {\n tile.removeEventListener(EventType.CHANGE, this.boundHandleTileChange_);\n var tileKey = tile.getKey();\n if (tileKey in this.tilesLoadingKeys_) {\n delete this.tilesLoadingKeys_[tileKey];\n --this.tilesLoading_;\n }\n this.tileChangeCallback_();\n }\n };\n /**\n * @param {number} maxTotalLoading Maximum number tiles to load simultaneously.\n * @param {number} maxNewLoads Maximum number of new tiles to load.\n */\n TileQueue.prototype.loadMoreTiles = function (maxTotalLoading, maxNewLoads) {\n var newLoads = 0;\n var state, tile, tileKey;\n while (this.tilesLoading_ < maxTotalLoading &&\n newLoads < maxNewLoads &&\n this.getCount() > 0) {\n tile = /** @type {import(\"./Tile.js\").default} */ (this.dequeue()[0]);\n tileKey = tile.getKey();\n state = tile.getState();\n if (state === TileState.IDLE && !(tileKey in this.tilesLoadingKeys_)) {\n this.tilesLoadingKeys_[tileKey] = true;\n ++this.tilesLoading_;\n ++newLoads;\n tile.load();\n }\n }\n };\n return TileQueue;\n}(PriorityQueue));\nexport default TileQueue;\n/**\n * @param {import('./PluggableMap.js').FrameState} frameState Frame state.\n * @param {import(\"./Tile.js\").default} tile Tile.\n * @param {string} tileSourceKey Tile source key.\n * @param {import(\"./coordinate.js\").Coordinate} tileCenter Tile center.\n * @param {number} tileResolution Tile resolution.\n * @return {number} Tile priority.\n */\nexport function getTilePriority(frameState, tile, tileSourceKey, tileCenter, tileResolution) {\n // Filter out tiles at higher zoom levels than the current zoom level, or that\n // are outside the visible extent.\n if (!frameState || !(tileSourceKey in frameState.wantedTiles)) {\n return DROP;\n }\n if (!frameState.wantedTiles[tileSourceKey][tile.getKey()]) {\n return DROP;\n }\n // Prioritize the highest zoom level tiles closest to the focus.\n // Tiles at higher zoom levels are prioritized using Math.log(tileResolution).\n // Within a zoom level, tiles are prioritized by the distance in pixels between\n // the center of the tile and the center of the viewport. The factor of 65536\n // means that the prioritization should behave as desired for tiles up to\n // 65536 * Math.log(2) = 45426 pixels from the focus.\n var center = frameState.viewState.center;\n var deltaX = tileCenter[0] - center[0];\n var deltaY = tileCenter[1] - center[1];\n return (65536 * Math.log(tileResolution) +\n Math.sqrt(deltaX * deltaX + deltaY * deltaY) / tileResolution);\n}\n//# sourceMappingURL=TileQueue.js.map","/**\n * @module ol/ViewHint\n */\n/**\n * @enum {number}\n */\nexport default {\n ANIMATING: 0,\n INTERACTING: 1,\n};\n//# sourceMappingURL=ViewHint.js.map","/**\n * @module ol/ViewProperty\n */\n/**\n * @enum {string}\n */\nexport default {\n CENTER: 'center',\n RESOLUTION: 'resolution',\n ROTATION: 'rotation',\n};\n//# sourceMappingURL=ViewProperty.js.map","/**\n * @module ol/tilegrid/common\n */\n/**\n * Default maximum zoom for default tile grids.\n * @type {number}\n */\nexport var DEFAULT_MAX_ZOOM = 42;\n/**\n * Default tile size.\n * @type {number}\n */\nexport var DEFAULT_TILE_SIZE = 256;\n//# sourceMappingURL=common.js.map","/**\n * @module ol/centerconstraint\n */\nimport { clamp } from './math.js';\n/**\n * @typedef {function((import(\"./coordinate.js\").Coordinate|undefined), number, import(\"./size.js\").Size, boolean=, Array=): (import(\"./coordinate.js\").Coordinate|undefined)} Type\n */\n/**\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {boolean} onlyCenter If true, the constraint will only apply to the view center.\n * @param {boolean} smooth If true, the view will be able to go slightly out of the given extent\n * (only during interaction and animation).\n * @return {Type} The constraint.\n */\nexport function createExtent(extent, onlyCenter, smooth) {\n return (\n /**\n * @param {import(\"./coordinate.js\").Coordinate|undefined} center Center.\n * @param {number} resolution Resolution.\n * @param {import(\"./size.js\").Size} size Viewport size; unused if `onlyCenter` was specified.\n * @param {boolean} [opt_isMoving] True if an interaction or animation is in progress.\n * @param {Array} [opt_centerShift] Shift between map center and viewport center.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Center.\n */\n function (center, resolution, size, opt_isMoving, opt_centerShift) {\n if (center) {\n var viewWidth = onlyCenter ? 0 : size[0] * resolution;\n var viewHeight = onlyCenter ? 0 : size[1] * resolution;\n var shiftX = opt_centerShift ? opt_centerShift[0] : 0;\n var shiftY = opt_centerShift ? opt_centerShift[1] : 0;\n var minX = extent[0] + viewWidth / 2 + shiftX;\n var maxX = extent[2] - viewWidth / 2 + shiftX;\n var minY = extent[1] + viewHeight / 2 + shiftY;\n var maxY = extent[3] - viewHeight / 2 + shiftY;\n // note: when zooming out of bounds, min and max values for x and y may\n // end up inverted (min > max); this has to be accounted for\n if (minX > maxX) {\n minX = (maxX + minX) / 2;\n maxX = minX;\n }\n if (minY > maxY) {\n minY = (maxY + minY) / 2;\n maxY = minY;\n }\n var x = clamp(center[0], minX, maxX);\n var y = clamp(center[1], minY, maxY);\n var ratio = 30 * resolution;\n // during an interaction, allow some overscroll\n if (opt_isMoving && smooth) {\n x +=\n -ratio * Math.log(1 + Math.max(0, minX - center[0]) / ratio) +\n ratio * Math.log(1 + Math.max(0, center[0] - maxX) / ratio);\n y +=\n -ratio * Math.log(1 + Math.max(0, minY - center[1]) / ratio) +\n ratio * Math.log(1 + Math.max(0, center[1] - maxY) / ratio);\n }\n return [x, y];\n }\n else {\n return undefined;\n }\n });\n}\n/**\n * @param {import(\"./coordinate.js\").Coordinate} [center] Center.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Center.\n */\nexport function none(center) {\n return center;\n}\n//# sourceMappingURL=centerconstraint.js.map","/**\n * @module ol/resolutionconstraint\n */\nimport { clamp } from './math.js';\nimport { getHeight, getWidth } from './extent.js';\nimport { linearFindNearest } from './array.js';\n/**\n * @typedef {function((number|undefined), number, import(\"./size.js\").Size, boolean=): (number|undefined)} Type\n */\n/**\n * Returns a modified resolution taking into account the viewport size and maximum\n * allowed extent.\n * @param {number} resolution Resolution\n * @param {import(\"./extent.js\").Extent} maxExtent Maximum allowed extent.\n * @param {import(\"./size.js\").Size} viewportSize Viewport size.\n * @param {boolean} showFullExtent Whether to show the full extent.\n * @return {number} Capped resolution.\n */\nfunction getViewportClampedResolution(resolution, maxExtent, viewportSize, showFullExtent) {\n var xResolution = getWidth(maxExtent) / viewportSize[0];\n var yResolution = getHeight(maxExtent) / viewportSize[1];\n if (showFullExtent) {\n return Math.min(resolution, Math.max(xResolution, yResolution));\n }\n return Math.min(resolution, Math.min(xResolution, yResolution));\n}\n/**\n * Returns a modified resolution to be between maxResolution and minResolution while\n * still allowing the value to be slightly out of bounds.\n * Note: the computation is based on the logarithm function (ln):\n * - at 1, ln(x) is 0\n * - above 1, ln(x) keeps increasing but at a much slower pace than x\n * The final result is clamped to prevent getting too far away from bounds.\n * @param {number} resolution Resolution.\n * @param {number} maxResolution Max resolution.\n * @param {number} minResolution Min resolution.\n * @return {number} Smoothed resolution.\n */\nfunction getSmoothClampedResolution(resolution, maxResolution, minResolution) {\n var result = Math.min(resolution, maxResolution);\n var ratio = 50;\n result *=\n Math.log(1 + ratio * Math.max(0, resolution / maxResolution - 1)) / ratio +\n 1;\n if (minResolution) {\n result = Math.max(result, minResolution);\n result /=\n Math.log(1 + ratio * Math.max(0, minResolution / resolution - 1)) /\n ratio +\n 1;\n }\n return clamp(result, minResolution / 2, maxResolution * 2);\n}\n/**\n * @param {Array} resolutions Resolutions.\n * @param {boolean} [opt_smooth] If true, the view will be able to slightly exceed resolution limits. Default: true.\n * @param {import(\"./extent.js\").Extent} [opt_maxExtent] Maximum allowed extent.\n * @param {boolean} [opt_showFullExtent] If true, allows us to show the full extent. Default: false.\n * @return {Type} Zoom function.\n */\nexport function createSnapToResolutions(resolutions, opt_smooth, opt_maxExtent, opt_showFullExtent) {\n return (\n /**\n * @param {number|undefined} resolution Resolution.\n * @param {number} direction Direction.\n * @param {import(\"./size.js\").Size} size Viewport size.\n * @param {boolean} [opt_isMoving] True if an interaction or animation is in progress.\n * @return {number|undefined} Resolution.\n */\n function (resolution, direction, size, opt_isMoving) {\n if (resolution !== undefined) {\n var maxResolution = resolutions[0];\n var minResolution = resolutions[resolutions.length - 1];\n var cappedMaxRes = opt_maxExtent\n ? getViewportClampedResolution(maxResolution, opt_maxExtent, size, opt_showFullExtent)\n : maxResolution;\n // during interacting or animating, allow intermediary values\n if (opt_isMoving) {\n var smooth = opt_smooth !== undefined ? opt_smooth : true;\n if (!smooth) {\n return clamp(resolution, minResolution, cappedMaxRes);\n }\n return getSmoothClampedResolution(resolution, cappedMaxRes, minResolution);\n }\n var capped = Math.min(cappedMaxRes, resolution);\n var z = Math.floor(linearFindNearest(resolutions, capped, direction));\n if (resolutions[z] > cappedMaxRes && z < resolutions.length - 1) {\n return resolutions[z + 1];\n }\n return resolutions[z];\n }\n else {\n return undefined;\n }\n });\n}\n/**\n * @param {number} power Power.\n * @param {number} maxResolution Maximum resolution.\n * @param {number} [opt_minResolution] Minimum resolution.\n * @param {boolean} [opt_smooth] If true, the view will be able to slightly exceed resolution limits. Default: true.\n * @param {import(\"./extent.js\").Extent} [opt_maxExtent] Maximum allowed extent.\n * @param {boolean} [opt_showFullExtent] If true, allows us to show the full extent. Default: false.\n * @return {Type} Zoom function.\n */\nexport function createSnapToPower(power, maxResolution, opt_minResolution, opt_smooth, opt_maxExtent, opt_showFullExtent) {\n return (\n /**\n * @param {number|undefined} resolution Resolution.\n * @param {number} direction Direction.\n * @param {import(\"./size.js\").Size} size Viewport size.\n * @param {boolean} [opt_isMoving] True if an interaction or animation is in progress.\n * @return {number|undefined} Resolution.\n */\n function (resolution, direction, size, opt_isMoving) {\n if (resolution !== undefined) {\n var cappedMaxRes = opt_maxExtent\n ? getViewportClampedResolution(maxResolution, opt_maxExtent, size, opt_showFullExtent)\n : maxResolution;\n var minResolution = opt_minResolution !== undefined ? opt_minResolution : 0;\n // during interacting or animating, allow intermediary values\n if (opt_isMoving) {\n var smooth = opt_smooth !== undefined ? opt_smooth : true;\n if (!smooth) {\n return clamp(resolution, minResolution, cappedMaxRes);\n }\n return getSmoothClampedResolution(resolution, cappedMaxRes, minResolution);\n }\n var tolerance = 1e-9;\n var minZoomLevel = Math.ceil(Math.log(maxResolution / cappedMaxRes) / Math.log(power) - tolerance);\n var offset = -direction * (0.5 - tolerance) + 0.5;\n var capped = Math.min(cappedMaxRes, resolution);\n var cappedZoomLevel = Math.floor(Math.log(maxResolution / capped) / Math.log(power) + offset);\n var zoomLevel = Math.max(minZoomLevel, cappedZoomLevel);\n var newResolution = maxResolution / Math.pow(power, zoomLevel);\n return clamp(newResolution, minResolution, cappedMaxRes);\n }\n else {\n return undefined;\n }\n });\n}\n/**\n * @param {number} maxResolution Max resolution.\n * @param {number} minResolution Min resolution.\n * @param {boolean} [opt_smooth] If true, the view will be able to slightly exceed resolution limits. Default: true.\n * @param {import(\"./extent.js\").Extent} [opt_maxExtent] Maximum allowed extent.\n * @param {boolean} [opt_showFullExtent] If true, allows us to show the full extent. Default: false.\n * @return {Type} Zoom function.\n */\nexport function createMinMaxResolution(maxResolution, minResolution, opt_smooth, opt_maxExtent, opt_showFullExtent) {\n return (\n /**\n * @param {number|undefined} resolution Resolution.\n * @param {number} direction Direction.\n * @param {import(\"./size.js\").Size} size Viewport size.\n * @param {boolean} [opt_isMoving] True if an interaction or animation is in progress.\n * @return {number|undefined} Resolution.\n */\n function (resolution, direction, size, opt_isMoving) {\n if (resolution !== undefined) {\n var cappedMaxRes = opt_maxExtent\n ? getViewportClampedResolution(maxResolution, opt_maxExtent, size, opt_showFullExtent)\n : maxResolution;\n var smooth = opt_smooth !== undefined ? opt_smooth : true;\n if (!smooth || !opt_isMoving) {\n return clamp(resolution, minResolution, cappedMaxRes);\n }\n return getSmoothClampedResolution(resolution, cappedMaxRes, minResolution);\n }\n else {\n return undefined;\n }\n });\n}\n//# sourceMappingURL=resolutionconstraint.js.map","/**\n * @module ol/rotationconstraint\n */\nimport { toRadians } from './math.js';\n/**\n * @typedef {function((number|undefined), boolean=): (number|undefined)} Type\n */\n/**\n * @param {number|undefined} rotation Rotation.\n * @return {number|undefined} Rotation.\n */\nexport function disable(rotation) {\n if (rotation !== undefined) {\n return 0;\n }\n else {\n return undefined;\n }\n}\n/**\n * @param {number|undefined} rotation Rotation.\n * @return {number|undefined} Rotation.\n */\nexport function none(rotation) {\n if (rotation !== undefined) {\n return rotation;\n }\n else {\n return undefined;\n }\n}\n/**\n * @param {number} n N.\n * @return {Type} Rotation constraint.\n */\nexport function createSnapToN(n) {\n var theta = (2 * Math.PI) / n;\n return (\n /**\n * @param {number|undefined} rotation Rotation.\n * @param {boolean} [opt_isMoving] True if an interaction or animation is in progress.\n * @return {number|undefined} Rotation.\n */\n function (rotation, opt_isMoving) {\n if (opt_isMoving) {\n return rotation;\n }\n if (rotation !== undefined) {\n rotation = Math.floor(rotation / theta + 0.5) * theta;\n return rotation;\n }\n else {\n return undefined;\n }\n });\n}\n/**\n * @param {number} [opt_tolerance] Tolerance.\n * @return {Type} Rotation constraint.\n */\nexport function createSnapToZero(opt_tolerance) {\n var tolerance = opt_tolerance || toRadians(5);\n return (\n /**\n * @param {number|undefined} rotation Rotation.\n * @param {boolean} [opt_isMoving] True if an interaction or animation is in progress.\n * @return {number|undefined} Rotation.\n */\n function (rotation, opt_isMoving) {\n if (opt_isMoving) {\n return rotation;\n }\n if (rotation !== undefined) {\n if (Math.abs(rotation) <= tolerance) {\n return 0;\n }\n else {\n return rotation;\n }\n }\n else {\n return undefined;\n }\n });\n}\n//# sourceMappingURL=rotationconstraint.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/View\n */\nimport BaseObject from './Object.js';\nimport GeometryType from './geom/GeometryType.js';\nimport Units from './proj/Units.js';\nimport ViewHint from './ViewHint.js';\nimport ViewProperty from './ViewProperty.js';\nimport { DEFAULT_TILE_SIZE } from './tilegrid/common.js';\nimport { METERS_PER_UNIT, createProjection, fromUserCoordinate, fromUserExtent, getUserProjection, toUserCoordinate, toUserExtent, } from './proj.js';\nimport { VOID } from './functions.js';\nimport { add as addCoordinate, equals as coordinatesEqual, rotate as rotateCoordinate, } from './coordinate.js';\nimport { assert } from './asserts.js';\nimport { assign } from './obj.js';\nimport { none as centerNone, createExtent } from './centerconstraint.js';\nimport { clamp, modulo } from './math.js';\nimport { createMinMaxResolution } from './resolutionconstraint.js';\nimport { createSnapToN, createSnapToZero, disable, none as rotationNone, } from './rotationconstraint.js';\nimport { createSnapToPower, createSnapToResolutions, } from './resolutionconstraint.js';\nimport { easeOut } from './easing.js';\nimport { equals } from './coordinate.js';\nimport { getCenter, getForViewAndSize, getHeight, getWidth, isEmpty, } from './extent.js';\nimport { inAndOut } from './easing.js';\nimport { linearFindNearest } from './array.js';\nimport { fromExtent as polygonFromExtent } from './geom/Polygon.js';\n/**\n * An animation configuration\n *\n * @typedef {Object} Animation\n * @property {import(\"./coordinate.js\").Coordinate} [sourceCenter] Source center.\n * @property {import(\"./coordinate.js\").Coordinate} [targetCenter] Target center.\n * @property {number} [sourceResolution] Source resolution.\n * @property {number} [targetResolution] Target resolution.\n * @property {number} [sourceRotation] Source rotation.\n * @property {number} [targetRotation] Target rotation.\n * @property {import(\"./coordinate.js\").Coordinate} [anchor] Anchor.\n * @property {number} start Start.\n * @property {number} duration Duration.\n * @property {boolean} complete Complete.\n * @property {function(number):number} easing Easing.\n * @property {function(boolean):void} callback Callback.\n */\n/**\n * @typedef {Object} Constraints\n * @property {import(\"./centerconstraint.js\").Type} center Center.\n * @property {import(\"./resolutionconstraint.js\").Type} resolution Resolution.\n * @property {import(\"./rotationconstraint.js\").Type} rotation Rotation.\n */\n/**\n * @typedef {Object} FitOptions\n * @property {import(\"./size.js\").Size} [size] The size in pixels of the box to fit\n * the extent into. Default is the current size of the first map in the DOM that\n * uses this view, or `[100, 100]` if no such map is found.\n * @property {!Array} [padding=[0, 0, 0, 0]] Padding (in pixels) to be\n * cleared inside the view. Values in the array are top, right, bottom and left\n * padding.\n * @property {boolean} [nearest=false] If the view `constrainResolution` option is `true`,\n * get the nearest extent instead of the closest that actually fits the view.\n * @property {number} [minResolution=0] Minimum resolution that we zoom to.\n * @property {number} [maxZoom] Maximum zoom level that we zoom to. If\n * `minResolution` is given, this property is ignored.\n * @property {number} [duration] The duration of the animation in milliseconds.\n * By default, there is no animation to the target extent.\n * @property {function(number):number} [easing] The easing function used during\n * the animation (defaults to {@link module:ol/easing.inAndOut}).\n * The function will be called for each frame with a number representing a\n * fraction of the animation's duration. The function should return a number\n * between 0 and 1 representing the progress toward the destination state.\n * @property {function(boolean):void} [callback] Function called when the view is in\n * its final position. The callback will be called with `true` if the animation\n * series completed on its own or `false` if it was cancelled.\n */\n/**\n * @typedef {Object} ViewOptions\n * @property {import(\"./coordinate.js\").Coordinate} [center] The initial center for\n * the view. If a user projection is not set, the coordinate system for the center is\n * specified with the `projection` option. Layer sources will not be fetched if this\n * is not set, but the center can be set later with {@link #setCenter}.\n * @property {boolean|number} [constrainRotation=true] Rotation constraint.\n * `false` means no constraint. `true` means no constraint, but snap to zero\n * near zero. A number constrains the rotation to that number of values. For\n * example, `4` will constrain the rotation to 0, 90, 180, and 270 degrees.\n * @property {boolean} [enableRotation=true] Enable rotation.\n * If `false`, a rotation constraint that always sets the rotation to zero is\n * used. The `constrainRotation` option has no effect if `enableRotation` is\n * `false`.\n * @property {import(\"./extent.js\").Extent} [extent] The extent that constrains the\n * view, in other words, nothing outside of this extent can be visible on the map.\n * @property {boolean} [constrainOnlyCenter=false] If true, the extent\n * constraint will only apply to the view center and not the whole extent.\n * @property {boolean} [smoothExtentConstraint=true] If true, the extent\n * constraint will be applied smoothly, i.e. allow the view to go slightly outside\n * of the given `extent`.\n * @property {number} [maxResolution] The maximum resolution used to determine\n * the resolution constraint. It is used together with `minResolution` (or\n * `maxZoom`) and `zoomFactor`. If unspecified it is calculated in such a way\n * that the projection's validity extent fits in a 256x256 px tile. If the\n * projection is Spherical Mercator (the default) then `maxResolution` defaults\n * to `40075016.68557849 / 256 = 156543.03392804097`.\n * @property {number} [minResolution] The minimum resolution used to determine\n * the resolution constraint. It is used together with `maxResolution` (or\n * `minZoom`) and `zoomFactor`. If unspecified it is calculated assuming 29\n * zoom levels (with a factor of 2). If the projection is Spherical Mercator\n * (the default) then `minResolution` defaults to\n * `40075016.68557849 / 256 / Math.pow(2, 28) = 0.0005831682455839253`.\n * @property {number} [maxZoom=28] The maximum zoom level used to determine the\n * resolution constraint. It is used together with `minZoom` (or\n * `maxResolution`) and `zoomFactor`. Note that if `minResolution` is also\n * provided, it is given precedence over `maxZoom`.\n * @property {number} [minZoom=0] The minimum zoom level used to determine the\n * resolution constraint. It is used together with `maxZoom` (or\n * `minResolution`) and `zoomFactor`. Note that if `maxResolution` is also\n * provided, it is given precedence over `minZoom`.\n * @property {boolean} [multiWorld=false] If `false` the view is constrained so\n * only one world is visible, and you cannot pan off the edge. If `true` the map\n * may show multiple worlds at low zoom levels. Only used if the `projection` is\n * global. Note that if `extent` is also provided it is given precedence.\n * @property {boolean} [constrainResolution=false] If true, the view will always\n * animate to the closest zoom level after an interaction; false means\n * intermediary zoom levels are allowed.\n * @property {boolean} [smoothResolutionConstraint=true] If true, the resolution\n * min/max values will be applied smoothly, i. e. allow the view to exceed slightly\n * the given resolution or zoom bounds.\n * @property {boolean} [showFullExtent=false] Allow the view to be zoomed out to\n * show the full configured extent. By default, when a view is configured with an\n * extent, users will not be able to zoom out so the viewport exceeds the extent in\n * either dimension. This means the full extent may not be visible if the viewport\n * is taller or wider than the aspect ratio of the configured extent. If\n * showFullExtent is true, the user will be able to zoom out so that the viewport\n * exceeds the height or width of the configured extent, but not both, allowing the\n * full extent to be shown.\n * @property {import(\"./proj.js\").ProjectionLike} [projection='EPSG:3857'] The\n * projection. The default is Spherical Mercator.\n * @property {number} [resolution] The initial resolution for the view. The\n * units are `projection` units per pixel (e.g. meters per pixel). An\n * alternative to setting this is to set `zoom`. Layer sources will not be\n * fetched if neither this nor `zoom` are defined, but they can be set later\n * with {@link #setZoom} or {@link #setResolution}.\n * @property {Array} [resolutions] Resolutions that determine the\n * zoom levels if specified. The index in the array corresponds to the zoom level,\n * therefore the resolution values have to be in descending order. It also constrains\n * the resolution by the minimum and maximum value. If set the `maxResolution`,\n * `minResolution`, `minZoom`, `maxZoom`, and `zoomFactor` options are ignored.\n * @property {number} [rotation=0] The initial rotation for the view in radians\n * (positive rotation clockwise, 0 means North).\n * @property {number} [zoom] Only used if `resolution` is not defined. Zoom\n * level used to calculate the initial resolution for the view.\n * @property {number} [zoomFactor=2] The zoom factor used to compute the\n * corresponding resolution.\n * @property {!Array} [padding=[0, 0, 0, 0]] Padding (in css pixels).\n * If the map viewport is partially covered with other content (overlays) along\n * its edges, this setting allows to shift the center of the viewport away from\n * that content. The order of the values is top, right, bottom, left.\n */\n/**\n * @typedef {Object} AnimationOptions\n * @property {import(\"./coordinate.js\").Coordinate} [center] The center of the view at the end of\n * the animation.\n * @property {number} [zoom] The zoom level of the view at the end of the\n * animation. This takes precedence over `resolution`.\n * @property {number} [resolution] The resolution of the view at the end\n * of the animation. If `zoom` is also provided, this option will be ignored.\n * @property {number} [rotation] The rotation of the view at the end of\n * the animation.\n * @property {import(\"./coordinate.js\").Coordinate} [anchor] Optional anchor to remain fixed\n * during a rotation or resolution animation.\n * @property {number} [duration=1000] The duration of the animation in milliseconds.\n * @property {function(number):number} [easing] The easing function used\n * during the animation (defaults to {@link module:ol/easing.inAndOut}).\n * The function will be called for each frame with a number representing a\n * fraction of the animation's duration. The function should return a number\n * between 0 and 1 representing the progress toward the destination state.\n */\n/**\n * @typedef {Object} State\n * @property {import(\"./coordinate.js\").Coordinate} center Center.\n * @property {import(\"./proj/Projection.js\").default} projection Projection.\n * @property {number} resolution Resolution.\n * @property {number} rotation Rotation.\n * @property {number} zoom Zoom.\n */\n/**\n * Default min zoom level for the map view.\n * @type {number}\n */\nvar DEFAULT_MIN_ZOOM = 0;\n/**\n * @typedef {import(\"./ObjectEventType\").Types|'change:center'|'change:resolution'|'change:rotation'} ViewObjectEventTypes\n */\n/***\n * @template Return\n * @typedef {import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature &\n * import(\"./Observable\").CombinedOnSignature} ViewOnSignature\n */\n/**\n * @classdesc\n * A View object represents a simple 2D view of the map.\n *\n * This is the object to act upon to change the center, resolution,\n * and rotation of the map.\n *\n * A View has a `projection`. The projection determines the\n * coordinate system of the center, and its units determine the units of the\n * resolution (projection units per pixel). The default projection is\n * Spherical Mercator (EPSG:3857).\n *\n * ### The view states\n *\n * A View is determined by three states: `center`, `resolution`,\n * and `rotation`. Each state has a corresponding getter and setter, e.g.\n * `getCenter` and `setCenter` for the `center` state.\n *\n * The `zoom` state is actually not saved on the view: all computations\n * internally use the `resolution` state. Still, the `setZoom` and `getZoom`\n * methods are available, as well as `getResolutionForZoom` and\n * `getZoomForResolution` to switch from one system to the other.\n *\n * ### The constraints\n *\n * `setCenter`, `setResolution` and `setRotation` can be used to change the\n * states of the view, but any constraint defined in the constructor will\n * be applied along the way.\n *\n * A View object can have a *resolution constraint*, a *rotation constraint*\n * and a *center constraint*.\n *\n * The *resolution constraint* typically restricts min/max values and\n * snaps to specific resolutions. It is determined by the following\n * options: `resolutions`, `maxResolution`, `maxZoom` and `zoomFactor`.\n * If `resolutions` is set, the other three options are ignored. See\n * documentation for each option for more information. By default, the view\n * only has a min/max restriction and allow intermediary zoom levels when\n * pinch-zooming for example.\n *\n * The *rotation constraint* snaps to specific angles. It is determined\n * by the following options: `enableRotation` and `constrainRotation`.\n * By default rotation is allowed and its value is snapped to zero when approaching the\n * horizontal.\n *\n * The *center constraint* is determined by the `extent` option. By\n * default the view center is not constrained at all.\n *\n * ### Changing the view state\n *\n * It is important to note that `setZoom`, `setResolution`, `setCenter` and\n * `setRotation` are subject to the above mentioned constraints. As such, it\n * may sometimes not be possible to know in advance the resulting state of the\n * View. For example, calling `setResolution(10)` does not guarantee that\n * `getResolution()` will return `10`.\n *\n * A consequence of this is that, when applying a delta on the view state, one\n * should use `adjustCenter`, `adjustRotation`, `adjustZoom` and `adjustResolution`\n * rather than the corresponding setters. This will let view do its internal\n * computations. Besides, the `adjust*` methods also take an `opt_anchor`\n * argument which allows specifying an origin for the transformation.\n *\n * ### Interacting with the view\n *\n * View constraints are usually only applied when the view is *at rest*, meaning that\n * no interaction or animation is ongoing. As such, if the user puts the view in a\n * state that is not equivalent to a constrained one (e.g. rotating the view when\n * the snap angle is 0), an animation will be triggered at the interaction end to\n * put back the view to a stable state;\n *\n * @api\n */\nvar View = /** @class */ (function (_super) {\n __extends(View, _super);\n /**\n * @param {ViewOptions} [opt_options] View options.\n */\n function View(opt_options) {\n var _this = _super.call(this) || this;\n /***\n * @type {ViewOnSignature}\n */\n _this.on;\n /***\n * @type {ViewOnSignature}\n */\n _this.once;\n /***\n * @type {ViewOnSignature}\n */\n _this.un;\n var options = assign({}, opt_options);\n /**\n * @private\n * @type {Array}\n */\n _this.hints_ = [0, 0];\n /**\n * @private\n * @type {Array>}\n */\n _this.animations_ = [];\n /**\n * @private\n * @type {number|undefined}\n */\n _this.updateAnimationKey_;\n /**\n * @private\n * @const\n * @type {import(\"./proj/Projection.js\").default}\n */\n _this.projection_ = createProjection(options.projection, 'EPSG:3857');\n /**\n * @private\n * @type {import(\"./size.js\").Size}\n */\n _this.viewportSize_ = [100, 100];\n /**\n * @private\n * @type {import(\"./coordinate.js\").Coordinate|undefined}\n */\n _this.targetCenter_ = null;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.targetResolution_;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.targetRotation_;\n /**\n * @private\n * @type {import(\"./coordinate.js\").Coordinate|undefined}\n */\n _this.cancelAnchor_ = undefined;\n if (options.center) {\n options.center = fromUserCoordinate(options.center, _this.projection_);\n }\n if (options.extent) {\n options.extent = fromUserExtent(options.extent, _this.projection_);\n }\n _this.applyOptions_(options);\n return _this;\n }\n /**\n * Set up the view with the given options.\n * @param {ViewOptions} options View options.\n */\n View.prototype.applyOptions_ = function (options) {\n /**\n * @type {Object}\n */\n var properties = {};\n var resolutionConstraintInfo = createResolutionConstraint(options);\n /**\n * @private\n * @type {number}\n */\n this.maxResolution_ = resolutionConstraintInfo.maxResolution;\n /**\n * @private\n * @type {number}\n */\n this.minResolution_ = resolutionConstraintInfo.minResolution;\n /**\n * @private\n * @type {number}\n */\n this.zoomFactor_ = resolutionConstraintInfo.zoomFactor;\n /**\n * @private\n * @type {Array|undefined}\n */\n this.resolutions_ = options.resolutions;\n /**\n * @type {Array|undefined}\n * @private\n */\n this.padding_ = options.padding;\n /**\n * @private\n * @type {number}\n */\n this.minZoom_ = resolutionConstraintInfo.minZoom;\n var centerConstraint = createCenterConstraint(options);\n var resolutionConstraint = resolutionConstraintInfo.constraint;\n var rotationConstraint = createRotationConstraint(options);\n /**\n * @private\n * @type {Constraints}\n */\n this.constraints_ = {\n center: centerConstraint,\n resolution: resolutionConstraint,\n rotation: rotationConstraint,\n };\n this.setRotation(options.rotation !== undefined ? options.rotation : 0);\n this.setCenterInternal(options.center !== undefined ? options.center : null);\n if (options.resolution !== undefined) {\n this.setResolution(options.resolution);\n }\n else if (options.zoom !== undefined) {\n this.setZoom(options.zoom);\n }\n this.setProperties(properties);\n /**\n * @private\n * @type {ViewOptions}\n */\n this.options_ = options;\n };\n Object.defineProperty(View.prototype, \"padding\", {\n /**\n * Padding (in css pixels).\n * If the map viewport is partially covered with other content (overlays) along\n * its edges, this setting allows to shift the center of the viewport away from that\n * content. The order of the values in the array is top, right, bottom, left.\n * The default is no padding, which is equivalent to `[0, 0, 0, 0]`.\n * @type {Array|undefined}\n * @api\n */\n get: function () {\n return this.padding_;\n },\n set: function (padding) {\n var oldPadding = this.padding_;\n this.padding_ = padding;\n var center = this.getCenter();\n if (center) {\n var newPadding = padding || [0, 0, 0, 0];\n oldPadding = oldPadding || [0, 0, 0, 0];\n var resolution = this.getResolution();\n var offsetX = (resolution / 2) *\n (newPadding[3] - oldPadding[3] + oldPadding[1] - newPadding[1]);\n var offsetY = (resolution / 2) *\n (newPadding[0] - oldPadding[0] + oldPadding[2] - newPadding[2]);\n this.setCenterInternal([center[0] + offsetX, center[1] - offsetY]);\n }\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Get an updated version of the view options used to construct the view. The\n * current resolution (or zoom), center, and rotation are applied to any stored\n * options. The provided options can be used to apply new min/max zoom or\n * resolution limits.\n * @param {ViewOptions} newOptions New options to be applied.\n * @return {ViewOptions} New options updated with the current view state.\n */\n View.prototype.getUpdatedOptions_ = function (newOptions) {\n var options = assign({}, this.options_);\n // preserve resolution (or zoom)\n if (options.resolution !== undefined) {\n options.resolution = this.getResolution();\n }\n else {\n options.zoom = this.getZoom();\n }\n // preserve center\n options.center = this.getCenterInternal();\n // preserve rotation\n options.rotation = this.getRotation();\n return assign({}, options, newOptions);\n };\n /**\n * Animate the view. The view's center, zoom (or resolution), and rotation\n * can be animated for smooth transitions between view states. For example,\n * to animate the view to a new zoom level:\n *\n * view.animate({zoom: view.getZoom() + 1});\n *\n * By default, the animation lasts one second and uses in-and-out easing. You\n * can customize this behavior by including `duration` (in milliseconds) and\n * `easing` options (see {@link module:ol/easing}).\n *\n * To chain together multiple animations, call the method with multiple\n * animation objects. For example, to first zoom and then pan:\n *\n * view.animate({zoom: 10}, {center: [0, 0]});\n *\n * If you provide a function as the last argument to the animate method, it\n * will get called at the end of an animation series. The callback will be\n * called with `true` if the animation series completed on its own or `false`\n * if it was cancelled.\n *\n * Animations are cancelled by user interactions (e.g. dragging the map) or by\n * calling `view.setCenter()`, `view.setResolution()`, or `view.setRotation()`\n * (or another method that calls one of these).\n *\n * @param {...(AnimationOptions|function(boolean): void)} var_args Animation\n * options. Multiple animations can be run in series by passing multiple\n * options objects. To run multiple animations in parallel, call the method\n * multiple times. An optional callback can be provided as a final\n * argument. The callback will be called with a boolean indicating whether\n * the animation completed without being cancelled.\n * @api\n */\n View.prototype.animate = function (var_args) {\n if (this.isDef() && !this.getAnimating()) {\n this.resolveConstraints(0);\n }\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; ++i) {\n var options = arguments[i];\n if (options.center) {\n options = assign({}, options);\n options.center = fromUserCoordinate(options.center, this.getProjection());\n }\n if (options.anchor) {\n options = assign({}, options);\n options.anchor = fromUserCoordinate(options.anchor, this.getProjection());\n }\n args[i] = options;\n }\n this.animateInternal.apply(this, args);\n };\n /**\n * @param {...(AnimationOptions|function(boolean): void)} var_args Animation options.\n */\n View.prototype.animateInternal = function (var_args) {\n var animationCount = arguments.length;\n var callback;\n if (animationCount > 1 &&\n typeof arguments[animationCount - 1] === 'function') {\n callback = arguments[animationCount - 1];\n --animationCount;\n }\n if (!this.isDef()) {\n // if view properties are not yet set, shortcut to the final state\n var state = arguments[animationCount - 1];\n if (state.center) {\n this.setCenterInternal(state.center);\n }\n if (state.zoom !== undefined) {\n this.setZoom(state.zoom);\n }\n if (state.rotation !== undefined) {\n this.setRotation(state.rotation);\n }\n if (callback) {\n animationCallback(callback, true);\n }\n return;\n }\n var start = Date.now();\n var center = this.targetCenter_.slice();\n var resolution = this.targetResolution_;\n var rotation = this.targetRotation_;\n var series = [];\n for (var i = 0; i < animationCount; ++i) {\n var options = /** @type {AnimationOptions} */ (arguments[i]);\n var animation = {\n start: start,\n complete: false,\n anchor: options.anchor,\n duration: options.duration !== undefined ? options.duration : 1000,\n easing: options.easing || inAndOut,\n callback: callback,\n };\n if (options.center) {\n animation.sourceCenter = center;\n animation.targetCenter = options.center.slice();\n center = animation.targetCenter;\n }\n if (options.zoom !== undefined) {\n animation.sourceResolution = resolution;\n animation.targetResolution = this.getResolutionForZoom(options.zoom);\n resolution = animation.targetResolution;\n }\n else if (options.resolution) {\n animation.sourceResolution = resolution;\n animation.targetResolution = options.resolution;\n resolution = animation.targetResolution;\n }\n if (options.rotation !== undefined) {\n animation.sourceRotation = rotation;\n var delta = modulo(options.rotation - rotation + Math.PI, 2 * Math.PI) - Math.PI;\n animation.targetRotation = rotation + delta;\n rotation = animation.targetRotation;\n }\n // check if animation is a no-op\n if (isNoopAnimation(animation)) {\n animation.complete = true;\n // we still push it onto the series for callback handling\n }\n else {\n start += animation.duration;\n }\n series.push(animation);\n }\n this.animations_.push(series);\n this.setHint(ViewHint.ANIMATING, 1);\n this.updateAnimations_();\n };\n /**\n * Determine if the view is being animated.\n * @return {boolean} The view is being animated.\n * @api\n */\n View.prototype.getAnimating = function () {\n return this.hints_[ViewHint.ANIMATING] > 0;\n };\n /**\n * Determine if the user is interacting with the view, such as panning or zooming.\n * @return {boolean} The view is being interacted with.\n * @api\n */\n View.prototype.getInteracting = function () {\n return this.hints_[ViewHint.INTERACTING] > 0;\n };\n /**\n * Cancel any ongoing animations.\n * @api\n */\n View.prototype.cancelAnimations = function () {\n this.setHint(ViewHint.ANIMATING, -this.hints_[ViewHint.ANIMATING]);\n var anchor;\n for (var i = 0, ii = this.animations_.length; i < ii; ++i) {\n var series = this.animations_[i];\n if (series[0].callback) {\n animationCallback(series[0].callback, false);\n }\n if (!anchor) {\n for (var j = 0, jj = series.length; j < jj; ++j) {\n var animation = series[j];\n if (!animation.complete) {\n anchor = animation.anchor;\n break;\n }\n }\n }\n }\n this.animations_.length = 0;\n this.cancelAnchor_ = anchor;\n };\n /**\n * Update all animations.\n */\n View.prototype.updateAnimations_ = function () {\n if (this.updateAnimationKey_ !== undefined) {\n cancelAnimationFrame(this.updateAnimationKey_);\n this.updateAnimationKey_ = undefined;\n }\n if (!this.getAnimating()) {\n return;\n }\n var now = Date.now();\n var more = false;\n for (var i = this.animations_.length - 1; i >= 0; --i) {\n var series = this.animations_[i];\n var seriesComplete = true;\n for (var j = 0, jj = series.length; j < jj; ++j) {\n var animation = series[j];\n if (animation.complete) {\n continue;\n }\n var elapsed = now - animation.start;\n var fraction = animation.duration > 0 ? elapsed / animation.duration : 1;\n if (fraction >= 1) {\n animation.complete = true;\n fraction = 1;\n }\n else {\n seriesComplete = false;\n }\n var progress = animation.easing(fraction);\n if (animation.sourceCenter) {\n var x0 = animation.sourceCenter[0];\n var y0 = animation.sourceCenter[1];\n var x1 = animation.targetCenter[0];\n var y1 = animation.targetCenter[1];\n var x = x0 + progress * (x1 - x0);\n var y = y0 + progress * (y1 - y0);\n this.targetCenter_ = [x, y];\n }\n if (animation.sourceResolution && animation.targetResolution) {\n var resolution = progress === 1\n ? animation.targetResolution\n : animation.sourceResolution +\n progress *\n (animation.targetResolution - animation.sourceResolution);\n if (animation.anchor) {\n var size = this.getViewportSize_(this.getRotation());\n var constrainedResolution = this.constraints_.resolution(resolution, 0, size, true);\n this.targetCenter_ = this.calculateCenterZoom(constrainedResolution, animation.anchor);\n }\n this.targetResolution_ = resolution;\n this.applyTargetState_(true);\n }\n if (animation.sourceRotation !== undefined &&\n animation.targetRotation !== undefined) {\n var rotation = progress === 1\n ? modulo(animation.targetRotation + Math.PI, 2 * Math.PI) -\n Math.PI\n : animation.sourceRotation +\n progress *\n (animation.targetRotation - animation.sourceRotation);\n if (animation.anchor) {\n var constrainedRotation = this.constraints_.rotation(rotation, true);\n this.targetCenter_ = this.calculateCenterRotate(constrainedRotation, animation.anchor);\n }\n this.targetRotation_ = rotation;\n }\n this.applyTargetState_(true);\n more = true;\n if (!animation.complete) {\n break;\n }\n }\n if (seriesComplete) {\n this.animations_[i] = null;\n this.setHint(ViewHint.ANIMATING, -1);\n var callback = series[0].callback;\n if (callback) {\n animationCallback(callback, true);\n }\n }\n }\n // prune completed series\n this.animations_ = this.animations_.filter(Boolean);\n if (more && this.updateAnimationKey_ === undefined) {\n this.updateAnimationKey_ = requestAnimationFrame(this.updateAnimations_.bind(this));\n }\n };\n /**\n * @param {number} rotation Target rotation.\n * @param {import(\"./coordinate.js\").Coordinate} anchor Rotation anchor.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Center for rotation and anchor.\n */\n View.prototype.calculateCenterRotate = function (rotation, anchor) {\n var center;\n var currentCenter = this.getCenterInternal();\n if (currentCenter !== undefined) {\n center = [currentCenter[0] - anchor[0], currentCenter[1] - anchor[1]];\n rotateCoordinate(center, rotation - this.getRotation());\n addCoordinate(center, anchor);\n }\n return center;\n };\n /**\n * @param {number} resolution Target resolution.\n * @param {import(\"./coordinate.js\").Coordinate} anchor Zoom anchor.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Center for resolution and anchor.\n */\n View.prototype.calculateCenterZoom = function (resolution, anchor) {\n var center;\n var currentCenter = this.getCenterInternal();\n var currentResolution = this.getResolution();\n if (currentCenter !== undefined && currentResolution !== undefined) {\n var x = anchor[0] -\n (resolution * (anchor[0] - currentCenter[0])) / currentResolution;\n var y = anchor[1] -\n (resolution * (anchor[1] - currentCenter[1])) / currentResolution;\n center = [x, y];\n }\n return center;\n };\n /**\n * Returns the current viewport size.\n * @private\n * @param {number} [opt_rotation] Take into account the rotation of the viewport when giving the size\n * @return {import(\"./size.js\").Size} Viewport size or `[100, 100]` when no viewport is found.\n */\n View.prototype.getViewportSize_ = function (opt_rotation) {\n var size = this.viewportSize_;\n if (opt_rotation) {\n var w = size[0];\n var h = size[1];\n return [\n Math.abs(w * Math.cos(opt_rotation)) +\n Math.abs(h * Math.sin(opt_rotation)),\n Math.abs(w * Math.sin(opt_rotation)) +\n Math.abs(h * Math.cos(opt_rotation)),\n ];\n }\n else {\n return size;\n }\n };\n /**\n * Stores the viewport size on the view. The viewport size is not read every time from the DOM\n * to avoid performance hit and layout reflow.\n * This should be done on map size change.\n * Note: the constraints are not resolved during an animation to avoid stopping it\n * @param {import(\"./size.js\").Size} [opt_size] Viewport size; if undefined, [100, 100] is assumed\n */\n View.prototype.setViewportSize = function (opt_size) {\n this.viewportSize_ = Array.isArray(opt_size)\n ? opt_size.slice()\n : [100, 100];\n if (!this.getAnimating()) {\n this.resolveConstraints(0);\n }\n };\n /**\n * Get the view center.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} The center of the view.\n * @observable\n * @api\n */\n View.prototype.getCenter = function () {\n var center = this.getCenterInternal();\n if (!center) {\n return center;\n }\n return toUserCoordinate(center, this.getProjection());\n };\n /**\n * Get the view center without transforming to user projection.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} The center of the view.\n */\n View.prototype.getCenterInternal = function () {\n return /** @type {import(\"./coordinate.js\").Coordinate|undefined} */ (this.get(ViewProperty.CENTER));\n };\n /**\n * @return {Constraints} Constraints.\n */\n View.prototype.getConstraints = function () {\n return this.constraints_;\n };\n /**\n * @return {boolean} Resolution constraint is set\n */\n View.prototype.getConstrainResolution = function () {\n return this.options_.constrainResolution;\n };\n /**\n * @param {Array} [opt_hints] Destination array.\n * @return {Array} Hint.\n */\n View.prototype.getHints = function (opt_hints) {\n if (opt_hints !== undefined) {\n opt_hints[0] = this.hints_[0];\n opt_hints[1] = this.hints_[1];\n return opt_hints;\n }\n else {\n return this.hints_.slice();\n }\n };\n /**\n * Calculate the extent for the current view state and the passed size.\n * The size is the pixel dimensions of the box into which the calculated extent\n * should fit. In most cases you want to get the extent of the entire map,\n * that is `map.getSize()`.\n * @param {import(\"./size.js\").Size} [opt_size] Box pixel size. If not provided, the size\n * of the map that uses this view will be used.\n * @return {import(\"./extent.js\").Extent} Extent.\n * @api\n */\n View.prototype.calculateExtent = function (opt_size) {\n var extent = this.calculateExtentInternal(opt_size);\n return toUserExtent(extent, this.getProjection());\n };\n /**\n * @param {import(\"./size.js\").Size} [opt_size] Box pixel size. If not provided,\n * the map's last known viewport size will be used.\n * @return {import(\"./extent.js\").Extent} Extent.\n */\n View.prototype.calculateExtentInternal = function (opt_size) {\n var size = opt_size || this.getViewportSizeMinusPadding_();\n var center = /** @type {!import(\"./coordinate.js\").Coordinate} */ (this.getCenterInternal());\n assert(center, 1); // The view center is not defined\n var resolution = /** @type {!number} */ (this.getResolution());\n assert(resolution !== undefined, 2); // The view resolution is not defined\n var rotation = /** @type {!number} */ (this.getRotation());\n assert(rotation !== undefined, 3); // The view rotation is not defined\n return getForViewAndSize(center, resolution, rotation, size);\n };\n /**\n * Get the maximum resolution of the view.\n * @return {number} The maximum resolution of the view.\n * @api\n */\n View.prototype.getMaxResolution = function () {\n return this.maxResolution_;\n };\n /**\n * Get the minimum resolution of the view.\n * @return {number} The minimum resolution of the view.\n * @api\n */\n View.prototype.getMinResolution = function () {\n return this.minResolution_;\n };\n /**\n * Get the maximum zoom level for the view.\n * @return {number} The maximum zoom level.\n * @api\n */\n View.prototype.getMaxZoom = function () {\n return /** @type {number} */ (this.getZoomForResolution(this.minResolution_));\n };\n /**\n * Set a new maximum zoom level for the view.\n * @param {number} zoom The maximum zoom level.\n * @api\n */\n View.prototype.setMaxZoom = function (zoom) {\n this.applyOptions_(this.getUpdatedOptions_({ maxZoom: zoom }));\n };\n /**\n * Get the minimum zoom level for the view.\n * @return {number} The minimum zoom level.\n * @api\n */\n View.prototype.getMinZoom = function () {\n return /** @type {number} */ (this.getZoomForResolution(this.maxResolution_));\n };\n /**\n * Set a new minimum zoom level for the view.\n * @param {number} zoom The minimum zoom level.\n * @api\n */\n View.prototype.setMinZoom = function (zoom) {\n this.applyOptions_(this.getUpdatedOptions_({ minZoom: zoom }));\n };\n /**\n * Set whether the view should allow intermediary zoom levels.\n * @param {boolean} enabled Whether the resolution is constrained.\n * @api\n */\n View.prototype.setConstrainResolution = function (enabled) {\n this.applyOptions_(this.getUpdatedOptions_({ constrainResolution: enabled }));\n };\n /**\n * Get the view projection.\n * @return {import(\"./proj/Projection.js\").default} The projection of the view.\n * @api\n */\n View.prototype.getProjection = function () {\n return this.projection_;\n };\n /**\n * Get the view resolution.\n * @return {number|undefined} The resolution of the view.\n * @observable\n * @api\n */\n View.prototype.getResolution = function () {\n return /** @type {number|undefined} */ (this.get(ViewProperty.RESOLUTION));\n };\n /**\n * Get the resolutions for the view. This returns the array of resolutions\n * passed to the constructor of the View, or undefined if none were given.\n * @return {Array|undefined} The resolutions of the view.\n * @api\n */\n View.prototype.getResolutions = function () {\n return this.resolutions_;\n };\n /**\n * Get the resolution for a provided extent (in map units) and size (in pixels).\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {import(\"./size.js\").Size} [opt_size] Box pixel size.\n * @return {number} The resolution at which the provided extent will render at\n * the given size.\n * @api\n */\n View.prototype.getResolutionForExtent = function (extent, opt_size) {\n return this.getResolutionForExtentInternal(fromUserExtent(extent, this.getProjection()), opt_size);\n };\n /**\n * Get the resolution for a provided extent (in map units) and size (in pixels).\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {import(\"./size.js\").Size} [opt_size] Box pixel size.\n * @return {number} The resolution at which the provided extent will render at\n * the given size.\n */\n View.prototype.getResolutionForExtentInternal = function (extent, opt_size) {\n var size = opt_size || this.getViewportSizeMinusPadding_();\n var xResolution = getWidth(extent) / size[0];\n var yResolution = getHeight(extent) / size[1];\n return Math.max(xResolution, yResolution);\n };\n /**\n * Return a function that returns a value between 0 and 1 for a\n * resolution. Exponential scaling is assumed.\n * @param {number} [opt_power] Power.\n * @return {function(number): number} Resolution for value function.\n */\n View.prototype.getResolutionForValueFunction = function (opt_power) {\n var power = opt_power || 2;\n var maxResolution = this.getConstrainedResolution(this.maxResolution_);\n var minResolution = this.minResolution_;\n var max = Math.log(maxResolution / minResolution) / Math.log(power);\n return (\n /**\n * @param {number} value Value.\n * @return {number} Resolution.\n */\n function (value) {\n var resolution = maxResolution / Math.pow(power, value * max);\n return resolution;\n });\n };\n /**\n * Get the view rotation.\n * @return {number} The rotation of the view in radians.\n * @observable\n * @api\n */\n View.prototype.getRotation = function () {\n return /** @type {number} */ (this.get(ViewProperty.ROTATION));\n };\n /**\n * Return a function that returns a resolution for a value between\n * 0 and 1. Exponential scaling is assumed.\n * @param {number} [opt_power] Power.\n * @return {function(number): number} Value for resolution function.\n */\n View.prototype.getValueForResolutionFunction = function (opt_power) {\n var logPower = Math.log(opt_power || 2);\n var maxResolution = this.getConstrainedResolution(this.maxResolution_);\n var minResolution = this.minResolution_;\n var max = Math.log(maxResolution / minResolution) / logPower;\n return (\n /**\n * @param {number} resolution Resolution.\n * @return {number} Value.\n */\n function (resolution) {\n var value = Math.log(maxResolution / resolution) / logPower / max;\n return value;\n });\n };\n /**\n * Returns the size of the viewport minus padding.\n * @private\n * @param {number} [opt_rotation] Take into account the rotation of the viewport when giving the size\n * @return {import(\"./size.js\").Size} Viewport size reduced by the padding.\n */\n View.prototype.getViewportSizeMinusPadding_ = function (opt_rotation) {\n var size = this.getViewportSize_(opt_rotation);\n var padding = this.padding_;\n if (padding) {\n size = [\n size[0] - padding[1] - padding[3],\n size[1] - padding[0] - padding[2],\n ];\n }\n return size;\n };\n /**\n * @return {State} View state.\n */\n View.prototype.getState = function () {\n var projection = this.getProjection();\n var resolution = /** @type {number} */ (this.getResolution());\n var rotation = this.getRotation();\n var center = /** @type {import(\"./coordinate.js\").Coordinate} */ (this.getCenterInternal());\n var padding = this.padding_;\n if (padding) {\n var reducedSize = this.getViewportSizeMinusPadding_();\n center = calculateCenterOn(center, this.getViewportSize_(), [reducedSize[0] / 2 + padding[3], reducedSize[1] / 2 + padding[0]], resolution, rotation);\n }\n return {\n center: center.slice(0),\n projection: projection !== undefined ? projection : null,\n resolution: resolution,\n rotation: rotation,\n zoom: this.getZoom(),\n };\n };\n /**\n * Get the current zoom level. This method may return non-integer zoom levels\n * if the view does not constrain the resolution, or if an interaction or\n * animation is underway.\n * @return {number|undefined} Zoom.\n * @api\n */\n View.prototype.getZoom = function () {\n var zoom;\n var resolution = this.getResolution();\n if (resolution !== undefined) {\n zoom = this.getZoomForResolution(resolution);\n }\n return zoom;\n };\n /**\n * Get the zoom level for a resolution.\n * @param {number} resolution The resolution.\n * @return {number|undefined} The zoom level for the provided resolution.\n * @api\n */\n View.prototype.getZoomForResolution = function (resolution) {\n var offset = this.minZoom_ || 0;\n var max, zoomFactor;\n if (this.resolutions_) {\n var nearest = linearFindNearest(this.resolutions_, resolution, 1);\n offset = nearest;\n max = this.resolutions_[nearest];\n if (nearest == this.resolutions_.length - 1) {\n zoomFactor = 2;\n }\n else {\n zoomFactor = max / this.resolutions_[nearest + 1];\n }\n }\n else {\n max = this.maxResolution_;\n zoomFactor = this.zoomFactor_;\n }\n return offset + Math.log(max / resolution) / Math.log(zoomFactor);\n };\n /**\n * Get the resolution for a zoom level.\n * @param {number} zoom Zoom level.\n * @return {number} The view resolution for the provided zoom level.\n * @api\n */\n View.prototype.getResolutionForZoom = function (zoom) {\n if (this.resolutions_) {\n if (this.resolutions_.length <= 1) {\n return 0;\n }\n var baseLevel = clamp(Math.floor(zoom), 0, this.resolutions_.length - 2);\n var zoomFactor = this.resolutions_[baseLevel] / this.resolutions_[baseLevel + 1];\n return (this.resolutions_[baseLevel] /\n Math.pow(zoomFactor, clamp(zoom - baseLevel, 0, 1)));\n }\n else {\n return (this.maxResolution_ / Math.pow(this.zoomFactor_, zoom - this.minZoom_));\n }\n };\n /**\n * Fit the given geometry or extent based on the given map size and border.\n * The size is pixel dimensions of the box to fit the extent into.\n * In most cases you will want to use the map size, that is `map.getSize()`.\n * Takes care of the map angle.\n * @param {import(\"./geom/SimpleGeometry.js\").default|import(\"./extent.js\").Extent} geometryOrExtent The geometry or\n * extent to fit the view to.\n * @param {FitOptions} [opt_options] Options.\n * @api\n */\n View.prototype.fit = function (geometryOrExtent, opt_options) {\n /** @type {import(\"./geom/SimpleGeometry.js\").default} */\n var geometry;\n assert(Array.isArray(geometryOrExtent) ||\n typeof ( /** @type {?} */(geometryOrExtent).getSimplifiedGeometry) ===\n 'function', 24); // Invalid extent or geometry provided as `geometry`\n if (Array.isArray(geometryOrExtent)) {\n assert(!isEmpty(geometryOrExtent), 25); // Cannot fit empty extent provided as `geometry`\n var extent = fromUserExtent(geometryOrExtent, this.getProjection());\n geometry = polygonFromExtent(extent);\n }\n else if (geometryOrExtent.getType() === GeometryType.CIRCLE) {\n var extent = fromUserExtent(geometryOrExtent.getExtent(), this.getProjection());\n geometry = polygonFromExtent(extent);\n geometry.rotate(this.getRotation(), getCenter(extent));\n }\n else {\n var userProjection = getUserProjection();\n if (userProjection) {\n geometry = /** @type {import(\"./geom/SimpleGeometry.js\").default} */ (geometryOrExtent\n .clone()\n .transform(userProjection, this.getProjection()));\n }\n else {\n geometry = geometryOrExtent;\n }\n }\n this.fitInternal(geometry, opt_options);\n };\n /**\n * Calculate rotated extent\n * @param {import(\"./geom/SimpleGeometry.js\").default} geometry The geometry.\n * @return {import(\"./extent\").Extent} The rotated extent for the geometry.\n */\n View.prototype.rotatedExtentForGeometry = function (geometry) {\n var rotation = this.getRotation();\n var cosAngle = Math.cos(rotation);\n var sinAngle = Math.sin(-rotation);\n var coords = geometry.getFlatCoordinates();\n var stride = geometry.getStride();\n var minRotX = +Infinity;\n var minRotY = +Infinity;\n var maxRotX = -Infinity;\n var maxRotY = -Infinity;\n for (var i = 0, ii = coords.length; i < ii; i += stride) {\n var rotX = coords[i] * cosAngle - coords[i + 1] * sinAngle;\n var rotY = coords[i] * sinAngle + coords[i + 1] * cosAngle;\n minRotX = Math.min(minRotX, rotX);\n minRotY = Math.min(minRotY, rotY);\n maxRotX = Math.max(maxRotX, rotX);\n maxRotY = Math.max(maxRotY, rotY);\n }\n return [minRotX, minRotY, maxRotX, maxRotY];\n };\n /**\n * @param {import(\"./geom/SimpleGeometry.js\").default} geometry The geometry.\n * @param {FitOptions} [opt_options] Options.\n */\n View.prototype.fitInternal = function (geometry, opt_options) {\n var options = opt_options || {};\n var size = options.size;\n if (!size) {\n size = this.getViewportSizeMinusPadding_();\n }\n var padding = options.padding !== undefined ? options.padding : [0, 0, 0, 0];\n var nearest = options.nearest !== undefined ? options.nearest : false;\n var minResolution;\n if (options.minResolution !== undefined) {\n minResolution = options.minResolution;\n }\n else if (options.maxZoom !== undefined) {\n minResolution = this.getResolutionForZoom(options.maxZoom);\n }\n else {\n minResolution = 0;\n }\n var rotatedExtent = this.rotatedExtentForGeometry(geometry);\n // calculate resolution\n var resolution = this.getResolutionForExtentInternal(rotatedExtent, [\n size[0] - padding[1] - padding[3],\n size[1] - padding[0] - padding[2],\n ]);\n resolution = isNaN(resolution)\n ? minResolution\n : Math.max(resolution, minResolution);\n resolution = this.getConstrainedResolution(resolution, nearest ? 0 : 1);\n // calculate center\n var rotation = this.getRotation();\n var sinAngle = Math.sin(rotation);\n var cosAngle = Math.cos(rotation);\n var centerRot = getCenter(rotatedExtent);\n centerRot[0] += ((padding[1] - padding[3]) / 2) * resolution;\n centerRot[1] += ((padding[0] - padding[2]) / 2) * resolution;\n var centerX = centerRot[0] * cosAngle - centerRot[1] * sinAngle;\n var centerY = centerRot[1] * cosAngle + centerRot[0] * sinAngle;\n var center = this.getConstrainedCenter([centerX, centerY], resolution);\n var callback = options.callback ? options.callback : VOID;\n if (options.duration !== undefined) {\n this.animateInternal({\n resolution: resolution,\n center: center,\n duration: options.duration,\n easing: options.easing,\n }, callback);\n }\n else {\n this.targetResolution_ = resolution;\n this.targetCenter_ = center;\n this.applyTargetState_(false, true);\n animationCallback(callback, true);\n }\n };\n /**\n * Center on coordinate and view position.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {import(\"./size.js\").Size} size Box pixel size.\n * @param {import(\"./pixel.js\").Pixel} position Position on the view to center on.\n * @api\n */\n View.prototype.centerOn = function (coordinate, size, position) {\n this.centerOnInternal(fromUserCoordinate(coordinate, this.getProjection()), size, position);\n };\n /**\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {import(\"./size.js\").Size} size Box pixel size.\n * @param {import(\"./pixel.js\").Pixel} position Position on the view to center on.\n */\n View.prototype.centerOnInternal = function (coordinate, size, position) {\n this.setCenterInternal(calculateCenterOn(coordinate, size, position, this.getResolution(), this.getRotation()));\n };\n /**\n * Calculates the shift between map and viewport center.\n * @param {import(\"./coordinate.js\").Coordinate} center Center.\n * @param {number} resolution Resolution.\n * @param {number} rotation Rotation.\n * @param {import(\"./size.js\").Size} size Size.\n * @return {Array|undefined} Center shift.\n */\n View.prototype.calculateCenterShift = function (center, resolution, rotation, size) {\n var centerShift;\n var padding = this.padding_;\n if (padding && center) {\n var reducedSize = this.getViewportSizeMinusPadding_(-rotation);\n var shiftedCenter = calculateCenterOn(center, size, [reducedSize[0] / 2 + padding[3], reducedSize[1] / 2 + padding[0]], resolution, rotation);\n centerShift = [\n center[0] - shiftedCenter[0],\n center[1] - shiftedCenter[1],\n ];\n }\n return centerShift;\n };\n /**\n * @return {boolean} Is defined.\n */\n View.prototype.isDef = function () {\n return !!this.getCenterInternal() && this.getResolution() !== undefined;\n };\n /**\n * Adds relative coordinates to the center of the view. Any extent constraint will apply.\n * @param {import(\"./coordinate.js\").Coordinate} deltaCoordinates Relative value to add.\n * @api\n */\n View.prototype.adjustCenter = function (deltaCoordinates) {\n var center = toUserCoordinate(this.targetCenter_, this.getProjection());\n this.setCenter([\n center[0] + deltaCoordinates[0],\n center[1] + deltaCoordinates[1],\n ]);\n };\n /**\n * Adds relative coordinates to the center of the view. Any extent constraint will apply.\n * @param {import(\"./coordinate.js\").Coordinate} deltaCoordinates Relative value to add.\n */\n View.prototype.adjustCenterInternal = function (deltaCoordinates) {\n var center = this.targetCenter_;\n this.setCenterInternal([\n center[0] + deltaCoordinates[0],\n center[1] + deltaCoordinates[1],\n ]);\n };\n /**\n * Multiply the view resolution by a ratio, optionally using an anchor. Any resolution\n * constraint will apply.\n * @param {number} ratio The ratio to apply on the view resolution.\n * @param {import(\"./coordinate.js\").Coordinate} [opt_anchor] The origin of the transformation.\n * @api\n */\n View.prototype.adjustResolution = function (ratio, opt_anchor) {\n var anchor = opt_anchor && fromUserCoordinate(opt_anchor, this.getProjection());\n this.adjustResolutionInternal(ratio, anchor);\n };\n /**\n * Multiply the view resolution by a ratio, optionally using an anchor. Any resolution\n * constraint will apply.\n * @param {number} ratio The ratio to apply on the view resolution.\n * @param {import(\"./coordinate.js\").Coordinate} [opt_anchor] The origin of the transformation.\n */\n View.prototype.adjustResolutionInternal = function (ratio, opt_anchor) {\n var isMoving = this.getAnimating() || this.getInteracting();\n var size = this.getViewportSize_(this.getRotation());\n var newResolution = this.constraints_.resolution(this.targetResolution_ * ratio, 0, size, isMoving);\n if (opt_anchor) {\n this.targetCenter_ = this.calculateCenterZoom(newResolution, opt_anchor);\n }\n this.targetResolution_ *= ratio;\n this.applyTargetState_();\n };\n /**\n * Adds a value to the view zoom level, optionally using an anchor. Any resolution\n * constraint will apply.\n * @param {number} delta Relative value to add to the zoom level.\n * @param {import(\"./coordinate.js\").Coordinate} [opt_anchor] The origin of the transformation.\n * @api\n */\n View.prototype.adjustZoom = function (delta, opt_anchor) {\n this.adjustResolution(Math.pow(this.zoomFactor_, -delta), opt_anchor);\n };\n /**\n * Adds a value to the view rotation, optionally using an anchor. Any rotation\n * constraint will apply.\n * @param {number} delta Relative value to add to the zoom rotation, in radians.\n * @param {import(\"./coordinate.js\").Coordinate} [opt_anchor] The rotation center.\n * @api\n */\n View.prototype.adjustRotation = function (delta, opt_anchor) {\n if (opt_anchor) {\n opt_anchor = fromUserCoordinate(opt_anchor, this.getProjection());\n }\n this.adjustRotationInternal(delta, opt_anchor);\n };\n /**\n * @param {number} delta Relative value to add to the zoom rotation, in radians.\n * @param {import(\"./coordinate.js\").Coordinate} [opt_anchor] The rotation center.\n */\n View.prototype.adjustRotationInternal = function (delta, opt_anchor) {\n var isMoving = this.getAnimating() || this.getInteracting();\n var newRotation = this.constraints_.rotation(this.targetRotation_ + delta, isMoving);\n if (opt_anchor) {\n this.targetCenter_ = this.calculateCenterRotate(newRotation, opt_anchor);\n }\n this.targetRotation_ += delta;\n this.applyTargetState_();\n };\n /**\n * Set the center of the current view. Any extent constraint will apply.\n * @param {import(\"./coordinate.js\").Coordinate|undefined} center The center of the view.\n * @observable\n * @api\n */\n View.prototype.setCenter = function (center) {\n this.setCenterInternal(fromUserCoordinate(center, this.getProjection()));\n };\n /**\n * Set the center using the view projection (not the user projection).\n * @param {import(\"./coordinate.js\").Coordinate|undefined} center The center of the view.\n */\n View.prototype.setCenterInternal = function (center) {\n this.targetCenter_ = center;\n this.applyTargetState_();\n };\n /**\n * @param {import(\"./ViewHint.js\").default} hint Hint.\n * @param {number} delta Delta.\n * @return {number} New value.\n */\n View.prototype.setHint = function (hint, delta) {\n this.hints_[hint] += delta;\n this.changed();\n return this.hints_[hint];\n };\n /**\n * Set the resolution for this view. Any resolution constraint will apply.\n * @param {number|undefined} resolution The resolution of the view.\n * @observable\n * @api\n */\n View.prototype.setResolution = function (resolution) {\n this.targetResolution_ = resolution;\n this.applyTargetState_();\n };\n /**\n * Set the rotation for this view. Any rotation constraint will apply.\n * @param {number} rotation The rotation of the view in radians.\n * @observable\n * @api\n */\n View.prototype.setRotation = function (rotation) {\n this.targetRotation_ = rotation;\n this.applyTargetState_();\n };\n /**\n * Zoom to a specific zoom level. Any resolution constrain will apply.\n * @param {number} zoom Zoom level.\n * @api\n */\n View.prototype.setZoom = function (zoom) {\n this.setResolution(this.getResolutionForZoom(zoom));\n };\n /**\n * Recompute rotation/resolution/center based on target values.\n * Note: we have to compute rotation first, then resolution and center considering that\n * parameters can influence one another in case a view extent constraint is present.\n * @param {boolean} [opt_doNotCancelAnims] Do not cancel animations.\n * @param {boolean} [opt_forceMoving] Apply constraints as if the view is moving.\n * @private\n */\n View.prototype.applyTargetState_ = function (opt_doNotCancelAnims, opt_forceMoving) {\n var isMoving = this.getAnimating() || this.getInteracting() || opt_forceMoving;\n // compute rotation\n var newRotation = this.constraints_.rotation(this.targetRotation_, isMoving);\n var size = this.getViewportSize_(newRotation);\n var newResolution = this.constraints_.resolution(this.targetResolution_, 0, size, isMoving);\n var newCenter = this.constraints_.center(this.targetCenter_, newResolution, size, isMoving, this.calculateCenterShift(this.targetCenter_, newResolution, newRotation, size));\n if (this.get(ViewProperty.ROTATION) !== newRotation) {\n this.set(ViewProperty.ROTATION, newRotation);\n }\n if (this.get(ViewProperty.RESOLUTION) !== newResolution) {\n this.set(ViewProperty.RESOLUTION, newResolution);\n }\n if (!this.get(ViewProperty.CENTER) ||\n !equals(this.get(ViewProperty.CENTER), newCenter)) {\n this.set(ViewProperty.CENTER, newCenter);\n }\n if (this.getAnimating() && !opt_doNotCancelAnims) {\n this.cancelAnimations();\n }\n this.cancelAnchor_ = undefined;\n };\n /**\n * If any constraints need to be applied, an animation will be triggered.\n * This is typically done on interaction end.\n * Note: calling this with a duration of 0 will apply the constrained values straight away,\n * without animation.\n * @param {number} [opt_duration] The animation duration in ms.\n * @param {number} [opt_resolutionDirection] Which direction to zoom.\n * @param {import(\"./coordinate.js\").Coordinate} [opt_anchor] The origin of the transformation.\n */\n View.prototype.resolveConstraints = function (opt_duration, opt_resolutionDirection, opt_anchor) {\n var duration = opt_duration !== undefined ? opt_duration : 200;\n var direction = opt_resolutionDirection || 0;\n var newRotation = this.constraints_.rotation(this.targetRotation_);\n var size = this.getViewportSize_(newRotation);\n var newResolution = this.constraints_.resolution(this.targetResolution_, direction, size);\n var newCenter = this.constraints_.center(this.targetCenter_, newResolution, size, false, this.calculateCenterShift(this.targetCenter_, newResolution, newRotation, size));\n if (duration === 0 && !this.cancelAnchor_) {\n this.targetResolution_ = newResolution;\n this.targetRotation_ = newRotation;\n this.targetCenter_ = newCenter;\n this.applyTargetState_();\n return;\n }\n var anchor = opt_anchor || (duration === 0 ? this.cancelAnchor_ : undefined);\n this.cancelAnchor_ = undefined;\n if (this.getResolution() !== newResolution ||\n this.getRotation() !== newRotation ||\n !this.getCenterInternal() ||\n !equals(this.getCenterInternal(), newCenter)) {\n if (this.getAnimating()) {\n this.cancelAnimations();\n }\n this.animateInternal({\n rotation: newRotation,\n center: newCenter,\n resolution: newResolution,\n duration: duration,\n easing: easeOut,\n anchor: anchor,\n });\n }\n };\n /**\n * Notify the View that an interaction has started.\n * The view state will be resolved to a stable one if needed\n * (depending on its constraints).\n * @api\n */\n View.prototype.beginInteraction = function () {\n this.resolveConstraints(0);\n this.setHint(ViewHint.INTERACTING, 1);\n };\n /**\n * Notify the View that an interaction has ended. The view state will be resolved\n * to a stable one if needed (depending on its constraints).\n * @param {number} [opt_duration] Animation duration in ms.\n * @param {number} [opt_resolutionDirection] Which direction to zoom.\n * @param {import(\"./coordinate.js\").Coordinate} [opt_anchor] The origin of the transformation.\n * @api\n */\n View.prototype.endInteraction = function (opt_duration, opt_resolutionDirection, opt_anchor) {\n var anchor = opt_anchor && fromUserCoordinate(opt_anchor, this.getProjection());\n this.endInteractionInternal(opt_duration, opt_resolutionDirection, anchor);\n };\n /**\n * Notify the View that an interaction has ended. The view state will be resolved\n * to a stable one if needed (depending on its constraints).\n * @param {number} [opt_duration] Animation duration in ms.\n * @param {number} [opt_resolutionDirection] Which direction to zoom.\n * @param {import(\"./coordinate.js\").Coordinate} [opt_anchor] The origin of the transformation.\n */\n View.prototype.endInteractionInternal = function (opt_duration, opt_resolutionDirection, opt_anchor) {\n this.setHint(ViewHint.INTERACTING, -1);\n this.resolveConstraints(opt_duration, opt_resolutionDirection, opt_anchor);\n };\n /**\n * Get a valid position for the view center according to the current constraints.\n * @param {import(\"./coordinate.js\").Coordinate|undefined} targetCenter Target center position.\n * @param {number} [opt_targetResolution] Target resolution. If not supplied, the current one will be used.\n * This is useful to guess a valid center position at a different zoom level.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Valid center position.\n */\n View.prototype.getConstrainedCenter = function (targetCenter, opt_targetResolution) {\n var size = this.getViewportSize_(this.getRotation());\n return this.constraints_.center(targetCenter, opt_targetResolution || this.getResolution(), size);\n };\n /**\n * Get a valid zoom level according to the current view constraints.\n * @param {number|undefined} targetZoom Target zoom.\n * @param {number} [opt_direction=0] Indicate which resolution should be used\n * by a renderer if the view resolution does not match any resolution of the tile source.\n * If 0, the nearest resolution will be used. If 1, the nearest lower resolution\n * will be used. If -1, the nearest higher resolution will be used.\n * @return {number|undefined} Valid zoom level.\n */\n View.prototype.getConstrainedZoom = function (targetZoom, opt_direction) {\n var targetRes = this.getResolutionForZoom(targetZoom);\n return this.getZoomForResolution(this.getConstrainedResolution(targetRes, opt_direction));\n };\n /**\n * Get a valid resolution according to the current view constraints.\n * @param {number|undefined} targetResolution Target resolution.\n * @param {number} [opt_direction=0] Indicate which resolution should be used\n * by a renderer if the view resolution does not match any resolution of the tile source.\n * If 0, the nearest resolution will be used. If 1, the nearest lower resolution\n * will be used. If -1, the nearest higher resolution will be used.\n * @return {number|undefined} Valid resolution.\n */\n View.prototype.getConstrainedResolution = function (targetResolution, opt_direction) {\n var direction = opt_direction || 0;\n var size = this.getViewportSize_(this.getRotation());\n return this.constraints_.resolution(targetResolution, direction, size);\n };\n return View;\n}(BaseObject));\n/**\n * @param {Function} callback Callback.\n * @param {*} returnValue Return value.\n */\nfunction animationCallback(callback, returnValue) {\n setTimeout(function () {\n callback(returnValue);\n }, 0);\n}\n/**\n * @param {ViewOptions} options View options.\n * @return {import(\"./centerconstraint.js\").Type} The constraint.\n */\nexport function createCenterConstraint(options) {\n if (options.extent !== undefined) {\n var smooth = options.smoothExtentConstraint !== undefined\n ? options.smoothExtentConstraint\n : true;\n return createExtent(options.extent, options.constrainOnlyCenter, smooth);\n }\n var projection = createProjection(options.projection, 'EPSG:3857');\n if (options.multiWorld !== true && projection.isGlobal()) {\n var extent = projection.getExtent().slice();\n extent[0] = -Infinity;\n extent[2] = Infinity;\n return createExtent(extent, false, false);\n }\n return centerNone;\n}\n/**\n * @param {ViewOptions} options View options.\n * @return {{constraint: import(\"./resolutionconstraint.js\").Type, maxResolution: number,\n * minResolution: number, minZoom: number, zoomFactor: number}} The constraint.\n */\nexport function createResolutionConstraint(options) {\n var resolutionConstraint;\n var maxResolution;\n var minResolution;\n // TODO: move these to be ol constants\n // see https://github.com/openlayers/openlayers/issues/2076\n var defaultMaxZoom = 28;\n var defaultZoomFactor = 2;\n var minZoom = options.minZoom !== undefined ? options.minZoom : DEFAULT_MIN_ZOOM;\n var maxZoom = options.maxZoom !== undefined ? options.maxZoom : defaultMaxZoom;\n var zoomFactor = options.zoomFactor !== undefined ? options.zoomFactor : defaultZoomFactor;\n var multiWorld = options.multiWorld !== undefined ? options.multiWorld : false;\n var smooth = options.smoothResolutionConstraint !== undefined\n ? options.smoothResolutionConstraint\n : true;\n var showFullExtent = options.showFullExtent !== undefined ? options.showFullExtent : false;\n var projection = createProjection(options.projection, 'EPSG:3857');\n var projExtent = projection.getExtent();\n var constrainOnlyCenter = options.constrainOnlyCenter;\n var extent = options.extent;\n if (!multiWorld && !extent && projection.isGlobal()) {\n constrainOnlyCenter = false;\n extent = projExtent;\n }\n if (options.resolutions !== undefined) {\n var resolutions = options.resolutions;\n maxResolution = resolutions[minZoom];\n minResolution =\n resolutions[maxZoom] !== undefined\n ? resolutions[maxZoom]\n : resolutions[resolutions.length - 1];\n if (options.constrainResolution) {\n resolutionConstraint = createSnapToResolutions(resolutions, smooth, !constrainOnlyCenter && extent, showFullExtent);\n }\n else {\n resolutionConstraint = createMinMaxResolution(maxResolution, minResolution, smooth, !constrainOnlyCenter && extent, showFullExtent);\n }\n }\n else {\n // calculate the default min and max resolution\n var size = !projExtent\n ? // use an extent that can fit the whole world if need be\n (360 * METERS_PER_UNIT[Units.DEGREES]) / projection.getMetersPerUnit()\n : Math.max(getWidth(projExtent), getHeight(projExtent));\n var defaultMaxResolution = size / DEFAULT_TILE_SIZE / Math.pow(defaultZoomFactor, DEFAULT_MIN_ZOOM);\n var defaultMinResolution = defaultMaxResolution /\n Math.pow(defaultZoomFactor, defaultMaxZoom - DEFAULT_MIN_ZOOM);\n // user provided maxResolution takes precedence\n maxResolution = options.maxResolution;\n if (maxResolution !== undefined) {\n minZoom = 0;\n }\n else {\n maxResolution = defaultMaxResolution / Math.pow(zoomFactor, minZoom);\n }\n // user provided minResolution takes precedence\n minResolution = options.minResolution;\n if (minResolution === undefined) {\n if (options.maxZoom !== undefined) {\n if (options.maxResolution !== undefined) {\n minResolution = maxResolution / Math.pow(zoomFactor, maxZoom);\n }\n else {\n minResolution = defaultMaxResolution / Math.pow(zoomFactor, maxZoom);\n }\n }\n else {\n minResolution = defaultMinResolution;\n }\n }\n // given discrete zoom levels, minResolution may be different than provided\n maxZoom =\n minZoom +\n Math.floor(Math.log(maxResolution / minResolution) / Math.log(zoomFactor));\n minResolution = maxResolution / Math.pow(zoomFactor, maxZoom - minZoom);\n if (options.constrainResolution) {\n resolutionConstraint = createSnapToPower(zoomFactor, maxResolution, minResolution, smooth, !constrainOnlyCenter && extent, showFullExtent);\n }\n else {\n resolutionConstraint = createMinMaxResolution(maxResolution, minResolution, smooth, !constrainOnlyCenter && extent, showFullExtent);\n }\n }\n return {\n constraint: resolutionConstraint,\n maxResolution: maxResolution,\n minResolution: minResolution,\n minZoom: minZoom,\n zoomFactor: zoomFactor,\n };\n}\n/**\n * @param {ViewOptions} options View options.\n * @return {import(\"./rotationconstraint.js\").Type} Rotation constraint.\n */\nexport function createRotationConstraint(options) {\n var enableRotation = options.enableRotation !== undefined ? options.enableRotation : true;\n if (enableRotation) {\n var constrainRotation = options.constrainRotation;\n if (constrainRotation === undefined || constrainRotation === true) {\n return createSnapToZero();\n }\n else if (constrainRotation === false) {\n return rotationNone;\n }\n else if (typeof constrainRotation === 'number') {\n return createSnapToN(constrainRotation);\n }\n else {\n return rotationNone;\n }\n }\n else {\n return disable;\n }\n}\n/**\n * Determine if an animation involves no view change.\n * @param {Animation} animation The animation.\n * @return {boolean} The animation involves no view change.\n */\nexport function isNoopAnimation(animation) {\n if (animation.sourceCenter && animation.targetCenter) {\n if (!coordinatesEqual(animation.sourceCenter, animation.targetCenter)) {\n return false;\n }\n }\n if (animation.sourceResolution !== animation.targetResolution) {\n return false;\n }\n if (animation.sourceRotation !== animation.targetRotation) {\n return false;\n }\n return true;\n}\n/**\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {import(\"./size.js\").Size} size Box pixel size.\n * @param {import(\"./pixel.js\").Pixel} position Position on the view to center on.\n * @param {number} resolution Resolution.\n * @param {number} rotation Rotation.\n * @return {import(\"./coordinate.js\").Coordinate} Shifted center.\n */\nfunction calculateCenterOn(coordinate, size, position, resolution, rotation) {\n // calculate rotated position\n var cosAngle = Math.cos(-rotation);\n var sinAngle = Math.sin(-rotation);\n var rotX = coordinate[0] * cosAngle - coordinate[1] * sinAngle;\n var rotY = coordinate[1] * cosAngle + coordinate[0] * sinAngle;\n rotX += (size[0] / 2 - position[0]) * resolution;\n rotY += (position[1] - size[1] / 2) * resolution;\n // go back to original angle\n sinAngle = -sinAngle; // go back to original rotation\n var centerX = rotX * cosAngle - rotY * sinAngle;\n var centerY = rotY * cosAngle + rotX * sinAngle;\n return [centerX, centerY];\n}\nexport default View;\n//# sourceMappingURL=View.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/PluggableMap\n */\nimport BaseObject from './Object.js';\nimport Collection from './Collection.js';\nimport CollectionEventType from './CollectionEventType.js';\nimport EventType from './events/EventType.js';\nimport LayerGroup from './layer/Group.js';\nimport MapBrowserEvent from './MapBrowserEvent.js';\nimport MapBrowserEventHandler from './MapBrowserEventHandler.js';\nimport MapBrowserEventType from './MapBrowserEventType.js';\nimport MapEvent from './MapEvent.js';\nimport MapEventType from './MapEventType.js';\nimport MapProperty from './MapProperty.js';\nimport ObjectEventType from './ObjectEventType.js';\nimport PointerEventType from './pointer/EventType.js';\nimport RenderEventType from './render/EventType.js';\nimport TileQueue, { getTilePriority } from './TileQueue.js';\nimport View from './View.js';\nimport ViewHint from './ViewHint.js';\nimport { DEVICE_PIXEL_RATIO, PASSIVE_EVENT_LISTENERS } from './has.js';\nimport { TRUE } from './functions.js';\nimport { apply as applyTransform, create as createTransform, } from './transform.js';\nimport { assert } from './asserts.js';\nimport { clone, createOrUpdateEmpty, equals, getForViewAndSize, isEmpty, } from './extent.js';\nimport { fromUserCoordinate, toUserCoordinate } from './proj.js';\nimport { hasArea } from './size.js';\nimport { listen, unlistenByKey } from './events.js';\nimport { removeNode } from './dom.js';\n/**\n * State of the current frame. Only `pixelRatio`, `time` and `viewState` should\n * be used in applications.\n * @typedef {Object} FrameState\n * @property {number} pixelRatio The pixel ratio of the frame.\n * @property {number} time The time when rendering of the frame was requested.\n * @property {import(\"./View.js\").State} viewState The state of the current view.\n * @property {boolean} animate Animate.\n * @property {import(\"./transform.js\").Transform} coordinateToPixelTransform CoordinateToPixelTransform.\n * @property {import(\"rbush\").default} declutterTree DeclutterTree.\n * @property {null|import(\"./extent.js\").Extent} extent Extent.\n * @property {number} index Index.\n * @property {Array} layerStatesArray LayerStatesArray.\n * @property {number} layerIndex LayerIndex.\n * @property {import(\"./transform.js\").Transform} pixelToCoordinateTransform PixelToCoordinateTransform.\n * @property {Array} postRenderFunctions PostRenderFunctions.\n * @property {import(\"./size.js\").Size} size Size.\n * @property {TileQueue} tileQueue TileQueue.\n * @property {!Object>} usedTiles UsedTiles.\n * @property {Array} viewHints ViewHints.\n * @property {!Object>} wantedTiles WantedTiles.\n */\n/**\n * @typedef {function(PluggableMap, ?FrameState): any} PostRenderFunction\n */\n/**\n * @typedef {Object} AtPixelOptions\n * @property {undefined|function(import(\"./layer/Layer.js\").default): boolean} [layerFilter] Layer filter\n * function. The filter function will receive one argument, the\n * {@link module:ol/layer/Layer layer-candidate} and it should return a boolean value.\n * Only layers which are visible and for which this function returns `true`\n * will be tested for features. By default, all visible layers will be tested.\n * @property {number} [hitTolerance=0] Hit-detection tolerance in css pixels. Pixels\n * inside the radius around the given position will be checked for features.\n * @property {boolean} [checkWrapped=true] Check-Wrapped Will check for for wrapped geometries inside the range of\n * +/- 1 world width. Works only if a projection is used that can be wrapped.\n */\n/**\n * @typedef {Object} MapOptionsInternal\n * @property {Collection} [controls] Controls.\n * @property {Collection} [interactions] Interactions.\n * @property {HTMLElement|Document} keyboardEventTarget KeyboardEventTarget.\n * @property {Collection} overlays Overlays.\n * @property {Object} values Values.\n */\n/**\n * @typedef {import(\"./ObjectEventType\").Types|'change:layergroup'|'change:size'|'change:target'|'change:view'} MapObjectEventTypes\n */\n/***\n * @template Return\n * @typedef {import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature &\n * import(\"./Observable\").CombinedOnSignature} PluggableMapOnSignature\n */\n/**\n * Object literal with config options for the map.\n * @typedef {Object} MapOptions\n * @property {Collection|Array} [controls]\n * Controls initially added to the map. If not specified,\n * {@link module:ol/control.defaults} is used.\n * @property {number} [pixelRatio=window.devicePixelRatio] The ratio between\n * physical pixels and device-independent pixels (dips) on the device.\n * @property {Collection|Array} [interactions]\n * Interactions that are initially added to the map. If not specified,\n * {@link module:ol/interaction.defaults} is used.\n * @property {HTMLElement|Document|string} [keyboardEventTarget] The element to\n * listen to keyboard events on. This determines when the `KeyboardPan` and\n * `KeyboardZoom` interactions trigger. For example, if this option is set to\n * `document` the keyboard interactions will always trigger. If this option is\n * not specified, the element the library listens to keyboard events on is the\n * map target (i.e. the user-provided div for the map). If this is not\n * `document`, the target element needs to be focused for key events to be\n * emitted, requiring that the target element has a `tabindex` attribute.\n * @property {Array|Collection|LayerGroup} [layers]\n * Layers. If this is not defined, a map with no layers will be rendered. Note\n * that layers are rendered in the order supplied, so if you want, for example,\n * a vector layer to appear on top of a tile layer, it must come after the tile\n * layer.\n * @property {number} [maxTilesLoading=16] Maximum number tiles to load\n * simultaneously.\n * @property {number} [moveTolerance=1] The minimum distance in pixels the\n * cursor must move to be detected as a map move event instead of a click.\n * Increasing this value can make it easier to click on the map.\n * @property {Collection|Array} [overlays]\n * Overlays initially added to the map. By default, no overlays are added.\n * @property {HTMLElement|string} [target] The container for the map, either the\n * element itself or the `id` of the element. If not specified at construction\n * time, {@link module:ol/Map~Map#setTarget} must be called for the map to be\n * rendered. If passed by element, the container can be in a secondary document.\n * @property {View} [view] The map's view. No layer sources will be\n * fetched unless this is specified at construction time or through\n * {@link module:ol/Map~Map#setView}.\n */\n/**\n * @api\n */\nvar PluggableMap = /** @class */ (function (_super) {\n __extends(PluggableMap, _super);\n /**\n * @param {MapOptions} options Map options.\n */\n function PluggableMap(options) {\n var _this = _super.call(this) || this;\n /***\n * @type {PluggableMapOnSignature}\n */\n _this.on;\n /***\n * @type {PluggableMapOnSignature}\n */\n _this.once;\n /***\n * @type {PluggableMapOnSignature}\n */\n _this.un;\n var optionsInternal = createOptionsInternal(options);\n /** @private */\n _this.boundHandleBrowserEvent_ = _this.handleBrowserEvent.bind(_this);\n /**\n * @type {number}\n * @private\n */\n _this.maxTilesLoading_ =\n options.maxTilesLoading !== undefined ? options.maxTilesLoading : 16;\n /**\n * @private\n * @type {number}\n */\n _this.pixelRatio_ =\n options.pixelRatio !== undefined\n ? options.pixelRatio\n : DEVICE_PIXEL_RATIO;\n /**\n * @private\n * @type {*}\n */\n _this.postRenderTimeoutHandle_;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.animationDelayKey_;\n /**\n * @private\n */\n _this.animationDelay_ = /** @this {PluggableMap} */ function () {\n this.animationDelayKey_ = undefined;\n this.renderFrame_(Date.now());\n }.bind(_this);\n /**\n * @private\n * @type {import(\"./transform.js\").Transform}\n */\n _this.coordinateToPixelTransform_ = createTransform();\n /**\n * @private\n * @type {import(\"./transform.js\").Transform}\n */\n _this.pixelToCoordinateTransform_ = createTransform();\n /**\n * @private\n * @type {number}\n */\n _this.frameIndex_ = 0;\n /**\n * @private\n * @type {?FrameState}\n */\n _this.frameState_ = null;\n /**\n * The extent at the previous 'moveend' event.\n * @private\n * @type {import(\"./extent.js\").Extent}\n */\n _this.previousExtent_ = null;\n /**\n * @private\n * @type {?import(\"./events.js\").EventsKey}\n */\n _this.viewPropertyListenerKey_ = null;\n /**\n * @private\n * @type {?import(\"./events.js\").EventsKey}\n */\n _this.viewChangeListenerKey_ = null;\n /**\n * @private\n * @type {?Array}\n */\n _this.layerGroupPropertyListenerKeys_ = null;\n /**\n * @private\n * @type {!HTMLElement}\n */\n _this.viewport_ = document.createElement('div');\n _this.viewport_.className =\n 'ol-viewport' + ('ontouchstart' in window ? ' ol-touch' : '');\n _this.viewport_.style.position = 'relative';\n _this.viewport_.style.overflow = 'hidden';\n _this.viewport_.style.width = '100%';\n _this.viewport_.style.height = '100%';\n /**\n * @private\n * @type {!HTMLElement}\n */\n _this.overlayContainer_ = document.createElement('div');\n _this.overlayContainer_.style.position = 'absolute';\n _this.overlayContainer_.style.zIndex = '0';\n _this.overlayContainer_.style.width = '100%';\n _this.overlayContainer_.style.height = '100%';\n _this.overlayContainer_.style.pointerEvents = 'none';\n _this.overlayContainer_.className = 'ol-overlaycontainer';\n _this.viewport_.appendChild(_this.overlayContainer_);\n /**\n * @private\n * @type {!HTMLElement}\n */\n _this.overlayContainerStopEvent_ = document.createElement('div');\n _this.overlayContainerStopEvent_.style.position = 'absolute';\n _this.overlayContainerStopEvent_.style.zIndex = '0';\n _this.overlayContainerStopEvent_.style.width = '100%';\n _this.overlayContainerStopEvent_.style.height = '100%';\n _this.overlayContainerStopEvent_.style.pointerEvents = 'none';\n _this.overlayContainerStopEvent_.className = 'ol-overlaycontainer-stopevent';\n _this.viewport_.appendChild(_this.overlayContainerStopEvent_);\n /**\n * @private\n * @type {MapBrowserEventHandler}\n */\n _this.mapBrowserEventHandler_ = null;\n /**\n * @private\n * @type {number}\n */\n _this.moveTolerance_ = options.moveTolerance;\n /**\n * @private\n * @type {HTMLElement|Document}\n */\n _this.keyboardEventTarget_ = optionsInternal.keyboardEventTarget;\n /**\n * @private\n * @type {?Array}\n */\n _this.keyHandlerKeys_ = null;\n /**\n * @type {Collection}\n * @protected\n */\n _this.controls = optionsInternal.controls || new Collection();\n /**\n * @type {Collection}\n * @protected\n */\n _this.interactions = optionsInternal.interactions || new Collection();\n /**\n * @type {Collection}\n * @private\n */\n _this.overlays_ = optionsInternal.overlays;\n /**\n * A lookup of overlays by id.\n * @private\n * @type {Object}\n */\n _this.overlayIdIndex_ = {};\n /**\n * @type {import(\"./renderer/Map.js\").default}\n * @private\n */\n _this.renderer_ = null;\n /**\n * @type {undefined|function(Event): void}\n * @private\n */\n _this.handleResize_;\n /**\n * @private\n * @type {!Array}\n */\n _this.postRenderFunctions_ = [];\n /**\n * @private\n * @type {TileQueue}\n */\n _this.tileQueue_ = new TileQueue(_this.getTilePriority.bind(_this), _this.handleTileChange_.bind(_this));\n _this.addChangeListener(MapProperty.LAYERGROUP, _this.handleLayerGroupChanged_);\n _this.addChangeListener(MapProperty.VIEW, _this.handleViewChanged_);\n _this.addChangeListener(MapProperty.SIZE, _this.handleSizeChanged_);\n _this.addChangeListener(MapProperty.TARGET, _this.handleTargetChanged_);\n // setProperties will trigger the rendering of the map if the map\n // is \"defined\" already.\n _this.setProperties(optionsInternal.values);\n _this.controls.forEach(\n /**\n * @param {import(\"./control/Control.js\").default} control Control.\n * @this {PluggableMap}\n */\n function (control) {\n control.setMap(this);\n }.bind(_this));\n _this.controls.addEventListener(CollectionEventType.ADD, \n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function (event) {\n event.element.setMap(this);\n }.bind(_this));\n _this.controls.addEventListener(CollectionEventType.REMOVE, \n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function (event) {\n event.element.setMap(null);\n }.bind(_this));\n _this.interactions.forEach(\n /**\n * @param {import(\"./interaction/Interaction.js\").default} interaction Interaction.\n * @this {PluggableMap}\n */\n function (interaction) {\n interaction.setMap(this);\n }.bind(_this));\n _this.interactions.addEventListener(CollectionEventType.ADD, \n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function (event) {\n event.element.setMap(this);\n }.bind(_this));\n _this.interactions.addEventListener(CollectionEventType.REMOVE, \n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function (event) {\n event.element.setMap(null);\n }.bind(_this));\n _this.overlays_.forEach(_this.addOverlayInternal_.bind(_this));\n _this.overlays_.addEventListener(CollectionEventType.ADD, \n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function (event) {\n this.addOverlayInternal_(\n /** @type {import(\"./Overlay.js\").default} */ (event.element));\n }.bind(_this));\n _this.overlays_.addEventListener(CollectionEventType.REMOVE, \n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function (event) {\n var overlay = /** @type {import(\"./Overlay.js\").default} */ (event.element);\n var id = overlay.getId();\n if (id !== undefined) {\n delete this.overlayIdIndex_[id.toString()];\n }\n event.element.setMap(null);\n }.bind(_this));\n return _this;\n }\n /**\n * @abstract\n * @return {import(\"./renderer/Map.js\").default} The map renderer\n */\n PluggableMap.prototype.createRenderer = function () {\n throw new Error('Use a map type that has a createRenderer method');\n };\n /**\n * Add the given control to the map.\n * @param {import(\"./control/Control.js\").default} control Control.\n * @api\n */\n PluggableMap.prototype.addControl = function (control) {\n this.getControls().push(control);\n };\n /**\n * Add the given interaction to the map. If you want to add an interaction\n * at another point of the collection use `getInteraction()` and the methods\n * available on {@link module:ol/Collection~Collection}. This can be used to\n * stop the event propagation from the handleEvent function. The interactions\n * get to handle the events in the reverse order of this collection.\n * @param {import(\"./interaction/Interaction.js\").default} interaction Interaction to add.\n * @api\n */\n PluggableMap.prototype.addInteraction = function (interaction) {\n this.getInteractions().push(interaction);\n };\n /**\n * Adds the given layer to the top of this map. If you want to add a layer\n * elsewhere in the stack, use `getLayers()` and the methods available on\n * {@link module:ol/Collection~Collection}.\n * @param {import(\"./layer/Base.js\").default} layer Layer.\n * @api\n */\n PluggableMap.prototype.addLayer = function (layer) {\n var layers = this.getLayerGroup().getLayers();\n layers.push(layer);\n };\n /**\n * Add the given overlay to the map.\n * @param {import(\"./Overlay.js\").default} overlay Overlay.\n * @api\n */\n PluggableMap.prototype.addOverlay = function (overlay) {\n this.getOverlays().push(overlay);\n };\n /**\n * This deals with map's overlay collection changes.\n * @param {import(\"./Overlay.js\").default} overlay Overlay.\n * @private\n */\n PluggableMap.prototype.addOverlayInternal_ = function (overlay) {\n var id = overlay.getId();\n if (id !== undefined) {\n this.overlayIdIndex_[id.toString()] = overlay;\n }\n overlay.setMap(this);\n };\n /**\n *\n * Clean up.\n */\n PluggableMap.prototype.disposeInternal = function () {\n this.setTarget(null);\n _super.prototype.disposeInternal.call(this);\n };\n /**\n * Detect features that intersect a pixel on the viewport, and execute a\n * callback with each intersecting feature. Layers included in the detection can\n * be configured through the `layerFilter` option in `opt_options`.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel.\n * @param {function(import(\"./Feature.js\").FeatureLike, import(\"./layer/Layer.js\").default, import(\"./geom/SimpleGeometry.js\").default): T} callback Feature callback. The callback will be\n * called with two arguments. The first argument is one\n * {@link module:ol/Feature feature} or\n * {@link module:ol/render/Feature render feature} at the pixel, the second is\n * the {@link module:ol/layer/Layer layer} of the feature and will be null for\n * unmanaged layers. To stop detection, callback functions can return a\n * truthy value.\n * @param {AtPixelOptions} [opt_options] Optional options.\n * @return {T|undefined} Callback result, i.e. the return value of last\n * callback execution, or the first truthy callback return value.\n * @template S,T\n * @api\n */\n PluggableMap.prototype.forEachFeatureAtPixel = function (pixel, callback, opt_options) {\n if (!this.frameState_) {\n return;\n }\n var coordinate = this.getCoordinateFromPixelInternal(pixel);\n opt_options = opt_options !== undefined ? opt_options : {};\n var hitTolerance = opt_options.hitTolerance !== undefined ? opt_options.hitTolerance : 0;\n var layerFilter = opt_options.layerFilter !== undefined ? opt_options.layerFilter : TRUE;\n var checkWrapped = opt_options.checkWrapped !== false;\n return this.renderer_.forEachFeatureAtCoordinate(coordinate, this.frameState_, hitTolerance, checkWrapped, callback, null, layerFilter, null);\n };\n /**\n * Get all features that intersect a pixel on the viewport.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel.\n * @param {AtPixelOptions} [opt_options] Optional options.\n * @return {Array} The detected features or\n * an empty array if none were found.\n * @api\n */\n PluggableMap.prototype.getFeaturesAtPixel = function (pixel, opt_options) {\n var features = [];\n this.forEachFeatureAtPixel(pixel, function (feature) {\n features.push(feature);\n }, opt_options);\n return features;\n };\n /**\n * Detect layers that have a color value at a pixel on the viewport, and\n * execute a callback with each matching layer. Layers included in the\n * detection can be configured through `opt_layerFilter`.\n *\n * Note: this may give false positives unless the map layers have had different `className`\n * properties assigned to them.\n *\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel.\n * @param {function(this: S, import(\"./layer/Layer.js\").default, (Uint8ClampedArray|Uint8Array)): T} callback\n * Layer callback. This callback will receive two arguments: first is the\n * {@link module:ol/layer/Layer layer}, second argument is an array representing\n * [R, G, B, A] pixel values (0 - 255) and will be `null` for layer types\n * that do not currently support this argument. To stop detection, callback\n * functions can return a truthy value.\n * @param {AtPixelOptions} [opt_options] Configuration options.\n * @return {T|undefined} Callback result, i.e. the return value of last\n * callback execution, or the first truthy callback return value.\n * @template S,T\n * @api\n */\n PluggableMap.prototype.forEachLayerAtPixel = function (pixel, callback, opt_options) {\n if (!this.frameState_) {\n return;\n }\n var options = opt_options || {};\n var hitTolerance = options.hitTolerance !== undefined ? options.hitTolerance : 0;\n var layerFilter = options.layerFilter || TRUE;\n return this.renderer_.forEachLayerAtPixel(pixel, this.frameState_, hitTolerance, callback, layerFilter);\n };\n /**\n * Detect if features intersect a pixel on the viewport. Layers included in the\n * detection can be configured through `opt_layerFilter`.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel.\n * @param {AtPixelOptions} [opt_options] Optional options.\n * @return {boolean} Is there a feature at the given pixel?\n * @api\n */\n PluggableMap.prototype.hasFeatureAtPixel = function (pixel, opt_options) {\n if (!this.frameState_) {\n return false;\n }\n var coordinate = this.getCoordinateFromPixelInternal(pixel);\n opt_options = opt_options !== undefined ? opt_options : {};\n var layerFilter = opt_options.layerFilter !== undefined ? opt_options.layerFilter : TRUE;\n var hitTolerance = opt_options.hitTolerance !== undefined ? opt_options.hitTolerance : 0;\n var checkWrapped = opt_options.checkWrapped !== false;\n return this.renderer_.hasFeatureAtCoordinate(coordinate, this.frameState_, hitTolerance, checkWrapped, layerFilter, null);\n };\n /**\n * Returns the coordinate in user projection for a browser event.\n * @param {MouseEvent} event Event.\n * @return {import(\"./coordinate.js\").Coordinate} Coordinate.\n * @api\n */\n PluggableMap.prototype.getEventCoordinate = function (event) {\n return this.getCoordinateFromPixel(this.getEventPixel(event));\n };\n /**\n * Returns the coordinate in view projection for a browser event.\n * @param {MouseEvent} event Event.\n * @return {import(\"./coordinate.js\").Coordinate} Coordinate.\n */\n PluggableMap.prototype.getEventCoordinateInternal = function (event) {\n return this.getCoordinateFromPixelInternal(this.getEventPixel(event));\n };\n /**\n * Returns the map pixel position for a browser event relative to the viewport.\n * @param {UIEvent} event Event.\n * @return {import(\"./pixel.js\").Pixel} Pixel.\n * @api\n */\n PluggableMap.prototype.getEventPixel = function (event) {\n var viewportPosition = this.viewport_.getBoundingClientRect();\n var eventPosition = \n //FIXME Are we really calling this with a TouchEvent anywhere?\n 'changedTouches' in event\n ? /** @type {TouchEvent} */ (event).changedTouches[0]\n : /** @type {MouseEvent} */ (event);\n return [\n eventPosition.clientX - viewportPosition.left,\n eventPosition.clientY - viewportPosition.top,\n ];\n };\n /**\n * Get the target in which this map is rendered.\n * Note that this returns what is entered as an option or in setTarget:\n * if that was an element, it returns an element; if a string, it returns that.\n * @return {HTMLElement|string|undefined} The Element or id of the Element that the\n * map is rendered in.\n * @observable\n * @api\n */\n PluggableMap.prototype.getTarget = function () {\n return /** @type {HTMLElement|string|undefined} */ (this.get(MapProperty.TARGET));\n };\n /**\n * Get the DOM element into which this map is rendered. In contrast to\n * `getTarget` this method always return an `Element`, or `null` if the\n * map has no target.\n * @return {HTMLElement} The element that the map is rendered in.\n * @api\n */\n PluggableMap.prototype.getTargetElement = function () {\n var target = this.getTarget();\n if (target !== undefined) {\n return typeof target === 'string'\n ? document.getElementById(target)\n : target;\n }\n else {\n return null;\n }\n };\n /**\n * Get the coordinate for a given pixel. This returns a coordinate in the\n * user projection.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel position in the map viewport.\n * @return {import(\"./coordinate.js\").Coordinate} The coordinate for the pixel position.\n * @api\n */\n PluggableMap.prototype.getCoordinateFromPixel = function (pixel) {\n return toUserCoordinate(this.getCoordinateFromPixelInternal(pixel), this.getView().getProjection());\n };\n /**\n * Get the coordinate for a given pixel. This returns a coordinate in the\n * map view projection.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel position in the map viewport.\n * @return {import(\"./coordinate.js\").Coordinate} The coordinate for the pixel position.\n */\n PluggableMap.prototype.getCoordinateFromPixelInternal = function (pixel) {\n var frameState = this.frameState_;\n if (!frameState) {\n return null;\n }\n else {\n return applyTransform(frameState.pixelToCoordinateTransform, pixel.slice());\n }\n };\n /**\n * Get the map controls. Modifying this collection changes the controls\n * associated with the map.\n * @return {Collection} Controls.\n * @api\n */\n PluggableMap.prototype.getControls = function () {\n return this.controls;\n };\n /**\n * Get the map overlays. Modifying this collection changes the overlays\n * associated with the map.\n * @return {Collection} Overlays.\n * @api\n */\n PluggableMap.prototype.getOverlays = function () {\n return this.overlays_;\n };\n /**\n * Get an overlay by its identifier (the value returned by overlay.getId()).\n * Note that the index treats string and numeric identifiers as the same. So\n * `map.getOverlayById(2)` will return an overlay with id `'2'` or `2`.\n * @param {string|number} id Overlay identifier.\n * @return {import(\"./Overlay.js\").default} Overlay.\n * @api\n */\n PluggableMap.prototype.getOverlayById = function (id) {\n var overlay = this.overlayIdIndex_[id.toString()];\n return overlay !== undefined ? overlay : null;\n };\n /**\n * Get the map interactions. Modifying this collection changes the interactions\n * associated with the map.\n *\n * Interactions are used for e.g. pan, zoom and rotate.\n * @return {Collection} Interactions.\n * @api\n */\n PluggableMap.prototype.getInteractions = function () {\n return this.interactions;\n };\n /**\n * Get the layergroup associated with this map.\n * @return {LayerGroup} A layer group containing the layers in this map.\n * @observable\n * @api\n */\n PluggableMap.prototype.getLayerGroup = function () {\n return /** @type {LayerGroup} */ (this.get(MapProperty.LAYERGROUP));\n };\n /**\n * Get the collection of layers associated with this map.\n * @return {!Collection} Layers.\n * @api\n */\n PluggableMap.prototype.getLayers = function () {\n var layers = this.getLayerGroup().getLayers();\n return layers;\n };\n /**\n * @return {boolean} Layers have sources that are still loading.\n */\n PluggableMap.prototype.getLoading = function () {\n var layerStatesArray = this.getLayerGroup().getLayerStatesArray();\n for (var i = 0, ii = layerStatesArray.length; i < ii; ++i) {\n var layer = layerStatesArray[i].layer;\n var source = /** @type {import(\"./layer/Layer.js\").default} */ (layer).getSource();\n if (source && source.loading) {\n return true;\n }\n }\n return false;\n };\n /**\n * Get the pixel for a coordinate. This takes a coordinate in the user\n * projection and returns the corresponding pixel.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate A map coordinate.\n * @return {import(\"./pixel.js\").Pixel} A pixel position in the map viewport.\n * @api\n */\n PluggableMap.prototype.getPixelFromCoordinate = function (coordinate) {\n var viewCoordinate = fromUserCoordinate(coordinate, this.getView().getProjection());\n return this.getPixelFromCoordinateInternal(viewCoordinate);\n };\n /**\n * Get the pixel for a coordinate. This takes a coordinate in the map view\n * projection and returns the corresponding pixel.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate A map coordinate.\n * @return {import(\"./pixel.js\").Pixel} A pixel position in the map viewport.\n */\n PluggableMap.prototype.getPixelFromCoordinateInternal = function (coordinate) {\n var frameState = this.frameState_;\n if (!frameState) {\n return null;\n }\n else {\n return applyTransform(frameState.coordinateToPixelTransform, coordinate.slice(0, 2));\n }\n };\n /**\n * Get the map renderer.\n * @return {import(\"./renderer/Map.js\").default} Renderer\n */\n PluggableMap.prototype.getRenderer = function () {\n return this.renderer_;\n };\n /**\n * Get the size of this map.\n * @return {import(\"./size.js\").Size|undefined} The size in pixels of the map in the DOM.\n * @observable\n * @api\n */\n PluggableMap.prototype.getSize = function () {\n return /** @type {import(\"./size.js\").Size|undefined} */ (this.get(MapProperty.SIZE));\n };\n /**\n * Get the view associated with this map. A view manages properties such as\n * center and resolution.\n * @return {View} The view that controls this map.\n * @observable\n * @api\n */\n PluggableMap.prototype.getView = function () {\n return /** @type {View} */ (this.get(MapProperty.VIEW));\n };\n /**\n * Get the element that serves as the map viewport.\n * @return {HTMLElement} Viewport.\n * @api\n */\n PluggableMap.prototype.getViewport = function () {\n return this.viewport_;\n };\n /**\n * Get the element that serves as the container for overlays. Elements added to\n * this container will let mousedown and touchstart events through to the map,\n * so clicks and gestures on an overlay will trigger {@link module:ol/MapBrowserEvent~MapBrowserEvent}\n * events.\n * @return {!HTMLElement} The map's overlay container.\n */\n PluggableMap.prototype.getOverlayContainer = function () {\n return this.overlayContainer_;\n };\n /**\n * Get the element that serves as a container for overlays that don't allow\n * event propagation. Elements added to this container won't let mousedown and\n * touchstart events through to the map, so clicks and gestures on an overlay\n * don't trigger any {@link module:ol/MapBrowserEvent~MapBrowserEvent}.\n * @return {!HTMLElement} The map's overlay container that stops events.\n */\n PluggableMap.prototype.getOverlayContainerStopEvent = function () {\n return this.overlayContainerStopEvent_;\n };\n /**\n * @return {!Document} The document where the map is displayed.\n */\n PluggableMap.prototype.getOwnerDocument = function () {\n var targetElement = this.getTargetElement();\n return targetElement ? targetElement.ownerDocument : document;\n };\n /**\n * @param {import(\"./Tile.js\").default} tile Tile.\n * @param {string} tileSourceKey Tile source key.\n * @param {import(\"./coordinate.js\").Coordinate} tileCenter Tile center.\n * @param {number} tileResolution Tile resolution.\n * @return {number} Tile priority.\n */\n PluggableMap.prototype.getTilePriority = function (tile, tileSourceKey, tileCenter, tileResolution) {\n return getTilePriority(this.frameState_, tile, tileSourceKey, tileCenter, tileResolution);\n };\n /**\n * @param {UIEvent} browserEvent Browser event.\n * @param {string} [opt_type] Type.\n */\n PluggableMap.prototype.handleBrowserEvent = function (browserEvent, opt_type) {\n var type = opt_type || browserEvent.type;\n var mapBrowserEvent = new MapBrowserEvent(type, this, browserEvent);\n this.handleMapBrowserEvent(mapBrowserEvent);\n };\n /**\n * @param {MapBrowserEvent} mapBrowserEvent The event to handle.\n */\n PluggableMap.prototype.handleMapBrowserEvent = function (mapBrowserEvent) {\n if (!this.frameState_) {\n // With no view defined, we cannot translate pixels into geographical\n // coordinates so interactions cannot be used.\n return;\n }\n var originalEvent = /** @type {PointerEvent} */ (mapBrowserEvent.originalEvent);\n var eventType = originalEvent.type;\n if (eventType === PointerEventType.POINTERDOWN ||\n eventType === EventType.WHEEL ||\n eventType === EventType.KEYDOWN) {\n var doc = this.getOwnerDocument();\n var rootNode = this.viewport_.getRootNode\n ? this.viewport_.getRootNode()\n : doc;\n var target = /** @type {Node} */ (originalEvent.target);\n if (\n // Abort if the target is a child of the container for elements whose events are not meant\n // to be handled by map interactions.\n this.overlayContainerStopEvent_.contains(target) ||\n // Abort if the event target is a child of the container that is no longer in the page.\n // It's possible for the target to no longer be in the page if it has been removed in an\n // event listener, this might happen in a Control that recreates it's content based on\n // user interaction either manually or via a render in something like https://reactjs.org/\n !(rootNode === doc ? doc.documentElement : rootNode).contains(target)) {\n return;\n }\n }\n mapBrowserEvent.frameState = this.frameState_;\n if (this.dispatchEvent(mapBrowserEvent) !== false) {\n var interactionsArray = this.getInteractions().getArray().slice();\n for (var i = interactionsArray.length - 1; i >= 0; i--) {\n var interaction = interactionsArray[i];\n if (interaction.getMap() !== this ||\n !interaction.getActive() ||\n !this.getTargetElement()) {\n continue;\n }\n var cont = interaction.handleEvent(mapBrowserEvent);\n if (!cont || mapBrowserEvent.propagationStopped) {\n break;\n }\n }\n }\n };\n /**\n * @protected\n */\n PluggableMap.prototype.handlePostRender = function () {\n var frameState = this.frameState_;\n // Manage the tile queue\n // Image loads are expensive and a limited resource, so try to use them\n // efficiently:\n // * When the view is static we allow a large number of parallel tile loads\n // to complete the frame as quickly as possible.\n // * When animating or interacting, image loads can cause janks, so we reduce\n // the maximum number of loads per frame and limit the number of parallel\n // tile loads to remain reactive to view changes and to reduce the chance of\n // loading tiles that will quickly disappear from view.\n var tileQueue = this.tileQueue_;\n if (!tileQueue.isEmpty()) {\n var maxTotalLoading = this.maxTilesLoading_;\n var maxNewLoads = maxTotalLoading;\n if (frameState) {\n var hints = frameState.viewHints;\n if (hints[ViewHint.ANIMATING] || hints[ViewHint.INTERACTING]) {\n var lowOnFrameBudget = Date.now() - frameState.time > 8;\n maxTotalLoading = lowOnFrameBudget ? 0 : 8;\n maxNewLoads = lowOnFrameBudget ? 0 : 2;\n }\n }\n if (tileQueue.getTilesLoading() < maxTotalLoading) {\n tileQueue.reprioritize(); // FIXME only call if view has changed\n tileQueue.loadMoreTiles(maxTotalLoading, maxNewLoads);\n }\n }\n if (frameState &&\n this.hasListener(RenderEventType.RENDERCOMPLETE) &&\n !frameState.animate &&\n !this.tileQueue_.getTilesLoading() &&\n !this.getLoading()) {\n this.renderer_.dispatchRenderEvent(RenderEventType.RENDERCOMPLETE, frameState);\n }\n var postRenderFunctions = this.postRenderFunctions_;\n for (var i = 0, ii = postRenderFunctions.length; i < ii; ++i) {\n postRenderFunctions[i](this, frameState);\n }\n postRenderFunctions.length = 0;\n };\n /**\n * @private\n */\n PluggableMap.prototype.handleSizeChanged_ = function () {\n if (this.getView() && !this.getView().getAnimating()) {\n this.getView().resolveConstraints(0);\n }\n this.render();\n };\n /**\n * @private\n */\n PluggableMap.prototype.handleTargetChanged_ = function () {\n // target may be undefined, null, a string or an Element.\n // If it's a string we convert it to an Element before proceeding.\n // If it's not now an Element we remove the viewport from the DOM.\n // If it's an Element we append the viewport element to it.\n var targetElement;\n if (this.getTarget()) {\n targetElement = this.getTargetElement();\n }\n if (this.mapBrowserEventHandler_) {\n for (var i = 0, ii = this.keyHandlerKeys_.length; i < ii; ++i) {\n unlistenByKey(this.keyHandlerKeys_[i]);\n }\n this.keyHandlerKeys_ = null;\n this.viewport_.removeEventListener(EventType.CONTEXTMENU, this.boundHandleBrowserEvent_);\n this.viewport_.removeEventListener(EventType.WHEEL, this.boundHandleBrowserEvent_);\n if (this.handleResize_ !== undefined) {\n removeEventListener(EventType.RESIZE, this.handleResize_, false);\n this.handleResize_ = undefined;\n }\n this.mapBrowserEventHandler_.dispose();\n this.mapBrowserEventHandler_ = null;\n removeNode(this.viewport_);\n }\n if (!targetElement) {\n if (this.renderer_) {\n clearTimeout(this.postRenderTimeoutHandle_);\n this.postRenderTimeoutHandle_ = undefined;\n this.postRenderFunctions_.length = 0;\n this.renderer_.dispose();\n this.renderer_ = null;\n }\n if (this.animationDelayKey_) {\n cancelAnimationFrame(this.animationDelayKey_);\n this.animationDelayKey_ = undefined;\n }\n }\n else {\n targetElement.appendChild(this.viewport_);\n if (!this.renderer_) {\n this.renderer_ = this.createRenderer();\n }\n this.mapBrowserEventHandler_ = new MapBrowserEventHandler(this, this.moveTolerance_);\n for (var key in MapBrowserEventType) {\n this.mapBrowserEventHandler_.addEventListener(MapBrowserEventType[key], this.handleMapBrowserEvent.bind(this));\n }\n this.viewport_.addEventListener(EventType.CONTEXTMENU, this.boundHandleBrowserEvent_, false);\n this.viewport_.addEventListener(EventType.WHEEL, this.boundHandleBrowserEvent_, PASSIVE_EVENT_LISTENERS ? { passive: false } : false);\n var keyboardEventTarget = !this.keyboardEventTarget_\n ? targetElement\n : this.keyboardEventTarget_;\n this.keyHandlerKeys_ = [\n listen(keyboardEventTarget, EventType.KEYDOWN, this.handleBrowserEvent, this),\n listen(keyboardEventTarget, EventType.KEYPRESS, this.handleBrowserEvent, this),\n ];\n if (!this.handleResize_) {\n this.handleResize_ = this.updateSize.bind(this);\n window.addEventListener(EventType.RESIZE, this.handleResize_, false);\n }\n }\n this.updateSize();\n // updateSize calls setSize, so no need to call this.render\n // ourselves here.\n };\n /**\n * @private\n */\n PluggableMap.prototype.handleTileChange_ = function () {\n this.render();\n };\n /**\n * @private\n */\n PluggableMap.prototype.handleViewPropertyChanged_ = function () {\n this.render();\n };\n /**\n * @private\n */\n PluggableMap.prototype.handleViewChanged_ = function () {\n if (this.viewPropertyListenerKey_) {\n unlistenByKey(this.viewPropertyListenerKey_);\n this.viewPropertyListenerKey_ = null;\n }\n if (this.viewChangeListenerKey_) {\n unlistenByKey(this.viewChangeListenerKey_);\n this.viewChangeListenerKey_ = null;\n }\n var view = this.getView();\n if (view) {\n this.updateViewportSize_();\n this.viewPropertyListenerKey_ = listen(view, ObjectEventType.PROPERTYCHANGE, this.handleViewPropertyChanged_, this);\n this.viewChangeListenerKey_ = listen(view, EventType.CHANGE, this.handleViewPropertyChanged_, this);\n view.resolveConstraints(0);\n }\n this.render();\n };\n /**\n * @private\n */\n PluggableMap.prototype.handleLayerGroupChanged_ = function () {\n if (this.layerGroupPropertyListenerKeys_) {\n this.layerGroupPropertyListenerKeys_.forEach(unlistenByKey);\n this.layerGroupPropertyListenerKeys_ = null;\n }\n var layerGroup = this.getLayerGroup();\n if (layerGroup) {\n this.layerGroupPropertyListenerKeys_ = [\n listen(layerGroup, ObjectEventType.PROPERTYCHANGE, this.render, this),\n listen(layerGroup, EventType.CHANGE, this.render, this),\n ];\n }\n this.render();\n };\n /**\n * @return {boolean} Is rendered.\n */\n PluggableMap.prototype.isRendered = function () {\n return !!this.frameState_;\n };\n /**\n * Requests an immediate render in a synchronous manner.\n * @api\n */\n PluggableMap.prototype.renderSync = function () {\n if (this.animationDelayKey_) {\n cancelAnimationFrame(this.animationDelayKey_);\n }\n this.animationDelay_();\n };\n /**\n * Redraws all text after new fonts have loaded\n */\n PluggableMap.prototype.redrawText = function () {\n var layerStates = this.getLayerGroup().getLayerStatesArray();\n for (var i = 0, ii = layerStates.length; i < ii; ++i) {\n var layer = layerStates[i].layer;\n if (layer.hasRenderer()) {\n layer.getRenderer().handleFontsChanged();\n }\n }\n };\n /**\n * Request a map rendering (at the next animation frame).\n * @api\n */\n PluggableMap.prototype.render = function () {\n if (this.renderer_ && this.animationDelayKey_ === undefined) {\n this.animationDelayKey_ = requestAnimationFrame(this.animationDelay_);\n }\n };\n /**\n * Remove the given control from the map.\n * @param {import(\"./control/Control.js\").default} control Control.\n * @return {import(\"./control/Control.js\").default|undefined} The removed control (or undefined\n * if the control was not found).\n * @api\n */\n PluggableMap.prototype.removeControl = function (control) {\n return this.getControls().remove(control);\n };\n /**\n * Remove the given interaction from the map.\n * @param {import(\"./interaction/Interaction.js\").default} interaction Interaction to remove.\n * @return {import(\"./interaction/Interaction.js\").default|undefined} The removed interaction (or\n * undefined if the interaction was not found).\n * @api\n */\n PluggableMap.prototype.removeInteraction = function (interaction) {\n return this.getInteractions().remove(interaction);\n };\n /**\n * Removes the given layer from the map.\n * @param {import(\"./layer/Base.js\").default} layer Layer.\n * @return {import(\"./layer/Base.js\").default|undefined} The removed layer (or undefined if the\n * layer was not found).\n * @api\n */\n PluggableMap.prototype.removeLayer = function (layer) {\n var layers = this.getLayerGroup().getLayers();\n return layers.remove(layer);\n };\n /**\n * Remove the given overlay from the map.\n * @param {import(\"./Overlay.js\").default} overlay Overlay.\n * @return {import(\"./Overlay.js\").default|undefined} The removed overlay (or undefined\n * if the overlay was not found).\n * @api\n */\n PluggableMap.prototype.removeOverlay = function (overlay) {\n return this.getOverlays().remove(overlay);\n };\n /**\n * @param {number} time Time.\n * @private\n */\n PluggableMap.prototype.renderFrame_ = function (time) {\n var _this = this;\n var size = this.getSize();\n var view = this.getView();\n var previousFrameState = this.frameState_;\n /** @type {?FrameState} */\n var frameState = null;\n if (size !== undefined && hasArea(size) && view && view.isDef()) {\n var viewHints = view.getHints(this.frameState_ ? this.frameState_.viewHints : undefined);\n var viewState = view.getState();\n frameState = {\n animate: false,\n coordinateToPixelTransform: this.coordinateToPixelTransform_,\n declutterTree: null,\n extent: getForViewAndSize(viewState.center, viewState.resolution, viewState.rotation, size),\n index: this.frameIndex_++,\n layerIndex: 0,\n layerStatesArray: this.getLayerGroup().getLayerStatesArray(),\n pixelRatio: this.pixelRatio_,\n pixelToCoordinateTransform: this.pixelToCoordinateTransform_,\n postRenderFunctions: [],\n size: size,\n tileQueue: this.tileQueue_,\n time: time,\n usedTiles: {},\n viewState: viewState,\n viewHints: viewHints,\n wantedTiles: {},\n };\n }\n this.frameState_ = frameState;\n this.renderer_.renderFrame(frameState);\n if (frameState) {\n if (frameState.animate) {\n this.render();\n }\n Array.prototype.push.apply(this.postRenderFunctions_, frameState.postRenderFunctions);\n if (previousFrameState) {\n var moveStart = !this.previousExtent_ ||\n (!isEmpty(this.previousExtent_) &&\n !equals(frameState.extent, this.previousExtent_));\n if (moveStart) {\n this.dispatchEvent(new MapEvent(MapEventType.MOVESTART, this, previousFrameState));\n this.previousExtent_ = createOrUpdateEmpty(this.previousExtent_);\n }\n }\n var idle = this.previousExtent_ &&\n !frameState.viewHints[ViewHint.ANIMATING] &&\n !frameState.viewHints[ViewHint.INTERACTING] &&\n !equals(frameState.extent, this.previousExtent_);\n if (idle) {\n this.dispatchEvent(new MapEvent(MapEventType.MOVEEND, this, frameState));\n clone(frameState.extent, this.previousExtent_);\n }\n }\n this.dispatchEvent(new MapEvent(MapEventType.POSTRENDER, this, frameState));\n if (!this.postRenderTimeoutHandle_) {\n this.postRenderTimeoutHandle_ = setTimeout(function () {\n _this.postRenderTimeoutHandle_ = undefined;\n _this.handlePostRender();\n }, 0);\n }\n };\n /**\n * Sets the layergroup of this map.\n * @param {LayerGroup} layerGroup A layer group containing the layers in this map.\n * @observable\n * @api\n */\n PluggableMap.prototype.setLayerGroup = function (layerGroup) {\n this.set(MapProperty.LAYERGROUP, layerGroup);\n };\n /**\n * Set the size of this map.\n * @param {import(\"./size.js\").Size|undefined} size The size in pixels of the map in the DOM.\n * @observable\n * @api\n */\n PluggableMap.prototype.setSize = function (size) {\n this.set(MapProperty.SIZE, size);\n };\n /**\n * Set the target element to render this map into.\n * @param {HTMLElement|string} [target] The Element or id of the Element\n * that the map is rendered in.\n * @observable\n * @api\n */\n PluggableMap.prototype.setTarget = function (target) {\n this.set(MapProperty.TARGET, target);\n };\n /**\n * Set the view for this map.\n * @param {View} view The view that controls this map.\n * @observable\n * @api\n */\n PluggableMap.prototype.setView = function (view) {\n this.set(MapProperty.VIEW, view);\n };\n /**\n * Force a recalculation of the map viewport size. This should be called when\n * third-party code changes the size of the map viewport.\n * @api\n */\n PluggableMap.prototype.updateSize = function () {\n var targetElement = this.getTargetElement();\n var size = undefined;\n if (targetElement) {\n var computedStyle = getComputedStyle(targetElement);\n var width = targetElement.offsetWidth -\n parseFloat(computedStyle['borderLeftWidth']) -\n parseFloat(computedStyle['paddingLeft']) -\n parseFloat(computedStyle['paddingRight']) -\n parseFloat(computedStyle['borderRightWidth']);\n var height = targetElement.offsetHeight -\n parseFloat(computedStyle['borderTopWidth']) -\n parseFloat(computedStyle['paddingTop']) -\n parseFloat(computedStyle['paddingBottom']) -\n parseFloat(computedStyle['borderBottomWidth']);\n if (!isNaN(width) && !isNaN(height)) {\n size = [width, height];\n if (!hasArea(size)) {\n // eslint-disable-next-line\n console.warn(\"No map visible because the map container's width or height are 0.\");\n }\n }\n }\n this.setSize(size);\n this.updateViewportSize_();\n };\n /**\n * Recomputes the viewport size and save it on the view object (if any)\n * @private\n */\n PluggableMap.prototype.updateViewportSize_ = function () {\n var view = this.getView();\n if (view) {\n var size = undefined;\n var computedStyle = getComputedStyle(this.viewport_);\n if (computedStyle.width && computedStyle.height) {\n size = [\n parseInt(computedStyle.width, 10),\n parseInt(computedStyle.height, 10),\n ];\n }\n view.setViewportSize(size);\n }\n };\n return PluggableMap;\n}(BaseObject));\n/**\n * @param {MapOptions} options Map options.\n * @return {MapOptionsInternal} Internal map options.\n */\nfunction createOptionsInternal(options) {\n /**\n * @type {HTMLElement|Document}\n */\n var keyboardEventTarget = null;\n if (options.keyboardEventTarget !== undefined) {\n keyboardEventTarget =\n typeof options.keyboardEventTarget === 'string'\n ? document.getElementById(options.keyboardEventTarget)\n : options.keyboardEventTarget;\n }\n /**\n * @type {Object}\n */\n var values = {};\n var layerGroup = options.layers &&\n typeof ( /** @type {?} */(options.layers).getLayers) === 'function'\n ? /** @type {LayerGroup} */ (options.layers)\n : new LayerGroup({ layers: /** @type {Collection} */ (options.layers) });\n values[MapProperty.LAYERGROUP] = layerGroup;\n values[MapProperty.TARGET] = options.target;\n values[MapProperty.VIEW] =\n options.view !== undefined ? options.view : new View();\n var controls;\n if (options.controls !== undefined) {\n if (Array.isArray(options.controls)) {\n controls = new Collection(options.controls.slice());\n }\n else {\n assert(typeof ( /** @type {?} */(options.controls).getArray) === 'function', 47); // Expected `controls` to be an array or an `import(\"./Collection.js\").Collection`\n controls = /** @type {Collection} */ (options.controls);\n }\n }\n var interactions;\n if (options.interactions !== undefined) {\n if (Array.isArray(options.interactions)) {\n interactions = new Collection(options.interactions.slice());\n }\n else {\n assert(typeof ( /** @type {?} */(options.interactions).getArray) ===\n 'function', 48); // Expected `interactions` to be an array or an `import(\"./Collection.js\").Collection`\n interactions = /** @type {Collection} */ (options.interactions);\n }\n }\n var overlays;\n if (options.overlays !== undefined) {\n if (Array.isArray(options.overlays)) {\n overlays = new Collection(options.overlays.slice());\n }\n else {\n assert(typeof ( /** @type {?} */(options.overlays).getArray) === 'function', 49); // Expected `overlays` to be an array or an `import(\"./Collection.js\").Collection`\n overlays = options.overlays;\n }\n }\n else {\n overlays = new Collection();\n }\n return {\n controls: controls,\n interactions: interactions,\n keyboardEventTarget: keyboardEventTarget,\n overlays: overlays,\n values: values,\n };\n}\nexport default PluggableMap;\n//# sourceMappingURL=PluggableMap.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/control/Attribution\n */\nimport Control from './Control.js';\nimport EventType from '../events/EventType.js';\nimport { CLASS_COLLAPSED, CLASS_CONTROL, CLASS_UNSELECTABLE } from '../css.js';\nimport { equals } from '../array.js';\nimport { inView } from '../layer/Layer.js';\nimport { removeChildren, replaceNode } from '../dom.js';\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-attribution'] CSS class name.\n * @property {HTMLElement|string} [target] Specify a target if you\n * want the control to be rendered outside of the map's\n * viewport.\n * @property {boolean} [collapsible] Specify if attributions can\n * be collapsed. If not specified, sources control this behavior with their\n * `attributionsCollapsible` setting.\n * @property {boolean} [collapsed=true] Specify if attributions should\n * be collapsed at startup.\n * @property {string} [tipLabel='Attributions'] Text label to use for the button tip.\n * @property {string} [label='i'] Text label to use for the\n * collapsed attributions button.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string} [expandClassName=className + '-expand'] CSS class name for the\n * collapsed attributions button.\n * @property {string|HTMLElement} [collapseLabel='»'] Text label to use\n * for the expanded attributions button.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string} [collapseClassName=className + '-collapse'] CSS class name for the\n * expanded attributions button.\n * @property {function(import(\"../MapEvent.js\").default):void} [render] Function called when\n * the control should be re-rendered. This is called in a `requestAnimationFrame`\n * callback.\n */\n/**\n * @classdesc\n * Control to show all the attributions associated with the layer sources\n * in the map. This control is one of the default controls included in maps.\n * By default it will show in the bottom right portion of the map, but this can\n * be changed by using a css selector for `.ol-attribution`.\n *\n * @api\n */\nvar Attribution = /** @class */ (function (_super) {\n __extends(Attribution, _super);\n /**\n * @param {Options} [opt_options] Attribution options.\n */\n function Attribution(opt_options) {\n var _this = this;\n var options = opt_options ? opt_options : {};\n _this = _super.call(this, {\n element: document.createElement('div'),\n render: options.render,\n target: options.target,\n }) || this;\n /**\n * @private\n * @type {HTMLElement}\n */\n _this.ulElement_ = document.createElement('ul');\n /**\n * @private\n * @type {boolean}\n */\n _this.collapsed_ =\n options.collapsed !== undefined ? options.collapsed : true;\n /**\n * @private\n * @type {boolean}\n */\n _this.userCollapsed_ = _this.collapsed_;\n /**\n * @private\n * @type {boolean}\n */\n _this.overrideCollapsible_ = options.collapsible !== undefined;\n /**\n * @private\n * @type {boolean}\n */\n _this.collapsible_ =\n options.collapsible !== undefined ? options.collapsible : true;\n if (!_this.collapsible_) {\n _this.collapsed_ = false;\n }\n var className = options.className !== undefined ? options.className : 'ol-attribution';\n var tipLabel = options.tipLabel !== undefined ? options.tipLabel : 'Attributions';\n var expandClassName = options.expandClassName !== undefined\n ? options.expandClassName\n : className + '-expand';\n var collapseLabel = options.collapseLabel !== undefined ? options.collapseLabel : '\\u00BB';\n var collapseClassName = options.collapseClassName !== undefined\n ? options.collapseClassName\n : className + '-collpase';\n if (typeof collapseLabel === 'string') {\n /**\n * @private\n * @type {HTMLElement}\n */\n _this.collapseLabel_ = document.createElement('span');\n _this.collapseLabel_.textContent = collapseLabel;\n _this.collapseLabel_.className = collapseClassName;\n }\n else {\n _this.collapseLabel_ = collapseLabel;\n }\n var label = options.label !== undefined ? options.label : 'i';\n if (typeof label === 'string') {\n /**\n * @private\n * @type {HTMLElement}\n */\n _this.label_ = document.createElement('span');\n _this.label_.textContent = label;\n _this.label_.className = expandClassName;\n }\n else {\n _this.label_ = label;\n }\n var activeLabel = _this.collapsible_ && !_this.collapsed_ ? _this.collapseLabel_ : _this.label_;\n /**\n * @private\n * @type {HTMLElement}\n */\n _this.toggleButton_ = document.createElement('button');\n _this.toggleButton_.setAttribute('type', 'button');\n _this.toggleButton_.setAttribute('aria-expanded', String(!_this.collapsed_));\n _this.toggleButton_.title = tipLabel;\n _this.toggleButton_.appendChild(activeLabel);\n _this.toggleButton_.addEventListener(EventType.CLICK, _this.handleClick_.bind(_this), false);\n var cssClasses = className +\n ' ' +\n CLASS_UNSELECTABLE +\n ' ' +\n CLASS_CONTROL +\n (_this.collapsed_ && _this.collapsible_ ? ' ' + CLASS_COLLAPSED : '') +\n (_this.collapsible_ ? '' : ' ol-uncollapsible');\n var element = _this.element;\n element.className = cssClasses;\n element.appendChild(_this.toggleButton_);\n element.appendChild(_this.ulElement_);\n /**\n * A list of currently rendered resolutions.\n * @type {Array}\n * @private\n */\n _this.renderedAttributions_ = [];\n /**\n * @private\n * @type {boolean}\n */\n _this.renderedVisible_ = true;\n return _this;\n }\n /**\n * Collect a list of visible attributions and set the collapsible state.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n * @return {Array} Attributions.\n * @private\n */\n Attribution.prototype.collectSourceAttributions_ = function (frameState) {\n /**\n * Used to determine if an attribution already exists.\n * @type {!Object}\n */\n var lookup = {};\n /**\n * A list of visible attributions.\n * @type {Array}\n */\n var visibleAttributions = [];\n var collapsible = true;\n var layerStatesArray = frameState.layerStatesArray;\n for (var i = 0, ii = layerStatesArray.length; i < ii; ++i) {\n var layerState = layerStatesArray[i];\n if (!inView(layerState, frameState.viewState)) {\n continue;\n }\n var source = /** @type {import(\"../layer/Layer.js\").default} */ (layerState.layer).getSource();\n if (!source) {\n continue;\n }\n var attributionGetter = source.getAttributions();\n if (!attributionGetter) {\n continue;\n }\n var attributions = attributionGetter(frameState);\n if (!attributions) {\n continue;\n }\n collapsible =\n collapsible && source.getAttributionsCollapsible() !== false;\n if (Array.isArray(attributions)) {\n for (var j = 0, jj = attributions.length; j < jj; ++j) {\n if (!(attributions[j] in lookup)) {\n visibleAttributions.push(attributions[j]);\n lookup[attributions[j]] = true;\n }\n }\n }\n else {\n if (!(attributions in lookup)) {\n visibleAttributions.push(attributions);\n lookup[attributions] = true;\n }\n }\n }\n if (!this.overrideCollapsible_) {\n this.setCollapsible(collapsible);\n }\n return visibleAttributions;\n };\n /**\n * @private\n * @param {?import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n */\n Attribution.prototype.updateElement_ = function (frameState) {\n if (!frameState) {\n if (this.renderedVisible_) {\n this.element.style.display = 'none';\n this.renderedVisible_ = false;\n }\n return;\n }\n var attributions = this.collectSourceAttributions_(frameState);\n var visible = attributions.length > 0;\n if (this.renderedVisible_ != visible) {\n this.element.style.display = visible ? '' : 'none';\n this.renderedVisible_ = visible;\n }\n if (equals(attributions, this.renderedAttributions_)) {\n return;\n }\n removeChildren(this.ulElement_);\n // append the attributions\n for (var i = 0, ii = attributions.length; i < ii; ++i) {\n var element = document.createElement('li');\n element.innerHTML = attributions[i];\n this.ulElement_.appendChild(element);\n }\n this.renderedAttributions_ = attributions;\n };\n /**\n * @param {MouseEvent} event The event to handle\n * @private\n */\n Attribution.prototype.handleClick_ = function (event) {\n event.preventDefault();\n this.handleToggle_();\n this.userCollapsed_ = this.collapsed_;\n };\n /**\n * @private\n */\n Attribution.prototype.handleToggle_ = function () {\n this.element.classList.toggle(CLASS_COLLAPSED);\n if (this.collapsed_) {\n replaceNode(this.collapseLabel_, this.label_);\n }\n else {\n replaceNode(this.label_, this.collapseLabel_);\n }\n this.collapsed_ = !this.collapsed_;\n this.toggleButton_.setAttribute('aria-expanded', String(!this.collapsed_));\n };\n /**\n * Return `true` if the attribution is collapsible, `false` otherwise.\n * @return {boolean} True if the widget is collapsible.\n * @api\n */\n Attribution.prototype.getCollapsible = function () {\n return this.collapsible_;\n };\n /**\n * Set whether the attribution should be collapsible.\n * @param {boolean} collapsible True if the widget is collapsible.\n * @api\n */\n Attribution.prototype.setCollapsible = function (collapsible) {\n if (this.collapsible_ === collapsible) {\n return;\n }\n this.collapsible_ = collapsible;\n this.element.classList.toggle('ol-uncollapsible');\n if (this.userCollapsed_) {\n this.handleToggle_();\n }\n };\n /**\n * Collapse or expand the attribution according to the passed parameter. Will\n * not do anything if the attribution isn't collapsible or if the current\n * collapsed state is already the one requested.\n * @param {boolean} collapsed True if the widget is collapsed.\n * @api\n */\n Attribution.prototype.setCollapsed = function (collapsed) {\n this.userCollapsed_ = collapsed;\n if (!this.collapsible_ || this.collapsed_ === collapsed) {\n return;\n }\n this.handleToggle_();\n };\n /**\n * Return `true` when the attribution is currently collapsed or `false`\n * otherwise.\n * @return {boolean} True if the widget is collapsed.\n * @api\n */\n Attribution.prototype.getCollapsed = function () {\n return this.collapsed_;\n };\n /**\n * Update the attribution element.\n * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n * @override\n */\n Attribution.prototype.render = function (mapEvent) {\n this.updateElement_(mapEvent.frameState);\n };\n return Attribution;\n}(Control));\nexport default Attribution;\n//# sourceMappingURL=Attribution.js.map","/**\n * @module ol/interaction/Property\n */\n/**\n * @enum {string}\n */\nexport default {\n ACTIVE: 'active',\n};\n//# sourceMappingURL=Property.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/interaction/Interaction\n */\nimport BaseObject from '../Object.js';\nimport InteractionProperty from './Property.js';\nimport { easeOut, linear } from '../easing.js';\n/***\n * @template Return\n * @typedef {import(\"../Observable\").OnSignature &\n * import(\"../Observable\").OnSignature &\n * import(\"../Observable\").CombinedOnSignature} InteractionOnSignature\n */\n/**\n * Object literal with config options for interactions.\n * @typedef {Object} InteractionOptions\n * @property {function(import(\"../MapBrowserEvent.js\").default):boolean} handleEvent\n * Method called by the map to notify the interaction that a browser event was\n * dispatched to the map. If the function returns a falsy value, propagation of\n * the event to other interactions in the map's interactions chain will be\n * prevented (this includes functions with no explicit return). The interactions\n * are traversed in reverse order of the interactions collection of the map.\n */\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * User actions that change the state of the map. Some are similar to controls,\n * but are not associated with a DOM element.\n * For example, {@link module:ol/interaction/KeyboardZoom~KeyboardZoom} is\n * functionally the same as {@link module:ol/control/Zoom~Zoom}, but triggered\n * by a keyboard event not a button element event.\n * Although interactions do not have a DOM element, some of them do render\n * vectors and so are visible on the screen.\n * @api\n */\nvar Interaction = /** @class */ (function (_super) {\n __extends(Interaction, _super);\n /**\n * @param {InteractionOptions} [opt_options] Options.\n */\n function Interaction(opt_options) {\n var _this = _super.call(this) || this;\n /***\n * @type {InteractionOnSignature}\n */\n _this.on;\n /***\n * @type {InteractionOnSignature}\n */\n _this.once;\n /***\n * @type {InteractionOnSignature}\n */\n _this.un;\n if (opt_options && opt_options.handleEvent) {\n _this.handleEvent = opt_options.handleEvent;\n }\n /**\n * @private\n * @type {import(\"../PluggableMap.js\").default}\n */\n _this.map_ = null;\n _this.setActive(true);\n return _this;\n }\n /**\n * Return whether the interaction is currently active.\n * @return {boolean} `true` if the interaction is active, `false` otherwise.\n * @observable\n * @api\n */\n Interaction.prototype.getActive = function () {\n return /** @type {boolean} */ (this.get(InteractionProperty.ACTIVE));\n };\n /**\n * Get the map associated with this interaction.\n * @return {import(\"../PluggableMap.js\").default} Map.\n * @api\n */\n Interaction.prototype.getMap = function () {\n return this.map_;\n };\n /**\n * Handles the {@link module:ol/MapBrowserEvent map browser event}.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} `false` to stop event propagation.\n * @api\n */\n Interaction.prototype.handleEvent = function (mapBrowserEvent) {\n return true;\n };\n /**\n * Activate or deactivate the interaction.\n * @param {boolean} active Active.\n * @observable\n * @api\n */\n Interaction.prototype.setActive = function (active) {\n this.set(InteractionProperty.ACTIVE, active);\n };\n /**\n * Remove the interaction from its current map and attach it to the new map.\n * Subclasses may set up event handlers to get notified about changes to\n * the map here.\n * @param {import(\"../PluggableMap.js\").default} map Map.\n */\n Interaction.prototype.setMap = function (map) {\n this.map_ = map;\n };\n return Interaction;\n}(BaseObject));\n/**\n * @param {import(\"../View.js\").default} view View.\n * @param {import(\"../coordinate.js\").Coordinate} delta Delta.\n * @param {number} [opt_duration] Duration.\n */\nexport function pan(view, delta, opt_duration) {\n var currentCenter = view.getCenterInternal();\n if (currentCenter) {\n var center = [currentCenter[0] + delta[0], currentCenter[1] + delta[1]];\n view.animateInternal({\n duration: opt_duration !== undefined ? opt_duration : 250,\n easing: linear,\n center: view.getConstrainedCenter(center),\n });\n }\n}\n/**\n * @param {import(\"../View.js\").default} view View.\n * @param {number} delta Delta from previous zoom level.\n * @param {import(\"../coordinate.js\").Coordinate} [opt_anchor] Anchor coordinate in the user projection.\n * @param {number} [opt_duration] Duration.\n */\nexport function zoomByDelta(view, delta, opt_anchor, opt_duration) {\n var currentZoom = view.getZoom();\n if (currentZoom === undefined) {\n return;\n }\n var newZoom = view.getConstrainedZoom(currentZoom + delta);\n var newResolution = view.getResolutionForZoom(newZoom);\n if (view.getAnimating()) {\n view.cancelAnimations();\n }\n view.animate({\n resolution: newResolution,\n anchor: opt_anchor,\n duration: opt_duration !== undefined ? opt_duration : 250,\n easing: easeOut,\n });\n}\nexport default Interaction;\n//# sourceMappingURL=Interaction.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/interaction/DoubleClickZoom\n */\nimport Interaction, { zoomByDelta } from './Interaction.js';\nimport MapBrowserEventType from '../MapBrowserEventType.js';\n/**\n * @typedef {Object} Options\n * @property {number} [duration=250] Animation duration in milliseconds.\n * @property {number} [delta=1] The zoom delta applied on each double click.\n */\n/**\n * @classdesc\n * Allows the user to zoom by double-clicking on the map.\n * @api\n */\nvar DoubleClickZoom = /** @class */ (function (_super) {\n __extends(DoubleClickZoom, _super);\n /**\n * @param {Options} [opt_options] Options.\n */\n function DoubleClickZoom(opt_options) {\n var _this = _super.call(this) || this;\n var options = opt_options ? opt_options : {};\n /**\n * @private\n * @type {number}\n */\n _this.delta_ = options.delta ? options.delta : 1;\n /**\n * @private\n * @type {number}\n */\n _this.duration_ = options.duration !== undefined ? options.duration : 250;\n return _this;\n }\n /**\n * Handles the {@link module:ol/MapBrowserEvent map browser event} (if it was a\n * doubleclick) and eventually zooms the map.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} `false` to stop event propagation.\n */\n DoubleClickZoom.prototype.handleEvent = function (mapBrowserEvent) {\n var stopEvent = false;\n if (mapBrowserEvent.type == MapBrowserEventType.DBLCLICK) {\n var browserEvent = /** @type {MouseEvent} */ (mapBrowserEvent.originalEvent);\n var map = mapBrowserEvent.map;\n var anchor = mapBrowserEvent.coordinate;\n var delta = browserEvent.shiftKey ? -this.delta_ : this.delta_;\n var view = map.getView();\n zoomByDelta(view, delta, anchor, this.duration_);\n browserEvent.preventDefault();\n stopEvent = true;\n }\n return !stopEvent;\n };\n return DoubleClickZoom;\n}(Interaction));\nexport default DoubleClickZoom;\n//# sourceMappingURL=DoubleClickZoom.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/interaction/Pointer\n */\nimport Interaction from './Interaction.js';\nimport MapBrowserEventType from '../MapBrowserEventType.js';\nimport { getValues } from '../obj.js';\n/**\n * @typedef {Object} Options\n * @property {function(import(\"../MapBrowserEvent.js\").default):boolean} [handleDownEvent]\n * Function handling \"down\" events. If the function returns `true` then a drag\n * sequence is started.\n * @property {function(import(\"../MapBrowserEvent.js\").default):void} [handleDragEvent]\n * Function handling \"drag\" events. This function is called on \"move\" events\n * during a drag sequence.\n * @property {function(import(\"../MapBrowserEvent.js\").default):boolean} [handleEvent]\n * Method called by the map to notify the interaction that a browser event was\n * dispatched to the map. The function may return `false` to prevent the\n * propagation of the event to other interactions in the map's interactions\n * chain.\n * @property {function(import(\"../MapBrowserEvent.js\").default):void} [handleMoveEvent]\n * Function handling \"move\" events. This function is called on \"move\" events.\n * This functions is also called during a drag sequence, so during a drag\n * sequence both the `handleDragEvent` function and this function are called.\n * If `handleDownEvent` is defined and it returns true this function will not\n * be called during a drag sequence.\n * @property {function(import(\"../MapBrowserEvent.js\").default):boolean} [handleUpEvent]\n * Function handling \"up\" events. If the function returns `false` then the\n * current drag sequence is stopped.\n * @property {function(boolean):boolean} [stopDown]\n * Should the down event be propagated to other interactions, or should be\n * stopped?\n */\n/**\n * @classdesc\n * Base class that calls user-defined functions on `down`, `move` and `up`\n * events. This class also manages \"drag sequences\".\n *\n * When the `handleDownEvent` user function returns `true` a drag sequence is\n * started. During a drag sequence the `handleDragEvent` user function is\n * called on `move` events. The drag sequence ends when the `handleUpEvent`\n * user function is called and returns `false`.\n * @api\n */\nvar PointerInteraction = /** @class */ (function (_super) {\n __extends(PointerInteraction, _super);\n /**\n * @param {Options} [opt_options] Options.\n */\n function PointerInteraction(opt_options) {\n var _this = this;\n var options = opt_options ? opt_options : {};\n _this = _super.call(this, \n /** @type {import(\"./Interaction.js\").InteractionOptions} */ (options)) || this;\n if (options.handleDownEvent) {\n _this.handleDownEvent = options.handleDownEvent;\n }\n if (options.handleDragEvent) {\n _this.handleDragEvent = options.handleDragEvent;\n }\n if (options.handleMoveEvent) {\n _this.handleMoveEvent = options.handleMoveEvent;\n }\n if (options.handleUpEvent) {\n _this.handleUpEvent = options.handleUpEvent;\n }\n if (options.stopDown) {\n _this.stopDown = options.stopDown;\n }\n /**\n * @type {boolean}\n * @protected\n */\n _this.handlingDownUpSequence = false;\n /**\n * @type {!Object}\n * @private\n */\n _this.trackedPointers_ = {};\n /**\n * @type {Array}\n * @protected\n */\n _this.targetPointers = [];\n return _this;\n }\n /**\n * Returns the current number of pointers involved in the interaction,\n * e.g. `2` when two fingers are used.\n * @return {number} The number of pointers.\n * @api\n */\n PointerInteraction.prototype.getPointerCount = function () {\n return this.targetPointers.length;\n };\n /**\n * Handle pointer down events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @return {boolean} If the event was consumed.\n * @protected\n */\n PointerInteraction.prototype.handleDownEvent = function (mapBrowserEvent) {\n return false;\n };\n /**\n * Handle pointer drag events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @protected\n */\n PointerInteraction.prototype.handleDragEvent = function (mapBrowserEvent) { };\n /**\n * Handles the {@link module:ol/MapBrowserEvent map browser event} and may call into\n * other functions, if event sequences like e.g. 'drag' or 'down-up' etc. are\n * detected.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} `false` to stop event propagation.\n * @api\n */\n PointerInteraction.prototype.handleEvent = function (mapBrowserEvent) {\n if (!mapBrowserEvent.originalEvent) {\n return true;\n }\n var stopEvent = false;\n this.updateTrackedPointers_(mapBrowserEvent);\n if (this.handlingDownUpSequence) {\n if (mapBrowserEvent.type == MapBrowserEventType.POINTERDRAG) {\n this.handleDragEvent(mapBrowserEvent);\n // prevent page scrolling during dragging\n mapBrowserEvent.originalEvent.preventDefault();\n }\n else if (mapBrowserEvent.type == MapBrowserEventType.POINTERUP) {\n var handledUp = this.handleUpEvent(mapBrowserEvent);\n this.handlingDownUpSequence =\n handledUp && this.targetPointers.length > 0;\n }\n }\n else {\n if (mapBrowserEvent.type == MapBrowserEventType.POINTERDOWN) {\n var handled = this.handleDownEvent(mapBrowserEvent);\n this.handlingDownUpSequence = handled;\n stopEvent = this.stopDown(handled);\n }\n else if (mapBrowserEvent.type == MapBrowserEventType.POINTERMOVE) {\n this.handleMoveEvent(mapBrowserEvent);\n }\n }\n return !stopEvent;\n };\n /**\n * Handle pointer move events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @protected\n */\n PointerInteraction.prototype.handleMoveEvent = function (mapBrowserEvent) { };\n /**\n * Handle pointer up events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @return {boolean} If the event was consumed.\n * @protected\n */\n PointerInteraction.prototype.handleUpEvent = function (mapBrowserEvent) {\n return false;\n };\n /**\n * This function is used to determine if \"down\" events should be propagated\n * to other interactions or should be stopped.\n * @param {boolean} handled Was the event handled by the interaction?\n * @return {boolean} Should the `down` event be stopped?\n */\n PointerInteraction.prototype.stopDown = function (handled) {\n return handled;\n };\n /**\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @private\n */\n PointerInteraction.prototype.updateTrackedPointers_ = function (mapBrowserEvent) {\n if (isPointerDraggingEvent(mapBrowserEvent)) {\n var event_1 = mapBrowserEvent.originalEvent;\n var id = event_1.pointerId.toString();\n if (mapBrowserEvent.type == MapBrowserEventType.POINTERUP) {\n delete this.trackedPointers_[id];\n }\n else if (mapBrowserEvent.type == MapBrowserEventType.POINTERDOWN) {\n this.trackedPointers_[id] = event_1;\n }\n else if (id in this.trackedPointers_) {\n // update only when there was a pointerdown event for this pointer\n this.trackedPointers_[id] = event_1;\n }\n this.targetPointers = getValues(this.trackedPointers_);\n }\n };\n return PointerInteraction;\n}(Interaction));\n/**\n * @param {Array} pointerEvents List of events.\n * @return {import(\"../pixel.js\").Pixel} Centroid pixel.\n */\nexport function centroid(pointerEvents) {\n var length = pointerEvents.length;\n var clientX = 0;\n var clientY = 0;\n for (var i = 0; i < length; i++) {\n clientX += pointerEvents[i].clientX;\n clientY += pointerEvents[i].clientY;\n }\n return [clientX / length, clientY / length];\n}\n/**\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @return {boolean} Whether the event is a pointerdown, pointerdrag\n * or pointerup event.\n */\nfunction isPointerDraggingEvent(mapBrowserEvent) {\n var type = mapBrowserEvent.type;\n return (type === MapBrowserEventType.POINTERDOWN ||\n type === MapBrowserEventType.POINTERDRAG ||\n type === MapBrowserEventType.POINTERUP);\n}\nexport default PointerInteraction;\n//# sourceMappingURL=Pointer.js.map","/**\n * @module ol/events/condition\n */\nimport MapBrowserEventType from '../MapBrowserEventType.js';\nimport { FALSE, TRUE } from '../functions.js';\nimport { MAC, WEBKIT } from '../has.js';\nimport { assert } from '../asserts.js';\n/**\n * A function that takes an {@link module:ol/MapBrowserEvent} and returns a\n * `{boolean}`. If the condition is met, true should be returned.\n *\n * @typedef {function(this: ?, import(\"../MapBrowserEvent.js\").default): boolean} Condition\n */\n/**\n * Creates a condition function that passes when all provided conditions pass.\n * @param {...Condition} var_args Conditions to check.\n * @return {Condition} Condition function.\n */\nexport function all(var_args) {\n var conditions = arguments;\n /**\n * @param {import(\"../MapBrowserEvent.js\").default} event Event.\n * @return {boolean} All conditions passed.\n */\n return function (event) {\n var pass = true;\n for (var i = 0, ii = conditions.length; i < ii; ++i) {\n pass = pass && conditions[i](event);\n if (!pass) {\n break;\n }\n }\n return pass;\n };\n}\n/**\n * Return `true` if only the alt-key is pressed, `false` otherwise (e.g. when\n * additionally the shift-key is pressed).\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if only the alt key is pressed.\n * @api\n */\nexport var altKeyOnly = function (mapBrowserEvent) {\n var originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (mapBrowserEvent.originalEvent);\n return (originalEvent.altKey &&\n !(originalEvent.metaKey || originalEvent.ctrlKey) &&\n !originalEvent.shiftKey);\n};\n/**\n * Return `true` if only the alt-key and shift-key is pressed, `false` otherwise\n * (e.g. when additionally the platform-modifier-key is pressed).\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if only the alt and shift keys are pressed.\n * @api\n */\nexport var altShiftKeysOnly = function (mapBrowserEvent) {\n var originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (mapBrowserEvent.originalEvent);\n return (originalEvent.altKey &&\n !(originalEvent.metaKey || originalEvent.ctrlKey) &&\n originalEvent.shiftKey);\n};\n/**\n * Return `true` if the map has the focus. This condition requires a map target\n * element with a `tabindex` attribute, e.g. `
`.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} event Map browser event.\n * @return {boolean} The map has the focus.\n * @api\n */\nexport var focus = function (event) {\n return event.target.getTargetElement().contains(document.activeElement);\n};\n/**\n * Return `true` if the map has the focus or no 'tabindex' attribute set.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} event Map browser event.\n * @return {boolean} The map container has the focus or no 'tabindex' attribute.\n */\nexport var focusWithTabindex = function (event) {\n return event.map.getTargetElement().hasAttribute('tabindex')\n ? focus(event)\n : true;\n};\n/**\n * Return always true.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True.\n * @api\n */\nexport var always = TRUE;\n/**\n * Return `true` if the event is a `click` event, `false` otherwise.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the event is a map `click` event.\n * @api\n */\nexport var click = function (mapBrowserEvent) {\n return mapBrowserEvent.type == MapBrowserEventType.CLICK;\n};\n/**\n * Return `true` if the event has an \"action\"-producing mouse button.\n *\n * By definition, this includes left-click on windows/linux, and left-click\n * without the ctrl key on Macs.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} The result.\n */\nexport var mouseActionButton = function (mapBrowserEvent) {\n var originalEvent = /** @type {MouseEvent} */ (mapBrowserEvent.originalEvent);\n return originalEvent.button == 0 && !(WEBKIT && MAC && originalEvent.ctrlKey);\n};\n/**\n * Return always false.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} False.\n * @api\n */\nexport var never = FALSE;\n/**\n * Return `true` if the browser event is a `pointermove` event, `false`\n * otherwise.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the browser event is a `pointermove` event.\n * @api\n */\nexport var pointerMove = function (mapBrowserEvent) {\n return mapBrowserEvent.type == 'pointermove';\n};\n/**\n * Return `true` if the event is a map `singleclick` event, `false` otherwise.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the event is a map `singleclick` event.\n * @api\n */\nexport var singleClick = function (mapBrowserEvent) {\n return mapBrowserEvent.type == MapBrowserEventType.SINGLECLICK;\n};\n/**\n * Return `true` if the event is a map `dblclick` event, `false` otherwise.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the event is a map `dblclick` event.\n * @api\n */\nexport var doubleClick = function (mapBrowserEvent) {\n return mapBrowserEvent.type == MapBrowserEventType.DBLCLICK;\n};\n/**\n * Return `true` if no modifier key (alt-, shift- or platform-modifier-key) is\n * pressed.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True only if there no modifier keys are pressed.\n * @api\n */\nexport var noModifierKeys = function (mapBrowserEvent) {\n var originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (mapBrowserEvent.originalEvent);\n return (!originalEvent.altKey &&\n !(originalEvent.metaKey || originalEvent.ctrlKey) &&\n !originalEvent.shiftKey);\n};\n/**\n * Return `true` if only the platform-modifier-key (the meta-key on Mac,\n * ctrl-key otherwise) is pressed, `false` otherwise (e.g. when additionally\n * the shift-key is pressed).\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if only the platform modifier key is pressed.\n * @api\n */\nexport var platformModifierKeyOnly = function (mapBrowserEvent) {\n var originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (mapBrowserEvent.originalEvent);\n return (!originalEvent.altKey &&\n (MAC ? originalEvent.metaKey : originalEvent.ctrlKey) &&\n !originalEvent.shiftKey);\n};\n/**\n * Return `true` if only the shift-key is pressed, `false` otherwise (e.g. when\n * additionally the alt-key is pressed).\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if only the shift key is pressed.\n * @api\n */\nexport var shiftKeyOnly = function (mapBrowserEvent) {\n var originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (mapBrowserEvent.originalEvent);\n return (!originalEvent.altKey &&\n !(originalEvent.metaKey || originalEvent.ctrlKey) &&\n originalEvent.shiftKey);\n};\n/**\n * Return `true` if the target element is not editable, i.e. not a ``-,\n * `\n

\n
\n \n \n \n
\n \n \n
\n ")}},{key:"onPositionDelete",value:function(){var t=this;be.isConfirmed(re._("positiondelwarn",this.positionIndex+1,mt.htmlEncode(this.position.trackname)))&&this.position.delete().then((function(){var e,n=t.state.currentTrack;t.state.currentTrack=null,Vt()(e=n.positions).call(e,t.positionIndex,1),n.recalculatePositions(),t.state.currentTrack=n,t.dialog.destroy()})).catch((function(t){var e;me.error(r()(e="".concat(re._("actionfailure"),"\n")).call(e,t.message),t)}))}},{key:"updateImage",value:function(){var t=e().resolve();return this.model.image!==this.position.image&&(t=null===this.model.image?this.position.imageDelete():this.position.imageAdd(this.fileEl.files[0])),t}},{key:"onPositionUpdate",value:function(){var t,e=this;dt()(t=this.model.comment).call(t),this.validate()&&(this.position.comment=this.model.comment,this.updateImage().then((function(){return e.position.save()})).then((function(){nt.forceUpdate(e.state,"currentTrack"),e.dialog.destroy()})).catch((function(t){var e;me.error(r()(e="".concat(re._("actionfailure"),"\n")).call(e,t.message),t)})))}},{key:"onCancel",value:function(){this.dialog.destroy()}},{key:"validate",value:function(){return!(this.model.comment===this.position.comment&&this.model.image===this.position.image)}}]),i}(se);function Ne(t){var e=function(){if("undefined"==typeof Reflect||!M())return!1;if(M().sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(M()(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,r=R(t);if(e){var i=R(this).constructor;n=M()(r,arguments,i)}else n=r.apply(this,arguments);return C(this,n)}}var De=function(t){I(n,t);var e=Ne(n);function n(t){var r;return o(this,n),(r=e.call(this,{markerOver:null,markerSelect:null,onMenuToggle:null,speedVisible:!1,altitudeVisible:!1})).state=t,r.mapElement=document.querySelector("#map-canvas"),r.speedEl=r.getBoundElement("speedVisible"),r.altitudeEl=r.getBoundElement("altitudeVisible"),r.styleEl=r.getBoundElement("trackColor"),r.savedBounds=null,r.api=null,r}return l(n,[{key:"init",value:function(){return this.bindAll(),this.setObservers(),this}},{key:"loadMapAPI",value:function(t){var e=this,n=this.api;if(this.api=null,n){try{this.savedBounds=n.getBounds()}catch(t){this.savedBounds=null}n.cleanup()}(n=this.getApi(t)).init().then((function(){e.api=n,e.onReady()})).catch((function(e){var n=re._("apifailure",t);e&&e.message&&(n+=" (".concat(e.message,")")),me.error(n,e),ne.mapApi="gmaps"===t?"openlayers":"gmaps"}))}},{key:"getApi",value:function(t){return"gmaps"===t?new Pe(this):new Ce(this)}},{key:"onReady",value:function(){if(this.state.currentTrack){var t=!0;this.savedBounds&&(this.api.zoomToBounds(this.savedBounds),t=!1),this.displayTrack(this.state.currentTrack,t)}}},{key:"setObservers",value:function(){var t=this;ne.onChanged("mapApi",(function(e){t.loadMapAPI(e),t.toggleStyleOptions(),t.toggleStyleMenu()})),this.state.onChanged("currentTrack",(function(e){t.api&&(t.api.clearMap(),e&&(nt.observe(e,"positions",(function(){t.displayTrack(e,!1),e instanceof At&&!t.api.isPositionVisible(e.length-1)&&t.api.centerToPosition(e.length-1),t.toggleStyleOptions()})),t.displayTrack(e,!0)),t.toggleStyleOptions())})),this.state.onChanged("history",(function(){var e=t.state.history;t.api&&e&&!e.trackId&&(e.mapApi?ne.mapApi=e.mapApi:(e.mapParams?t.api.updateState(e.mapParams):t.api.zoomToExtent(),t.state.history=null))})),this.model.onMenuToggle=function(){return t.onMapResize()},this.onChanged("speedVisible",(function(e){e&&(t.model.altitudeVisible=!1),t.setTrackStyle()})),this.onChanged("altitudeVisible",(function(e){e&&(t.model.speedVisible=!1),t.setTrackStyle()}))}},{key:"displayTrack",value:function(t,e){var n=this;this.state.jobStart(),e&&this.state.history&&this.state.history.mapParams&&(this.api.updateState(this.state.history.mapParams),e=!1),this.state.history=null,this.setTrackStyle(),this.api.displayTrack(t,e).finally((function(){return n.state.jobStop()}))}},{key:"onMapResize",value:function(){this.api&&this.api.updateSize()}},{key:"toggleStyleOptions",value:function(){var t=this.state.currentTrack;this.speedEl.disabled=!t||!t.hasSpeeds||t.length<=1,this.altitudeEl.disabled=!t||!t.hasAltitudes||t.length<=1}},{key:"toggleStyleMenu",value:function(){"openlayers"===ne.mapApi?this.styleEl.style.display="block":this.styleEl.style.display="none"}},{key:"setTrackStyle",value:function(){var t=this.state.currentTrack;this.api&&t&&(this.model.speedVisible&&t.hasSpeeds?this.setSpeedStyle():this.model.altitudeVisible&&t.hasAltitudes?this.setAltitudeStyle():this.api.setTrackDefaultStyle())}},{key:"setSpeedStyle",value:function(){var t=this.state.currentTrack,e={minValue:0,maxValue:t.maxSpeed,minColor:[0,255,0],maxColor:[255,0,0]};this.api.setTrackGradientStyle(t,"speed",e)}},{key:"setAltitudeStyle",value:function(){var t=this.state.currentTrack,e={minValue:t.minAltitude,maxValue:t.maxAltitude,minColor:[0,255,0],maxColor:[255,0,0]};this.api.setTrackGradientStyle(t,"altitude",e)}},{key:"getPopupElement",value:function(t){var e,n,i,o,a,s,l,u,c,f,h,d,p,v,m,y,g,b,x,w,k,S,E,A,L,T,M,O,P,_,I,C,j,R=this,U=this.state.currentTrack.positions[t],N=this.state.currentTrack.length,D=this.state.currentTrack.user,z=ie.user&&(ie.isAdmin||ie.user.id===D.id),B="–––",V="–––";if(U.timestamp>0){var F,H=mt.getTimeString(new Date(1e3*U.timestamp));B=H.date,V=r()(F="".concat(H.time,'')).call(F,H.zone,"")}var q,G="";if("gps"===U.provider)G=r()(q=' '.concat(re._(');else if("network"===U.provider){var X;G=r()(X=' '.concat(re._(')}var Y="";z&&(Y=''.concat(re._("editposition"),""));var W,Z,J,$,K,Q,tt,et,nt,rt="";this.state.showLatest||(rt=r()(W=r()(Z=r()(J=r()($=r()(K=r()(Q=r()(tt=r()(et=r()(nt='
\n '.concat(re._(
\n ')).call(nt,re._( ')).call(tt,re.getLocaleDuration(U.totalSeconds),'
\n ')).call(Q,re._( ')).call($,re.getLocaleSpeed(U.totalSpeed,!0),'
\n ')).call(J,re._( ')).call(W,re.getLocaleDistanceMajor(U.totalMeters,!0),"
\n
"));var it=r()(e=r()(n=r()(i=r()(o=r()(a=r()(s=r()(l=r()(u=r()(c=r()(f=r()(h=r()(d=r()(p=r()(v=r()(m=r()(y=r()(g=r()(b=r()(x=r()(w=r()(k=r()(S=r()(E='
\n
'.concat(re._( ')).call(S,mt.htmlEncode(U.username),'
\n
')).call(k,re._( ')).call(x,mt.htmlEncode(U.trackname),'
\n
\n
\n ')).call(b,U.hasComment()?'
'.concat(mt.htmlEncode(U.comment).replace(/\n/,"
"),"
"):"","\n ")).call(g,U.hasImage()?'
image
'):"",'\n
\n ')).call(y,re._( ')).call(v,B,'
\n ')).call(p,re._( ')).call(h,V,"
\n ")).call(f,null!==U.speed?r()(A=r()(L=''.concat(re._(')).call(A,re.getLocaleSpeed(U.speed,!0),"
"):"","\n ")).call(c,null!==U.altitude?r()(T=r()(M=''.concat(re._(')).call(T,re.getLocaleAltitude(U.altitude,!0),"
"):"","\n ")).call(u,null!==U.accuracy?r()(O=r()(P=r()(_=''.concat(re._(')).call(P,re.getLocaleAccuracy(U.accuracy,!0))).call(O,G,"
"):"","\n ")).call(l,null!==U.bearing?r()(I=r()(C=r()(j=''.concat(re._(')).call(I,U.bearing,"°
"):"",'\n ')).call(s,re._(')).call(o,re.getLocaleCoordinates(U),"
\n
")).call(i,rt,'
\n
')).call(n,re._("pointof",t+1,N),"
")).call(e,Y,"
"),ot=document.createElement("div");(ot.setAttribute("id","popup"),ot.innerHTML=it,U.hasImage())&&(ot.querySelector("#pimage img").onclick=function(){var t=new be('image'));t.element.querySelector("#modal-close").onclick=function(){return t.destroy()},t.element.classList.add("image"),t.show()});z&&(ot.querySelector("#editposition").onclick=function(){new Ue(R.state,t).init()});return ot}}],[{key:"getMarkerPath",value:function(t){return t?"M15,34.911c0,0,0.359-3.922,1.807-8.588c0.414-1.337,1.011-2.587,2.495-4.159c1.152-1.223,3.073-2.393,3.909-4.447c1.681-6.306-3.676-9.258-8.211-9.258c-4.536,0-9.893,2.952-8.211,9.258c0.836,2.055,2.756,3.225,3.91,4.447c1.484,1.572,2.08,2.822,2.495,4.159C14.64,30.989,15,34.911,15,34.911z M18,15.922c0,1.705-1.342,3.087-2.999,3.087c-1.657,0-3-1.382-3-3.087c0-1.704,1.343-3.086,3-3.086C16.658,12.836,18,14.218,18,15.922z":"M14.999,34.911c0,0,0.232-1.275,1.162-4.848c0.268-1.023,0.652-1.98,1.605-3.184c0.742-0.937,1.975-1.832,2.514-3.404c1.082-4.828-2.363-7.088-5.281-7.088c-2.915,0-6.361,2.26-5.278,7.088c0.538,1.572,1.771,2.468,2.514,3.404c0.953,1.203,1.337,2.16,1.604,3.184C14.77,33.635,14.999,34.911,14.999,34.911z"}},{key:"getMarkerExtra",value:function(t){var e,n=t?"M26.074,13.517":"M23.328,20.715",i=t?"M28.232,10.942":"M25.486,18.141";return r()(e='\n ')}},{key:"getSvgSrc",value:function(t,e,i){var o,a,s=r()(o=r()(a='\n ')).call(o,i?n.getMarkerExtra(e):"","");return"data:image/svg+xml,".concat(encodeURIComponent(s))}}]),n}(se);function ze(t){var e=function(){if("undefined"==typeof Reflect||!M())return!1;if(M().sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(M()(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,r=R(t);if(e){var i=R(this).constructor;n=M()(r,arguments,i)}else n=r.apply(this,arguments);return C(this,n)}}var Be=function(t){I(n,t);var e=ze(n);function n(t){var r;return o(this,n),(r=e.call(this,{onTrackDelete:null,onTrackUpdate:null,onCancel:null,trackname:""})).track=t.state.currentTrack,r.trackVM=t,r.model.onTrackDelete=function(){return r.onTrackDelete()},r.model.onTrackUpdate=function(){return r.onTrackUpdate()},r.model.onCancel=function(){return r.onCancel()},r}return l(n,[{key:"init",value:function(){var t=this.getHtml();this.dialog=new be(t),this.dialog.show(),this.bindAll(this.dialog.element)}},{key:"getHtml",value:function(){var t,e,n,i,o,a;return r()(t=r()(e=r()(n=r()(i=r()(o=r()(a='\n
")).call(a,re._("editingtrack","".concat(mt.htmlEncode(this.track.name),"")),'
\n
\n
\n \n \n
\n \n \n
\n
")}},{key:"onTrackDelete",value:function(){var t=this;be.isConfirmed(re._("trackdelwarn",mt.htmlEncode(this.track.name)))&&this.track.delete().then((function(){t.trackVM.onTrackDeleted(),t.dialog.destroy()})).catch((function(t){var e;me.error(r()(e="".concat(re._("actionfailure"),"\n")).call(e,t.message),t)}))}},{key:"onTrackUpdate",value:function(){var t=this;this.validate()&&(this.track.setName(this.model.trackname),this.track.saveMeta().then((function(){return t.dialog.destroy()})).catch((function(t){var e;me.error(r()(e="".concat(re._("actionfailure"),"\n")).call(e,t.message),t)})))}},{key:"onCancel",value:function(){this.dialog.destroy()}},{key:"validate",value:function(){return this.model.trackname!==this.track.name&&(!!this.model.trackname||(me.error(re._("allrequired")),!1))}}]),n}(se);function Ve(t){var e=function(){if("undefined"==typeof Reflect||!M())return!1;if(M().sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(M()(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,r=R(t);if(e){var i=R(this).constructor;n=M()(r,arguments,i)}else n=r.apply(this,arguments);return C(this,n)}}var Fe=function(t){I(n,t);var e=Ve(n);function n(t){var r;o(this,n),(r=e.call(this,{trackList:[],currentTrackId:"",showLatest:!1,autoReload:!1,inputFile:!1,summary:!1,onReload:null,onExportGpx:null,onExportKml:null,onImportGpx:null,onTrackEdit:null})).setClickHandlers();var i=document.querySelector("#track");return r.importEl=document.querySelector("#input-file"),r.editEl=r.getBoundElement("onTrackEdit"),r.select=new ot(i),r.state=t,r.timerId=0,r}return l(n,[{key:"init",value:function(){return this.setObservers(),this.bindAll(),this}},{key:"setObservers",value:function(){var t=this;this.onChanged("trackList",(function(e){t.select.setOptions(e)})),this.onChanged("currentTrackId",(function(e){t.onTrackSelect(e)})),this.onChanged("inputFile",(function(e){e&&t.onImport()})),this.onChanged("autoReload",(function(e){t.autoReload(e)})),this.onChanged("showLatest",(function(e){t.state.showLatest=e,t.onReload(!0)})),this.state.onChanged("currentUser",(function(e){e?(t.loadTrackList(),ie.user&&(ie.isAdmin||ie.user.id===e.id)&&n.setMenuVisible(t.editEl,!0)):(t.model.currentTrackId="",t.model.trackList=[],n.setMenuVisible(t.editEl,!1))})),this.state.onChanged("currentTrack",(function(e){t.renderSummary(),e&&nt.observe(e,"positions",(function(){t.renderSummary()}))})),this.state.onChanged("showAllUsers",(function(e){e&&t.loadAllUsersPosition()})),ne.onChanged("interval",(function(){t.timerId&&(t.stopAutoReload(),t.startAutoReload())})),this.state.onChanged("history",(function(e){e&&!e.userId&&e.trackId&&(t.model.currentTrackId=e.trackId.toString())}))}},{key:"setClickHandlers",value:function(){var t=this;this.model.onReload=function(){return t.onReload()};var e=function(e){return function(){t.state.currentTrack&&t.state.currentTrack.export(e)}};this.model.onExportGpx=e("gpx"),this.model.onExportKml=e("kml"),this.model.onImportGpx=function(){return t.importEl.click()},this.model.onTrackEdit=function(){return t.showDialog()}}},{key:"onReload",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.state.showLatest?this.state.showAllUsers?this.loadAllUsersPosition():this.state.currentUser&&this.onUserLastPosition():this.state.currentTrack instanceof At?this.onTrackUpdate(t):this.state.currentTrack instanceof wt?this.state.currentTrack=null:this.state.currentUser&&this.loadTrackList()}},{key:"onImport",value:function(){var t=this,e=this.importEl.parentElement,n=e.elements.MAX_FILE_SIZE.value;this.importEl.files&&1===this.importEl.files.length&&this.importEl.files[0].size>n?me.error(re._("isizefailure",n)):ie.isAuthenticated?(this.state.jobStart(),At.import(e,ie.user).then((function(e){e.length&&(e.length>1&&me.toast(re._("imultiple",e.length)),t.model.trackList=r()(e).call(e,t.model.trackList),t.model.currentTrackId=e[0].listValue)})).catch((function(t){var e;return me.error(r()(e="".concat(re._("actionfailure"),"\n")).call(e,t.message),t)})).finally((function(){t.model.inputFile="",t.state.jobStop()}))):me.error(re._("notauthorized"))}},{key:"onTrackSelect",value:function(t){var e,n=this,i=G()(e=this.model.trackList).call(e,(function(e){return e.listValue===t}));i?i.isEqualTo(this.state.currentTrack)||(this.state.jobStart(),i.fetchPositions().then((function(){var t;r()(t="currentTrack id: ".concat(i.id,", loaded ")).call(t,i.length," positions"),n.state.currentTrack=i,n.model.showLatest&&(n.model.showLatest=!1)})).catch((function(t){var e;me.error(r()(e="".concat(re._("actionfailure"),"\n")).call(e,t.message),t)})).finally((function(){return n.state.jobStop()}))):this.state.currentTrack=null}},{key:"onTrackUpdate",value:function(t){t&&this.state.currentTrack.clear(),this.state.currentTrack.fetchPositions().catch((function(t){var e;me.error(r()(e="".concat(re._("actionfailure"),"\n")).call(e,t.message),t)}))}},{key:"onUserLastPosition",value:function(){var t=this;this.state.currentUser.fetchLastPosition().then((function(e){var n;e&&(G()(n=t.model.trackList).call(n,(function(t){return t.listValue===e.listValue}))||t.model.trackList.unshift(e),t.state.currentTrack=e,t.model.currentTrackId=e.listValue)})).catch((function(t){var e;me.error(r()(e="".concat(re._("actionfailure"),"\n")).call(e,t.message),t)}))}},{key:"loadAllUsersPosition",value:function(){var t=this;this.state.jobStart(),wt.fetchLatest().then((function(e){e&&(t.model.trackList=[],t.model.currentTrackId="",t.state.currentTrack=e)})).catch((function(t){var e;me.error(r()(e="".concat(re._("actionfailure"),"\n")).call(e,t.message),t)})).finally((function(){return t.state.jobStop()}))}},{key:"loadTrackList",value:function(){var t=this;this.state.jobStart(),At.fetchList(this.state.currentUser).then((function(e){t.model.trackList=e,e.length?t.state.showLatest?t.onUserLastPosition():t.state.history?t.model.currentTrackId=t.state.history.trackId.toString():t.model.currentTrackId=e[0].listValue:t.model.currentTrackId=""})).catch((function(t){var e;me.error(r()(e="".concat(re._("actionfailure"),"\n")).call(e,t.message),t)})).finally((function(){return t.state.jobStop()}))}},{key:"showDialog",value:function(){new Be(this).init()}},{key:"onTrackDeleted",value:function(){var t,e=this.model.trackList.indexOf(this.state.currentTrack);(this.state.currentTrack=null,-1!==e)&&(Vt()(t=this.model.trackList).call(t,e,1),this.model.trackList.length?(e>=this.model.trackList.length&&(e=this.model.trackList.length-1),this.model.currentTrackId=this.model.trackList[e].listValue):this.model.currentTrackId="")}},{key:"autoReload",value:function(t){t?this.startAutoReload():this.stopAutoReload()}},{key:"startAutoReload",value:function(){var t=this;this.timerId=setInterval((function(){return t.onReload()}),1e3*ne.interval)}},{key:"stopAutoReload",value:function(){clearInterval(this.timerId),this.timerId=0}},{key:"renderSummary",value:function(){var t=this.state.currentTrack;if(t&&t.hasPositions){var e=t.positions[t.length-1];if(this.state.showLatest){var n,i,o,a=new Date,s=new Date(1e3*e.timestamp),l=mt.getTimeString(s),u=s.toDateString()!==a.toDateString()?"".concat(l.date,"
"):"",c=r()(n="".concat(l.time,'')).call(n,l.zone,"");this.model.summary=r()(i=r()(o='\n \n ")).call(o,u,"\n ")).call(i,c)}else{var f,h,d,p,v,m,y,g,b,x,w=r()(f=r()(h=r()(d=r()(p=r()(v=r()(m='\n \n
')).call(m,re._( ')).call(p,re.getLocaleDistanceMajor(e.totalMeters,!0),'
\n
')).call(d,re._( ')).call(f,re.getLocaleDuration(e.totalSeconds),"
");if(e.totalSeconds>0)w+=r()(y=r()(g='\n
'.concat(re._( ')).call(y,re.getLocaleSpeed(e.totalMeters/e.totalSeconds,!0),"
");if(t.hasSpeeds)w+=r()(b=r()(x='
'.concat(re._( ')).call(b,re.getLocaleSpeed(t.maxSpeed,!0),"
");if(t.hasAltitudes){var k,S,E,A="".concat(re.getLocaleAltitude(t.maxAltitude,!0));if(t.minAltitude!==t.maxAltitude)A=r()(E="".concat(re.getLocaleAltitude(t.minAltitude),"–")).call(E,A);w+=r()(k=r()(S='
'.concat(re._( ')).call(k,A,"
")}this.model.summary=w}}else this.model.summary=""}}],[{key:"setMenuVisible",value:function(t,e){t&&(e?t.classList.remove("menu-hidden"):t.classList.add("menu-hidden"))}}]),n}(se),He=i(1060),qe=i.n(He);function Ge(t){var e=function(){if("undefined"==typeof Reflect||!M())return!1;if(M().sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(M()(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,r=R(t);if(e){var i=R(this).constructor;n=M()(r,arguments,i)}else n=r.apply(this,arguments);return C(this,n)}}var Xe=function(t){I(n,t);var e=Ge(n);function n(t,r){var i;return o(this,n),(i=e.call(this,{onUserDelete:null,onUserUpdate:null,onPassChange:null,onUserAdd:null,onCancel:null,passVisibility:!1,login:null,password:null,password2:null,oldPassword:null,admin:!1})).user=t.state.currentUser,i.type=r,i.userVM=t,i.model.onUserDelete=function(){return i.onUserDelete()},i.model.onUserUpdate=function(){return i.onUserUpdate()},i.model.onPassChange=function(){return i.onPassChange()},i.model.onUserAdd=function(){return i.onUserAdd()},i.model.onCancel=function(){return i.onCancel()},i}return l(n,[{key:"init",value:function(){var t=this.getHtml();this.dialog=new be(t),this.dialog.show(),this.bindAll(this.dialog.element);var e=this.getBoundElement("passInput");e&&this.onChanged("passVisibility",(function(){"none"===e.style.display?e.style.display="block":e.style.display="none"}))}},{key:"onUserDelete",value:function(){var t=this;be.isConfirmed(re._("userdelwarn",mt.htmlEncode(this.user.login)))&&this.user.delete().then((function(){t.userVM.onUserDeleted(),t.dialog.destroy()})).catch((function(t){var e;me.error(r()(e="".concat(re._("actionfailure"),"\n")).call(e,t.message),t)}))}},{key:"onUserUpdate",value:function(){var t=this;if(this.validate()){var e=this.model.passVisibility?this.model.password:null;this.user.modify(this.model.admin,e).then((function(){return t.dialog.destroy()})).catch((function(t){var e;me.error(r()(e="".concat(re._("actionfailure"),"\n")).call(e,t.message),t)}))}}},{key:"onPassChange",value:function(){var t=this;this.model.passVisibility=!0,this.validate()&&ie.user.setPassword(this.model.password,this.model.oldPassword).then((function(){return t.dialog.destroy()})).catch((function(t){var e;me.error(r()(e="".concat(re._("actionfailure"),"\n")).call(e,t.message),t)}))}},{key:"onUserAdd",value:function(){var t=this;this.model.passVisibility=!0,this.validate()&&Ot.add(this.model.login,this.model.password,this.model.admin).then((function(e){t.userVM.onUserAdded(e),t.dialog.destroy()})).catch((function(t){var e;me.error(r()(e="".concat(re._("actionfailure"),"\n")).call(e,t.message),t)}))}},{key:"onCancel",value:function(){this.dialog.destroy()}},{key:"validate",value:function(){if("add"===this.type){if(!this.model.login)return me.error(re._("allrequired")),!1}else if("pass"===this.type&&!this.model.oldPassword)return me.error(re._("allrequired")),!1;if(this.model.passVisibility){if(!this.model.password||!this.model.password2)return me.error(re._("allrequired")),!1;if(this.model.password!==this.model.password2)return me.error(re._("passnotmatch")),!1;if(!ne.validPassStrength(this.model.password))return me.error(re.getLocalePassRules()),!1}return!0}},{key:"getHtml",value:function(){var t,e,n,i,o,a,s,l,u,c,f,h,d,p,v,m,y,g,b,x,w,k,S,E,A="",L="";switch(this.type){case"add":S="onUserAdd",L=r()(t="\n '),E=r()(e=r()(n=r()(i=r()(o="\n \n \n \n \n ');break;case"edit":S="onUserUpdate",A=r()(a='\n
")).call(a,re._("editinguser","".concat(mt.htmlEncode(this.user.login),"")),'
\n
'),E=r()(s=r()(l=r()(u=r()(c=r()(f=r()(h="\n
\n
\n \n \n \n \n
\n \n ");break;case"pass":S="onPassChange",E=r()(d=r()(p=r()(v=r()(m=r()(y="\n \n \n \n \n ');break;default:throw new Error("Unknown dialog type: ".concat(this.type))}return r()(g=r()(b=r()(x=r()(w=r()(k="".concat(A,'\n
\n ')).call(k,L,"\n ")).call(w,E,'\n
\n \n \n
\n
")}}]),n}(se);function Ye(t){var e=function(){if("undefined"==typeof Reflect||!M())return!1;if(M().sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(M()(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,r=R(t);if(e){var i=R(this).constructor;n=M()(r,arguments,i)}else n=r.apply(this,arguments);return C(this,n)}}var We=function(t){I(n,t);var e=Ye(n);function n(t){var r;o(this,n),(r=e.call(this,{userList:[],currentUserId:"0",onUserEdit:null,onUserAdd:null,onPasswordChange:null})).setClickHandlers();var i=document.querySelector("#user");return r.editEl=r.getBoundElement("onUserEdit"),r.select=new ot(i,re._("suser"),"- ".concat(re._("allusers")," -")),r.state=t,r}return l(n,[{key:"setClickHandlers",value:function(){var t=this;this.model.onUserEdit=function(){return t.showDialog("edit")},this.model.onUserAdd=function(){return t.showDialog("add")},this.model.onPasswordChange=function(){return t.showDialog("pass")}}},{key:"init",value:function(){var t=this;return this.setObservers(this.state),this.bindAll(),Ot.fetchList().then((function(e){if(t.model.userList=e,e.length){var n=e[0].listValue;if(t.state.history)n=t.state.history.userId.toString();else if(ie.isAuthenticated){var r,i=G()(r=t.model.userList).call(r,(function(t){return t.listValue===ie.user.listValue}));i&&(n=i.listValue)}t.model.currentUserId=n}})).catch((function(t){var e;me.error(r()(e="".concat(re._("actionfailure"),"\n")).call(e,t.message),t)})),this}},{key:"setObservers",value:function(t){var e=this;this.onChanged("userList",(function(t){e.select.setOptions(t)})),this.onChanged("currentUserId",(function(t){var r;e.state.showAllUsers=t===ot.allValue,e.state.currentUser=G()(r=e.model.userList).call(r,(function(e){return e.listValue===t}))||null,n.setMenuVisible(e.editEl,null!==e.state.currentUser&&!e.state.currentUser.isEqualTo(ie.user))})),t.onChanged("showLatest",(function(t){t?e.select.showAllOption():e.select.hideAllOption()})),t.onChanged("history",(function(t){t&&t.userId&&(e.model.currentUserId=t.userId.toString())}))}},{key:"showDialog",value:function(t){new Xe(this,t).init()}},{key:"onUserAdded",value:function(t){var e;this.model.userList.push(t),qe()(e=this.model.userList).call(e,(function(t,e){return t.login>e.login?1:-1}))}},{key:"onUserDeleted",value:function(){var t,e=this.model.userList.indexOf(this.state.currentUser);(this.state.currentUser=null,-1!==e)&&(Vt()(t=this.model.userList).call(t,e,1),this.model.userList.length?(e>=this.model.userList.length&&(e=this.model.userList.length-1),this.model.currentUserId=this.model.userList[e].listValue):this.model.currentUserId="0")}}],[{key:"setMenuVisible",value:function(t,e){t&&(e?t.classList.remove("menu-hidden"):t.classList.add("menu-hidden"))}}]),n}(se),Ze=function(){function t(e){o(this,t),this.state=e,this.skipPush=!1}return l(t,[{key:"init",value:function(){var t=this;return this.state.onChanged("mapParams",(function(){return t.pushState()})),window.addEventListener("popstate",(function(e){if(null!==e.state){var n=t.state.currentTrack,r=t.state.currentUser,i={title:e.state.title,userId:r&&r.id===e.state.userId?null:e.state.userId,trackId:n&&n.id===e.state.trackId?null:e.state.trackId,mapApi:ne.mapApi===e.state.mapApi?null:e.state.mapApi,mapParams:e.state.mapParams};t.onPop(i),t.skipPush=!0}})),this}},{key:"onPop",value:function(t){var e,n,i;(t&&r()(e=r()(n="".concat(t.trackId,"/")).call(n,t.mapApi,"/")).call(e,t.mapParams),this.state.history=t,t)&&(document.title=r()(i="".concat(re._("title")," ")).call(i,t.title))}},{key:"pushState",value:function(){if(this.skipPush)this.skipPush=!1;else if(null!==this.state.currentUser&&null!==this.state.currentTrack){var e=this.getState(),n=window.history.state;if(!n||!mt.isDeepEqual(n,e)){var i,o,a=t.getHash(e);r()(i="pushState: ".concat(a," => ")).call(i,e),window.history.pushState(e,e.title,a),document.title=r()(o="".concat(re._("title")," ")).call(o,e.title)}}}},{key:"getState",value:function(){return{title:this.state.currentTrack.name,userId:this.state.currentUser.id,trackId:this.state.currentTrack.id,mapApi:ne.mapApi,mapParams:this.state.mapParams}}}],[{key:"parseHash",value:function(){return t.parse(window.location.hash)}},{key:"parse",value:function(t){var n=t.replace("#","").split("/");n.reverse();var i=parseInt(n.pop());if(!isNaN(i)){var o="openlayers";"g"===n.pop()&&(o="gmaps");var a=null;return n.length>=4&&((a={}).center=[parseFloat(n.pop()),parseFloat(n.pop())],a.zoom=parseFloat(n.pop()),a.rotation=parseFloat(n.pop())),At.getMeta(i).then((function(t){var e=t.userId;return{title:t.name,userId:e,trackId:i,mapApi:o,mapParams:a}})).catch((function(t){var e;return r()(e="Ignoring unknown track ".concat(i," ")).call(e,t),null}))}return e().resolve(null)}},{key:"getHash",value:function(t){var e,n,i,o=r()(e="#".concat(t.trackId,"/")).call(e,t.mapApi.charAt(0));t.mapParams&&(o+=r()(n="/".concat(t.mapParams.center[0],"/")).call(n,t.mapParams.center[1]),o+=r()(i="/".concat(t.mapParams.zoom,"/")).call(i,t.mapParams.rotation));return o}}]),t}(),Je=function(){function t(e){o(this,t),this.spinner=null,this.state=e}return l(t,[{key:"init",value:function(){var t=this;this.state.onChanged("activeJobs",(function(e){e>0?t.spinner||(t.spinner=me.spinner()):t.spinner&&(t.spinner.destroy(),t.spinner=null)}))}}]),t}(),$e=function(){function t(){o(this,t),this.currentTrack=null,this.currentUser=null,this.showLatest=!1,this.showAllUsers=!1,this.activeJobs=0,this.mapParams=null,this.history=null}return l(t,[{key:"jobStart",value:function(){this.activeJobs++}},{key:"jobStop",value:function(){this.activeJobs--}},{key:"onChanged",value:function(t,e){nt.observe(this,t,e)}}]),t}(),Ke=te.waitForDom(),Qe=ee.initialize(),tn=Ze.parseHash();e().all([Ke,Qe,tn]).then((function(t){var e,n,r,i,o,a,s,l,u,c;e=t[2],n=new $e,r=new Ze(n),i=new Je(n),o=new Oe(n),a=new We(n),s=new Fe(n),l=new De(n),u=new he(n),c=new Ae(n),r.init().onPop(e),i.init(),o.init(),a.init(),s.init(),l.init().loadMapAPI(ne.mapApi),u.init(),c.init(),l.onChanged("markerOver",(function(t){null!==t?u.onPointOver(t):u.onPointOut()})),l.onChanged("markerSelect",(function(t){null!==t?u.onPointSelect(t):u.onPointUnselect()})),u.onChanged("pointSelected",(function(t){null!==t&&l.api.animateMarker(t)}))})).catch((function(t){var e;return me.error(r()(e="".concat(re._("actionfailure"),"\n")).call(e,t))}))}()}(); +!function(){var t,e,n={6012:function(t,e,n){t.exports=n(3241)},7245:function(t,e,n){t.exports=n(7605)},6824:function(t,e,n){t.exports=n(8687)},1467:function(t,e,n){t.exports=n(6127)},2717:function(t,e,n){t.exports=n(1830)},5877:function(t,e,n){t.exports=n(6845)},1060:function(t,e,n){t.exports=n(9886)},509:function(t,e,n){t.exports=n(2939)},9141:function(t,e,n){t.exports=n(4205)},6235:function(t,e,n){t.exports=n(7772)},222:function(t,e,n){t.exports=n(4396)},589:function(t,e,n){t.exports=n(4242)},1624:function(t,e,n){t.exports=n(6841)},9989:function(t,e,n){t.exports=n(9990)},9733:function(t,e,n){t.exports=n(8430)},8409:function(t,e,n){t.exports=n(4682)},543:function(t,e,n){t.exports=n(5227)},6544:function(t,e,n){t.exports=n(2556)},6130:function(t,e,n){t.exports=n(1209)},6330:function(t,e,n){t.exports=n(1483)},6950:function(t,e,n){t.exports=n(2162)},2554:function(t,e,n){t.exports=n(1665)},457:function(t,e,n){t.exports=n(8173)},7112:function(t,e,n){t.exports=n(263)},4061:function(t,e,n){t.exports=n(6017)},8889:function(t,e,n){t.exports=n(8945)},6142:function(t,e,n){t.exports=n(830)},9533:function(t,e,n){t.exports=n(8993)},7828:function(t,e,n){t.exports=n(688)},8975:function(t,e,n){t.exports=n(1422)},8680:function(t,e,n){t.exports=n(9259)},5726:function(t,e,n){t.exports=n(8327)},3668:function(t,e,n){t.exports=n(6438)},61:function(t,e,n){t.exports=n(5365)},6460:function(t,e,n){t.exports=n(4338)},1685:function(t,e,n){t.exports=n(2538)},215:function(t,e,n){t.exports=n(499)},2829:function(t,e,n){t.exports=n(488)},7448:function(t,e,n){t.exports=n(6760)},5826:function(t,e,n){var r,i,o;o=this,r=[n(274)],void 0===(i=function(t){return o.returnExportsGlobal=function(t){return function(t){"use strict";var e={axisTitle:"",axisClass:"ct-axis-title",offset:{x:0,y:0},textAnchor:"middle",flipTitle:!1},n={axisX:e,axisY:e},r=function(t){return t instanceof Function?t():t},i=function(t){return t instanceof Function?t():t};t.plugins=t.plugins||{},t.plugins.ctAxisTitle=function(e){return e=t.extend({},n,e),function(n){n.on("created",(function(n){if(!e.axisX.axisTitle&&!e.axisY.axisTitle)throw new Error("ctAxisTitle plugin - You must provide at least one axis title");if(!n.axisX&&!n.axisY)throw new Error("ctAxisTitle plugin can only be used on charts that have at least one axis");var o,a,s,u=t.normalizePadding(n.options.chartPadding);if(e.axisX.axisTitle&&n.axisX&&(o=n.axisX.axisLength/2+n.options.axisY.offset+u.left,a=u.top,"end"===n.options.axisY.position&&(o-=n.options.axisY.offset),"end"===n.options.axisX.position&&(a+=n.axisY.axisLength),(s=new t.Svg("text")).addClass(i(e.axisX.axisClass)),s.text(r(e.axisX.axisTitle)),s.attr({x:o+e.axisX.offset.x,y:a+e.axisX.offset.y,"text-anchor":e.axisX.textAnchor}),n.svg.append(s,!0)),e.axisY.axisTitle&&n.axisY){o=0,a=n.axisY.axisLength/2+u.top,"start"===n.options.axisX.position&&(a+=n.options.axisX.offset),"end"===n.options.axisY.position&&(o=n.axisX.axisLength);var l="rotate("+(e.axisY.flipTitle?-90:90)+", "+o+", "+a+")";(s=new t.Svg("text")).addClass(i(e.axisY.axisClass)),s.text(r(e.axisY.axisTitle)),s.attr({x:o+e.axisY.offset.x,y:a+e.axisY.offset.y,transform:l,"text-anchor":e.axisY.textAnchor}),n.svg.append(s,!0)}}))}}}(t),t.plugins.ctAxisTitle}(t)}.apply(e,r))||(t.exports=i)},274:function(t,e,n){var r,i;function o(t){return(o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}i=this,void 0===(r=function(){return i.Chartist=function(){var t={version:"0.11.4"};return function(t,e){"use strict";var n=t.window,r=t.document;e.namespaces={svg:"http://www.w3.org/2000/svg",xmlns:"http://www.w3.org/2000/xmlns/",xhtml:"http://www.w3.org/1999/xhtml",xlink:"http://www.w3.org/1999/xlink",ct:"http://gionkunz.github.com/chartist-js/ct"},e.noop=function(t){return t},e.alphaNumerate=function(t){return String.fromCharCode(97+t%26)},e.extend=function(t){var n,r,i;for(t=t||{},n=1;n":">",'"':""","'":"'"},e.serialize=function(t){return null==t?t:("number"==typeof t?t=""+t:"object"===o(t)&&(t=JSON.stringify({data:t})),Object.keys(e.escapingMap).reduce((function(t,n){return e.replaceAll(t,n,e.escapingMap[n])}),t))},e.deserialize=function(t){if("string"!=typeof t)return t;t=Object.keys(e.escapingMap).reduce((function(t,n){return e.replaceAll(t,e.escapingMap[n],n)}),t);try{t=void 0!==(t=JSON.parse(t)).data?t.data:t}catch(t){}return t},e.createSvg=function(t,n,r,i){var o;return n=n||"100%",r=r||"100%",Array.prototype.slice.call(t.querySelectorAll("svg")).filter((function(t){return t.getAttributeNS(e.namespaces.xmlns,"ct")})).forEach((function(e){t.removeChild(e)})),(o=new e.Svg("svg").attr({width:n,height:r}).addClass(i))._node.style.width=n,o._node.style.height=r,t.appendChild(o._node),o},e.normalizeData=function(t,n,r){var i,o={raw:t,normalized:{}};return o.normalized.series=e.getDataArray({series:t.series||[]},n,r),i=o.normalized.series.every((function(t){return t instanceof Array}))?Math.max.apply(null,o.normalized.series.map((function(t){return t.length}))):o.normalized.series.length,o.normalized.labels=(t.labels||[]).slice(),Array.prototype.push.apply(o.normalized.labels,e.times(Math.max(0,i-o.normalized.labels.length)).map((function(){return""}))),n&&e.reverseData(o.normalized),o},e.safeHasProperty=function(t,e){return null!==t&&"object"===o(t)&&t.hasOwnProperty(e)},e.isDataHoleValue=function(t){return null==t||"number"==typeof t&&isNaN(t)},e.reverseData=function(t){t.labels.reverse(),t.series.reverse();for(var e=0;ei.high&&(i.high=n),a&&n0||(i.high=1),i.low=0)),i},e.isNumeric=function(t){return null!==t&&isFinite(t)},e.isFalseyButZero=function(t){return!t&&0!==t},e.getNumberOrUndefined=function(t){return e.isNumeric(t)?+t:void 0},e.isMultiValue=function(t){return"object"===o(t)&&("x"in t||"y"in t)},e.getMultiValue=function(t,n){return e.isMultiValue(t)?e.getNumberOrUndefined(t[n||"y"]):e.getNumberOrUndefined(t)},e.rho=function(t){if(1===t)return t;function e(t,n){return t%n==0?n:e(n,t%n)}function n(t){return t*t+1}var r,i=2,o=2;if(t%2==0)return 2;do{i=n(i)%t,o=n(n(o))%t,r=e(Math.abs(i-o),t)}while(1===r);return r},e.getBounds=function(t,n,r,i){var o,a,s,u=0,l={high:n.high,low:n.low};l.valueRange=l.high-l.low,l.oom=e.orderOfMagnitude(l.valueRange),l.step=Math.pow(10,l.oom),l.min=Math.floor(l.low/l.step)*l.step,l.max=Math.ceil(l.high/l.step)*l.step,l.range=l.max-l.min,l.numberOfSteps=Math.round(l.range/l.step);var c=e.projectLength(t,l.step,l)=r)l.step=1;else if(i&&f=r)l.step=f;else for(;;){if(c&&e.projectLength(t,l.step,l)<=r)l.step*=2;else{if(c||!(e.projectLength(t,l.step/2,l)>=r))break;if(l.step/=2,i&&l.step%1!=0){l.step*=2;break}}if(u++>1e3)throw new Error("Exceeded maximum number of iterations while optimizing scale step!")}var h=2221e-19;function d(t,e){return t===(t+=e)&&(t*=1+(e>0?h:-h)),t}for(l.step=Math.max(l.step,h),a=l.min,s=l.max;a+l.step<=l.low;)a=d(a,l.step);for(;s-l.step>=l.high;)s=d(s,-l.step);l.min=a,l.max=s,l.range=l.max-l.min;var p=[];for(o=l.min;o<=l.max;o=d(o,l.step)){var v=e.roundWithPrecision(o);v!==p[p.length-1]&&p.push(v)}return l.values=p,l},e.polarToCartesian=function(t,e,n,r){var i=(r-90)*Math.PI/180;return{x:t+n*Math.cos(i),y:e+n*Math.sin(i)}},e.createChartRect=function(t,n,r){var i=!(!n.axisX&&!n.axisY),o=i?n.axisY.offset:0,a=i?n.axisX.offset:0,s=t.width()||e.quantity(n.width).value||0,u=t.height()||e.quantity(n.height).value||0,l=e.normalizePadding(n.chartPadding,r);s=Math.max(s,o+l.left+l.right),u=Math.max(u,a+l.top+l.bottom);var c={padding:l,width:function(){return this.x2-this.x1},height:function(){return this.y1-this.y2}};return i?("start"===n.axisX.position?(c.y2=l.top+a,c.y1=Math.max(u-l.bottom,c.y2+1)):(c.y2=l.top,c.y1=Math.max(u-l.bottom-a,c.y2+1)),"start"===n.axisY.position?(c.x1=l.left+o,c.x2=Math.max(s-l.right,c.x1+1)):(c.x1=l.left,c.x2=Math.max(s-l.right-o,c.x1+1))):(c.x1=l.left,c.x2=Math.max(s-l.right,c.x1+1),c.y2=l.top,c.y1=Math.max(u-l.bottom,c.y2+1)),c},e.createGrid=function(t,n,r,i,o,a,s,u){var l={};l[r.units.pos+"1"]=t,l[r.units.pos+"2"]=t,l[r.counterUnits.pos+"1"]=i,l[r.counterUnits.pos+"2"]=i+o;var c=a.elem("line",l,s.join(" "));u.emit("draw",e.extend({type:"grid",axis:r,index:n,group:a,element:c},l))},e.createGridBackground=function(t,e,n,r){var i=t.elem("rect",{x:e.x1,y:e.y2,width:e.width(),height:e.height()},n,!0);r.emit("draw",{type:"gridBackground",group:t,element:i})},e.createLabel=function(t,n,i,o,a,s,u,l,c,f,h){var d,p={};if(p[a.units.pos]=t+u[a.units.pos],p[a.counterUnits.pos]=u[a.counterUnits.pos],p[a.units.len]=n,p[a.counterUnits.len]=Math.max(0,s-10),f){var v=r.createElement("span");v.className=c.join(" "),v.setAttribute("xmlns",e.namespaces.xhtml),v.innerText=o[i],v.style[a.units.len]=Math.round(p[a.units.len])+"px",v.style[a.counterUnits.len]=Math.round(p[a.counterUnits.len])+"px",d=l.foreignObject(v,e.extend({style:"overflow: visible;"},p))}else d=l.elem("text",p,c.join(" ")).text(o[i]);h.emit("draw",e.extend({type:"label",axis:a,index:i,group:l,element:d,text:o[i]},p))},e.getSeriesOption=function(t,e,n){if(t.name&&e.series&&e.series[t.name]){var r=e.series[t.name];return r.hasOwnProperty(n)?r[n]:e[n]}return e[n]},e.optionsProvider=function(t,r,i){var o,a,s=e.extend({},t),u=[];function l(t){var u=o;if(o=e.extend({},s),r)for(a=0;a=2&&t[s]<=t[s-2]&&(a=!0),a&&(o.push({pathCoordinates:[],valueData:[]}),a=!1),o[o.length-1].pathCoordinates.push(t[s],t[s+1]),o[o.length-1].valueData.push(n[s/2]));return o}}(this||n.g,t),function(t,e){"use strict";e.Interpolation={},e.Interpolation.none=function(t){var n={fillHoles:!1};return t=e.extend({},n,t),function(n,r){for(var i=new e.Svg.Path,o=!0,a=0;a1){var u=[];return s.forEach((function(t){u.push(n(t.pathCoordinates,t.valueData))})),e.Svg.Path.join(u)}if(o=s[0].pathCoordinates,a=s[0].valueData,o.length<=4)return e.Interpolation.none()(o,a);for(var l,c=(new e.Svg.Path).move(o[0],o[1],!1,a[0]),f=0,h=o.length;h-2*!l>f;f+=2){var d=[{x:+o[f-2],y:+o[f-1]},{x:+o[f],y:+o[f+1]},{x:+o[f+2],y:+o[f+3]},{x:+o[f+4],y:+o[f+5]}];l?f?h-4===f?d[3]={x:+o[0],y:+o[1]}:h-2===f&&(d[2]={x:+o[0],y:+o[1]},d[3]={x:+o[2],y:+o[3]}):d[0]={x:+o[h-2],y:+o[h-1]}:h-4===f?d[3]=d[2]:f||(d[0]={x:+o[f],y:+o[f+1]}),c.curve(r*(-d[0].x+6*d[1].x+d[2].x)/6+i*d[2].x,r*(-d[0].y+6*d[1].y+d[2].y)/6+i*d[2].y,r*(d[1].x+6*d[2].x-d[3].x)/6+i*d[2].x,r*(d[1].y+6*d[2].y-d[3].y)/6+i*d[2].y,d[2].x,d[2].y,!1,a[(f+2)/2])}return c}return e.Interpolation.none()([])}},e.Interpolation.monotoneCubic=function(t){var n={fillHoles:!1};return t=e.extend({},n,t),function n(r,i){var o=e.splitIntoSegments(r,i,{fillHoles:t.fillHoles,increasingX:!0});if(o.length){if(o.length>1){var a=[];return o.forEach((function(t){a.push(n(t.pathCoordinates,t.valueData))})),e.Svg.Path.join(a)}if(r=o[0].pathCoordinates,i=o[0].valueData,r.length<=4)return e.Interpolation.none()(r,i);var s,u,l=[],c=[],f=r.length/2,h=[],d=[],p=[],v=[];for(s=0;s0!=d[s]>0?h[s]=0:(h[s]=3*(v[s-1]+v[s])/((2*v[s]+v[s-1])/d[s-1]+(v[s]+2*v[s-1])/d[s]),isFinite(h[s])||(h[s]=0));for(u=(new e.Svg.Path).move(l[0],c[0],!1,i[0]),s=0;s1})).map((function(t){var e=t.pathElements[0],n=t.pathElements[t.pathElements.length-1];return t.clone(!0).position(0).remove(1).move(e.x,m).line(e.x,e.y).position(t.pathElements.length+1).line(n.x,m)})).forEach(function(e){var s=u.elem("path",{d:e.stringify()},t.classNames.area,!0);this.eventEmitter.emit("draw",{type:"area",values:r.normalized.series[a],path:e.clone(),series:n,seriesIndex:a,axisX:i,axisY:o,chartRect:l,index:a,group:u,element:s})}.bind(this))}}.bind(this)),this.eventEmitter.emit("created",{bounds:o.bounds,chartRect:l,axisX:i,axisY:o,svg:this.svg,options:t})}function i(t,r,i,o){e.Line.super.constructor.call(this,t,r,n,e.extend({},n,i),o)}e.Line=e.Base.extend({constructor:i,createChart:r})}(this||n.g,t),function(t,e){"use strict";t.window,t.document;var n={axisX:{offset:30,position:"end",labelOffset:{x:0,y:0},showLabel:!0,showGrid:!0,labelInterpolationFnc:e.noop,scaleMinSpace:30,onlyInteger:!1},axisY:{offset:40,position:"start",labelOffset:{x:0,y:0},showLabel:!0,showGrid:!0,labelInterpolationFnc:e.noop,scaleMinSpace:20,onlyInteger:!1},width:void 0,height:void 0,high:void 0,low:void 0,referenceValue:0,chartPadding:{top:15,right:15,bottom:5,left:10},seriesBarDistance:15,stackBars:!1,stackMode:"accumulate",horizontalBars:!1,distributeSeries:!1,reverseData:!1,showGridBackground:!1,classNames:{chart:"ct-chart-bar",horizontalBars:"ct-horizontal-bars",label:"ct-label",labelGroup:"ct-labels",series:"ct-series",bar:"ct-bar",grid:"ct-grid",gridGroup:"ct-grids",gridBackground:"ct-grid-background",vertical:"ct-vertical",horizontal:"ct-horizontal",start:"ct-start",end:"ct-end"}};function r(t){var r,i;t.distributeSeries?(r=e.normalizeData(this.data,t.reverseData,t.horizontalBars?"x":"y")).normalized.series=r.normalized.series.map((function(t){return[t]})):r=e.normalizeData(this.data,t.reverseData,t.horizontalBars?"x":"y"),this.svg=e.createSvg(this.container,t.width,t.height,t.classNames.chart+(t.horizontalBars?" "+t.classNames.horizontalBars:""));var o=this.svg.elem("g").addClass(t.classNames.gridGroup),a=this.svg.elem("g"),s=this.svg.elem("g").addClass(t.classNames.labelGroup);if(t.stackBars&&0!==r.normalized.series.length){var u=e.serialMap(r.normalized.series,(function(){return Array.prototype.slice.call(arguments).map((function(t){return t})).reduce((function(t,e){return{x:t.x+(e&&e.x)||0,y:t.y+(e&&e.y)||0}}),{x:0,y:0})}));i=e.getHighLow([u],t,t.horizontalBars?"x":"y")}else i=e.getHighLow(r.normalized.series,t,t.horizontalBars?"x":"y");i.high=+t.high||(0===t.high?0:i.high),i.low=+t.low||(0===t.low?0:i.low);var l,c,f,h,d,p=e.createChartRect(this.svg,t,n.padding);c=t.distributeSeries&&t.stackBars?r.normalized.labels.slice(0,1):r.normalized.labels,t.horizontalBars?(l=h=void 0===t.axisX.type?new e.AutoScaleAxis(e.Axis.units.x,r.normalized.series,p,e.extend({},t.axisX,{highLow:i,referenceValue:0})):t.axisX.type.call(e,e.Axis.units.x,r.normalized.series,p,e.extend({},t.axisX,{highLow:i,referenceValue:0})),f=d=void 0===t.axisY.type?new e.StepAxis(e.Axis.units.y,r.normalized.series,p,{ticks:c}):t.axisY.type.call(e,e.Axis.units.y,r.normalized.series,p,t.axisY)):(f=h=void 0===t.axisX.type?new e.StepAxis(e.Axis.units.x,r.normalized.series,p,{ticks:c}):t.axisX.type.call(e,e.Axis.units.x,r.normalized.series,p,t.axisX),l=d=void 0===t.axisY.type?new e.AutoScaleAxis(e.Axis.units.y,r.normalized.series,p,e.extend({},t.axisY,{highLow:i,referenceValue:0})):t.axisY.type.call(e,e.Axis.units.y,r.normalized.series,p,e.extend({},t.axisY,{highLow:i,referenceValue:0})));var v=t.horizontalBars?p.x1+l.projectValue(0):p.y1-l.projectValue(0),m=[];f.createGridAndLabels(o,s,this.supportsForeignObject,t,this.eventEmitter),l.createGridAndLabels(o,s,this.supportsForeignObject,t,this.eventEmitter),t.showGridBackground&&e.createGridBackground(o,p,t.classNames.gridBackground,this.eventEmitter),r.raw.series.forEach(function(n,i){var o,s,u=i-(r.raw.series.length-1)/2;o=t.distributeSeries&&!t.stackBars?f.axisLength/r.normalized.series.length/2:t.distributeSeries&&t.stackBars?f.axisLength/2:f.axisLength/r.normalized.series[i].length/2,(s=a.elem("g")).attr({"ct:series-name":n.name,"ct:meta":e.serialize(n.meta)}),s.addClass([t.classNames.series,n.className||t.classNames.series+"-"+e.alphaNumerate(i)].join(" ")),r.normalized.series[i].forEach(function(a,c){var y,g,b,x;if(x=t.distributeSeries&&!t.stackBars?i:t.distributeSeries&&t.stackBars?0:c,y=t.horizontalBars?{x:p.x1+l.projectValue(a&&a.x?a.x:0,c,r.normalized.series[i]),y:p.y1-f.projectValue(a&&a.y?a.y:0,x,r.normalized.series[i])}:{x:p.x1+f.projectValue(a&&a.x?a.x:0,x,r.normalized.series[i]),y:p.y1-l.projectValue(a&&a.y?a.y:0,c,r.normalized.series[i])},f instanceof e.StepAxis&&(f.options.stretch||(y[f.units.pos]+=o*(t.horizontalBars?-1:1)),y[f.units.pos]+=t.stackBars||t.distributeSeries?0:u*t.seriesBarDistance*(t.horizontalBars?-1:1)),b=m[c]||v,m[c]=b-(v-y[f.counterUnits.pos]),void 0!==a){var w={};w[f.units.pos+"1"]=y[f.units.pos],w[f.units.pos+"2"]=y[f.units.pos],!t.stackBars||"accumulate"!==t.stackMode&&t.stackMode?(w[f.counterUnits.pos+"1"]=v,w[f.counterUnits.pos+"2"]=y[f.counterUnits.pos]):(w[f.counterUnits.pos+"1"]=b,w[f.counterUnits.pos+"2"]=m[c]),w.x1=Math.min(Math.max(w.x1,p.x1),p.x2),w.x2=Math.min(Math.max(w.x2,p.x1),p.x2),w.y1=Math.min(Math.max(w.y1,p.y2),p.y1),w.y2=Math.min(Math.max(w.y2,p.y2),p.y1);var k=e.getMetaData(n,c);g=s.elem("line",w,t.classNames.bar).attr({"ct:value":[a.x,a.y].filter(e.isNumeric).join(","),"ct:meta":e.serialize(k)}),this.eventEmitter.emit("draw",e.extend({type:"bar",value:a,index:c,meta:k,series:n,seriesIndex:i,axisX:h,axisY:d,chartRect:p,group:s,element:g},w))}}.bind(this))}.bind(this)),this.eventEmitter.emit("created",{bounds:l.bounds,chartRect:p,axisX:h,axisY:d,svg:this.svg,options:t})}function i(t,r,i,o){e.Bar.super.constructor.call(this,t,r,n,e.extend({},n,i),o)}e.Bar=e.Base.extend({constructor:i,createChart:r})}(this||n.g,t),function(t,e){"use strict";t.window,t.document;var n={width:void 0,height:void 0,chartPadding:5,classNames:{chartPie:"ct-chart-pie",chartDonut:"ct-chart-donut",series:"ct-series",slicePie:"ct-slice-pie",sliceDonut:"ct-slice-donut",sliceDonutSolid:"ct-slice-donut-solid",label:"ct-label"},startAngle:0,total:void 0,donut:!1,donutSolid:!1,donutWidth:60,showLabel:!0,labelOffset:0,labelPosition:"inside",labelInterpolationFnc:e.noop,labelDirection:"neutral",reverseData:!1,ignoreEmptyValues:!1};function r(t,e,n){var r=e.x>t.x;return r&&"explode"===n||!r&&"implode"===n?"start":r&&"implode"===n||!r&&"explode"===n?"end":"middle"}function i(t){var i,o,a,s,u,l=e.normalizeData(this.data),c=[],f=t.startAngle;this.svg=e.createSvg(this.container,t.width,t.height,t.donut?t.classNames.chartDonut:t.classNames.chartPie),o=e.createChartRect(this.svg,t,n.padding),a=Math.min(o.width()/2,o.height()/2),u=t.total||l.normalized.series.reduce((function(t,e){return t+e}),0);var h=e.quantity(t.donutWidth);"%"===h.unit&&(h.value*=a/100),a-=t.donut&&!t.donutSolid?h.value/2:0,s="outside"===t.labelPosition||t.donut&&!t.donutSolid?a:"center"===t.labelPosition?0:t.donutSolid?a-h.value/2:a/2,s+=t.labelOffset;var d={x:o.x1+o.width()/2,y:o.y2+o.height()/2},p=1===l.raw.series.filter((function(t){return t.hasOwnProperty("value")?0!==t.value:0!==t})).length;l.raw.series.forEach(function(t,e){c[e]=this.svg.elem("g",null,null)}.bind(this)),t.showLabel&&(i=this.svg.elem("g",null,null)),l.raw.series.forEach(function(n,o){if(0!==l.normalized.series[o]||!t.ignoreEmptyValues){c[o].attr({"ct:series-name":n.name}),c[o].addClass([t.classNames.series,n.className||t.classNames.series+"-"+e.alphaNumerate(o)].join(" "));var v=u>0?f+l.normalized.series[o]/u*360:0,m=Math.max(0,f-(0===o||p?0:.2));v-m>=359.99&&(v=m+359.99);var y,g,b,x=e.polarToCartesian(d.x,d.y,a,m),w=e.polarToCartesian(d.x,d.y,a,v),k=new e.Svg.Path(!t.donut||t.donutSolid).move(w.x,w.y).arc(a,a,0,v-f>180,0,x.x,x.y);t.donut?t.donutSolid&&(b=a-h.value,y=e.polarToCartesian(d.x,d.y,b,f-(0===o||p?0:.2)),g=e.polarToCartesian(d.x,d.y,b,v),k.line(y.x,y.y),k.arc(b,b,0,v-f>180,1,g.x,g.y)):k.line(d.x,d.y);var S=t.classNames.slicePie;t.donut&&(S=t.classNames.sliceDonut,t.donutSolid&&(S=t.classNames.sliceDonutSolid));var E=c[o].elem("path",{d:k.stringify()},S);if(E.attr({"ct:value":l.normalized.series[o],"ct:meta":e.serialize(n.meta)}),t.donut&&!t.donutSolid&&(E._node.style.strokeWidth=h.value+"px"),this.eventEmitter.emit("draw",{type:"slice",value:l.normalized.series[o],totalDataSum:u,index:o,meta:n.meta,series:n,group:c[o],element:E,path:k.clone(),center:d,radius:a,startAngle:f,endAngle:v}),t.showLabel){var A,L;A=1===l.raw.series.length?{x:d.x,y:d.y}:e.polarToCartesian(d.x,d.y,s,f+(v-f)/2),L=l.normalized.labels&&!e.isFalseyButZero(l.normalized.labels[o])?l.normalized.labels[o]:l.normalized.series[o];var O=t.labelInterpolationFnc(L,o);if(O||0===O){var T=i.elem("text",{dx:A.x,dy:A.y,"text-anchor":r(d,A,t.labelDirection)},t.classNames.label).text(""+O);this.eventEmitter.emit("draw",{type:"label",index:o,group:i,element:T,text:""+O,x:A.x,y:A.y})}}f=v}}.bind(this)),this.eventEmitter.emit("created",{chartRect:o,svg:this.svg,options:t})}function o(t,r,i,o){e.Pie.super.constructor.call(this,t,r,n,e.extend({},n,i),o)}e.Pie=e.Base.extend({constructor:o,createChart:i,determineAnchorPosition:r})}(this||n.g,t),t}()}.apply(e,[]))||(t.exports=r)},5093:function(t,e,n){var r=n(3241);t.exports=r},8816:function(t,e,n){var r=n(3579);t.exports=r},3816:function(t,e,n){var r=n(8801);t.exports=r},201:function(t,e,n){var r=n(3399);t.exports=r},3440:function(t,e,n){var r=n(6553);t.exports=r},1164:function(t,e,n){var r=n(6845);t.exports=r},3862:function(t,e,n){var r=n(8044);t.exports=r},704:function(t,e,n){var r=n(5022);t.exports=r},4145:function(t,e,n){var r=n(1997);t.exports=r},5903:function(t,e,n){var r=n(8430);t.exports=r},3435:function(t,e,n){var r=n(1092);t.exports=r},645:function(t,e,n){var r=n(3194);t.exports=r},2011:function(t,e,n){var r=n(5227);t.exports=r},7960:function(t,e,n){var r=n(2556);t.exports=r},640:function(t,e,n){var r=n(1024);t.exports=r},1404:function(t,e,n){var r=n(1483);t.exports=r},8657:function(t,e,n){var r=n(4809);t.exports=r},9831:function(t,e,n){n(2496),n(9419);var r=n(6035);t.exports=r.Array.from},8187:function(t,e,n){n(5815);var r=n(6035);t.exports=r.Array.isArray},9147:function(t,e,n){n(1402);var r=n(638);t.exports=r("Array").concat},3842:function(t,e,n){n(2386);var r=n(638);t.exports=r("Array").filter},2166:function(t,e,n){n(5057);var r=n(638);t.exports=r("Array").find},566:function(t,e,n){n(9346);var r=n(638);t.exports=r("Array").indexOf},2688:function(t,e,n){n(9778);var r=n(638);t.exports=r("Array").map},7586:function(t,e,n){n(791);var r=n(638);t.exports=r("Array").slice},8868:function(t,e,n){n(4985);var r=n(638);t.exports=r("Array").sort},4063:function(t,e,n){n(3374);var r=n(638);t.exports=r("Array").splice},1495:function(t,e,n){n(1875);var r=n(638);t.exports=r("Function").bind},4341:function(t,e,n){n(598),n(2496);var r=n(1520);t.exports=r},3249:function(t,e,n){var r=n(397),i=n(1495),o=Function.prototype;t.exports=function(t){var e=t.bind;return t===o||r(o,t)&&e===o.bind?i:e}},2079:function(t,e,n){var r=n(397),i=n(9147),o=Array.prototype;t.exports=function(t){var e=t.concat;return t===o||r(o,t)&&e===o.concat?i:e}},2258:function(t,e,n){var r=n(397),i=n(3842),o=Array.prototype;t.exports=function(t){var e=t.filter;return t===o||r(o,t)&&e===o.filter?i:e}},5294:function(t,e,n){var r=n(397),i=n(2166),o=Array.prototype;t.exports=function(t){var e=t.find;return t===o||r(o,t)&&e===o.find?i:e}},7076:function(t,e,n){var r=n(397),i=n(566),o=Array.prototype;t.exports=function(t){var e=t.indexOf;return t===o||r(o,t)&&e===o.indexOf?i:e}},3692:function(t,e,n){var r=n(397),i=n(2688),o=Array.prototype;t.exports=function(t){var e=t.map;return t===o||r(o,t)&&e===o.map?i:e}},4485:function(t,e,n){var r=n(397),i=n(7586),o=Array.prototype;t.exports=function(t){var e=t.slice;return t===o||r(o,t)&&e===o.slice?i:e}},633:function(t,e,n){var r=n(397),i=n(8868),o=Array.prototype;t.exports=function(t){var e=t.sort;return t===o||r(o,t)&&e===o.sort?i:e}},3095:function(t,e,n){var r=n(397),i=n(4063),o=Array.prototype;t.exports=function(t){var e=t.splice;return t===o||r(o,t)&&e===o.splice?i:e}},1599:function(t,e,n){var r=n(397),i=n(8734),o=String.prototype;t.exports=function(t){var e=t.trim;return"string"==typeof t||t===o||r(o,t)&&e===o.trim?i:e}},3658:function(t,e,n){n(4802);var r=n(6035),i=n(8505);r.JSON||(r.JSON={stringify:JSON.stringify}),t.exports=function(t,e,n){return i(r.JSON.stringify,null,arguments)}},1523:function(t,e,n){n(598),n(8453),n(5345),n(2496);var r=n(6035);t.exports=r.Map},9490:function(t,e,n){n(9588);var r=n(6035);t.exports=r.Math.trunc},7854:function(t,e,n){n(2458),t.exports=Math.pow(2,-52)},2852:function(t,e,n){n(8854);var r=n(6035);t.exports=r.Number.isSafeInteger},3192:function(t,e,n){n(4851);var r=n(6035).Object;t.exports=function(t,e){return r.create(t,e)}},2807:function(t,e,n){n(4137);var r=n(6035).Object,i=t.exports=function(t,e,n){return r.defineProperty(t,e,n)};r.defineProperty.sham&&(i.sham=!0)},4180:function(t,e,n){n(9817);var r=n(6035);t.exports=r.Object.entries},9739:function(t,e,n){n(6467);var r=n(6035).Object,i=t.exports=function(t,e){return r.getOwnPropertyDescriptor(t,e)};r.getOwnPropertyDescriptor.sham&&(i.sham=!0)},5759:function(t,e,n){n(5465);var r=n(6035);t.exports=r.Object.getPrototypeOf},5553:function(t,e,n){n(4933);var r=n(6035);t.exports=r.Object.keys},7866:function(t,e,n){n(6592);var r=n(6035);t.exports=r.Object.setPrototypeOf},7647:function(t,e,n){n(4233),n(598),n(5345),n(357),n(9891),n(1323),n(9393),n(2496);var r=n(6035);t.exports=r.Promise},700:function(t,e,n){n(5801);var r=n(6035);t.exports=r.Reflect.construct},836:function(t,e,n){n(2879);var r=n(6035);t.exports=r.Reflect.get},5293:function(t,e,n){n(598),n(5345),n(4046),n(2496);var r=n(6035);t.exports=r.Set},8734:function(t,e,n){n(5753);var r=n(638);t.exports=r("String").trim},9211:function(t,e,n){n(1402),n(5345),n(6713),n(1160),n(3902),n(8353),n(8186),n(7059),n(6398),n(8578),n(3318),n(9544),n(2125),n(6121),n(7223),n(5737),n(5948),n(3837),n(3397),n(9297);var r=n(6035);t.exports=r.Symbol},9647:function(t,e,n){n(598),n(5345),n(2496),n(7059);var r=n(7905);t.exports=r.f("iterator")},1665:function(t,e,n){var r=n(5093);t.exports=r},8173:function(t,e,n){var r=n(8816);t.exports=r},263:function(t,e,n){var r=n(3816);t.exports=r},6017:function(t,e,n){var r=n(201);t.exports=r},8945:function(t,e,n){var r=n(3440);t.exports=r},830:function(t,e,n){var r=n(1164);t.exports=r},8993:function(t,e,n){var r=n(3862);n(7009),n(8104),n(3279),n(1189),n(8180),n(1121),n(7879),n(5336),n(5677),n(3285),n(6272),n(2647),n(8796),n(6857),n(2645),n(9639),n(3357),n(5653),n(4694),n(671),t.exports=r},688:function(t,e,n){var r=n(704);t.exports=r},1422:function(t,e,n){var r=n(4145);t.exports=r},9259:function(t,e,n){var r=n(5903);t.exports=r},8327:function(t,e,n){var r=n(3435);t.exports=r},6438:function(t,e,n){var r=n(645);t.exports=r},5365:function(t,e,n){var r=n(2011);n(4024),n(9389),n(1898),n(9975),t.exports=r},4338:function(t,e,n){var r=n(7960);t.exports=r},2538:function(t,e,n){var r=n(640);t.exports=r},499:function(t,e,n){var r=n(1404);n(1634),n(8251),n(4461),n(1482),n(5777),n(9181),n(8472),t.exports=r},488:function(t,e,n){var r=n(8657);t.exports=r},1759:function(t,e,n){var r=n(4569),i=n(6889),o=n(4877),a=r.TypeError;t.exports=function(t){if(i(t))return t;throw a(o(t)+" is not a function")}},5344:function(t,e,n){var r=n(4569),i=n(5179),o=n(4877),a=r.TypeError;t.exports=function(t){if(i(t))return t;throw a(o(t)+" is not a constructor")}},2605:function(t,e,n){function r(t){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var i=n(4569),o=n(6889),a=i.String,s=i.TypeError;t.exports=function(t){if("object"==r(t)||o(t))return t;throw s("Can't set "+a(t)+" as a prototype")}},8695:function(t){t.exports=function(){}},9730:function(t,e,n){var r=n(4569),i=n(397),o=r.TypeError;t.exports=function(t,e){if(i(e,t))return t;throw o("Incorrect invocation")}},6879:function(t,e,n){var r=n(4569),i=n(9574),o=r.String,a=r.TypeError;t.exports=function(t){if(i(t))return t;throw a(o(t)+" is not an object")}},9508:function(t,e,n){var r=n(8790);t.exports=r((function(){if("function"==typeof ArrayBuffer){var t=new ArrayBuffer(8);Object.isExtensible(t)&&Object.defineProperty(t,"a",{value:8})}}))},4769:function(t,e,n){"use strict";var r=n(4569),i=n(490),o=n(5784),a=n(4267),s=n(1905),u=n(7336),l=n(5179),c=n(2077),f=n(592),h=n(7829),d=n(1520),p=r.Array;t.exports=function(t){var e=a(t),n=l(this),r=arguments.length,v=r>1?arguments[1]:void 0,m=void 0!==v;m&&(v=i(v,r>2?arguments[2]:void 0));var y,g,b,x,w,k,S=d(e),E=0;if(!S||this==p&&u(S))for(y=c(e),g=n?new this(y):p(y);y>E;E++)k=m?v(e[E],E):e[E],f(g,E,k);else for(w=(x=h(e,S)).next,g=n?new this:[];!(b=o(w,x)).done;E++)k=m?s(x,v,[b.value,E],!0):b.value,f(g,E,k);return g.length=E,g}},9760:function(t,e,n){var r=n(7816),i=n(2005),o=n(2077),a=function(t){return function(e,n,a){var s,u=r(e),l=o(u),c=i(a,l);if(t&&n!=n){for(;l>c;)if((s=u[c++])!=s)return!0}else for(;l>c;c++)if((t||c in u)&&u[c]===n)return t||c||0;return!t&&-1}};t.exports={includes:a(!0),indexOf:a(!1)}},4496:function(t,e,n){var r=n(490),i=n(5169),o=n(5769),a=n(4267),s=n(2077),u=n(2757),l=i([].push),c=function(t){var e=1==t,n=2==t,i=3==t,c=4==t,f=6==t,h=7==t,d=5==t||f;return function(p,v,m,y){for(var g,b,x=a(p),w=o(x),k=r(v,m),S=s(w),E=0,A=y||u,L=e?A(p,S):n||h?A(p,0):void 0;S>E;E++)if((d||E in w)&&(b=k(g=w[E],E,x),t))if(e)L[E]=b;else if(b)switch(t){case 3:return!0;case 5:return g;case 6:return E;case 2:l(L,g)}else switch(t){case 4:return!1;case 7:l(L,g)}return f?-1:i||c?c:L}};t.exports={forEach:c(0),map:c(1),filter:c(2),some:c(3),every:c(4),find:c(5),findIndex:c(6),filterReject:c(7)}},8555:function(t,e,n){var r=n(8790),i=n(2735),o=n(6952),a=i("species");t.exports=function(t){return o>=51||!r((function(){var e=[];return(e.constructor={})[a]=function(){return{foo:1}},1!==e[t](Boolean).foo}))}},74:function(t,e,n){"use strict";var r=n(8790);t.exports=function(t,e){var n=[][t];return!!n&&r((function(){n.call(null,e||function(){return 1},1)}))}},8937:function(t,e,n){var r=n(4569),i=n(2005),o=n(2077),a=n(592),s=r.Array,u=Math.max;t.exports=function(t,e,n){for(var r=o(t),l=i(e,r),c=i(void 0===n?r:n,r),f=s(u(c-l,0)),h=0;l0;)t[r]=t[--r];r!==o++&&(t[r]=n)}return t},a=function(t,e,n,r){for(var i=e.length,o=n.length,a=0,s=0;a1?arguments[1]:void 0;return a(this),(e=void 0!==h)&&o(h),null==t?new this:(n=[],e?(l=0,c=r(h,f>2?arguments[2]:void 0),s(t,(function(t){i(u,n,c(t,l++))}))):s(t,u,{that:n}),new this(n))}},7743:function(t,e,n){"use strict";var r=n(2599);t.exports=function(){return new this(r(arguments))}},1088:function(t,e,n){"use strict";var r=n(6445).f,i=n(4045),o=n(4675),a=n(490),s=n(9730),u=n(9335),l=n(5329),c=n(6619),f=n(41),h=n(5697).fastKey,d=n(975),p=d.set,v=d.getterFor;t.exports={getConstructor:function(t,e,n,l){var c=t((function(t,r){s(t,d),p(t,{type:e,index:i(null),first:void 0,last:void 0,size:0}),f||(t.size=0),null!=r&&u(r,t[l],{that:t,AS_ENTRIES:n})})),d=c.prototype,m=v(e),y=function(t,e,n){var r,i,o=m(t),a=g(t,e);return a?a.value=n:(o.last=a={index:i=h(e,!0),key:e,value:n,previous:r=o.last,next:void 0,removed:!1},o.first||(o.first=a),r&&(r.next=a),f?o.size++:t.size++,"F"!==i&&(o.index[i]=a)),t},g=function(t,e){var n,r=m(t),i=h(e);if("F"!==i)return r.index[i];for(n=r.first;n;n=n.next)if(n.key==e)return n};return o(d,{clear:function(){for(var t=m(this),e=t.index,n=t.first;n;)n.removed=!0,n.previous&&(n.previous=n.previous.next=void 0),delete e[n.index],n=n.next;t.first=t.last=void 0,f?t.size=0:this.size=0},delete:function(t){var e=this,n=m(e),r=g(e,t);if(r){var i=r.next,o=r.previous;delete n.index[r.index],r.removed=!0,o&&(o.next=i),i&&(i.previous=o),n.first==r&&(n.first=i),n.last==r&&(n.last=o),f?n.size--:e.size--}return!!r},forEach:function(t){for(var e,n=m(this),r=a(t,arguments.length>1?arguments[1]:void 0);e=e?e.next:n.first;)for(r(e.value,e.key,this);e&&e.removed;)e=e.previous},has:function(t){return!!g(this,t)}}),o(d,n?{get:function(t){var e=g(this,t);return e&&e.value},set:function(t,e){return y(this,0===t?0:t,e)}}:{add:function(t){return y(this,t=0===t?0:t,t)}}),f&&r(d,"size",{get:function(){return m(this).size}}),c},setStrong:function(t,e,n){var r=e+" Iterator",i=v(e),o=v(r);l(t,e,(function(t,e){p(this,{type:r,target:t,state:i(t),kind:e,last:void 0})}),(function(){for(var t=o(this),e=t.kind,n=t.last;n&&n.removed;)n=n.previous;return t.target&&(t.last=n=n?n.next:t.state.first)?"keys"==e?{value:n.key,done:!1}:"values"==e?{value:n.value,done:!1}:{value:[n.key,n.value],done:!1}:(t.target=void 0,{value:void 0,done:!0})}),n?"entries":"values",!n,!0),c(e)}}},943:function(t,e,n){"use strict";var r=n(1301),i=n(4569),o=n(5697),a=n(8790),s=n(8444),u=n(9335),l=n(9730),c=n(6889),f=n(9574),h=n(6482),d=n(6445).f,p=n(4496).forEach,v=n(41),m=n(975),y=m.set,g=m.getterFor;t.exports=function(t,e,n){var m,b=-1!==t.indexOf("Map"),x=-1!==t.indexOf("Weak"),w=b?"set":"add",k=i[t],S=k&&k.prototype,E={};if(v&&c(k)&&(x||S.forEach&&!a((function(){(new k).entries().next()})))){var A=(m=e((function(e,n){y(l(e,A),{type:t,collection:new k}),null!=n&&u(n,e[w],{that:e,AS_ENTRIES:b})}))).prototype,L=g(t);p(["add","clear","delete","forEach","get","has","set","keys","values","entries"],(function(t){var e="add"==t||"set"==t;!(t in S)||x&&"clear"==t||s(A,t,(function(n,r){var i=L(this).collection;if(!e&&x&&!f(n))return"get"==t&&void 0;var o=i[t](0===n?0:n,r);return e?this:o}))})),x||d(A,"size",{configurable:!0,get:function(){return L(this).collection.size}})}else m=n.getConstructor(e,t,b,w),o.enable();return h(m,t,!1,!0),E[t]=m,r({global:!0,forced:!0},E),x||n.setStrong(m,t,b),m}},5647:function(t,e,n){var r=n(4037),i=n(4645),o=n(2435),a=n(6445);t.exports=function(t,e,n){for(var s=i(e),u=a.f,l=o.f,c=0;c0&&r[0]<4?1:+(r[0]+r[1])),!i&&a&&(!(r=a.match(/Edge\/(\d+)/))||r[1]>=74)&&(r=a.match(/Chrome\/(\d+)/))&&(i=+r[1]),t.exports=i},1825:function(t,e,n){var r=n(3265).match(/AppleWebKit\/(\d+)\./);t.exports=!!r&&+r[1]},638:function(t,e,n){var r=n(6035);t.exports=function(t){return r[t+"Prototype"]}},667:function(t){t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},792:function(t,e,n){var r=n(8790),i=n(3196);t.exports=!r((function(){var t=Error("a");return!("stack"in t)||(Object.defineProperty(t,"stack",i(1,7)),7!==t.stack)}))},1301:function(t,e,n){"use strict";function r(t){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var i=n(4569),o=n(8505),a=n(5169),s=n(6889),u=n(2435).f,l=n(3730),c=n(6035),f=n(490),h=n(8444),d=n(4037),p=function(t){var e=function e(n,r,i){if(this instanceof e){switch(arguments.length){case 0:return new t;case 1:return new t(n);case 2:return new t(n,r)}return new t(n,r,i)}return o(t,this,arguments)};return e.prototype=t.prototype,e};t.exports=function(t,e){var n,o,v,m,y,g,b,x,w=t.target,k=t.global,S=t.stat,E=t.proto,A=k?i:S?i[w]:(i[w]||{}).prototype,L=k?c:c[w]||h(c,w,{})[w],O=L.prototype;for(v in e)n=!l(k?v:w+(S?".":"#")+v,t.forced)&&A&&d(A,v),y=L[v],n&&(g=t.noTargetGet?(x=u(A,v))&&x.value:A[v]),m=n&&g?g:e[v],n&&r(y)==r(m)||(b=t.bind&&n?f(m,i):t.wrap&&n?p(m):E&&s(m)?a(m):m,(t.sham||m&&m.sham||y&&y.sham)&&h(b,"sham",!0),h(L,v,b),E&&(d(c,o=w+"Prototype")||h(c,o,{}),h(c[o],v,m),t.real&&O&&!O[v]&&h(O,v,m)))}},8790:function(t){t.exports=function(t){try{return!!t()}catch(t){return!0}}},9132:function(t,e,n){var r=n(8790);t.exports=!r((function(){return Object.isExtensible(Object.preventExtensions({}))}))},8505:function(t,e,n){function r(t){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var i=n(519),o=Function.prototype,a=o.apply,s=o.call;t.exports="object"==("undefined"==typeof Reflect?"undefined":r(Reflect))&&Reflect.apply||(i?s.bind(a):function(){return s.apply(a,arguments)})},490:function(t,e,n){var r=n(5169),i=n(1759),o=n(519),a=r(r.bind);t.exports=function(t,e){return i(t),void 0===e?t:o?a(t,e):function(){return t.apply(e,arguments)}}},519:function(t,e,n){var r=n(8790);t.exports=!r((function(){var t=function(){}.bind();return"function"!=typeof t||t.hasOwnProperty("prototype")}))},5024:function(t,e,n){"use strict";var r=n(4569),i=n(5169),o=n(1759),a=n(9574),s=n(4037),u=n(2599),l=n(519),c=r.Function,f=i([].concat),h=i([].join),d={},p=function(t,e,n){if(!s(d,e)){for(var r=[],i=0;ib;b++)if((w=P(t[b]))&&f(y,w))return w;return new m(!1)}i=h(t,g)}for(k=i.next;!(S=a(k,i)).done;){try{w=P(S.value)}catch(t){p(i,"throw",t)}if("object"==r(w)&&w&&f(y,w))return w}return new m(!1)}},9368:function(t,e,n){var r=n(5784),i=n(6879),o=n(9732);t.exports=function(t,e,n){var a,s;i(t);try{if(!(a=o(t,"return"))){if("throw"===e)throw n;return n}a=r(a,t)}catch(t){s=!0,a=t}if("throw"===e)throw n;if(s)throw a;return i(a),n}},3327:function(t,e,n){"use strict";var r,i,o,a=n(8790),s=n(6889),u=n(4045),l=n(6066),c=n(1120),f=n(2735),h=n(1567),d=f("iterator"),p=!1;[].keys&&("next"in(o=[].keys())?(i=l(l(o)))!==Object.prototype&&(r=i):p=!0),null==r||a((function(){var t={};return r[d].call(t)!==t}))?r={}:h&&(r=u(r)),s(r[d])||c(r,d,(function(){return this})),t.exports={IteratorPrototype:r,BUGGY_SAFARI_ITERATORS:p}},8830:function(t){t.exports={}},2077:function(t,e,n){var r=n(1547);t.exports=function(t){return r(t.length)}},9874:function(t,e,n){"use strict";var r=n(5784),i=n(1759),o=n(6879);t.exports=function(t,e){var n=o(this),a=i(n.get),s=i(n.has),u=i(n.set),l=r(s,n,t)&&"update"in e?e.update(r(a,n,t),t,n):e.insert(t,n);return r(u,n,t,l),l}},3268:function(t,e,n){"use strict";var r=n(4569),i=n(5784),o=n(1759),a=n(6889),s=n(6879),u=r.TypeError;t.exports=function(t,e){var n,r=s(this),l=o(r.get),c=o(r.has),f=o(r.set),h=arguments.length>2?arguments[2]:void 0;if(!a(e)&&!a(h))throw u("At least one callback required");return i(c,r,t)?(n=i(l,r,t),a(e)&&(n=e(n),i(f,r,t,n))):a(h)&&(n=h(),i(f,r,t,n)),n}},3853:function(t,e,n){var r,i,o,a,s,u,l,c,f=n(4569),h=n(490),d=n(2435).f,p=n(912).set,v=n(4352),m=n(9391),y=n(122),g=n(478),b=f.MutationObserver||f.WebKitMutationObserver,x=f.document,w=f.process,k=f.Promise,S=d(f,"queueMicrotask"),E=S&&S.value;E||(r=function(){var t,e;for(g&&(t=w.domain)&&t.exit();i;){e=i.fn,i=i.next;try{e()}catch(t){throw i?a():o=void 0,t}}o=void 0,t&&t.enter()},v||g||y||!b||!x?!m&&k&&k.resolve?((l=k.resolve(void 0)).constructor=k,c=h(l.then,l),a=function(){c(r)}):g?a=function(){w.nextTick(r)}:(p=h(p,f),a=function(){p(r)}):(s=!0,u=x.createTextNode(""),new b(r).observe(u,{characterData:!0}),a=function(){u.data=s=!s})),t.exports=E||function(t){var e={fn:t,next:void 0};o&&(o.next=e),i||(i=e,a()),o=e}},6495:function(t,e,n){var r=n(4569);t.exports=r.Promise},7873:function(t,e,n){var r=n(6952),i=n(8790);t.exports=!!Object.getOwnPropertySymbols&&!i((function(){var t=Symbol();return!String(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&&r&&r<41}))},8437:function(t,e,n){var r=n(8790),i=n(2735),o=n(1567),a=i("iterator");t.exports=!r((function(){var t=new URL("b?a=1&b=2&c=3","http://a"),e=t.searchParams,n="";return t.pathname="c%20d",e.forEach((function(t,r){e.delete("b"),n+=r+t})),o&&!t.toJSON||!e.sort||"http://a/c%20d?a=1&c=3"!==t.href||"3"!==e.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!e[a]||"a"!==new URL("https://a@b").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("http://тест").host||"#%D0%B1"!==new URL("http://a#б").hash||"a1c3"!==n||"x"!==new URL("http://x",void 0).host}))},3693:function(t,e,n){var r=n(4569),i=n(6889),o=n(8304),a=r.WeakMap;t.exports=i(a)&&/native code/.test(o(a))},8532:function(t,e,n){"use strict";var r=n(1759),i=function(t){var e,n;this.promise=new t((function(t,r){if(void 0!==e||void 0!==n)throw TypeError("Bad Promise constructor");e=t,n=r})),this.resolve=r(e),this.reject=r(n)};t.exports.f=function(t){return new i(t)}},3475:function(t,e,n){var r=n(3593);t.exports=function(t,e){return void 0===t?arguments.length<2?"":e:r(t)}},4045:function(t,e,n){var r,i=n(6879),o=n(931),a=n(667),s=n(5583),u=n(1140),l=n(2167),c=n(3674),f=c("IE_PROTO"),h=function(){},d=function(t){return"