@@ -5,15 +5,18 @@ import { warn } from "./console.ts";
5
5
6
6
export default class DownloadManager extends ObserverPublisher ( Publisher ) {
7
7
private readonly downloadSelector : HTMLLinkElement ;
8
+ private readonly shareSelector : HTMLLinkElement ;
8
9
private readonly resetSelector : NodeListOf < HTMLElement > ;
9
10
private readonly container : HTMLElement | null ;
10
11
11
12
constructor (
12
13
$downloadElement : HTMLLinkElement ,
14
+ $shareElement : HTMLLinkElement ,
13
15
$resetElement : NodeListOf < HTMLElement > ,
14
16
) {
15
17
super ( ) ;
16
18
this . downloadSelector = $downloadElement ;
19
+ this . shareSelector = $shareElement ;
17
20
this . resetSelector = $resetElement ;
18
21
this . container = $downloadElement . parentElement ;
19
22
@@ -24,6 +27,10 @@ export default class DownloadManager extends ObserverPublisher(Publisher) {
24
27
} ) ;
25
28
return element ;
26
29
} ) ;
30
+
31
+ if ( ! navigator . canShare ( ) ) {
32
+ this . shareSelector . classList . add ( "download--hidden" ) ;
33
+ }
27
34
}
28
35
29
36
update ( publication : Message ) {
@@ -57,6 +64,20 @@ export default class DownloadManager extends ObserverPublisher(Publisher) {
57
64
) ;
58
65
this . downloadSelector . setAttribute ( "download" , this . generateFilename ( ) ) ;
59
66
this . downloadSelector . setAttribute ( "href" , dataURL ) ;
67
+
68
+ if ( navigator . canShare ( ) ) {
69
+ this . shareSelector . addEventListener ( "click" , ( event ) => {
70
+ event . preventDefault ( ) ;
71
+ navigator . share ( {
72
+ title : "See my photo with the embedded map" ,
73
+ files : [
74
+ new File ( [ dataURL ] , this . generateFilename ( ) , {
75
+ type : "image/jpeg" ,
76
+ } ) ,
77
+ ] ,
78
+ } ) ;
79
+ } ) ;
80
+ }
60
81
}
61
82
62
83
hide ( ) {
0 commit comments