solid-panes
Version:
Solid-compatible Panes: applets and views for the mashlib and databrowser
126 lines (124 loc) • 5.44 kB
JavaScript
;
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var UI = _interopRequireWildcard(require("solid-ui"));
var $rdf = _interopRequireWildcard(require("rdflib"));
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
/* Playlist Pane
**
** This pane allows playlists and playlists slots to be viewed
** seeAlso: http://smiy.sourceforge.net/pbo/spec/playbackontology.html
*/
var ns = UI.ns;
var _default = exports["default"] = {
icon: UI.icons.iconBase + 'noun_1619.svg',
name: 'playlistSlot',
audience: [ns.solid('PowerUser')],
label: function label(subject, context) {
var kb = context.session.store;
if (!kb.anyStatementMatching(subject, UI.ns.rdf('type'), kb.sym('http://purl.org/ontology/pbo/core#PlaylistSlot'))) {
return null;
}
return 'playlist slot';
},
render: function render(subject, context) {
var myDocument = context.dom;
function isVideo(src, _index) {
if (!src) {
return {
html5: true
};
}
var youtube = src.match(/\/\/(?:www\.)?youtu(?:\.be|be\.com)\/(?:watch\?v=|embed\/)?([a-z0-9\-_%]+)/i);
var vimeo = src.match(/\/\/(?:www\.)?vimeo.com\/([0-9a-z\-_]+)/i);
var dailymotion = src.match(/\/\/(?:www\.)?dai.ly\/([0-9a-z\-_]+)/i);
var vk = src.match(/\/\/(?:www\.)?(?:vk\.com|vkontakte\.ru)\/(?:video_ext\.php\?)(.*)/i);
if (youtube) {
return {
youtube: youtube
};
} else if (vimeo) {
return {
vimeo: vimeo
};
} else if (dailymotion) {
return {
dailymotion: dailymotion
};
} else if (vk) {
return {
vk: vk
};
}
}
var link = function link(contents, uri) {
if (!uri) return contents;
var a = myDocument.createElement('a');
a.setAttribute('href', uri);
a.appendChild(contents);
a.addEventListener('click', UI.widgets.openHrefInOutlineMode, true);
return a;
};
var text = function text(str) {
return myDocument.createTextNode(str);
};
var kb = context.session.store;
var obj = kb.any(subject, $rdf.sym('http://purl.org/ontology/pbo/core#playlist_item'));
var index = kb.any(subject, $rdf.sym('http://purl.org/ontology/olo/core#index'));
var uri = obj.uri;
var video = isVideo(uri);
var div = myDocument.createElement('div');
var img;
if (video && video.youtube) {
uri = uri.replace('watch?v=', 'embed/');
div.setAttribute('class', 'imageView');
img = myDocument.createElement('IFRAME');
img.setAttribute('src', uri);
img.setAttribute('width', 560);
img.setAttribute('height', 315);
img.setAttribute('frameborder', 0);
img.setAttribute('style', 'max-width: 850px; max-height: 100%;');
img.setAttribute('allowfullscreen', 'true');
} else {
div.setAttribute('class', 'imageView');
img = myDocument.createElement('IMG');
img.setAttribute('src', obj.value);
img.setAttribute('width', 560);
img.setAttribute('height', 315);
img.setAttribute('style', 'max-width: 560; max-height: 315;');
}
var descDiv;
if (index) {
var sl = kb.statementsMatching(null, $rdf.sym('http://purl.org/ontology/olo/core#index'));
var slots = [];
for (var i = 0; i < sl.length; i++) {
if (sl[i]) {
slots.push(parseInt(sl[i].object.value, 10));
}
}
index = parseInt(index.value, 10);
descDiv = myDocument.createElement('div');
var pIndex = slots[(slots.indexOf(index) - 1 + slots.length) % slots.length];
var nIndex = slots[(slots.indexOf(index) + 1 + slots.length) % slots.length];
var prev = link(text('<<'), subject.uri.split('#')[0] + '#' + pIndex);
descDiv.appendChild(prev);
var indexDiv = myDocument.createElement('span');
indexDiv.innerHTML = ' Playlist slot : ' + index + ' ';
descDiv.appendChild(indexDiv);
var next = link(text('>>'), subject.uri.split('#')[0] + '#' + nIndex);
descDiv.appendChild(next);
}
var tr = myDocument.createElement('TR'); // why need tr?
tr.appendChild(img);
if (descDiv) {
tr.appendChild(descDiv);
}
div.appendChild(tr);
return div;
}
}; // ends
//# sourceMappingURL=playlistPane.js.map