ghost 4.25.1 → 4.27.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/content/themes/casper/assets/built/screen.css +1 -1
- package/content/themes/casper/assets/built/screen.css.map +1 -1
- package/content/themes/casper/assets/css/screen.css +54 -10
- package/content/themes/casper/package.json +1 -1
- package/core/app.js +8 -4
- package/core/boot.js +50 -23
- package/core/built/assets/{chunk.3.8f95b516d88ff4eec64c.js → chunk.3.e54be01b5124e4e27958.js} +7 -7
- package/core/built/assets/ghost-dark-ae67fe157509b6e82c607ba560fc52e9.css +1 -0
- package/core/built/assets/{ghost.min-3441c3282e390002626a2dc1d7586185.js → ghost.min-2d534cce15c43c646814b26f4beefb78.js} +131 -128
- package/core/built/assets/ghost.min-b1e58e098721e467388682a85a7c187d.css +1 -0
- package/core/built/assets/{vendor.min-6fc912d1248c906f95efad2cb3eebb7d.js → vendor.min-e433aa7d5620e7837f30e170cd43f84e.js} +569 -539
- package/core/frontend/apps/amp/lib/views/amp.hbs +8 -3
- package/core/frontend/helpers/ghost_head.js +1 -1
- package/core/frontend/src/cards/css/audio.css +258 -0
- package/core/frontend/src/cards/css/blockquote.css +13 -19
- package/core/frontend/src/cards/css/product.css +101 -0
- package/core/frontend/src/cards/css/toggle.css +20 -7
- package/core/frontend/src/cards/js/audio.js +147 -0
- package/core/server/notify.js +1 -2
- package/core/server/services/mega/template.js +21 -10
- package/core/server/services/members/api.js +2 -2
- package/core/server/services/members/emails/signup-paid.js +4 -4
- package/core/server/services/nft-oembed.js +1 -1
- package/core/server/services/twitter-embed.js +3 -1
- package/core/server/web/admin/views/default-prod.html +4 -4
- package/core/server/web/admin/views/default.html +4 -4
- package/core/server/web/parent/app.js +2 -22
- package/core/server/web/parent/backend.js +2 -0
- package/core/shared/express.js +1 -1
- package/core/shared/labs.js +6 -5
- package/package.json +16 -16
- package/yarn.lock +229 -326
- package/core/built/assets/ghost-dark-f67240a9636407594be38571c615629c.css +0 -1
- package/core/built/assets/ghost.min-ee5bd95a831378b4c8ccefb37d26eac0.css +0 -1
|
@@ -282,11 +282,12 @@
|
|
|
282
282
|
}
|
|
283
283
|
|
|
284
284
|
.post-content blockquote.kg-blockquote-alt {
|
|
285
|
-
font-size:
|
|
286
|
-
|
|
285
|
+
font-size: 1.2em;
|
|
286
|
+
font-style: italic;
|
|
287
|
+
line-height: 1.6em;
|
|
287
288
|
text-align: center;
|
|
288
289
|
color: #738a94;
|
|
289
|
-
padding:
|
|
290
|
+
padding: 0.75em 3em 1.25em;
|
|
290
291
|
}
|
|
291
292
|
|
|
292
293
|
.post-content blockquote.kg-blockquote-alt::before {
|
|
@@ -625,6 +626,10 @@
|
|
|
625
626
|
color: #fff;
|
|
626
627
|
}
|
|
627
628
|
|
|
629
|
+
.kg-callout-card-accent a {
|
|
630
|
+
color: #fff;
|
|
631
|
+
}
|
|
632
|
+
|
|
628
633
|
.kg-callout-emoji {
|
|
629
634
|
padding-right: 16px;
|
|
630
635
|
line-height: 1.3;
|
|
@@ -199,7 +199,7 @@ module.exports = function ghost_head(options) { // eslint-disable-line camelcase
|
|
|
199
199
|
|
|
200
200
|
// @TODO do this in a more "frameworky" way
|
|
201
201
|
if (cardAssetService.hasFile('js')) {
|
|
202
|
-
head.push(`<script
|
|
202
|
+
head.push(`<script defer src="${getAssetUrl('public/cards.min.js')}"></script>`);
|
|
203
203
|
}
|
|
204
204
|
if (cardAssetService.hasFile('css')) {
|
|
205
205
|
head.push(`<link rel="stylesheet" type="text/css" href="${getAssetUrl('public/cards.min.css')}">`);
|
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
.kg-audio-card {
|
|
2
|
+
display: flex;
|
|
3
|
+
width: 100%;
|
|
4
|
+
min-height: 96px;
|
|
5
|
+
box-shadow: inset 0 0 0 1px rgba(124, 139, 154, 0.25);
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
.kg-audio-thumbnail {
|
|
9
|
+
width: 80px;
|
|
10
|
+
margin: 8px;
|
|
11
|
+
object-fit: cover;
|
|
12
|
+
aspect-ratio: 1/1;
|
|
13
|
+
border-radius: 3px;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.kg-player-container {
|
|
17
|
+
position: relative;
|
|
18
|
+
display: flex;
|
|
19
|
+
flex-direction: column;
|
|
20
|
+
justify-content: space-between;
|
|
21
|
+
width: 100%;
|
|
22
|
+
--seek-before-width: 0%;
|
|
23
|
+
--volume-before-width: 100%;
|
|
24
|
+
--buffered-width: 0%;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.kg-audio-title {
|
|
28
|
+
width: 100%;
|
|
29
|
+
margin: 8px 0 0 0;
|
|
30
|
+
padding: 8px 12px 0;
|
|
31
|
+
border: none;
|
|
32
|
+
font-family: inherit;
|
|
33
|
+
font-size: 1em;
|
|
34
|
+
font-weight: 700;
|
|
35
|
+
background: transparent;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.kg-player {
|
|
39
|
+
display: flex;
|
|
40
|
+
flex-grow: 1;
|
|
41
|
+
align-items: center;
|
|
42
|
+
padding: 8px 12px;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.kg-audio-current-time {
|
|
46
|
+
min-width: 38px;
|
|
47
|
+
padding: 0 4px;
|
|
48
|
+
font-family: inherit;
|
|
49
|
+
font-size: .85em;
|
|
50
|
+
font-weight: 500;
|
|
51
|
+
line-height: 1.4em;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.kg-audio-time {
|
|
55
|
+
color: #ababab;
|
|
56
|
+
font-family: inherit;
|
|
57
|
+
font-size: .85em;
|
|
58
|
+
font-weight: 500;
|
|
59
|
+
line-height: 1.4em;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
.kg-audio-duration {
|
|
63
|
+
padding: 0 4px;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
.kg-audio-play-icon,
|
|
67
|
+
.kg-audio-pause-icon {
|
|
68
|
+
position: relative;
|
|
69
|
+
bottom: 1px;
|
|
70
|
+
padding: 0px 4px 0 0;
|
|
71
|
+
background: transparent;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.kg-audio-hide {
|
|
75
|
+
display: none;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
.kg-audio-play-icon svg,
|
|
79
|
+
.kg-audio-pause-icon svg {
|
|
80
|
+
width: 14px;
|
|
81
|
+
height: 14px;
|
|
82
|
+
fill: currentColor;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
.kg-audio-seek-slider {
|
|
86
|
+
flex-grow: 1;
|
|
87
|
+
margin: 0 4px;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.kg-audio-playback-rate {
|
|
91
|
+
width: 37px;
|
|
92
|
+
padding: 0 4px;
|
|
93
|
+
font-family: inherit;
|
|
94
|
+
font-size: .85em;
|
|
95
|
+
font-weight: 600;
|
|
96
|
+
line-height: 1.4em;
|
|
97
|
+
text-align: left;
|
|
98
|
+
background: transparent;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
.kg-audio-mute-icon,
|
|
102
|
+
.kg-audio-unmute-icon {
|
|
103
|
+
position: relative;
|
|
104
|
+
bottom: 1px;
|
|
105
|
+
padding: 0 4px;
|
|
106
|
+
background: transparent;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
.kg-audio-mute-icon svg,
|
|
110
|
+
.kg-audio-unmute-icon svg {
|
|
111
|
+
width: 16px;
|
|
112
|
+
height: 16px;
|
|
113
|
+
fill: currentColor;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
.kg-audio-volume-slider {
|
|
117
|
+
width: 80px;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
.kg-audio-seek-slider::before {
|
|
121
|
+
content: "";
|
|
122
|
+
position: absolute;
|
|
123
|
+
left: 0;
|
|
124
|
+
width: var(--seek-before-width) !important;
|
|
125
|
+
height: 4px;
|
|
126
|
+
cursor: pointer;
|
|
127
|
+
background-color: currentColor;
|
|
128
|
+
border-radius: 2px;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
.kg-audio-volume-slider::before {
|
|
132
|
+
content: "";
|
|
133
|
+
position: absolute;
|
|
134
|
+
left: 0;
|
|
135
|
+
width: var(--volume-before-width) !important;
|
|
136
|
+
height: 4px;
|
|
137
|
+
cursor: pointer;
|
|
138
|
+
background-color: currentColor;
|
|
139
|
+
border-radius: 2px;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/* Resetting browser styles
|
|
143
|
+
/* --------------------------------------------------------------- */
|
|
144
|
+
|
|
145
|
+
.kg-player-container input[type=range] {
|
|
146
|
+
position: relative;
|
|
147
|
+
-webkit-appearance: none;
|
|
148
|
+
background: transparent;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
.kg-player-container input[type=range]:focus {
|
|
152
|
+
outline: none;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
.kg-player-container input[type=range]::-webkit-slider-thumb {
|
|
156
|
+
-webkit-appearance: none;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
.kg-player-container input[type=range]::-ms-track {
|
|
160
|
+
cursor: pointer;
|
|
161
|
+
border-color: transparent;
|
|
162
|
+
color: transparent;
|
|
163
|
+
background: transparent;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
/* Chrome & Safari styles
|
|
167
|
+
/* --------------------------------------------------------------- */
|
|
168
|
+
|
|
169
|
+
.kg-player-container input[type="range"]::-webkit-slider-runnable-track {
|
|
170
|
+
width: 100%;
|
|
171
|
+
height: 4px;
|
|
172
|
+
cursor: pointer;
|
|
173
|
+
background: rgba(124, 139, 154, 0.25);
|
|
174
|
+
border-radius: 2px;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
.kg-player-container input[type="range"]::-webkit-slider-thumb {
|
|
178
|
+
position: relative;
|
|
179
|
+
box-sizing: content-box;
|
|
180
|
+
width: 12px;
|
|
181
|
+
height: 12px;
|
|
182
|
+
margin: -5px 0 0 0;
|
|
183
|
+
border: 0;
|
|
184
|
+
cursor: pointer;
|
|
185
|
+
background: #fff;
|
|
186
|
+
border-radius: 50%;
|
|
187
|
+
box-shadow: 0 0 0 1px rgba(0,0,0,.08), 0 1px 4px rgba(0,0,0,0.24);
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
.kg-player-container input[type="range"]:active::-webkit-slider-thumb {
|
|
191
|
+
transform: scale(1.2);
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
/* Firefox styles
|
|
195
|
+
/* --------------------------------------------------------------- */
|
|
196
|
+
|
|
197
|
+
.kg-player-container input[type="range"]::-moz-range-track {
|
|
198
|
+
width: 100%;
|
|
199
|
+
height: 4px;
|
|
200
|
+
cursor: pointer;
|
|
201
|
+
background: rgba(124, 139, 154, 0.25);
|
|
202
|
+
border-radius: 2px;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
.kg-player-container input[type="range"]::-moz-range-progress {
|
|
206
|
+
background: currentColor;
|
|
207
|
+
border-radius: 2px;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
.kg-player-container input[type="range"]::-moz-range-thumb {
|
|
211
|
+
box-sizing: content-box;
|
|
212
|
+
width: 12px;
|
|
213
|
+
height: 12px;
|
|
214
|
+
border: 0;
|
|
215
|
+
cursor: pointer;
|
|
216
|
+
background: #fff;
|
|
217
|
+
border-radius: 50%;
|
|
218
|
+
box-shadow: 0 0 0 1px rgba(0,0,0,.08), 0 1px 4px rgba(0,0,0,0.24);
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
.kg-player-container input[type="range"]:active::-moz-range-thumb {
|
|
222
|
+
transform: scale(1.2);
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
/* Edge & IE styles
|
|
226
|
+
/* --------------------------------------------------------------- */
|
|
227
|
+
|
|
228
|
+
.kg-player-container input[type="range"]::-ms-track {
|
|
229
|
+
width: 100%;
|
|
230
|
+
height: 3px;
|
|
231
|
+
border: solid transparent;
|
|
232
|
+
color: transparent;
|
|
233
|
+
cursor: pointer;
|
|
234
|
+
background: transparent;
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
.kg-player-container input[type="range"]::-ms-fill-lower {
|
|
238
|
+
background: #fff;
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
.kg-player-container input[type="range"]::-ms-fill-upper {
|
|
242
|
+
background: currentColor;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
.kg-player-container input[type="range"]::-ms-thumb {
|
|
246
|
+
box-sizing: content-box;
|
|
247
|
+
width: 12px;
|
|
248
|
+
height: 12px;
|
|
249
|
+
border: 0;
|
|
250
|
+
cursor: pointer;
|
|
251
|
+
background: #fff;
|
|
252
|
+
border-radius: 50%;
|
|
253
|
+
box-shadow: 0 0 0 1px rgba(0,0,0,.08), 0 1px 4px rgba(0,0,0,0.24);
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
.kg-player-container input[type="range"]:active::-ms-thumb {
|
|
257
|
+
transform: scale(1.2);
|
|
258
|
+
}
|
|
@@ -1,29 +1,23 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
font-
|
|
4
|
-
line-height: 1.
|
|
1
|
+
.kg-blockquote-alt {
|
|
2
|
+
font-size: 1.5em;
|
|
3
|
+
font-style: italic;
|
|
4
|
+
line-height: 1.7em;
|
|
5
5
|
text-align: center;
|
|
6
|
-
|
|
7
|
-
padding: 1rem 8rem 1.5rem;
|
|
8
|
-
border: 0 none;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
blockquote.kg-blockquote-alt::before {
|
|
12
|
-
display: none;
|
|
6
|
+
padding: 0 2.5em;
|
|
13
7
|
}
|
|
14
8
|
|
|
15
9
|
@media (max-width: 800px) {
|
|
16
|
-
|
|
17
|
-
font-size:
|
|
18
|
-
padding-left:
|
|
19
|
-
padding-right:
|
|
10
|
+
.kg-blockquote-alt {
|
|
11
|
+
font-size: 1.4em;
|
|
12
|
+
padding-left: 2em;
|
|
13
|
+
padding-right: 2em;
|
|
20
14
|
}
|
|
21
15
|
}
|
|
22
16
|
|
|
23
17
|
@media (max-width: 600px) {
|
|
24
|
-
|
|
25
|
-
font-size:
|
|
26
|
-
padding-left:
|
|
27
|
-
padding-right:
|
|
18
|
+
.kg-blockquote-alt {
|
|
19
|
+
font-size: 1.2em;
|
|
20
|
+
padding-left: 1.75em;
|
|
21
|
+
padding-right: 1.75em;
|
|
28
22
|
}
|
|
29
23
|
}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
.kg-product-card-container {
|
|
2
|
+
display: flex;
|
|
3
|
+
background: transparent;
|
|
4
|
+
box-shadow: inset 0 0 0 1px rgb(124 139 154 / 25%);
|
|
5
|
+
border-radius: 5px;
|
|
6
|
+
flex-direction: column;
|
|
7
|
+
text-decoration: none;
|
|
8
|
+
max-width: 550px;
|
|
9
|
+
padding: 20px;
|
|
10
|
+
width: 100%;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.kg-product-card {
|
|
14
|
+
align-items: center;
|
|
15
|
+
display: flex;
|
|
16
|
+
flex-direction: column;
|
|
17
|
+
width: 100%;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.kg-product-card-image {
|
|
21
|
+
margin-bottom: 1.6rem;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.kg-product-card-header {
|
|
25
|
+
display: flex;
|
|
26
|
+
align-items: flex-start;
|
|
27
|
+
gap: 8px;
|
|
28
|
+
flex-wrap: wrap;
|
|
29
|
+
justify-content: space-between;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.kg-product-card-title-container {
|
|
33
|
+
flex: 2 1 250px;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.kg-product-card-title {
|
|
37
|
+
text-decoration: none;
|
|
38
|
+
font-weight: 700;
|
|
39
|
+
font-size: 1.4em;
|
|
40
|
+
margin-top: 0;
|
|
41
|
+
margin-bottom: 0;
|
|
42
|
+
line-height: 1.4em;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.kg-product-card-description {
|
|
46
|
+
font-size: 1em;
|
|
47
|
+
line-height: 1.6em;
|
|
48
|
+
opacity: .7;
|
|
49
|
+
margin-top: 8px;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.kg-product-card-button {
|
|
53
|
+
width: 100%;
|
|
54
|
+
margin-top: 16px;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
.kg-product-card-rating {
|
|
58
|
+
display: flex;
|
|
59
|
+
align-items: center;
|
|
60
|
+
flex: 0 0 100px;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.kg-product-card-rating-star {
|
|
64
|
+
display: flex;
|
|
65
|
+
align-items: center;
|
|
66
|
+
justify-content: center;
|
|
67
|
+
height: 32px;
|
|
68
|
+
width: 20px;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
.kg-product-card-rating-star svg {
|
|
72
|
+
width: 16px;
|
|
73
|
+
height: 16px;
|
|
74
|
+
fill: #fff;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.kg-product-card-rating-edit .kg-product-card-rating-star:hover {
|
|
78
|
+
opacity: 0.7;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
.kg-product-card-rating-edit {
|
|
82
|
+
background: none;
|
|
83
|
+
display: flex;
|
|
84
|
+
align-items: center;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
.kg-product-card-rating-preview {
|
|
88
|
+
display: flex;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
.kg-product-card-rating-star svg {
|
|
92
|
+
fill: #ebeef0;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
.kg-product-card-rating-active.kg-product-card-rating-star svg {
|
|
96
|
+
fill: #394047;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
.kg-product-card-button {
|
|
100
|
+
justify-content: center;
|
|
101
|
+
}
|
|
@@ -1,12 +1,8 @@
|
|
|
1
|
-
.kg-toggle-card
|
|
2
|
-
|
|
3
|
-
opacity: 1;
|
|
4
|
-
transition: opacity 1s ease, top .35s ease;
|
|
5
|
-
top: 0;
|
|
6
|
-
position: relative;
|
|
1
|
+
.kg-toggle-card+.kg-toggle-card {
|
|
2
|
+
margin-top: 1em;
|
|
7
3
|
}
|
|
8
4
|
|
|
9
|
-
.kg-toggle-content
|
|
5
|
+
.kg-toggle-card[data-kg-toggle-state="close"] .kg-toggle-content{
|
|
10
6
|
height: 0;
|
|
11
7
|
overflow: hidden;
|
|
12
8
|
transition: opacity .5s ease, top .35s ease;
|
|
@@ -15,6 +11,14 @@
|
|
|
15
11
|
position: relative;
|
|
16
12
|
}
|
|
17
13
|
|
|
14
|
+
.kg-toggle-content {
|
|
15
|
+
height: auto;
|
|
16
|
+
opacity: 1;
|
|
17
|
+
transition: opacity 1s ease, top .35s ease;
|
|
18
|
+
top: 0;
|
|
19
|
+
position: relative;
|
|
20
|
+
}
|
|
21
|
+
|
|
18
22
|
.kg-toggle-content p:first-of-type {
|
|
19
23
|
margin-top: 0.5em;
|
|
20
24
|
}
|
|
@@ -59,6 +63,15 @@
|
|
|
59
63
|
transform: rotate(-180deg);
|
|
60
64
|
}
|
|
61
65
|
|
|
66
|
+
.kg-toggle-heading path {
|
|
67
|
+
fill: none;
|
|
68
|
+
stroke: currentcolor;
|
|
69
|
+
stroke-linecap: round;
|
|
70
|
+
stroke-linejoin: round;
|
|
71
|
+
stroke-width: 1.5;
|
|
72
|
+
fill-rule: evenodd;
|
|
73
|
+
}
|
|
74
|
+
|
|
62
75
|
.kg-toggle-heading-text {
|
|
63
76
|
margin-top: 0;
|
|
64
77
|
margin-bottom: 0;
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
const handleAudioPlayer = function (audioElementContainer) {
|
|
2
|
+
const audioPlayerContainer = audioElementContainer.querySelector('.kg-player-container');
|
|
3
|
+
const playIconContainer = audioElementContainer.querySelector('.kg-audio-play-icon');
|
|
4
|
+
const pauseIconContainer = audioElementContainer.querySelector('.kg-audio-pause-icon');
|
|
5
|
+
const seekSlider = audioElementContainer.querySelector('.kg-audio-seek-slider');
|
|
6
|
+
const playbackRateContainer = audioElementContainer.querySelector('.kg-audio-playback-rate');
|
|
7
|
+
const muteIconContainer = audioElementContainer.querySelector('.kg-audio-mute-icon');
|
|
8
|
+
const unmuteIconContainer = audioElementContainer.querySelector('.kg-audio-unmute-icon');
|
|
9
|
+
const volumeSlider = audioElementContainer.querySelector('.kg-audio-volume-slider');
|
|
10
|
+
const audio = audioElementContainer.querySelector('audio');
|
|
11
|
+
const durationContainer = audioElementContainer.querySelector('.kg-audio-duration');
|
|
12
|
+
const currentTimeContainer = audioElementContainer.querySelector('.kg-audio-current-time');
|
|
13
|
+
let playbackRates = [{
|
|
14
|
+
rate: 0.75,
|
|
15
|
+
label: '0.7×'
|
|
16
|
+
}, {
|
|
17
|
+
rate: 1.0,
|
|
18
|
+
label: '1×'
|
|
19
|
+
}, {
|
|
20
|
+
rate: 1.25,
|
|
21
|
+
label: '1.2×'
|
|
22
|
+
}, {
|
|
23
|
+
rate: 1.75,
|
|
24
|
+
label: '1.7×'
|
|
25
|
+
}, {
|
|
26
|
+
rate: 2.0,
|
|
27
|
+
label: '2×'
|
|
28
|
+
}];
|
|
29
|
+
|
|
30
|
+
let raf = null;
|
|
31
|
+
let currentPlaybackRateIdx = 1;
|
|
32
|
+
|
|
33
|
+
audio.src = audioElementContainer.getAttribute('data-kg-audio-src');
|
|
34
|
+
|
|
35
|
+
const whilePlaying = () => {
|
|
36
|
+
seekSlider.value = Math.floor(audio.currentTime);
|
|
37
|
+
currentTimeContainer.textContent = calculateTime(seekSlider.value);
|
|
38
|
+
audioPlayerContainer.style.setProperty('--seek-before-width', `${seekSlider.value / seekSlider.max * 100}%`);
|
|
39
|
+
raf = requestAnimationFrame(whilePlaying);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
const showRangeProgress = (rangeInput) => {
|
|
43
|
+
if (rangeInput === seekSlider) {
|
|
44
|
+
audioPlayerContainer.style.setProperty('--seek-before-width', rangeInput.value / rangeInput.max * 100 + '%');
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
audioPlayerContainer.style.setProperty('--volume-before-width', rangeInput.value / rangeInput.max * 100 + '%');
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
const calculateTime = (secs) => {
|
|
52
|
+
const minutes = Math.floor(secs / 60);
|
|
53
|
+
const seconds = Math.floor(secs % 60);
|
|
54
|
+
const returnedSeconds = seconds < 10 ? `0${seconds}` : `${seconds}`;
|
|
55
|
+
return `${minutes}:${returnedSeconds}`;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
const displayDuration = () => {
|
|
59
|
+
durationContainer.textContent = calculateTime(audio.duration);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
const setSliderMax = () => {
|
|
63
|
+
seekSlider.max = Math.floor(audio.duration);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
const displayBufferedAmount = () => {
|
|
67
|
+
if (audio.buffered.length > 0) {
|
|
68
|
+
const bufferedAmount = Math.floor(audio.buffered.end(audio.buffered.length - 1));
|
|
69
|
+
audioPlayerContainer.style.setProperty('--buffered-width', `${(bufferedAmount / seekSlider.max) * 100}%`);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
if (audio.readyState > 0) {
|
|
74
|
+
displayDuration();
|
|
75
|
+
setSliderMax();
|
|
76
|
+
displayBufferedAmount();
|
|
77
|
+
} else {
|
|
78
|
+
audio.addEventListener('loadedmetadata', () => {
|
|
79
|
+
displayDuration();
|
|
80
|
+
setSliderMax();
|
|
81
|
+
displayBufferedAmount();
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
playIconContainer.addEventListener('click', () => {
|
|
86
|
+
playIconContainer.classList.add("kg-audio-hide");
|
|
87
|
+
pauseIconContainer.classList.remove("kg-audio-hide");
|
|
88
|
+
audio.play();
|
|
89
|
+
requestAnimationFrame(whilePlaying);
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
pauseIconContainer.addEventListener('click', () => {
|
|
93
|
+
pauseIconContainer.classList.add("kg-audio-hide");
|
|
94
|
+
playIconContainer.classList.remove("kg-audio-hide");
|
|
95
|
+
audio.pause();
|
|
96
|
+
cancelAnimationFrame(raf);
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
muteIconContainer.addEventListener('click', () => {
|
|
100
|
+
muteIconContainer.classList.add("kg-audio-hide");
|
|
101
|
+
unmuteIconContainer.classList.remove("kg-audio-hide");
|
|
102
|
+
audio.muted = false;
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
unmuteIconContainer.addEventListener('click', () => {
|
|
106
|
+
unmuteIconContainer.classList.add("kg-audio-hide");
|
|
107
|
+
muteIconContainer.classList.remove("kg-audio-hide");
|
|
108
|
+
audio.muted = true;
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
playbackRateContainer.addEventListener('click', () => {
|
|
112
|
+
let nextPlaybackRate = playbackRates[(currentPlaybackRateIdx + 1) % 5];
|
|
113
|
+
currentPlaybackRateIdx = currentPlaybackRateIdx + 1;
|
|
114
|
+
audio.playbackRate = nextPlaybackRate.rate;
|
|
115
|
+
playbackRateContainer.textContent = nextPlaybackRate.label;
|
|
116
|
+
});
|
|
117
|
+
|
|
118
|
+
audio.addEventListener('progress', displayBufferedAmount);
|
|
119
|
+
|
|
120
|
+
seekSlider.addEventListener('input', (e) => {
|
|
121
|
+
showRangeProgress(e.target);
|
|
122
|
+
currentTimeContainer.textContent = calculateTime(seekSlider.value);
|
|
123
|
+
if (!audio.paused) {
|
|
124
|
+
cancelAnimationFrame(raf);
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
|
|
128
|
+
seekSlider.addEventListener('change', () => {
|
|
129
|
+
audio.currentTime = seekSlider.value;
|
|
130
|
+
if (!audio.paused) {
|
|
131
|
+
requestAnimationFrame(whilePlaying);
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
|
|
135
|
+
volumeSlider.addEventListener('input', (e) => {
|
|
136
|
+
const value = e.target.value;
|
|
137
|
+
showRangeProgress(e.target);
|
|
138
|
+
audio.volume = value / 100;
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
const audioCardElements = document.querySelectorAll('.kg-audio-card');
|
|
143
|
+
|
|
144
|
+
for (let i = 0; i < audioCardElements.length; i++) {
|
|
145
|
+
handleAudioPlayer(audioCardElements[i]);
|
|
146
|
+
}
|
|
147
|
+
|
package/core/server/notify.js
CHANGED
|
@@ -8,7 +8,6 @@
|
|
|
8
8
|
|
|
9
9
|
// Required Ghost internals
|
|
10
10
|
const config = require('../shared/config');
|
|
11
|
-
const logging = require('@tryghost/logging');
|
|
12
11
|
|
|
13
12
|
let notified = {
|
|
14
13
|
started: false,
|
|
@@ -53,7 +52,7 @@ async function notify(type, error = null) {
|
|
|
53
52
|
let socketAddress = config.get('bootstrap-socket');
|
|
54
53
|
if (socketAddress) {
|
|
55
54
|
const bootstrapSocket = require('@tryghost/bootstrap-socket');
|
|
56
|
-
return bootstrapSocket.connectAndSend(socketAddress,
|
|
55
|
+
return bootstrapSocket.connectAndSend(socketAddress, message);
|
|
57
56
|
}
|
|
58
57
|
|
|
59
58
|
return Promise.resolve();
|
|
@@ -148,7 +148,7 @@ dd {
|
|
|
148
148
|
}
|
|
149
149
|
|
|
150
150
|
blockquote {
|
|
151
|
-
margin: 2em 0;
|
|
151
|
+
margin: 2em 0 2em 0;
|
|
152
152
|
padding: 0 25px 0 25px;
|
|
153
153
|
border-left: ${templateSettings.accentColor || '#15212A'} 2px solid;
|
|
154
154
|
font-size: 17px;
|
|
@@ -159,11 +159,10 @@ blockquote {
|
|
|
159
159
|
|
|
160
160
|
blockquote.kg-blockquote-alt {
|
|
161
161
|
border-left: 0 none;
|
|
162
|
-
padding
|
|
163
|
-
padding-right: 50px;
|
|
164
|
-
margin-bottom: 2.5em;
|
|
162
|
+
padding: 0 50px 0 50px;
|
|
165
163
|
text-align: center;
|
|
166
164
|
font-size: 1.2em;
|
|
165
|
+
font-style: italic;
|
|
167
166
|
color: #999999;
|
|
168
167
|
}
|
|
169
168
|
|
|
@@ -567,6 +566,16 @@ figure blockquote p {
|
|
|
567
566
|
padding-bottom: 4px;
|
|
568
567
|
}
|
|
569
568
|
|
|
569
|
+
.kg-twitter-link {
|
|
570
|
+
display: block;
|
|
571
|
+
text-decoration: none !important;
|
|
572
|
+
color: #15212A !important;
|
|
573
|
+
font-family: inherit !important;
|
|
574
|
+
font-size: 15px;
|
|
575
|
+
padding: 8px;
|
|
576
|
+
line-height: 1.3em;
|
|
577
|
+
}
|
|
578
|
+
|
|
570
579
|
.kg-callout-card {
|
|
571
580
|
display: flex;
|
|
572
581
|
margin: 0 0 1.5em 0;
|
|
@@ -898,15 +907,17 @@ figure blockquote p {
|
|
|
898
907
|
}
|
|
899
908
|
|
|
900
909
|
table.body blockquote {
|
|
901
|
-
font-size: 17px
|
|
902
|
-
line-height: 1.6em
|
|
903
|
-
margin-bottom: 0
|
|
904
|
-
padding-left: 15px
|
|
910
|
+
font-size: 17px;
|
|
911
|
+
line-height: 1.6em;
|
|
912
|
+
margin-bottom: 0;
|
|
913
|
+
padding-left: 15px;
|
|
905
914
|
}
|
|
906
915
|
|
|
907
916
|
table.body blockquote.kg-blockquote-alt {
|
|
908
|
-
|
|
909
|
-
margin
|
|
917
|
+
border-left: 0 none !important;
|
|
918
|
+
margin: 0 0 2.5em 0 !important;
|
|
919
|
+
padding: 0 50px 0 50px !important;
|
|
920
|
+
font-size: 1.2em;
|
|
910
921
|
}
|
|
911
922
|
|
|
912
923
|
table.body blockquote + * {
|