1
1
import { D , F , y , b as s } from "../index.f66dda46.js" ;
2
- var isServerSide = "undefined" == typeof document , META = "M" , TITLE = "T" , LINK = "L" , TEMPLATE = "P" , SCRIPT = "S" , applyTitleTemplate = function ( title , template ) {
2
+ var lang , linkQueue , scriptQueue , titleQueue , titleTemplateQueue , metaQueue , currentTitleIndex , currentTitleTemplateIndex , currentMetaIndex , timeout , processQueue , isServerSide = "undefined" == typeof document , applyTitleTemplate = function ( title , template ) {
3
3
return template ? template . replace ( / % s / g, title || "" ) : title ;
4
4
} , changeOrCreateMetaTag = function ( meta ) {
5
5
var result = document . head . querySelectorAll ( meta . charset ? "meta[" + meta . keyword + "]" : "meta[" + meta . keyword + '="' + meta [ meta . keyword ] + '"]' ) ;
@@ -8,70 +8,67 @@ var isServerSide = "undefined" == typeof document, META = "M", TITLE = "T", LINK
8
8
var metaTag = document . createElement ( "meta" ) ;
9
9
meta . charset ? metaTag . setAttribute ( meta . keyword , meta . charset ) : ( metaTag . setAttribute ( meta . keyword , meta [ meta . keyword ] ) , metaTag . setAttribute ( "content" , meta . content ) ) , document . head . appendChild ( metaTag ) ;
10
10
}
11
- } , createDispatcher = function ( ) {
12
- var timeout , lang , linkQueue = [ ] , scriptQueue = [ ] , titleQueue = [ ] , titleTemplateQueue = [ ] , metaQueue = [ ] , currentTitleIndex = 0 , currentTitleTemplateIndex = 0 , currentMetaIndex = 0 , processQueue = function ( ) {
13
- clearTimeout ( timeout ) , timeout = setTimeout ( function ( ) {
14
- timeout = null ;
15
- var visited = new Set ( ) ;
16
- document . title = applyTitleTemplate ( titleQueue [ 0 ] , titleTemplateQueue [ 0 ] ) , metaQueue . forEach ( function ( meta ) {
17
- visited . has ( meta . charset ? meta . keyword : meta [ meta . keyword ] ) || ( visited . add ( meta . charset ? meta . keyword : meta [ meta . keyword ] ) , changeOrCreateMetaTag ( meta ) ) ;
18
- } ) , currentTitleIndex = currentTitleTemplateIndex = currentMetaIndex = 0 ;
19
- } , 1000 / 60 ) ;
20
- } ;
21
- return {
22
- _setLang : function ( l ) {
23
- lang = l ;
24
- } ,
25
- _addToQueue : function ( type , payload ) {
26
- isServerSide || processQueue ( ) , type === SCRIPT ? scriptQueue . push ( payload ) : type === TITLE ? titleQueue . splice ( currentTitleIndex ++ , 0 , payload ) : type === TEMPLATE ? titleTemplateQueue . splice ( currentTitleTemplateIndex ++ , 0 , payload ) : type === META ? metaQueue . splice ( currentMetaIndex ++ , 0 , payload ) : linkQueue . push ( payload ) ;
27
- } ,
28
- _removeFromQueue : function ( type , payload ) {
29
- if ( type === TITLE || type === TEMPLATE ) {
30
- var queue = type === TEMPLATE ? titleTemplateQueue : titleQueue , index = queue . indexOf ( payload ) ;
31
- queue . splice ( index , 1 ) , 0 === index && ( document . title = applyTitleTemplate ( titleQueue [ 0 ] || "" , titleTemplateQueue [ 0 ] ) ) ;
32
- } else {
33
- var oldMeta = metaQueue [ metaQueue . indexOf ( payload ) ] ;
34
- if ( oldMeta ) {
35
- metaQueue . splice ( metaQueue . indexOf ( payload ) , 1 ) ;
36
- var newMeta = metaQueue . find ( function ( m ) {
37
- return m . keyword === oldMeta . keyword && ( m . charset || m [ m . keyword ] === oldMeta [ m . keyword ] ) ;
38
- } ) ;
39
- if ( newMeta ) changeOrCreateMetaTag ( newMeta ) ;
40
- else {
41
- var result = document . head . querySelectorAll ( oldMeta . charset ? "meta[" + oldMeta . keyword + "]" : "meta[" + oldMeta . keyword + '="' + oldMeta [ oldMeta . keyword ] + '"]' ) ;
42
- document . head . removeChild ( result [ 0 ] ) ;
43
- }
11
+ } , defaultDispatcher = ( linkQueue = [ ] , scriptQueue = [ ] , titleQueue = [ ] , titleTemplateQueue = [ ] , metaQueue = [ ] , currentTitleIndex = 0 , currentTitleTemplateIndex = 0 , currentMetaIndex = 0 , processQueue = function ( ) {
12
+ clearTimeout ( timeout ) , timeout = setTimeout ( function ( ) {
13
+ timeout = null ;
14
+ var visited = new Set ( ) ;
15
+ document . title = applyTitleTemplate ( titleQueue [ 0 ] , titleTemplateQueue [ 0 ] ) , metaQueue . forEach ( function ( meta ) {
16
+ visited . has ( meta . charset ? meta . keyword : meta [ meta . keyword ] ) || ( visited . add ( meta . charset ? meta . keyword : meta [ meta . keyword ] ) , changeOrCreateMetaTag ( meta ) ) ;
17
+ } ) , currentTitleIndex = currentTitleTemplateIndex = currentMetaIndex = 0 ;
18
+ } , 1000 / 60 ) ;
19
+ } , {
20
+ _setLang : function ( l ) {
21
+ lang = l ;
22
+ } ,
23
+ _addToQueue : function ( type , payload ) {
24
+ isServerSide || processQueue ( ) , "S" === type ? scriptQueue . push ( payload ) : "T" === type ? titleQueue . splice ( currentTitleIndex ++ , 0 , payload ) : "P" === type ? titleTemplateQueue . splice ( currentTitleTemplateIndex ++ , 0 , payload ) : "M" === type ? metaQueue . splice ( currentMetaIndex ++ , 0 , payload ) : linkQueue . push ( payload ) ;
25
+ } ,
26
+ _removeFromQueue : function ( type , payload ) {
27
+ if ( "T" === type || "P" === type ) {
28
+ var queue = "P" === type ? titleTemplateQueue : titleQueue , index = queue . indexOf ( payload ) ;
29
+ queue . splice ( index , 1 ) , 0 === index && ( document . title = applyTitleTemplate ( titleQueue [ 0 ] || "" , titleTemplateQueue [ 0 ] ) ) ;
30
+ } else {
31
+ var oldMeta = metaQueue [ metaQueue . indexOf ( payload ) ] ;
32
+ if ( oldMeta ) {
33
+ metaQueue . splice ( metaQueue . indexOf ( payload ) , 1 ) ;
34
+ var newMeta = metaQueue . find ( function ( m ) {
35
+ return m . keyword === oldMeta . keyword && ( m . charset || m [ m . keyword ] === oldMeta [ m . keyword ] ) ;
36
+ } ) ;
37
+ if ( newMeta ) changeOrCreateMetaTag ( newMeta ) ;
38
+ else {
39
+ var result = document . head . querySelectorAll ( oldMeta . charset ? "meta[" + oldMeta . keyword + "]" : "meta[" + oldMeta . keyword + '="' + oldMeta [ oldMeta . keyword ] + '"]' ) ;
40
+ document . head . removeChild ( result [ 0 ] ) ;
44
41
}
45
42
}
46
- } ,
47
- _change : function ( type , prevPayload , payload ) {
48
- if ( type === TITLE || type === TEMPLATE ) {
49
- var queue = type === TEMPLATE ? titleTemplateQueue : titleQueue ;
50
- queue [ queue . indexOf ( prevPayload ) ] = payload , 0 === queue . indexOf ( payload ) && ( document . title = applyTitleTemplate ( queue [ queue . indexOf ( payload ) ] , titleTemplateQueue [ 0 ] ) ) ;
51
- } else changeOrCreateMetaTag ( metaQueue [ metaQueue . indexOf ( prevPayload ) ] = payload ) ;
52
- } ,
53
- _reset : void 0 ,
54
- toStatic : function ( ) {
55
- var title = applyTitleTemplate ( titleQueue [ titleQueue . length - 1 ] , titleTemplateQueue [ titleTemplateQueue . length - 1 ] ) , visited = new Set ( ) , links = [ ] . concat ( linkQueue ) , scripts = [ ] . concat ( scriptQueue ) ;
56
- metaQueue . reverse ( ) ;
57
- var metas = [ ] . concat ( metaQueue ) . filter ( function ( meta ) {
58
- if ( ! visited . has ( meta . charset ? meta . keyword : meta [ meta . keyword ] ) ) return visited . add ( meta . charset ? meta . keyword : meta [ meta . keyword ] ) , ! 0 ;
59
- } ) ;
60
- return titleQueue = [ ] , titleTemplateQueue = [ ] , metaQueue = [ ] , linkQueue = [ ] , scriptQueue = [ ] , currentTitleIndex = currentTitleTemplateIndex = currentMetaIndex = 0 , {
61
- lang : lang ,
62
- title : title ,
63
- links : links ,
64
- scripts : scripts ,
65
- metas : metas . map ( function ( meta ) {
66
- var _ref ;
67
- return "charset" === meta . keyword ? {
68
- charset : meta [ meta . keyword ]
69
- } : ( ( _ref = { } ) [ meta . keyword ] = meta [ meta . keyword ] , _ref . content = meta . content , _ref ) ;
70
- } )
71
- } ;
72
43
}
73
- } ;
74
- } , defaultDispatcher = createDispatcher ( ) , DispatcherContext = D ( defaultDispatcher ) , useLang = function ( language ) {
44
+ } ,
45
+ _change : function ( type , prevPayload , payload ) {
46
+ if ( "T" === type || "P" === type ) {
47
+ var queue = "P" === type ? titleTemplateQueue : titleQueue ;
48
+ queue [ queue . indexOf ( prevPayload ) ] = payload , 0 === queue . indexOf ( payload ) && ( document . title = applyTitleTemplate ( queue [ queue . indexOf ( payload ) ] , titleTemplateQueue [ 0 ] ) ) ;
49
+ } else changeOrCreateMetaTag ( metaQueue [ metaQueue . indexOf ( prevPayload ) ] = payload ) ;
50
+ } ,
51
+ _reset : void 0 ,
52
+ toStatic : function ( ) {
53
+ var title = applyTitleTemplate ( titleQueue [ titleQueue . length - 1 ] , titleTemplateQueue [ titleTemplateQueue . length - 1 ] ) , visited = new Set ( ) , links = [ ] . concat ( linkQueue ) , scripts = [ ] . concat ( scriptQueue ) ;
54
+ metaQueue . reverse ( ) ;
55
+ var metas = [ ] . concat ( metaQueue ) . filter ( function ( meta ) {
56
+ if ( ! visited . has ( meta . charset ? meta . keyword : meta [ meta . keyword ] ) ) return visited . add ( meta . charset ? meta . keyword : meta [ meta . keyword ] ) , ! 0 ;
57
+ } ) ;
58
+ return titleQueue = [ ] , titleTemplateQueue = [ ] , metaQueue = [ ] , linkQueue = [ ] , scriptQueue = [ ] , currentTitleIndex = currentTitleTemplateIndex = currentMetaIndex = 0 , {
59
+ lang : lang ,
60
+ title : title ,
61
+ links : links ,
62
+ scripts : scripts ,
63
+ metas : metas . map ( function ( meta ) {
64
+ var _ref ;
65
+ return "charset" === meta . keyword ? {
66
+ charset : meta [ meta . keyword ]
67
+ } : ( ( _ref = { } ) [ meta . keyword ] = meta [ meta . keyword ] , _ref . content = meta . content , _ref ) ;
68
+ } )
69
+ } ;
70
+ }
71
+ } ) , DispatcherContext = D ( defaultDispatcher ) , useLang = function ( language ) {
75
72
var dispatcher = F ( DispatcherContext ) ;
76
73
isServerSide && dispatcher . _setLang ( language ) , y ( function ( ) {
77
74
document . getElementsByTagName ( "html" ) [ 0 ] . setAttribute ( "lang" , language ) ;
@@ -80,7 +77,7 @@ var isServerSide = "undefined" == typeof document, META = "M", TITLE = "T", LINK
80
77
] ) ;
81
78
} , useLink = function ( options ) {
82
79
var dispatcher = F ( DispatcherContext ) , hasMounted = s ( ! 1 ) , node = s ( ) , originalOptions = s ( ) ;
83
- isServerSide && ! hasMounted . current && dispatcher . _addToQueue ( LINK , options ) , y ( function ( ) {
80
+ isServerSide && ! hasMounted . current && dispatcher . _addToQueue ( "L" , options ) , y ( function ( ) {
84
81
hasMounted . current && Object . keys ( options ) . forEach ( function ( key ) {
85
82
node . current . setAttribute ( key , options [ key ] ) ;
86
83
} ) ;
@@ -108,21 +105,17 @@ var isServerSide = "undefined" == typeof document, META = "M", TITLE = "T", LINK
108
105
} ) : document . head . removeChild ( node . current ) ;
109
106
} ;
110
107
} , [ ] ) ;
111
- } ;
112
- function extractKeyword ( meta ) {
113
- return meta . charset ? "charset" : meta . name ? "name" : meta . property ? "property" : "http-equiv" ;
114
- }
115
- var useMeta = function ( options ) {
108
+ } , useMeta = function ( options ) {
116
109
var dispatcher = F ( DispatcherContext ) , hasMounted = s ( ! 1 ) , keyword = s ( ) , metaObject = s ( {
117
- keyword : keyword . current = extractKeyword ( options ) ,
110
+ keyword : keyword . current = options . charset ? "charset" : options . name ? "name" : options . property ? "property" : "http-equiv" ,
118
111
name : options . name ,
119
112
charset : options . charset ,
120
113
"http-equiv" : options . httpEquiv ,
121
114
property : options . property ,
122
115
content : options . content
123
116
} ) ;
124
- isServerSide && ! hasMounted . current && dispatcher . _addToQueue ( META , metaObject . current ) , y ( function ( ) {
125
- hasMounted . current && dispatcher . _change ( META , metaObject . current , metaObject . current = {
117
+ isServerSide && ! hasMounted . current && dispatcher . _addToQueue ( "M" , metaObject . current ) , y ( function ( ) {
118
+ hasMounted . current && dispatcher . _change ( "M" , metaObject . current , metaObject . current = {
126
119
keyword : keyword . current ,
127
120
name : options . name ,
128
121
charset : options . charset ,
@@ -133,20 +126,20 @@ var useMeta = function(options) {
133
126
} , [
134
127
options . content
135
128
] ) , y ( function ( ) {
136
- return dispatcher . _addToQueue ( META , metaObject . current ) , hasMounted . current = ! 0 , function ( ) {
137
- hasMounted . current = ! 1 , dispatcher . _removeFromQueue ( META , metaObject . current ) ;
129
+ return dispatcher . _addToQueue ( "M" , metaObject . current ) , hasMounted . current = ! 0 , function ( ) {
130
+ hasMounted . current = ! 1 , dispatcher . _removeFromQueue ( "M" , metaObject . current ) ;
138
131
} ;
139
132
} , [ ] ) ;
140
133
} , useTitle = function ( title , template ) {
141
134
var dispatcher = F ( DispatcherContext ) , hasMounted = s ( ! 1 ) , prevTitle = s ( ) ;
142
- isServerSide && ! hasMounted . current && dispatcher . _addToQueue ( template ? TEMPLATE : TITLE , title ) , y ( function ( ) {
143
- hasMounted . current && dispatcher . _change ( template ? TEMPLATE : TITLE , prevTitle . current , prevTitle . current = title ) ;
135
+ isServerSide && ! hasMounted . current && dispatcher . _addToQueue ( template ? "P" : "T" , title ) , y ( function ( ) {
136
+ hasMounted . current && dispatcher . _change ( template ? "P" : "T" , prevTitle . current , prevTitle . current = title ) ;
144
137
} , [
145
138
title ,
146
139
template
147
140
] ) , y ( function ( ) {
148
- return hasMounted . current = ! 0 , dispatcher . _addToQueue ( template ? TEMPLATE : TITLE , prevTitle . current = title ) , function ( ) {
149
- hasMounted . current = ! 1 , dispatcher . _removeFromQueue ( template ? TEMPLATE : TITLE , prevTitle . current ) ;
141
+ return hasMounted . current = ! 0 , dispatcher . _addToQueue ( template ? "P" : "T" , prevTitle . current = title ) , function ( ) {
142
+ hasMounted . current = ! 1 , dispatcher . _removeFromQueue ( template ? "P" : "T" , prevTitle . current ) ;
150
143
} ;
151
144
} , [
152
145
template
0 commit comments