@@ -995,38 +995,49 @@ export class HTMLMapmlViewerElement extends HTMLElement {
995
995
996
996
// less obviously useful: aspect-ratio, orientation, (device) resolution, overflow-block, overflow-inline
997
997
998
+ const map = this ;
998
999
const features = {
999
1000
'prefers-lang' : {
1000
1001
type : 'discrete' ,
1001
- values : [
1002
- ...new Set ( navigator . languages . map ( ( code ) => code . slice ( 0 , 2 ) ) )
1003
- ]
1002
+ get values ( ) {
1003
+ return [
1004
+ ...new Set ( navigator . languages . map ( ( code ) => code . slice ( 0 , 2 ) ) )
1005
+ ] ;
1006
+ }
1004
1007
} ,
1005
1008
'map-projection' : {
1006
1009
type : 'discrete' ,
1007
- values : [ this . projection . toLowerCase ( ) ] // change this in map-projectionchange event handler
1010
+ get values ( ) {
1011
+ return [ map . projection . toLowerCase ( ) ] ; // change this in map-projectionchange event handler
1012
+ }
1008
1013
} ,
1009
1014
'map-zoom' : {
1010
1015
type : 'range' ,
1011
1016
valueType : 'integer' ,
1012
1017
canBeNegative : false ,
1013
1018
canBeZero : true ,
1014
- extraValues : {
1015
- min : 0 ,
1016
- max : this . zoom // change this on map-moveend
1019
+ get extraValues ( ) {
1020
+ return {
1021
+ min : 0 ,
1022
+ max : map . zoom // change this on map-moveend
1023
+ } ;
1017
1024
}
1018
1025
} ,
1019
1026
'prefers-color-scheme' : {
1020
1027
type : 'discrete' ,
1021
- values : [
1022
- window . matchMedia ( '(prefers-color-scheme: dark)' ) . matches
1023
- ? 'dark'
1024
- : 'light'
1025
- ]
1028
+ get values ( ) {
1029
+ return [
1030
+ window . matchMedia ( '(prefers-color-scheme: dark)' ) . matches
1031
+ ? 'dark'
1032
+ : 'light'
1033
+ ] ;
1034
+ }
1026
1035
} ,
1027
1036
'prefers-map-content' : {
1028
1037
type : 'discrete' ,
1029
- values : M . options . contentPreference
1038
+ get values ( ) {
1039
+ return M . options . contentPreference ;
1040
+ }
1030
1041
}
1031
1042
} ;
1032
1043
@@ -1124,12 +1135,7 @@ export class HTMLMapmlViewerElement extends HTMLElement {
1124
1135
} ) ;
1125
1136
1126
1137
const observeProperties = ( ) => {
1127
- const notifyIfChanged = ( mapEvent ) => {
1128
- if ( mapEvent . name === 'map-projectionchange' ) {
1129
- features [ 'map-projection' ] . values = [ this . projection . toLowerCase ( ) ] ;
1130
- } else if ( mapEvent . name === 'map-moveend' ) {
1131
- features [ 'map-zoom' ] . extraValues . max = this . zoom ;
1132
- }
1138
+ const notifyIfChanged = ( ) => {
1133
1139
const newMatches = solveMediaQueryList ( parsedQuery , {
1134
1140
features,
1135
1141
solveUnknownFeature
@@ -1145,11 +1151,16 @@ export class HTMLMapmlViewerElement extends HTMLElement {
1145
1151
// Subscribe to internal events for changes in projection, zoom, and extent
1146
1152
this . addEventListener ( 'map-projectionchange' , notifyIfChanged ) ;
1147
1153
this . addEventListener ( 'map-moveend' , notifyIfChanged ) ;
1154
+ const colorSchemeQuery = window . matchMedia (
1155
+ '(prefers-color-scheme: dark)'
1156
+ ) ;
1157
+ colorSchemeQuery . addEventListener ( 'change' , notifyIfChanged ) ;
1148
1158
1149
1159
// Stop observing function
1150
1160
stopObserving = ( ) => {
1151
1161
this . removeEventListener ( 'map-projectionchange' , notifyIfChanged ) ;
1152
1162
this . removeEventListener ( 'map-moveend' , notifyIfChanged ) ;
1163
+ colorSchemeQuery . removeEventListener ( 'change' , notifyIfChanged ) ;
1153
1164
} ;
1154
1165
} ;
1155
1166
0 commit comments