griffincss-ui 0.28.0 → 0.28.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/dist/griffincss-ui.js +1 -1
- package/dist/griffinjs-core.js +1 -1
- package/dist/griffinjs-lightbox.js +1 -1
- package/dist/griffinjs-lightbox.js.map +1 -1
- package/dist/griffinjs-scroll.js +1 -1
- package/dist/griffinjs-scroll.js.map +1 -1
- package/dist/griffinjs.js +1 -1
- package/dist/griffinjs.js.map +1 -1
- package/package.json +2 -2
- package/src/griffincss-ui.js +2 -2
- package/src/griffinjs/core/griffinjs-core.js +2 -2
- package/src/griffinjs/engines/scroll.js +16 -4
- package/src/griffinjs/widgets/lightbox.js +20 -8
|
@@ -40,11 +40,22 @@
|
|
|
40
40
|
var VIDEO = /\.(mp4|webm|ogv|mov)(\?|#|$)/i;
|
|
41
41
|
var SCHEMES = /^(https?|data|blob):$/;
|
|
42
42
|
// Набор — по замеру настоящих плееров: allow-presentation им не нужен,
|
|
43
|
-
// а WebKit на него пишет ошибку в консоль.
|
|
44
|
-
|
|
43
|
+
// а WebKit на него пишет ошибку в консоль. Выход окон из песочницы —
|
|
44
|
+
// только хостам списка, вместе с allow-same-origin: ссылка плеера
|
|
45
|
+
// «смотреть на сайте» открывается обычной вкладкой. Окно своего кадра
|
|
46
|
+
// остаётся в его песочнице — с выходом оно жило бы в origin сайта,
|
|
47
|
+
// правило бы страницу через opener и уводило бы вкладку.
|
|
48
|
+
var SANDBOX = 'allow-scripts allow-popups';
|
|
49
|
+
var HOST = ' allow-popups-to-escape-sandbox allow-same-origin';
|
|
45
50
|
var config = G.config;
|
|
46
51
|
|
|
47
|
-
|
|
52
|
+
// Записи — пути встраивания плееров, а не хосты: страница ролика
|
|
53
|
+
// и короткая ссылка youtu.be отвечают X-Frame-Options и фреймом
|
|
54
|
+
// не встают никогда — вне списка они остаются ссылкой.
|
|
55
|
+
if (!config.frames) {
|
|
56
|
+
config.frames = ['self', 'youtube.com/embed/', 'youtube-nocookie.com/embed/', 'player.vimeo.com/video/', 'vimeo.com/showcase/', 'vimeo.com/event/',
|
|
57
|
+
'rutube.ru/play/embed/', 'vk.com/video_ext.php', 'vk.ru/video_ext.php', 'vkvideo.ru/video_ext.php'];
|
|
58
|
+
}
|
|
48
59
|
|
|
49
60
|
var dialog = null;
|
|
50
61
|
var track = null;
|
|
@@ -145,7 +156,7 @@
|
|
|
145
156
|
}
|
|
146
157
|
|
|
147
158
|
if (item.type === 'iframe') {
|
|
148
|
-
return element('iframe', null, { sandbox: SANDBOX + (item.same ?
|
|
159
|
+
return element('iframe', null, { sandbox: SANDBOX + (item.same ? HOST : ''), src: item.src, allow: 'autoplay; fullscreen; picture-in-picture', allowfullscreen: '', title: item.caption || item.alt || 'Видео' });
|
|
149
160
|
}
|
|
150
161
|
|
|
151
162
|
return element('img', null, { src: item.src, alt: item.alt });
|
|
@@ -161,17 +172,18 @@
|
|
|
161
172
|
|
|
162
173
|
// Кадр с отвергнутым адресом выпадает из группы; отвергнут
|
|
163
174
|
// открываемый — окна нет. Новый номер — число принятых до него.
|
|
164
|
-
// Адрес
|
|
165
|
-
//
|
|
175
|
+
// Адрес и тип приводятся к строке один раз: они проверяются, они же
|
|
176
|
+
// встают в кадр — в копию описания, объект вызывающего не меняется.
|
|
166
177
|
// Фрейм — только по списку кадров.
|
|
167
178
|
index = 0;
|
|
168
179
|
|
|
169
180
|
for (var k = 0; k < items.length; k++) {
|
|
170
181
|
var src = String(items[k].src);
|
|
182
|
+
var type = String(items[k].type || '');
|
|
171
183
|
var url = parse(src);
|
|
172
184
|
// Схема — http(s), data:, blob: или та же, что у страницы: с диска
|
|
173
185
|
// свои файлы — file:, относительный адрес иначе не открылся бы.
|
|
174
|
-
var kind = url && (SCHEMES.test(url.protocol) || url.protocol === location.protocol) && (
|
|
186
|
+
var kind = url && (SCHEMES.test(url.protocol) || url.protocol === location.protocol) && (type === 'iframe' ? listed(url) : 'any');
|
|
175
187
|
|
|
176
188
|
if (!kind) {
|
|
177
189
|
G.warn('lightbox: frame address refused: ' + src + ' (iframe: GriffinJS.config.frames)');
|
|
@@ -181,7 +193,7 @@
|
|
|
181
193
|
}
|
|
182
194
|
|
|
183
195
|
if (k < at) index++;
|
|
184
|
-
list.push(Object.assign({}, items[k], { src: src, same: kind === 'host' }));
|
|
196
|
+
list.push(Object.assign({}, items[k], { src: src, type: type, same: kind === 'host' }));
|
|
185
197
|
}
|
|
186
198
|
|
|
187
199
|
if (!list.length) return null;
|