add initial expand images js
This commit is contained in:
72
contrib/js/expand-image.js
Normal file
72
contrib/js/expand-image.js
Normal file
@@ -0,0 +1,72 @@
|
||||
//
|
||||
// expand images inline
|
||||
//
|
||||
// released into the public domain by Jeff on 2016-04-30
|
||||
//
|
||||
|
||||
if (typeof _ == 'undefined') {
|
||||
var _ = function(a) { return a; }
|
||||
}
|
||||
|
||||
// is the filename matching an image?
|
||||
function filenameIsImage(fname) {
|
||||
return /\.(gif|jpeg|jpg|png|webp)/.test(fname);
|
||||
}
|
||||
|
||||
// setup image inlining for 1 element
|
||||
function setupInlineImage(thumb, url) {
|
||||
if(thumb.inlineIsSetUp) return;
|
||||
thumb.inlineIsSetUp = true;
|
||||
var img = thumb.querySelector("img.thumbnail");
|
||||
var expanded = false;
|
||||
var oldurl = img.href;
|
||||
img.onclick = function(ev) {
|
||||
if (expanded) {
|
||||
img.setAttribute("class", "thumbnail");
|
||||
img.src = oldurl;
|
||||
expanded = false;
|
||||
} else {
|
||||
img.setAttribute("class", "thumbnail expanded");
|
||||
img.src = url;
|
||||
expanded = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// set up image inlining for all applicable children in an element
|
||||
function setupInlineImageIn(element) {
|
||||
var thumbs = element.querySelectorAll("a.file");
|
||||
for ( var i = 0 ; i < thumbs.length ; i++ ) {
|
||||
var url = thumbs[i].children[0].src;
|
||||
if (filenameIsImage(url)) {
|
||||
// match
|
||||
setupInlineImage(thumbs[i], url);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
onready(function(){
|
||||
|
||||
// Setup Javascript events for document
|
||||
setupInlineImageIn(document);
|
||||
|
||||
|
||||
// Setup Javascript events via updatoer
|
||||
if (window.MutationObserver) {
|
||||
var observer = new MutationObserver(function(mutations) {
|
||||
for (var i = 0; i < mutations.length; i++) {
|
||||
var additions = mutations[i].addedNodes;
|
||||
if (additions == null) continue;
|
||||
for (var j = 0; j < additions.length; j++) {
|
||||
var node = additions[j];
|
||||
if (node.nodeType == 1) {
|
||||
setupInlineImageIn(node);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
observer.observe(document.body, {childList: true, subtree: true});
|
||||
}
|
||||
|
||||
})
|
Reference in New Issue
Block a user