diff --git a/dist/blogger-tweaks.min.css b/dist/blogger-tweaks.min.css index 37bdc4e..ec0b6e8 100644 --- a/dist/blogger-tweaks.min.css +++ b/dist/blogger-tweaks.min.css @@ -1,4 +1,4 @@ -/*! web-ignition v1.5.0 ~~ https://github.com/center-key/web-ignition ~~ MIT License */ +/*! web-ignition v1.5.1 ~~ https://github.com/center-key/web-ignition ~~ MIT License */ #header-container #header .header-bar .title h3{border-bottom:2px solid transparent;margin-left:20px;transition:all .4s}#header-container #header .header-bar .title h3:hover{border-color:#000}#header-container #header .header-drawer{top:35px}#header-container #header .header-drawer #views.menu{display:none;max-height:0;max-width:0;opacity:0;visibility:hidden;z-index:-10000}#main #sidebar{margin-top:-30px;width:340px}#main #sidebar .items .item h3.title{font-size:1rem}#main #content{margin-left:360px}#main #content .article .article-header h1.title{font-size:2rem;font-weight:700;padding-right:0}#main #content .article .article-content{font-size:1.2rem;margin-bottom:40px;text-align:left}#main #content .article .article-content table{border-collapse:collapse;margin-bottom:20px}#main #content .article .article-content table caption{color:dimgray;font-size:.9rem;font-weight:700;letter-spacing:.16em;margin:.4rem 0;text-transform:uppercase}#main #content .article .article-content table thead tr{border-bottom:3px solid #4682b4}#main #content .article .article-content table thead tr th{padding:4px 10px;text-align:left;word-break:normal}#main #content .article .article-content table tbody tr{border-bottom:1px solid #4682b4;transition:all .4s}#main #content .article .article-content table tbody tr:hover{background-color:#f0f8ff}#main #content .article .article-content table tbody tr td{padding:4px 10px;vertical-align:top}#main #content .article .article-content output{background-color:#f0fff0;border:3px solid #8fbc8f;display:block;margin-bottom:20px;overflow:hidden;padding:0 10px 5px}#main #content .article .article-content output>h2{background-color:#8fbc8f;color:#fff;font-size:1.3rem;margin:0 -10px 5px;padding:0 10px 3px}#main #content .article .article-content output>pre{margin:0 0 -1.2em -3.3em;overflow-x:scroll;overflow-y:hidden}#main #content .article .article-content .hide-me{display:none;max-height:0;max-width:0;opacity:0;visibility:hidden;z-index:-10000}#main #content .article .article-content .indent{display:block;margin-left:30px}#main #content .article .article-content .framed,#main #content .article .article-content .framed-padded{border:15px solid silver}#main #content .article .article-content .framed-padded{padding:15px}#main #content .article .article-content .highlight,#main #content .article .article-content .highlight2{background-color:#ffffe0;padding:0 3px}#main #content .article .article-content .highlight2{background-color:#ffe4e1}#main #content .article .article-content *{box-sizing:border-box}#main #content .article .article-content h2{color:gray;font-size:1.2rem;font-weight:100;letter-spacing:.08rem;margin:-10px 0 20px;text-align:center}#main #content .article .article-content h3{margin-bottom:5px}#main #content .article .article-content nav{background-color:#f5f5f5;border:1px solid silver;clear:both;margin-bottom:20px;padding:10px 20px}#main #content .article .article-content nav ol,#main #content .article .article-content nav ul{margin:0}#main #content .article .article-content p{margin-top:0}#main #content .article .article-content ol,#main #content .article .article-content ul{margin:0 0 1em;padding-left:3em}#main #content .article .article-content pre{word-wrap:normal;word-break:normal}#main #content .article .article-content img{-o-border-image:none;border-image:none;border-width:0;margin:0;max-width:100%;padding:0}#main #content .article .article-content figure{margin:0 0 20px;text-align:center}#main #content .article .article-content figure.full-width img{max-height:none}#main #content .article .article-content figure.small-image img{max-height:120px}#main #content .article .article-content figure figcaption{font-weight:700}#main #content .article .article-content figure img{max-height:200px}#main #content .article .article-content figure.hljs-enhance{clear:both;text-align:left}#main #content .article .article-content figure.hljs-enhance figcaption{font-size:1.1rem}#main #content .article .article-content aside{float:right;margin:0 0 15px 20px;max-width:150px}#main #content .article .article-content aside.left{float:left;margin:0 20px 15px 0}#main #content .article .article-content>footer{border-top:1px solid silver;margin-top:40px;padding-top:35px;text-align:center}#main #content .article .article-content>footer>i{font-weight:lighter}#main #content .article .article-footer{border-top:1px solid silver}#attribution-container,body>.viewitem-panel{display:none;max-height:0;max-width:0;opacity:0;visibility:hidden;z-index:-10000} /* diff --git a/dist/layouts/block-duo.css b/dist/layouts/block-duo.css index 11ca91d..d227e44 100644 --- a/dist/layouts/block-duo.css +++ b/dist/layouts/block-duo.css @@ -1,4 +1,4 @@ -/*! web-ignition v1.5.0 ~~ https://github.com/center-key/web-ignition ~~ MIT License */ +/*! web-ignition v1.5.1 ~~ https://github.com/center-key/web-ignition ~~ MIT License */ /* Block Duo layout -- Two big columns followed by a single footer diff --git a/dist/layouts/color-blocks.css b/dist/layouts/color-blocks.css index 026cb81..42694c4 100644 --- a/dist/layouts/color-blocks.css +++ b/dist/layouts/color-blocks.css @@ -1,4 +1,4 @@ -/*! web-ignition v1.5.0 ~~ https://github.com/center-key/web-ignition ~~ MIT License */ +/*! web-ignition v1.5.1 ~~ https://github.com/center-key/web-ignition ~~ MIT License */ /* Color Blocks layout -- Two columns of colorful blocks diff --git a/dist/layouts/color-slide.css b/dist/layouts/color-slide.css index 18684d3..f66fb09 100644 --- a/dist/layouts/color-slide.css +++ b/dist/layouts/color-slide.css @@ -1,4 +1,4 @@ -/*! web-ignition v1.5.0 ~~ https://github.com/center-key/web-ignition ~~ MIT License */ +/*! web-ignition v1.5.1 ~~ https://github.com/center-key/web-ignition ~~ MIT License */ /* Color Slide layout -- Top to botttom color transition diff --git a/dist/layouts/letterbox.css b/dist/layouts/letterbox.css index 18b380a..1a9ed54 100644 --- a/dist/layouts/letterbox.css +++ b/dist/layouts/letterbox.css @@ -1,4 +1,4 @@ -/*! web-ignition v1.5.0 ~~ https://github.com/center-key/web-ignition ~~ MIT License */ +/*! web-ignition v1.5.1 ~~ https://github.com/center-key/web-ignition ~~ MIT License */ /* Letterbox layout -- Edge-to-edge semi-opaque bar over cover background image diff --git a/dist/layouts/modern.css b/dist/layouts/modern.css index 944a7a4..9800dca 100644 --- a/dist/layouts/modern.css +++ b/dist/layouts/modern.css @@ -1,4 +1,4 @@ -/*! web-ignition v1.5.0 ~~ https://github.com/center-key/web-ignition ~~ MIT License */ +/*! web-ignition v1.5.1 ~~ https://github.com/center-key/web-ignition ~~ MIT License */ /* Modern layout -- Clean blog post page diff --git a/dist/layouts/neon.css b/dist/layouts/neon.css index 034bf88..e963ae3 100644 --- a/dist/layouts/neon.css +++ b/dist/layouts/neon.css @@ -1,4 +1,4 @@ -/*! web-ignition v1.5.0 ~~ https://github.com/center-key/web-ignition ~~ MIT License */ +/*! web-ignition v1.5.1 ~~ https://github.com/center-key/web-ignition ~~ MIT License */ /* Neon layout -- For hackers and space junkies diff --git a/dist/layouts/neon.min.js b/dist/layouts/neon.min.js index 4bda791..2f43d0e 100644 --- a/dist/layouts/neon.min.js +++ b/dist/layouts/neon.min.js @@ -1,2 +1,2 @@ -//! web-ignition v1.5.0 ~~ https://github.com/center-key/web-ignition ~~ MIT License +//! web-ignition v1.5.1 ~~ https://github.com/center-key/web-ignition ~~ MIT License var numNeonImages=8;$("body").addClass("neon-image-"+(Date.now()%8+1)); diff --git a/dist/layouts/vertical-bars.css b/dist/layouts/vertical-bars.css index f7d9dd9..75f9572 100644 --- a/dist/layouts/vertical-bars.css +++ b/dist/layouts/vertical-bars.css @@ -1,4 +1,4 @@ -/*! web-ignition v1.5.0 ~~ https://github.com/center-key/web-ignition ~~ MIT License */ +/*! web-ignition v1.5.1 ~~ https://github.com/center-key/web-ignition ~~ MIT License */ /* Vertical Bars layout -- traditional boring old-school webpage diff --git a/dist/layouts/zebra-sections.css b/dist/layouts/zebra-sections.css index e1ae099..7945c74 100644 --- a/dist/layouts/zebra-sections.css +++ b/dist/layouts/zebra-sections.css @@ -1,4 +1,4 @@ -/*! web-ignition v1.5.0 ~~ https://github.com/center-key/web-ignition ~~ MIT License */ +/*! web-ignition v1.5.1 ~~ https://github.com/center-key/web-ignition ~~ MIT License */ /* Zebra Sections layout -- Edge-to-edge blocks with alternating background colors diff --git a/dist/lib-x.d.ts b/dist/lib-x.d.ts index 0296b31..a2b9566 100644 --- a/dist/lib-x.d.ts +++ b/dist/lib-x.d.ts @@ -1,4 +1,4 @@ -//! web-ignition v1.5.0 ~~ https://github.com/center-key/web-ignition ~~ MIT License +//! web-ignition v1.5.1 ~~ https://github.com/center-key/web-ignition ~~ MIT License declare global { interface JQuery { @@ -22,6 +22,9 @@ export declare type LibXUiPopupOptions = { width?: number; height?: number; }; +export declare type LibXUiKeepOnScreenOptions = { + padding?: number; +}; export declare type LibXCryptoHashOptions = { algorithm?: string; salt?: string; @@ -54,7 +57,7 @@ declare const libX: { popup(url: string, options?: LibXUiPopupOptions | undefined): Window | null; popupClick(event: JQuery.EventBase): Window | null; revealSection(event: JQuery.EventBase): JQuery; - keepOnScreen(elem: JQuery, padding?: number): JQuery; + keepOnScreen(elem: JQuery, options?: LibXUiKeepOnScreenOptions | undefined): JQuery; autoDisableButtons(): void; loadImageFadeIn(elem: JQuery, url: string, duration?: number | undefined): JQuery; setupVideos(): JQuery; diff --git a/dist/lib-x.dev.js b/dist/lib-x.dev.js index 671c048..8376157 100644 --- a/dist/lib-x.dev.js +++ b/dist/lib-x.dev.js @@ -1,4 +1,4 @@ -//! web-ignition v1.5.0 ~~ https://github.com/center-key/web-ignition ~~ MIT License +//! web-ignition v1.5.1 ~~ https://github.com/center-key/web-ignition ~~ MIT License const libXUi = { plugin: { @@ -68,11 +68,21 @@ const libXUi = { dna.ui.slideFadeOut(button); return dna.ui.slideFadeIn(target); }, - keepOnScreen(elem, padding = 10) { - const gap = elem.offset().left; - const moveR = Math.max(-gap, -padding) + padding; - const moveL = Math.max(gap + elem.width() - $(window).width(), -padding) + padding; - return elem.css({ left: '+=' + (moveR - moveL) + 'px' }); + keepOnScreen(elem, options) { + const defaults = { padding: 10 }; + const settings = { ...defaults, ...options }; + const pad = settings.padding; + const win = { + width: $(window).width(), + height: $(window).height(), + scroll: $(window).scrollTop(), + }; + const offset = elem.offset(); + const moveR = Math.max(-offset.left, -pad) + pad; + const moveL = Math.max(offset.left + elem.width() - win.width, -pad) + pad; + const moveU = Math.min(win.scroll + win.height - offset.top - elem.height() - pad, 0); + const moveD = Math.max(moveU, win.scroll - offset.top + pad); + return elem.css({ left: `+=${moveR - moveL}px`, top: `+=${moveD}px` }); }, autoDisableButtons() { const disableButton = (event) => { @@ -99,8 +109,9 @@ const libXUi = { }, setupVideos() { const makeVideoClickable = (elem) => { - const url = elem.find('iframe').attr('src'); - elem.attr('data-href', url.replace('//www.youtube.com/embed', '//youtu.be')); + const src = elem.find('iframe').attr('src'); + const url = src.replace('//www.youtube.com/embed', '//youtu.be'); + elem.attr('data-href', url).addClass('external-site'); }; $('figure.video-container-link').forEach(makeVideoClickable); return $('figure.video-container iframe').attr({ allow: 'fullscreen' }).parent(); @@ -224,7 +235,7 @@ const libXPopupImage = { .append(libX.ui.makeIcons($(''))) .append($('').attr({ src: imageSrc }).css({ maxWidth: maxWidth })); popup.insertAfter(thumbnail); - libX.ui.keepOnScreen(popup, 30).fadeTo('slow', 1); + libX.ui.keepOnScreen(popup, { padding: 30 }).fadeTo('slow', 1); $(document).on({ [keyUpEventName]: escKeyClose }); }, }; @@ -324,7 +335,7 @@ const libXExtra = { }, }; const libX = { - version: '1.5.0', + version: '1.5.1', ui: libXUi, util: libXUtil, crypto: libXCrypto, diff --git a/dist/lib-x.js b/dist/lib-x.js index 143f506..8b136a0 100644 --- a/dist/lib-x.js +++ b/dist/lib-x.js @@ -1,4 +1,4 @@ -//! web-ignition v1.5.0 ~~ https://github.com/center-key/web-ignition ~~ MIT License +//! web-ignition v1.5.1 ~~ https://github.com/center-key/web-ignition ~~ MIT License import { dna } from 'dna.js'; const libXUi = { @@ -69,11 +69,21 @@ const libXUi = { dna.ui.slideFadeOut(button); return dna.ui.slideFadeIn(target); }, - keepOnScreen(elem, padding = 10) { - const gap = elem.offset().left; - const moveR = Math.max(-gap, -padding) + padding; - const moveL = Math.max(gap + elem.width() - $(window).width(), -padding) + padding; - return elem.css({ left: '+=' + (moveR - moveL) + 'px' }); + keepOnScreen(elem, options) { + const defaults = { padding: 10 }; + const settings = { ...defaults, ...options }; + const pad = settings.padding; + const win = { + width: $(window).width(), + height: $(window).height(), + scroll: $(window).scrollTop(), + }; + const offset = elem.offset(); + const moveR = Math.max(-offset.left, -pad) + pad; + const moveL = Math.max(offset.left + elem.width() - win.width, -pad) + pad; + const moveU = Math.min(win.scroll + win.height - offset.top - elem.height() - pad, 0); + const moveD = Math.max(moveU, win.scroll - offset.top + pad); + return elem.css({ left: `+=${moveR - moveL}px`, top: `+=${moveD}px` }); }, autoDisableButtons() { const disableButton = (event) => { @@ -100,8 +110,9 @@ const libXUi = { }, setupVideos() { const makeVideoClickable = (elem) => { - const url = elem.find('iframe').attr('src'); - elem.attr('data-href', url.replace('//www.youtube.com/embed', '//youtu.be')); + const src = elem.find('iframe').attr('src'); + const url = src.replace('//www.youtube.com/embed', '//youtu.be'); + elem.attr('data-href', url).addClass('external-site'); }; $('figure.video-container-link').forEach(makeVideoClickable); return $('figure.video-container iframe').attr({ allow: 'fullscreen' }).parent(); @@ -225,7 +236,7 @@ const libXPopupImage = { .append(libX.ui.makeIcons($(''))) .append($('').attr({ src: imageSrc }).css({ maxWidth: maxWidth })); popup.insertAfter(thumbnail); - libX.ui.keepOnScreen(popup, 30).fadeTo('slow', 1); + libX.ui.keepOnScreen(popup, { padding: 30 }).fadeTo('slow', 1); $(document).on({ [keyUpEventName]: escKeyClose }); }, }; @@ -325,7 +336,7 @@ const libXExtra = { }, }; const libX = { - version: '1.5.0', + version: '1.5.1', ui: libXUi, util: libXUtil, crypto: libXCrypto, diff --git a/dist/lib-x.min.js b/dist/lib-x.min.js index cebce1a..988747e 100644 --- a/dist/lib-x.min.js +++ b/dist/lib-x.min.js @@ -1,2 +1,2 @@ -//! web-ignition v1.5.0 ~~ https://github.com/center-key/web-ignition ~~ MIT License -function _typeof(a){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},_typeof(a)}function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;c"+String.fromCharCode(64)+a.data().domain+"")})},popup:function popup(a,b){var c=_objectSpread(_objectSpread({},{width:600,height:400}),b),d="left=200,top=100,width="+c.width+",height="+c.height;return window.open(a,"_blank",d+",scrollbars,resizable,status")},popupClick:function popupClick(a){var b=$(a.target).data();return libX.ui.popup(b.hrefPopup,b)},revealSection:function revealSection(a){var b=$(a.target).closest(".reveal-button"),c=".reveal-target[data-reveal="+b.data().reveal+"]",d=b.data().reveal?$(c):b.next();return dna.ui.slideFadeOut(b),dna.ui.slideFadeIn(d)},keepOnScreen:function keepOnScreen(a){var b=Math.max,c=1")),b=$("",{"data-brand":"github","data-href":a.attr("href")});return a.after(b).parent().show().parent().addClass("forkable")}},libXUtil={cleanupEmail:function cleanupEmail(a){return a=a&&a.replace(/\s/g,"").toLowerCase(),/.+@.+[.].+/.test(a)?a:null},isObj:function isObj(a){return!!a&&a.constructor===Object},removeWhitespace:function removeWhitespace(a){return a.replace(/\s/g,"")},details:function details(a){var b=a,c=a,d=_typeof(a)+" --> ";return a instanceof $?d+="jquery:"+c.jquery+" elems:"+c.length+function jQueryDetials(a){return 0===a.length?"":" [#1 elem:"+a.first()[0].nodeName+" id:"+a.first().id()+" class:"+a.first().attr("class")+" kids:"+a.first().children().length+"]"}(c):null===a?d+="[null]":"object"===_typeof(a)?Object.keys(b).forEach(function addProp(a){d+=a+":"+b[a]+" "}):d+=a,d},debug:function debug(a){console.log(Date.now()+": "+libX.util.details(a))}},libXCrypto={hash:function hash(a,b){var c=_objectSpread(_objectSpread({},{algorithm:"SHA-256",salt:""}),b),d=new TextEncoder().encode(a+c.salt),e=function(a){return a.toString(16).padStart(2,"0").slice(-2)};return crypto.subtle.digest("SHA-256",d).then(function handleDigest(a){return Array.from(new Uint8Array(a)).map(e).join("")})}},libXStorage={dbSave:function dbSave(a,b){return localStorage[a]=JSON.stringify(b),libX.storage.dbRead(a)},dbRead:function dbRead(a){return window.localStorage[a]===void 0?{}:JSON.parse(window.localStorage[a])},sessionSave:function sessionSave(a,b){return window.sessionStorage[a]=JSON.stringify(b),libX.storage.sessionRead(a)},sessionRead:function sessionRead(a){return window.sessionStorage[a]===void 0?{}:JSON.parse(window.sessionStorage[a])}},libXCounter={key:"counters",list:function list(){var a=sessionStorage[libX.counter.key];return a?JSON.parse(a):{}},get:function get(){var a=0").addClass("popup-image-layer").on({click:d}).append(libX.ui.makeIcons($(""))).append($("").attr({src:g}).css({maxWidth:f}));h.insertAfter(b),libX.ui.keepOnScreen(h,30).fadeTo("slow",1),$(document).on(_defineProperty({},c,function escKeyClose(a){return"Escape"===a.key&&d()}))}},libXAnimate={jiggleIt:function jiggleIt(a){var b=libX.ui.toElem(a)[0];return b.style.animation="none",window.requestAnimationFrame(function(){return b.style.animation="jiggle-it 0.2s 3"}),$(b)},rollIn:function rollIn(a){var b=1===a.length?a.children():a,c={opacity:1,transition:"opacity 5s"},d=function(){b.first().css(c).delay(1500).queue(d),b=b.slice(1)};return b.css({opacity:0}),window.setTimeout(d,300)}},libXBubbleHelp={setup:function setup(a){var b=(a||$(window.document)).find(".bubble-help:not(.bubble-initialized)").addBack(".bubble-help:not(.bubble-initialized)"),c=function(a){return $(a.target).closest(".bubble-help-hover")},d=function(a){var b=c(a).find(".bubble-help"),d=b.parent().hasClass("bubble-wrap")?b.parent():function wrapIt(){return b.wrap("").parent().append("")}();d.find(".bubble-help").show(),d.css({top:-d.height()}).stop(!0).hide().fadeIn()},e=function(a){return c(a).find(".bubble-wrap").fadeOut("slow")};return b.parent().addClass("bubble-help-hover").on({mouseenter:d,mouseleave:e,touchstart:d,touchend:e}),b.addClass("bubble-initialized")}},libXForm={perfect:function perfect(){var a=$("form.perfect:not([action])"),b=a.data()&&a.data().version||"",c=b+String.fromCharCode(46,112)+"hp",d={method:"post",action:"perfect"+c},e=function(){return $("")[0]},f=function(){return a.find("[name=version]")[0]||e()},g=function(){return a.attr(d).append($(f()).val(b))};return a.find("textarea").on({focus:function focus(){return window.setTimeout(g,5e3)}})}},libXSocial={buttons:[{title:"Twitter",icon:"twitter",x:580,y:350,link:"https://twitter.com/share?text=${title}&url=${url}"},{title:"Facebook",icon:"facebook-f",x:580,y:350,link:"https://www.facebook.com/sharer.php?u=${url}"},{title:"LinkedIn",icon:"linkedin-in",x:580,y:350,link:"https://www.linkedin.com/shareArticle?mini=true&url=${url}&title=${title}"},{title:"Digg",icon:"digg",x:985,y:700,link:"https://digg.com/submit?url=${url}"},{title:"Reddit",icon:"reddit",x:600,y:750,link:"https://www.reddit.com/submit?url=${url}$title=${title}"}],share:function share(a){var b=libX.social.buttons[a.index()],c=function(a,b,c){return a.replace(b,encodeURIComponent(c))},d=c(b.link,"${url}",window.location.href),e=c(d,"${title}",window.document.title);return libX.ui.popup(e,{width:b.x,height:b.y})},setup:function setup(){var a=$("#social-buttons"),b=[""],c="";return a.length&&libX.social.buttons.forEach(function addHtml(a){return c+=b[0]+a.icon+b[1]}),a.fadeTo(0,0).html(c+"").fadeTo("slow",1)}},libXExtra={blogger:function blogger(a){return $(window.blogger.ui()).on({viewitem:function onArticleLoad(){console.log("Article: %c"+$("h1.entry-title").text().trim(),"color: purple;"),$("#header >.header-bar h3").attr("data-href",a),libX.ui.normalize(),window.hljsEnhance.setup()}})},gTags:function gTags(a){function b(){for(var a=arguments.length,b=Array(a),c=0;c"+String.fromCharCode(64)+a.data().domain+"")})},popup:function popup(a,b){var c=_objectSpread(_objectSpread({},{width:600,height:400}),b),d="left=200,top=100,width="+c.width+",height="+c.height;return window.open(a,"_blank",d+",scrollbars,resizable,status")},popupClick:function popupClick(a){var b=$(a.target).data();return libX.ui.popup(b.hrefPopup,b)},revealSection:function revealSection(a){var b=$(a.target).closest(".reveal-button"),c=".reveal-target[data-reveal="+b.data().reveal+"]",d=b.data().reveal?$(c):b.next();return dna.ui.slideFadeOut(b),dna.ui.slideFadeIn(d)},keepOnScreen:function keepOnScreen(a,b){var c=Math.max,d=_objectSpread(_objectSpread({},{padding:10}),b),e=d.padding,f={width:$(window).width(),height:$(window).height(),scroll:$(window).scrollTop()},g=a.offset(),h=c(-g.left,-e)+e,i=c(g.left+a.width()-f.width,-e)+e,j=Math.min(f.scroll+f.height-g.top-a.height()-e,0),k=c(j,f.scroll-g.top+e);return a.css({left:"+=".concat(h-i,"px"),top:"+=".concat(k,"px")})},autoDisableButtons:function autoDisableButtons(){$(window.document).on({submit:function disableFormButton(a){return $(a.target).find("button:not(.no-disable)").disable()}},"form").on({click:function disableButton(a){var b=$(a.target);b.closest("nav,.no-disable").length||b.closest("button").disable()}},"button:not([type=submit],[data-href],[data-href-popup])")},loadImageFadeIn:function loadImageFadeIn(a,b,c){var d=new Image;return d.onload=function handleImg(b){return a.fadeIn(null!==c&&void 0!==c?c:1500),"IMG"===a[0].nodeName?a.attr({src:b.target.src}):a.css({backgroundImage:"url("+b.target.src+")"})},d.src=b,a},setupVideos:function setupVideos(){return $("figure.video-container-link").forEach(function makeVideoClickable(a){var b=a.find("iframe").attr("src"),c=b.replace("//www.youtube.com/embed","//youtu.be");a.attr("data-href",c).addClass("external-site")}),$("figure.video-container iframe").attr({allow:"fullscreen"}).parent()},setupForkMe:function setupForkMe(){var a=$("#fork-me").removeAttr("id").wrap($("
")),b=$("",{"data-brand":"github","data-href":a.attr("href")});return a.after(b).parent().show().parent().addClass("forkable")}},libXUtil={cleanupEmail:function cleanupEmail(a){return a=a&&a.replace(/\s/g,"").toLowerCase(),/.+@.+[.].+/.test(a)?a:null},isObj:function isObj(a){return!!a&&a.constructor===Object},removeWhitespace:function removeWhitespace(a){return a.replace(/\s/g,"")},details:function details(a){var b=a,c=a,d=_typeof(a)+" --> ";return a instanceof $?d+="jquery:"+c.jquery+" elems:"+c.length+function jQueryDetials(a){return 0===a.length?"":" [#1 elem:"+a.first()[0].nodeName+" id:"+a.first().id()+" class:"+a.first().attr("class")+" kids:"+a.first().children().length+"]"}(c):null===a?d+="[null]":"object"===_typeof(a)?Object.keys(b).forEach(function addProp(a){d+=a+":"+b[a]+" "}):d+=a,d},debug:function debug(a){console.log(Date.now()+": "+libX.util.details(a))}},libXCrypto={hash:function hash(a,b){var c=_objectSpread(_objectSpread({},{algorithm:"SHA-256",salt:""}),b),d=new TextEncoder().encode(a+c.salt),e=function(a){return a.toString(16).padStart(2,"0").slice(-2)};return crypto.subtle.digest("SHA-256",d).then(function handleDigest(a){return Array.from(new Uint8Array(a)).map(e).join("")})}},libXStorage={dbSave:function dbSave(a,b){return localStorage[a]=JSON.stringify(b),libX.storage.dbRead(a)},dbRead:function dbRead(a){return window.localStorage[a]===void 0?{}:JSON.parse(window.localStorage[a])},sessionSave:function sessionSave(a,b){return window.sessionStorage[a]=JSON.stringify(b),libX.storage.sessionRead(a)},sessionRead:function sessionRead(a){return window.sessionStorage[a]===void 0?{}:JSON.parse(window.sessionStorage[a])}},libXCounter={key:"counters",list:function list(){var a=sessionStorage[libX.counter.key];return a?JSON.parse(a):{}},get:function get(){var a=0").addClass("popup-image-layer").on({click:d}).append(libX.ui.makeIcons($(""))).append($("").attr({src:g}).css({maxWidth:f}));h.insertAfter(b),libX.ui.keepOnScreen(h,{padding:30}).fadeTo("slow",1),$(document).on(_defineProperty({},c,function escKeyClose(a){return"Escape"===a.key&&d()}))}},libXAnimate={jiggleIt:function jiggleIt(a){var b=libX.ui.toElem(a)[0];return b.style.animation="none",window.requestAnimationFrame(function(){return b.style.animation="jiggle-it 0.2s 3"}),$(b)},rollIn:function rollIn(a){var b=1===a.length?a.children():a,c={opacity:1,transition:"opacity 5s"},d=function(){b.first().css(c).delay(1500).queue(d),b=b.slice(1)};return b.css({opacity:0}),window.setTimeout(d,300)}},libXBubbleHelp={setup:function setup(a){var b=(a||$(window.document)).find(".bubble-help:not(.bubble-initialized)").addBack(".bubble-help:not(.bubble-initialized)"),c=function(a){return $(a.target).closest(".bubble-help-hover")},d=function(a){var b=c(a).find(".bubble-help"),d=b.parent().hasClass("bubble-wrap")?b.parent():function wrapIt(){return b.wrap("").parent().append("")}();d.find(".bubble-help").show(),d.css({top:-d.height()}).stop(!0).hide().fadeIn()},e=function(a){return c(a).find(".bubble-wrap").fadeOut("slow")};return b.parent().addClass("bubble-help-hover").on({mouseenter:d,mouseleave:e,touchstart:d,touchend:e}),b.addClass("bubble-initialized")}},libXForm={perfect:function perfect(){var a=$("form.perfect:not([action])"),b=a.data()&&a.data().version||"",c=b+String.fromCharCode(46,112)+"hp",d={method:"post",action:"perfect"+c},e=function(){return $("")[0]},f=function(){return a.find("[name=version]")[0]||e()},g=function(){return a.attr(d).append($(f()).val(b))};return a.find("textarea").on({focus:function focus(){return window.setTimeout(g,5e3)}})}},libXSocial={buttons:[{title:"Twitter",icon:"twitter",x:580,y:350,link:"https://twitter.com/share?text=${title}&url=${url}"},{title:"Facebook",icon:"facebook-f",x:580,y:350,link:"https://www.facebook.com/sharer.php?u=${url}"},{title:"LinkedIn",icon:"linkedin-in",x:580,y:350,link:"https://www.linkedin.com/shareArticle?mini=true&url=${url}&title=${title}"},{title:"Digg",icon:"digg",x:985,y:700,link:"https://digg.com/submit?url=${url}"},{title:"Reddit",icon:"reddit",x:600,y:750,link:"https://www.reddit.com/submit?url=${url}$title=${title}"}],share:function share(a){var b=libX.social.buttons[a.index()],c=function(a,b,c){return a.replace(b,encodeURIComponent(c))},d=c(b.link,"${url}",window.location.href),e=c(d,"${title}",window.document.title);return libX.ui.popup(e,{width:b.x,height:b.y})},setup:function setup(){var a=$("#social-buttons"),b=[""],c="";return a.length&&libX.social.buttons.forEach(function addHtml(a){return c+=b[0]+a.icon+b[1]}),a.fadeTo(0,0).html(c+"").fadeTo("slow",1)}},libXExtra={blogger:function blogger(a){return $(window.blogger.ui()).on({viewitem:function onArticleLoad(){console.log("Article: %c"+$("h1.entry-title").text().trim(),"color: purple;"),$("#header >.header-bar h3").attr("data-href",a),libX.ui.normalize(),window.hljsEnhance.setup()}})},gTags:function gTags(a){function b(){for(var a=arguments.length,b=Array(a),c=0;cheader{text-align:center}main{min-height:300px}header{margin-bottom:20px}aside{clear:right;float:right;font-size:.9rem;margin:0 0 20px 20px}aside.left{clear:left;float:left;margin:0 20px 20px 0}main section aside{background-color:#f5f5f5;border:1px solid silver;max-width:35%;padding:10px}main section aside.simple{background-color:transparent;border:none;padding:0}main section aside h2{font-size:1.1rem}main section aside img{max-width:100%;width:100%}main section aside p:last-child{margin-bottom:0}section:after{clear:both;content:" ";display:table}body>footer{align-items:center;clear:both;color:#a9a9a9;display:flex;font-size:.9rem;justify-content:space-between;padding:30px 0;text-align:center}body>footer>div{min-width:20%}body>footer>div:first-child:last-child{width:100%}body>footer>div:first-child:not(:last-child){text-align:left}body>footer>div:last-child:not(:first-child){text-align:right}body>footer a img[alt=logo]{height:50px}h1{font-family:Chango,system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif;font-size:2.6rem}h2{font-size:1.5rem}h3{font-size:1.2rem}h4{font-size:.9rem;font-weight:400;letter-spacing:.14em;text-transform:uppercase}h1+h2{font-weight:lighter;margin:-.2em 0 .4em;text-shadow:0 0 .2em #fff}quoteblock:before{content:open-quote}quoteblock:after{content:close-quote}i.font-icon{font-size:1.5em}[title]{cursor:help}a{border-bottom:1px dotted;color:dimgray;outline:2px solid transparent;text-decoration:none;transition:all .4s}a:visited{color:#a9a9a9}a:hover{color:#fff}a i.font-icon,a img{opacity:.9;transition:all .4s}a i.font-icon:hover,a img:hover{opacity:1}a figure figcaption{text-align:center;transition:all .4s}a figure:hover figcaption{color:#000}.plain a,a.image-link,a.plain,nav a{border-bottom:none}.plain a:visited,a.image-link:visited,a.plain:visited,nav a:visited{color:inherit}.plain a:hover,a.image-link:hover,a.plain:hover,nav a:hover{background-color:transparent;color:inherit;outline-color:transparent}.plain a img,a img.plain,a.plain img{opacity:1}fieldset,form{max-width:25em}fieldset{border:none;padding:0}form>fieldset:first-child{border:1px solid silver;border-radius:5px;margin-bottom:1.5rem;padding:.8rem 1rem 0}form>fieldset:first-child>legend{border:1px solid silver;border-radius:1000px;font-size:1.1em;font-weight:700;padding:.3em 1em}label,label>span:first-child{display:block}fieldset>aside,input,select,textarea{font-size:1.1em;max-width:25em;width:100%}input,textarea{background-color:#f5fffa;border:1px solid silver;border-radius:5px;padding:.3em}input:not([type=checkbox]):not([type=radio]),textarea{-webkit-appearance:none}select{font-size:1.1em}input[type=number]{font-family:menlo,consolas,monospace;text-align:right}input[type=checkbox],input[type=radio]{margin:0 .5em .2em 1.5em;width:auto}label:last-of-type input{margin-bottom:1em}textarea{height:4.1em}input,select,textarea{margin:0 0 1em}input[type=range]{cursor:-webkit-grab;cursor:grab;height:.7em;margin:.5em 0 1em;padding:0}input[type=range]:active{cursor:-webkit-grabbing;cursor:grabbing}button,input[type=checkbox],input[type=file],input[type=radio],select{cursor:pointer}button,input,optgroup,option,select,textarea{transition:all .4s}:disabled{cursor:default;opacity:.5;pointer-events:none}fieldset p:last-child,form p:last-child{text-align:right}fieldset p:last-child button,form p:last-child button{margin-left:.5em}input:out-of-range{background-color:pink}button{border:none;border-radius:.4em;color:#fff;font-size:1.1rem;font-weight:700;outline:none;padding:.6em 1.2em;transition:all .4s;white-space:nowrap}button i.font-icon{font-size:1.2em;padding-right:.4em;vertical-align:top}button:disabled{background-color:silver}table{border-collapse:collapse;border-spacing:0;margin:0 auto 20px}table caption{caption-side:bottom;font-size:.7rem;font-weight:700;letter-spacing:.16em;margin-top:.4rem;text-transform:uppercase}table tr{border-bottom:1px solid #4682b4;transition:all .4s}table thead tr{border-bottom-width:3px}table tbody tr:hover{background-color:#f0f8ff}table tbody td{font-size:.9rem;text-align:center;vertical-align:top}table td,table th{padding:6px 15px}table.data-box{background-color:#f0f8ff;border:3px solid #dcdcdc}table.data-box tr{border:none}table.data-box td,table.data-box th{font-size:.9rem;padding:4px 15px;text-align:left}table.data-box thead tr{background-color:#dcdcdc}table.data-box tbody tr:nth-child(odd){background-color:#f5fffa}table.data-box tbody tr:hover{background-color:#fffaf0}table.data-box td.num{text-align:right}.plain-tables table tr{border-bottom:none}.plain-tables table tbody td{text-align:left}.plain-tables table tbody tr:hover{background-color:transparent}@media (max-width:667px){table td,table th{padding:6px}}.flex-columns{display:flex;margin-bottom:20px}.flex-columns>*{flex:1;margin-bottom:20px;padding:0 15px}.flex-columns>:first-child{padding-left:0}.flex-columns>:last-child{padding-right:0}@media (max-width:667px){.flex-columns{flex-direction:column}.flex-columns>*{padding:0}}.large{font-size:larger}.align-right{text-align:right}.align-center{text-align:center}.middle{margin-left:auto;margin-right:auto}.column{display:inline-block;float:left}.push-left{float:left;margin:0 10px 5px 0}.push-right{float:right;margin:0 0 5px 10px}.leapfrog{clear:both}.indent{display:table;margin-left:40px}.block-indent{display:block;margin-left:40px}.space-left-sm{padding-left:5px}.space-left{padding-left:10px}.space-left-2x{padding-left:20px}.space-right-sm{padding-right:5px}.space-right{padding-right:10px}.space-right-2x{padding-right:20px}.space-above-sm{margin-top:5px}.space-above{margin-top:10px}.space-above-2x{margin-top:20px}.space-above-3x{margin-top:30px}.space-above-4x{margin-top:40px}.space-below-sm{margin-bottom:5px}.space-below{margin-bottom:10px}.space-below-2x{margin-bottom:20px}.space-below-3x{margin-bottom:30px}.space-below-4x{margin-bottom:40px}.advisory{color:darkred}.dim-out{color:#a9a9a9}.highligh-pen{color:#ffffe0;padding:0 3px}.highligh-pen2{color:#ffe4e1;padding:0 3px}.box-glow{box-shadow:0 0 2em #00bfff}.keep-together{white-space:nowrap}.hide-me{display:none!important;margin:0;max-height:0;max-width:0;opacity:0;padding:0;visibility:hidden!important;z-index:-10000}.float-endgame:after{clear:both;content:" ";display:table}.separator:after{content:"|";padding:0 5px}.hover-glow{transition:all .4s}.hover-glow:hover{box-shadow:0 0 .2em #00bfff}.centered-flow-box{flex-wrap:wrap}.bullseye,.centered-flow-box{display:flex;justify-content:center}.bullseye{align-items:center}.framed img,img.framed{border:3px solid silver;border-radius:2px;transition:all .4s}.framed img:hover,img.framed:hover{border-color:dimgray}.modal-layer{display:none;height:100vh;left:0;position:fixed;text-align:center;top:0;width:100%}ul.simple-text{list-style-type:none;padding:0}ul.simple-text li{font-size:1rem;padding:0;text-indent:0}figure.video-container,figure.video-container-link{display:block;height:0;margin:0 0 20px;overflow:hidden;padding-bottom:56%;position:relative}figure.video-container iframe,figure.video-container-link iframe{background-color:#000;border:5px solid #000;height:100%;left:0;position:absolute;top:0;width:100%}figure.video-container-link{opacity:.9;transition:all .4s}figure.video-container-link iframe{border:5px solid gray;pointer-events:none;transition:all .4s}figure.video-container-link:hover{opacity:1}figure.video-container-link:hover iframe{border-color:dimgray}form.perfect{background-color:#f5f5f5;border:1px solid;border-radius:2px;color:dimgray;margin:0 auto 20px;max-width:25em;padding:20px}form.perfect h2{clear:none;color:#fff;font-size:1.2rem;margin:-20px -20px 20px;padding:.3em;text-align:center}form.perfect fieldset{border:none;margin:0;padding:0}form.perfect label{display:block;text-align:left}form.perfect input:not([type=checkbox]):not([type=radio]),form.perfect textarea{-webkit-appearance:none;font-size:1.2rem;margin:0 0 15px;max-width:100%;width:100%}form.perfect input[type=checkbox],form.perfect input[type=radio]{font-size:1.2rem;margin:0 .5em .2em 1.5em}form.perfect label:last-of-type input{margin-bottom:20px}form.perfect select{font-size:1.2rem}form.perfect textarea{height:4.1em}form.perfect input,form.perfect textarea{border:1px solid silver;border-radius:5px;box-sizing:border-box;padding:.3em}form.perfect p{align-items:flex-end;display:flex;justify-content:space-between;margin:0}form.perfect p button{background-color:dimgray;border:none;border-radius:.4em;color:#fff;cursor:pointer;font-size:1.1rem;font-weight:700;margin-bottom:0;padding:.6em 1.2em;transition:all .4s}form.perfect p button:hover:not(:disabled){background-color:#000}form.perfect p span{color:gray;font-size:.6rem}form.perfect p span a{background-color:transparent;border:none;color:gray;outline:none;text-decoration:none}.reveal-button{border:1px solid;cursor:pointer;display:inline-block;margin-bottom:20px;padding:3px 10px;transition:all .4s}.reveal-button:hover{border-color:transparent;color:#fff}.reveal-target{display:none;margin-bottom:20px}[data-href-popup]{cursor:pointer}i.font-icon[data-click],i.font-icon[data-href]{opacity:.9;transition:all .4s}i.font-icon[data-click]:hover,i.font-icon[data-href]:hover{opacity:1}.json-key{color:brown}.json-value{color:navy}.json-boolean{color:teal}.json-string{color:olive}@-webkit-keyframes jiggle-it{0%{transform:rotate(-10deg)}50%{transform:rotate(10deg)}}@keyframes jiggle-it{0%{transform:rotate(-10deg)}50%{transform:rotate(10deg)}}.bubble-help{display:none}.bubble-help-hover{position:relative}.bubble-help-hover>.bubble-wrap{font-size:.8rem;font-weight:700;left:0;pointer-events:none;position:absolute;z-index:200}.bubble-help-hover>.bubble-wrap>.bubble-help{border-radius:5px;display:block;padding:10px 20px;white-space:nowrap}.bubble-help-hover>.bubble-wrap>.bubble-pointer{display:block;font-size:120%;margin-top:-.4em;padding-left:12px;text-align:left}#fork-me{display:none;height:200px;overflow:hidden;pointer-events:none;position:absolute;right:0;top:0;width:200px;z-index:150}#fork-me>a{background-color:hsla(0,0%,71%,.8);border:1px solid dimgray;color:#fff;display:block;font-size:14px;font-weight:700;height:30px;line-height:30px;margin:60px -50px 0 0;pointer-events:auto;text-align:center;transform:rotate(45deg);transition:all .4s}#fork-me>a:hover{background-color:#b4b4b4;color:#fff;outline:none}#fork-me>i.font-icon{color:dimgray;display:none;font-size:40px;pointer-events:auto;position:absolute;right:10px;top:10px}@media (max-width:667px){#fork-me>a{display:none}#fork-me>i.font-icon{display:block}}#social-buttons span i.font-icon{background-color:#fff;border:1px solid silver;border-radius:.2em;color:dimgray;display:inline-block;font-size:18px;height:24px;line-height:24px;text-align:center;transition:all .4s;vertical-align:top;width:24px}#social-buttons span i.font-icon:not(:last-child){margin-right:8px}#social-buttons span i.font-icon:hover{box-shadow:0 0 .4em skyblue;color:#6495ed}img.popup-image,img[data-popup-image]{cursor:pointer;max-height:120px;max-width:120px;opacity:.9;transition:all .4s}img.popup-image:hover,img[data-popup-image]:hover{opacity:1}img.popup-image+.popup-image-layer{background-color:#fff;left:10px;opacity:0;position:absolute;top:10px;z-index:5000}img.popup-image+.popup-image-layer i[data-icon]{background-color:silver;border-radius:1000px;color:gray;font-size:1.8rem;height:1.6em;padding-top:.3em;position:absolute;right:-.7em;text-align:center;top:-.7em;transition:all .4s;width:1.6em}img.popup-image+.popup-image-layer i[data-icon]:hover{color:#fff}img.popup-image+.popup-image-layer img{border:20px solid silver;display:block;height:auto;width:auto}.info-rollover-msg{display:none}@media (max-width:667px){h1{font-size:2rem}h1+h2{font-size:1.3rem}main section aside,main section aside.left{float:none;margin:0 0 20px;max-width:none;text-align:center}main section aside img{max-height:200px;width:auto}body{padding:20px 10px}body>footer{flex-direction:column;padding:20px 2px}body>footer>div{text-align:center!important}body>footer>:not(:last-child){margin-bottom:15px}} /**************************************************************************************************/ diff --git a/package.json b/package.json index 88f2ce6..0199f56 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "web-ignition", "description": "Start a fire", - "version": "1.5.0", + "version": "1.5.1", "license": "MIT", "type": "module", "module": "dist/lib-x.js", @@ -95,7 +95,7 @@ "babel-minify": "~0.5", "cpy-cli": "~3.1", "cssnano": "~5.0", - "eslint": "~8.9", + "eslint": "~8.10", "gulp": "~4.0", "gulp-append-prepend": "~1.0", "gulp-babel": "~8.0",