Changed source root directory

This commit is contained in:
2026-03-05 16:30:11 +01:00
parent dc85447ee1
commit 538f85d7a2
5868 changed files with 749734 additions and 99 deletions

View File

@@ -0,0 +1,93 @@
window.customConfirm = function(msg, okCallback, cancelCallback) {
var confirmHtml = '<div class="modal confirm fade" id="modal-confirm" tabindex="-1" role="dialog" aria-hidden="false">' +
'<div class="modal-dialog">' +
'<div class="modal-body">' +
'<div class="cont">' + msg +'</div>' +
'</div>' +
'<div class="modal-footer">' +
'<div class="cont">' +
'<a href="#" class="cancel" id="modal-confirm-cancel">CANCEL</a>' +
'<input type="submit" value="Ok" class="button" id="modal-confirm-ok">' +
'</div>' +
'</div>' +
'</div>' +
'</div>';
var okCallbackWrap = function(e){
e.preventDefault();
if (okCallback) okCallback();
$('#modal-confirm').modal('hide');
};
var cancelCallbackWrap = function(e){
e.preventDefault();
if (cancelCallback) cancelCallback();
$('#modal-confirm').modal('hide');
};
var removeCallback = function(){
document.getElementById('modal-confirm-ok').removeEventListener("click", okCallbackWrap , false);
document.getElementById('modal-confirm-cancel').removeEventListener("click", cancelCallbackWrap , false);
};
document.body.insertAdjacentHTML('beforeEnd', confirmHtml);
removeCallback();
document.getElementById('modal-confirm-ok').addEventListener("click", okCallbackWrap , false);
document.getElementById('modal-confirm-cancel').addEventListener("click", cancelCallbackWrap , false);
$('#modal-confirm').on('hidden.bs.modal', function(){
removeCallback();
document.body.removeChild(document.getElementById('modal-confirm'));
});
$('#modal-confirm').modal();
};
window.customAlert = function(msg) {
var confirmHtml = '<div class="modal confirm fade" id="modal-alert" tabindex="-1" role="dialog" aria-hidden="false">' +
'<div class="modal-dialog">' +
'<div class="modal-body">' +
'<div class="cont">' + msg +'</div>' +
'</div>' +
'<div class="modal-footer">' +
'<div class="cont">' +
'<input type="submit" value="Ok" class="button" data-dismiss="modal">' +
'</div>' +
'</div>' +
'</div>' +
'</div>';
document.body.insertAdjacentHTML('beforeEnd', confirmHtml);
$('#modal-alert').on('hidden.bs.modal', function(){
document.body.removeChild(document.getElementById('modal-alert'));
});
$('#modal-alert').modal();
};
window.customCopyLink = function(copylink) {
var copyToClipboard = function(str) {
var el = document.createElement('textarea');
el.classList.add('can-copy');
el.value = str;
document.body.appendChild(el);
el.select();
document.execCommand('copy');
document.body.removeChild(el);
$('#modal-copylink').modal('hide');
window.customAlert('Link is copied to the clipboard');
};
copyToClipboard(copylink);
};

View File

@@ -0,0 +1,5 @@
document.addEventListener("DOMContentLoaded", function(event) {
$('.start-search').on('click', function(){
$('#search-form').submit();
});
})

View File

@@ -0,0 +1,53 @@
document.addEventListener("DOMContentLoaded", function(event) {
var elemToScroll;
function scrollToHash(){
var feHeight = $(elemToScroll).offset().top;
if ($('header').length && $('header').is(":visible")) {
feHeight = feHeight - $('header').outerHeight();
}
$('html, body').scrollTop(feHeight);
}
function closestByClass(el, clazz) {
while (el.className !== clazz) {
el = el.parentNode;
if (!el) {
return null;
}
}
return el;
}
if (location.hash) {
setTimeout(function() {
window.scrollTo(0, 0);
elemToScroll = location.hash;
scrollToHash();
}, 1);
}
var links = document.querySelectorAll('.feature-links.inner .feature-link');
if (links.length > 0){
for (var i = 0; i< links.length; i++){
links[i].addEventListener('click', function(e){
e.preventDefault();
var el = closestByClass(e.target, 'feature-link');
elemToScroll = el.hash;
scrollToHash();
}, false);
}
}
//we don't actually need this
$('body').on('click', '.article-index li a', function(e){
e.preventDefault();
elemToScroll = e.target.hash;
scrollToHash();
});
});

View File

@@ -0,0 +1,3 @@
/*! modernizr 3.6.0 (Custom Build) | MIT *
* https://modernizr.com/download/?-webp-setclasses !*/
!function(e,n,A){function o(e){var n=u.className,A=Modernizr._config.classPrefix||"";if(c&&(n=n.baseVal),Modernizr._config.enableJSClass){var o=new RegExp("(^|\\s)"+A+"no-js(\\s|$)");n=n.replace(o,"$1"+A+"js$2")}Modernizr._config.enableClasses&&(n+=" "+A+e.join(" "+A),c?u.className.baseVal=n:u.className=n)}function t(e,n){return typeof e===n}function a(){var e,n,A,o,a,i,l;for(var f in r)if(r.hasOwnProperty(f)){if(e=[],n=r[f],n.name&&(e.push(n.name.toLowerCase()),n.options&&n.options.aliases&&n.options.aliases.length))for(A=0;A<n.options.aliases.length;A++)e.push(n.options.aliases[A].toLowerCase());for(o=t(n.fn,"function")?n.fn():n.fn,a=0;a<e.length;a++)i=e[a],l=i.split("."),1===l.length?Modernizr[l[0]]=o:(!Modernizr[l[0]]||Modernizr[l[0]]instanceof Boolean||(Modernizr[l[0]]=new Boolean(Modernizr[l[0]])),Modernizr[l[0]][l[1]]=o),s.push((o?"":"no-")+l.join("-"))}}function i(e,n){if("object"==typeof e)for(var A in e)f(e,A)&&i(A,e[A]);else{e=e.toLowerCase();var t=e.split("."),a=Modernizr[t[0]];if(2==t.length&&(a=a[t[1]]),"undefined"!=typeof a)return Modernizr;n="function"==typeof n?n():n,1==t.length?Modernizr[t[0]]=n:(!Modernizr[t[0]]||Modernizr[t[0]]instanceof Boolean||(Modernizr[t[0]]=new Boolean(Modernizr[t[0]])),Modernizr[t[0]][t[1]]=n),o([(n&&0!=n?"":"no-")+t.join("-")]),Modernizr._trigger(e,n)}return Modernizr}var s=[],r=[],l={_version:"3.6.0",_config:{classPrefix:"",enableClasses:!0,enableJSClass:!0,usePrefixes:!0},_q:[],on:function(e,n){var A=this;setTimeout(function(){n(A[e])},0)},addTest:function(e,n,A){r.push({name:e,fn:n,options:A})},addAsyncTest:function(e){r.push({name:null,fn:e})}},Modernizr=function(){};Modernizr.prototype=l,Modernizr=new Modernizr;var f,u=n.documentElement,c="svg"===u.nodeName.toLowerCase();!function(){var e={}.hasOwnProperty;f=t(e,"undefined")||t(e.call,"undefined")?function(e,n){return n in e&&t(e.constructor.prototype[n],"undefined")}:function(n,A){return e.call(n,A)}}(),l._l={},l.on=function(e,n){this._l[e]||(this._l[e]=[]),this._l[e].push(n),Modernizr.hasOwnProperty(e)&&setTimeout(function(){Modernizr._trigger(e,Modernizr[e])},0)},l._trigger=function(e,n){if(this._l[e]){var A=this._l[e];setTimeout(function(){var e,o;for(e=0;e<A.length;e++)(o=A[e])(n)},0),delete this._l[e]}},Modernizr._q.push(function(){l.addTest=i}),Modernizr.addAsyncTest(function(){function e(e,n,A){function o(n){var o=n&&"load"===n.type?1==t.width:!1,a="webp"===e;i(e,a&&o?new Boolean(o):o),A&&A(n)}var t=new Image;t.onerror=o,t.onload=o,t.src=n}var n=[{uri:"data:image/webp;base64,UklGRiQAAABXRUJQVlA4IBgAAAAwAQCdASoBAAEAAwA0JaQAA3AA/vuUAAA=",name:"webp"},{uri:"data:image/webp;base64,UklGRkoAAABXRUJQVlA4WAoAAAAQAAAAAAAAAAAAQUxQSAwAAAABBxAR/Q9ERP8DAABWUDggGAAAADABAJ0BKgEAAQADADQlpAADcAD++/1QAA==",name:"webp.alpha"},{uri:"data:image/webp;base64,UklGRlIAAABXRUJQVlA4WAoAAAASAAAAAAAAAAAAQU5JTQYAAAD/////AABBTk1GJgAAAAAAAAAAAAAAAAAAAGQAAABWUDhMDQAAAC8AAAAQBxAREYiI/gcA",name:"webp.animation"},{uri:"data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAAAAAAfQ//73v/+BiOh/AAA=",name:"webp.lossless"}],A=n.shift();e(A.name,A.uri,function(A){if(A&&"load"===A.type)for(var o=0;o<n.length;o++)e(n[o].name,n[o].uri)})}),a(),o(s),delete l.addTest,delete l.addAsyncTest;for(var p=0;p<Modernizr._q.length;p++)Modernizr._q[p]();e.Modernizr=Modernizr}(window,document);

View File

@@ -0,0 +1,17 @@
$(document).ready(function () {
function promoTopNext() {
if ($('.promo-backs').length) {
setTimeout(function () {
var current = $('.promo-bg.current');
current.removeClass('current');
if (current.next().length) {
current.next().addClass('current');
} else {
current.parent().find('.promo-bg:first-child').addClass('current');
}
promoTopNext();
}, 4500);
}
};
promoTopNext();
});

View File

@@ -0,0 +1,34 @@
(function(){
// if (document.querySelector('.show-promo-popup')) {
// alert(1);
// }
function addPopup(){
var popup = '<div class="promo-popup">' +
'<a href="#" class="pp-close"><span class="icon-close"></span></a>' +
'<div class="pp-text">Sign up to Learn How to Get Your Book Published!</div>' +
'<div class="pp-btn"><a href="https://livecarta.com/user/registration" class="button mp-top-left xxl">sign up for free</a></div>' +
'</div>';
document.body.insertAdjacentHTML('beforeend', popup);
setTimeout(function(){
document.querySelector('.promo-popup').classList.add('show');
document.querySelector('.promo-popup .pp-close').addEventListener('click', function(e){
e.preventDefault();
var popup = document.querySelector('.promo-popup');
popup.parentElement.removeChild(popup);
})
},500);
}
if (document.querySelector('.show-promo-popup')) {
setTimeout(function(){
if (!document.querySelector('.signed-user')){
addPopup();
}
}, 6000);
}
})();

View File

@@ -0,0 +1,69 @@
(function(){
var slider;
var sliderOptions = {
perPage: 3,
gap: 30
};
function mountSlider(){
slider = new Splide( '.splide', {
type: 'loop',
perPage: sliderOptions.perPage,
perMove: 1,
rewind : true,
pagination: false,
gap: sliderOptions.gap
} ).mount();
}
function destroySlider(){
slider.destroy(completely = true);
}
function resizeWindow(){
var sliderSize = document.querySelector('.slider-size').dataset.sliderSize;
var windowSize = document.body.clientWidth;
sliderOptions = null;
if ( windowSize > 1000 && sliderSize != 'md' ) {
sliderOptions = {
perPage: 3,
gap: 30
}
document.querySelector('.slider-size').dataset.sliderSize = 'md';
}
if ( ( windowSize > 768 && windowSize <= 1024 ) && sliderSize != 'sm') {
sliderOptions = {
perPage: 2,
gap: 10
}
document.querySelector('.slider-size').dataset.sliderSize = 'sm';
}
if ( windowSize <= 768 && sliderSize != 'xs') {
sliderOptions = {
perPage: 1,
gap: 0
}
document.querySelector('.slider-size').dataset.sliderSize = 'xs';
}
if (sliderOptions) {
destroySlider();
mountSlider();
}
}
if (document.querySelector('.splide')) {
mountSlider();
resizeWindow();
window.onresize = resizeWindow;
}
})();
function scrollToCalendar() {
event.preventDefault();
var scrollContCoords = document.querySelector('.pc-calendar-desktop').getBoundingClientRect().top;
var scrollCoords = window.pageYOffset + scrollContCoords + 15;
window.scrollTo(0, scrollCoords);
}

View File

@@ -0,0 +1 @@
@keyframes splide-loading{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.splide__container{position:relative;box-sizing:border-box}.splide__list{margin:0!important;padding:0!important;width:-webkit-max-content;width:max-content;will-change:trasform}.splide.is-active .splide__list{display:flex}.splide__pagination{display:inline-flex;align-items:center;width:95%;flex-wrap:wrap;justify-content:center;margin:0}.splide__pagination li{list-style-type:none;display:inline-block;line-height:1;margin:0}.splide{visibility:hidden}.splide,.splide__slide{position:relative;outline:none}.splide__slide{box-sizing:border-box;list-style-type:none!important;margin:0;flex-shrink:0}.splide__slide img{vertical-align:bottom}.splide__slider{position:relative}.splide__spinner{position:absolute;top:0;left:0;right:0;bottom:0;margin:auto;display:inline-block;width:20px;height:20px;border-radius:50%;border:2px solid #999;border-left-color:transparent;animation:splide-loading 1s linear infinite}.splide__track{position:relative;z-index:0;overflow:hidden}.splide--draggable>.splide__track>.splide__list>.splide__slide{-webkit-user-select:none;user-select:none}.splide--fade>.splide__track>.splide__list{display:block}.splide--fade>.splide__track>.splide__list>.splide__slide{position:absolute;top:0;left:0;z-index:0;opacity:0}.splide--fade>.splide__track>.splide__list>.splide__slide.is-active{position:relative;z-index:1;opacity:1}.splide--rtl{direction:rtl}.splide--ttb>.splide__track>.splide__list{display:block}.splide--ttb>.splide__pagination{width:auto}.splide__arrow{position:absolute;z-index:1;top:50%;transform:translateY(-50%);width:2em;height:2em;border-radius:50%;display:flex;align-items:center;justify-content:center;border:none;padding:0;opacity:.7;background:#ccc}.splide__arrow svg{width:1.2em;height:1.2em}.splide__arrow:hover{cursor:pointer;opacity:.9}.splide__arrow:focus{outline:none}.splide__arrow--prev{left:1em}.splide__arrow--prev svg{transform:scaleX(-1)}.splide__arrow--next{right:1em}.splide__pagination{position:absolute;z-index:1;bottom:.5em;left:50%;transform:translateX(-50%);padding:0}.splide__pagination__page{display:inline-block;width:8px;height:8px;background:#ccc;border-radius:50%;margin:3px;padding:0;transition:transfrom .2s linear;border:none;opacity:.7}.splide__pagination__page.is-active{transform:scale(1.4);background:#fff}.splide__pagination__page:hover{cursor:pointer;opacity:.9}.splide__pagination__page:focus{outline:none}.splide__progress__bar{width:0;height:3px;background:#ccc}.splide--nav>.splide__track>.splide__list>.splide__slide{border:3px solid transparent}.splide--nav>.splide__track>.splide__list>.splide__slide.is-active{border-color:#000}.splide--nav>.splide__track>.splide__list>.splide__slide:focus{outline:none}.splide--rtl>.splide__arrows .splide__arrow--prev,.splide--rtl>.splide__track>.splide__arrows .splide__arrow--prev{right:1em;left:auto}.splide--rtl>.splide__arrows .splide__arrow--prev svg,.splide--rtl>.splide__track>.splide__arrows .splide__arrow--prev svg{transform:scaleX(1)}.splide--rtl>.splide__arrows .splide__arrow--next,.splide--rtl>.splide__track>.splide__arrows .splide__arrow--next{left:1em;right:auto}.splide--rtl>.splide__arrows .splide__arrow--next svg,.splide--rtl>.splide__track>.splide__arrows .splide__arrow--next svg{transform:scaleX(-1)}.splide--ttb>.splide__arrows .splide__arrow,.splide--ttb>.splide__track>.splide__arrows .splide__arrow{left:50%;transform:translate(-50%)}.splide--ttb>.splide__arrows .splide__arrow--prev,.splide--ttb>.splide__track>.splide__arrows .splide__arrow--prev{top:1em}.splide--ttb>.splide__arrows .splide__arrow--prev svg,.splide--ttb>.splide__track>.splide__arrows .splide__arrow--prev svg{transform:rotate(-90deg)}.splide--ttb>.splide__arrows .splide__arrow--next,.splide--ttb>.splide__track>.splide__arrows .splide__arrow--next{top:auto;bottom:1em}.splide--ttb>.splide__arrows .splide__arrow--next svg,.splide--ttb>.splide__track>.splide__arrows .splide__arrow--next svg{transform:rotate(90deg)}.splide--ttb>.splide__pagination{display:flex;flex-direction:column;bottom:50%;left:auto;right:.5em;transform:translateY(50%)}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,224 @@
const imgs = document.querySelectorAll('.ci-top img');
if (imgs.length) {
imgs.forEach(img => {
img.setAttribute('onload', "this.classList.add('loaded')");
img.setAttribute('onerror', "this.classList.add('loaded')");
img.insertAdjacentHTML('afterend', '<span class="skeleton skeleton-casebook-top"></span>');
if (img.complete) {
console.log(1);
img.classList.add('loaded');
}
})
}
window.addEventListener('DOMContentLoaded', function(){
// home page scripts start
function startTopBlockAnimations(){
const lines = [
'customized learning experiences.',
'online publishing.',
'customized teaching experiences.'
];
let currentTextNum = 0;
const element = document.getElementById('animatedText');
function clearCurrent(){
element.innerText = element.innerText.slice(0, -1);
if (element.innerText.length > 0 ) {
setTimeout(function(){
clearCurrent();
}, 30);
} else {
currentTextNum++;
if (currentTextNum > lines.length - 1) {
currentTextNum = 0;
}
setTimeout(function(){
addNext();
}, 1000);
}
}
function addNext(){
if (!element) return;
element.innerText = lines[currentTextNum].substr(0, element.innerText.length + 1);
if (element.innerText.length === lines[currentTextNum].length ) {
setTimeout(function(){
clearCurrent();
}, 1000);
} else {
setTimeout(function(){
addNext();
}, 30);
}
}
setTimeout(function(){
addNext();
}, 1000);
}
if (this.document.querySelector('.promo-top')) {
startTopBlockAnimations();
}
// home page scripts end
// catalog
if (document.getElementById('catalogSearchBtn')) {
const catalogSearchBtn = document.getElementById('catalogSearchBtn');
const catalogSearchInput = document.getElementById('catalogSearchInput');
const catalogSearchClear = document.getElementById('catalogSearchClear');
catalogSearchBtn.addEventListener('click', function(){
let searchText = catalogSearchInput.value;
top.location = 'https://app.livecarta.com/catalog?tab=materials&search=' + searchText;
})
catalogSearchClear.addEventListener('click', function(){
catalogSearchInput.value = '';
})
catalogSearchInput.addEventListener('keyup', function(e){
if (e.keyCode === 13) {
let searchText = catalogSearchInput.value;
top.location = 'https://app.livecarta.com/catalog?tab=materials&search=' + searchText;
}
})
}
document.addEventListener('click', function(e){
if (e.target.classList && e.target.closest('.catalogSearchBtn')) {
let searchText = e.target.closest('.input-flex').querySelector('.catalogSearchInput').value;
top.location = 'https://app.livecarta.com/catalog?tab=materials&search=' + searchText;
}
if (e.target.classList && e.target.closest('.catalogSearchClear')) {
e.target.closest('.input-flex').querySelector('.catalogSearchInput').value = '';
}
})
document.addEventListener('keyup', function(e){
if (e.keyCode === 13 && e.target.classList.contains('catalogSearchInput')) {
let searchText = e.target.value;
top.location = 'https://app.livecarta.com/catalog?tab=materials&search=' + searchText;
}
})
// sliders
if (document.querySelector('.catalog-slider')) {
const catalogSlider = new Splide( '.catalog-slider', {
type: 'loop',
perPage: 5,
perMove: 1,
pagination: false,
gap: 10,
drag: 'free',
breakpoints: {
740: { perPage: 2 },
1060: { perPage: 3 },
1280: { perPage: 4 }
}
} ).mount();
}
if (document.querySelector('.pc-slider .splide')) {
new Splide('.pc-slider .splide', {
type: 'loop',
perPage: 3,
perMove: 1,
pagination: false,
gap: 10,
breakpoints: {
1000: { perPage: 2 },
768: { perPage: 1, gap: 0 },
}
}).mount();
}
// scary animations
document.addEventListener('click', (event) => {
if (event.target.closest('.set-icon') || event?.classList?.contains('set-icon')) {
event.preventDefault();
const elem = event.target.closest('.set-icon') || event.classList.contains('set-icon');
if (elem.classList.contains('selected')) return;
const states = {
remix: { remix: 'selected', custom: 'rt', bundle: 'rb', copylink: 'lb', publish: 'lt' },
custom: { remix: 'lt', custom: 'selected', bundle: 'rt', copylink: 'rb', publish: 'lb' },
bundle: { remix: 'lb', custom: 'lt', bundle: 'selected', copylink: 'rt', publish: 'rb' },
copylink: { remix: 'rb', custom: 'lb', bundle: 'lt', copylink: 'selected', publish: 'rt' },
publish: { remix: 'rt', custom: 'rb', bundle: 'lb', copylink: 'lt', publish: 'selected' }
}
const state = states[elem.dataset.icon];
const icons = document.querySelectorAll('.scary-icon');
icons.forEach(icon => {
const iconType = icon.dataset.icon;
icon.className = 'scary-icon' + ' ' + state[iconType];
})
const hoverBlocks = document.querySelectorAll('.hover-block');
hoverBlocks.forEach(block => {
block.classList.remove('selected');
})
elem.classList.add('selected')
}
})
// logos slider
if (document.querySelector('.logos-slider')) {
const catalogSlider = new Splide( '.logos-slider', {
type: 'loop',
drag: 'free',
focus: 'center',
pagination: false,
arrows: false,
gap: 120,
height: '9rem',
autoWidth: true,
autoScroll: {
speed: 1,
pauseOnHover: false
},
breakpoints: {
740: { gap: 60 },
1060: { gap: 80 },
1280: { gap: 100 }
}
} ).mount(window.splide.Extensions);
}
// blog page
document.body.addEventListener('click', function(event){
var catClass = '';
if (event.target.closest('.category-select')) {
event.preventDefault();
let elem = event.target.closest('.category-select');
document.querySelector('.category-select.selected').classList.remove('selected');
elem.classList.add('selected');
document.querySelector('.bp-list').classList.remove('cat-publishing');
document.querySelector('.bp-list').classList.remove('cat-teaching');
document.querySelector('.bp-list').classList.remove('cat-learning');
document.querySelector('.bp-list').classList.remove('cat-all');
catClass = elem.dataset.cat;
document.querySelector('.bp-list').classList.add(catClass);
return false;
}
});
// faq search clear
let clearBtn = document.querySelector('.faq-search .button.clear');
if (clearBtn) clearBtn.addEventListener('click', function(event){
let input = clearBtn.closest('.faq-search').querySelector('input[type="text"]');
if (input.getAttribute('value')) {
event.preventDefault();
input.value = '';
clearBtn.closest('form').submit();
return false;
}
});
});