UNPKG

solid-panes

Version:

Solid-compatible Panes: applets and views for the mashlib and databrowser

126 lines (124 loc) • 5.44 kB
"use strict"; 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