Cleanup CSS and JS code

This commit is contained in:
djmaze 2020-10-01 11:10:40 +02:00
parent 0eea2cb5ad
commit 6c75dd12f8
19 changed files with 82 additions and 146 deletions

View file

@ -1 +0,0 @@
Name this file as "MULTIPLY" to enable multiple domain installation.

View file

@ -4,7 +4,11 @@
//header('Strict-Transport-Security: max-age=31536000'); //header('Strict-Transport-Security: max-age=31536000');
//define('USE_GZIP', true); // to use gzip encoded output // Uncomment to use gzip encoded output
//define('USE_GZIP', 1);
// Uncomment to enable multiple domain installation.
//define('MULTIDOMAIN', 1);
/** /**
* @return string * @return string

View file

@ -1,18 +1,15 @@
/* eslint max-len: 0 */ /* eslint max-len: 0 */
(() => { (doc => {
'use strict';
const doc = document,
const
removeElements = 'HEAD,LINK,META,NOSCRIPT,SCRIPT,TEMPLATE,TITLE', removeElements = 'HEAD,LINK,META,NOSCRIPT,SCRIPT,TEMPLATE,TITLE',
allowedElements = 'A,B,BLOCKQUOTE,BR,DIV,FONT,H1,H2,H3,H4,H5,H6,HR,IMG,LI,OL,P,SPAN,STRONG,TABLE,TD,TH,TR,U,UL', allowedElements = 'A,B,BLOCKQUOTE,BR,DIV,FONT,H1,H2,H3,H4,H5,H6,HR,IMG,LI,OL,P,SPAN,STRONG,TABLE,TD,TH,TR,U,UL',
allowedAttributes = 'abbr,align,background,bgcolor,border,cellpadding,cellspacing,class,color,colspan,dir,face,frame,height,href,hspace,id,lang,rowspan,rules,scope,size,src,style,target,type,usemap,valign,vspace,width'.split(','), allowedAttributes = 'abbr,align,background,bgcolor,border,cellpadding,cellspacing,class,color,colspan,dir,face,frame,height,href,hspace,id,lang,rowspan,rules,scope,size,src,style,target,type,usemap,valign,vspace,width'.split(','),
i18n = (str, def) => rl.i18n(str) || def, i18n = (str, def) => rl.i18n(str) || def,
ctrlKey = /Mac OS X/.test( navigator.userAgent ) ? '⌘ + ' : 'Ctrl + ', ctrlKey = shortcuts.getMetaKey().replace('meta','⌘') + ' + ',
tpl = doc.createElement('template'), tpl = doc.createElement('template'),
clr = doc.createElement('input'), clr = doc.createElement('input'),
@ -568,6 +565,6 @@ class SquireUI
} }
} }
window.SquireUI = SquireUI; this.SquireUI = SquireUI;
})(); })(document);

View file

@ -281,8 +281,13 @@ html:not(.rl-left-panel-disabled) #rl-left.resizable > .resizer,
} }
} }
.visible-on-ctrl, .hidden-on-ctrl-btn,
.visible-on-ctrl-btn, .visible-on-ctrl-btn {
display: inline-block;
}
html:not(.rl-ctrl-key-pressed) .visible-on-ctrl-btn,
html.rl-ctrl-key-pressed .hidden-on-ctrl-btn,
.show-on-panel-disabled { .show-on-panel-disabled {
display: none; display: none;
} }
@ -314,28 +319,16 @@ html.rl-left-panel-disabled {
} }
} }
html.rl-left-panel-short { html.rl-left-panel-short #rl-left,
html.rl-left-panel-short #rl-right {
#rl-left {
width: 60px !important; width: 60px !important;
} }
#rl-right { html.rl-left-panel-none #rl-left,
left: 60px !important; html.rl-left-panel-none #rl-right {
}
}
html.rl-left-panel-none {
#rl-left {
width: 10px !important; width: 10px !important;
} }
#rl-right {
left: 10px !important;
}
}
html.rl-no-preview-pane { html.rl-no-preview-pane {
#rl-sub-left { #rl-sub-left {
@ -391,37 +384,11 @@ html.rl-bottom-preview-pane {
} }
} }
.hidden-on-ctrl-btn { .show-on-mobile,
display: inline-block;
}
html.rl-ctrl-key-pressed {
.visible-on-ctrl {
display: inline-block;
}
.btn-group.open .visible-on-ctrl-btn {
display: inline-block;
}
.hidden-on-ctrl {
display: none;
}
.btn-group.open .hidden-on-ctrl-btn {
display: none;
}
}
html.rl-mobile .hide-on-mobile { html.rl-mobile .hide-on-mobile {
display: none !important; display: none !important;
} }
.show-on-mobile {
display: none !important;
}
html.rl-mobile .show-on-mobile { html.rl-mobile .show-on-mobile {
display: initial !important; display: initial !important;
} }

View file

@ -6,8 +6,6 @@
*/ */
(doc => { (doc => {
'use strict';
let ua = navigator.userAgent.toLowerCase(), let ua = navigator.userAgent.toLowerCase(),
dropEffect = 'move', dropEffect = 'move',

View file

@ -1,3 +1,5 @@
'use strict';
(w=>{ (w=>{
Array.prototype.flat || Object.defineProperty(Array.prototype, 'flat', { Array.prototype.flat || Object.defineProperty(Array.prototype, 'flat', {
@ -30,4 +32,4 @@ w.ResizeObserver || (w.ResizeObserver = class {
} }
}); });
})(window); })(this);

View file

@ -3,7 +3,6 @@
if (!defined('APP_VERSION')) if (!defined('APP_VERSION'))
{ {
define('APP_VERSION', '0.0.0'); define('APP_VERSION', '0.0.0');
define('APP_VERSION_TYPE', 'source');
define('APP_INDEX_ROOT_FILE', __FILE__); define('APP_INDEX_ROOT_FILE', __FILE__);
define('APP_INDEX_ROOT_PATH', str_replace('\\', '/', rtrim(dirname(__FILE__), '\\/').'/')); define('APP_INDEX_ROOT_PATH', str_replace('\\', '/', rtrim(dirname(__FILE__), '\\/').'/'));
} }

View file

@ -38,7 +38,7 @@
define('APP_DEFAULT_PRIVATE_DATA_NAME', '_default_'); define('APP_DEFAULT_PRIVATE_DATA_NAME', '_default_');
$sPrivateDataFolderInternalName = is_file(APP_INDEX_ROOT_PATH.'MULTIPLY') ? APP_SITE : ''; $sPrivateDataFolderInternalName = defined('MULTIDOMAIN') ? APP_SITE : '';
define('APP_PRIVATE_DATA_NAME', 0 === strlen($sPrivateDataFolderInternalName) ? APP_DEFAULT_PRIVATE_DATA_NAME : $sPrivateDataFolderInternalName); define('APP_PRIVATE_DATA_NAME', 0 === strlen($sPrivateDataFolderInternalName) ? APP_DEFAULT_PRIVATE_DATA_NAME : $sPrivateDataFolderInternalName);
define('APP_MULTIPLY', 0 < strlen($sPrivateDataFolderInternalName) && APP_DEFAULT_PRIVATE_DATA_NAME !== APP_PRIVATE_DATA_NAME); define('APP_MULTIPLY', 0 < strlen($sPrivateDataFolderInternalName) && APP_DEFAULT_PRIVATE_DATA_NAME !== APP_PRIVATE_DATA_NAME);

View file

@ -76,13 +76,13 @@ config.paths.js = {
'dev/External/ifvisible.js', 'dev/External/ifvisible.js',
'dev/dragdropgecko.js', 'dev/dragdropgecko.js',
'dev/shortcuts.js', 'dev/shortcuts.js',
'vendors/inputosaurus/inputosaurus.js', // custom (modified) 'vendors/inputosaurus/inputosaurus.js',
'vendors/routes/signals.min.js', // fixed 'vendors/routes/signals.min.js',
'vendors/routes/hasher.min.js', // fixed 'vendors/routes/hasher.min.js',
'vendors/routes/crossroads.min.js', // fixed 'vendors/routes/crossroads.min.js',
'vendors/jua/jua.min.js', // custom 'vendors/jua/jua.min.js',
'vendors/qr.js/qr.min.js', // fixed (license) 'vendors/qr.js/qr.min.js',
'vendors/bootstrap/js/bootstrap.native.min.js', // fixed 'vendors/bootstrap/js/bootstrap.native.js',
'vendors/knockout/build/output/knockout-latest.js', 'vendors/knockout/build/output/knockout-latest.js',
'vendors/squire/build/squire-raw.js', 'vendors/squire/build/squire-raw.js',
'dev/External/SquireUI.js' 'dev/External/SquireUI.js'

View file

@ -32,10 +32,6 @@ const rainloopSetup = (done) => {
fs fs
.readFileSync('index.php', 'utf8') .readFileSync('index.php', 'utf8')
.replace("'APP_VERSION', '0.0.0'", "'APP_VERSION', '" + versionFull + "'") .replace("'APP_VERSION', '0.0.0'", "'APP_VERSION', '" + versionFull + "'")
.replace(
"'APP_VERSION_TYPE', 'source'",
"'APP_VERSION_TYPE', '" + (config.community ? 'community' : 'standard') + "'"
)
); );
fs.writeFileSync(dist + 'rainloop/v/' + versionFull + '/index.php.root', fs.readFileSync(dist + 'index.php')); fs.writeFileSync(dist + 'rainloop/v/' + versionFull + '/index.php.root', fs.readFileSync(dist + 'index.php'));

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

View file

@ -4,13 +4,10 @@
* Licensed under MIT (https://github.com/thednp/bootstrap.native/blob/master/LICENSE) * Licensed under MIT (https://github.com/thednp/bootstrap.native/blob/master/LICENSE)
*/ */
window.BSN = (() => { (doc => {
'use strict'; const setFocus = element => element.focus ? element.focus() : element.setActive();
const doc = document, this.BSN = {
setFocus = element => element.focus ? element.focus() : element.setActive();
return {
Dropdown: function(element) { Dropdown: function(element) {
let menu, menuItems = []; let menu, menuItems = [];
const self = this, const self = this,
@ -20,30 +17,29 @@ window.BSN = (() => {
(href && href.slice(-1) === '#') && e.preventDefault(); (href && href.slice(-1) === '#') && e.preventDefault();
}, },
toggleEvents = () => { toggleEvents = () => {
let action = element.open ? 'addEventListener' : 'removeEventListener'; let action = (element.open ? 'add' : 'remove') + 'EventListener';
doc[action]('click',dismissHandler,false); doc[action]('click',dismissHandler);
doc[action]('keydown',preventScroll,false); doc[action]('keydown',preventScroll);
doc[action]('keyup',keyHandler,false); doc[action]('keyup',keyHandler);
doc[action]('focus',dismissHandler,false); doc[action]('focus',dismissHandler);
}, },
dismissHandler = e => { dismissHandler = e => {
let eventTarget = e.target, let eventTarget = e.target,
inside = menu.contains(eventTarget), inside = menu.contains(eventTarget),
hasData = eventTarget && (eventTarget.getAttribute('data-toggle') hasData = eventTarget && (eventTarget.getAttribute('data-toggle')
|| (eventTarget.parentNode && eventTarget.parentNode.getAttribute('data-toggle'))); || (eventTarget.parentNode && eventTarget.parentNode.getAttribute('data-toggle')));
if ((e.type === 'focus' && (eventTarget === element || inside)) if (!(hasData && inside)
|| (hasData && inside) && !(e.type === 'focus' && (inside || eventTarget === element))
) { ) {
return;
}
self.hide(); self.hide();
preventEmptyAnchor(e); preventEmptyAnchor(e);
}
}, },
clickHandler = e => { clickHandler = e => {
self.show(); self.show();
preventEmptyAnchor(e); preventEmptyAnchor(e);
}, },
preventScroll = e => (e.code === 'ArrowUp' || e.code === 'ArrowDown') && e.preventDefault(), preventScroll = e => (e.key === 'ArrowUp' || e.key === 'ArrowDown') && e.preventDefault(),
keyHandler = e => { keyHandler = e => {
let activeItem = doc.activeElement, let activeItem = doc.activeElement,
isSameElement = activeItem === element, isSameElement = activeItem === element,
@ -52,14 +48,14 @@ window.BSN = (() => {
idx = menuItems.indexOf(activeItem); idx = menuItems.indexOf(activeItem);
if ( isMenuItem ) { if ( isMenuItem ) {
idx = isSameElement ? 0 idx = isSameElement ? 0
: e.code === 'ArrowUp' ? (idx>1?idx-1:0) : e.key === 'ArrowUp' ? (idx>1?idx-1:0)
: e.code === 'ArrowDown' ? (idx<menuItems.length-1?idx+1:idx) : idx; : e.key === 'ArrowDown' ? (idx<menuItems.length-1?idx+1:idx) : idx;
menuItems[idx] && setFocus(menuItems[idx]); menuItems[idx] && setFocus(menuItems[idx]);
} }
if ( (menuItems.length && isMenuItem if ( (menuItems.length && isMenuItem
|| !menuItems.length && (isInsideMenu || isSameElement) || !menuItems.length && (isInsideMenu || isSameElement)
|| !isInsideMenu ) || !isInsideMenu )
&& element.open && e.code === 'Escape' && element.open && e.key === 'Escape'
) { ) {
self.toggle(); self.toggle();
} }
@ -76,7 +72,7 @@ window.BSN = (() => {
parent.classList.add('show'); parent.classList.add('show');
element.setAttribute('aria-expanded',true); element.setAttribute('aria-expanded',true);
element.open = true; element.open = true;
element.removeEventListener('click',clickHandler,false); element.removeEventListener('click',clickHandler);
setTimeout(() => { setTimeout(() => {
setFocus( menu.getElementsByTagName('INPUT')[0] || element ); setFocus( menu.getElementsByTagName('INPUT')[0] || element );
toggleEvents(); toggleEvents();
@ -89,10 +85,10 @@ window.BSN = (() => {
element.open = false; element.open = false;
toggleEvents(); toggleEvents();
setFocus(element); setFocus(element);
setTimeout(() => element.Dropdown && element.addEventListener('click',clickHandler,false), 1); setTimeout(() => element.Dropdown && element.addEventListener('click',clickHandler), 1);
}; };
self.toggle = () => (parent.classList.contains('show') && element.open) ? self.hide() : self.show(); self.toggle = () => (parent.classList.contains('show') && element.open) ? self.hide() : self.show();
element.addEventListener('click',clickHandler,false); element.addEventListener('click',clickHandler);
element.open = false; element.open = false;
element.Dropdown = self; element.Dropdown = self;
}, },
@ -101,7 +97,10 @@ window.BSN = (() => {
constructor(element) { constructor(element) {
this.element = element this.element = element
element.Tab = this; element.Tab = this;
element.addEventListener('click', e => {e.preventDefault();this.show();}); element.addEventListener('click', e => {
e.preventDefault();
this.show();
});
} }
show() { show() {
@ -117,4 +116,4 @@ window.BSN = (() => {
} }
}; };
})(); })(document);

View file

@ -1,7 +0,0 @@
/*!
* Native JavaScript for Bootstrap v3.0.10 (https://thednp.github.io/bootstrap.native/)
* Copyright 2015-2020 © dnp_theme
* Licensed under MIT (https://github.com/thednp/bootstrap.native/blob/master/LICENSE)
*/
window.BSN=(()=>{"use strict";const e=document,t=e=>e.focus?e.focus():e.setActive();return{Dropdown:function(s){let o,n=[];const r=this,i=s.parentNode,a=e=>{const t=e.target,s=t.href||t.parentNode&&t.parentNode.href;s&&"#"===s.slice(-1)&&e.preventDefault()},c=()=>{let t=s.open?"addEventListener":"removeEventListener";e[t]("click",d,!1),e[t]("keydown",h,!1),e[t]("keyup",p,!1),e[t]("focus",d,!1)},d=e=>{let t=e.target,n=o.contains(t),i=t&&(t.getAttribute("data-toggle")||t.parentNode&&t.parentNode.getAttribute("data-toggle"));"focus"===e.type&&(t===s||n)||i&&n||(r.hide(),a(e))},l=e=>{r.show(),a(e)},h=e=>("ArrowUp"===e.code||"ArrowDown"===e.code)&&e.preventDefault(),p=i=>{let a=e.activeElement,c=a===s,d=o.contains(a),l=a.parentNode===o||a.parentNode.parentNode===o,h=n.indexOf(a);l&&(h=c?0:"ArrowUp"===i.code?h>1?h-1:0:"ArrowDown"===i.code&&h<n.length-1?h+1:h,n[h]&&t(n[h])),(n.length&&l||!n.length&&(d||c)||!d)&&s.open&&"Escape"===i.code&&r.toggle()};r.show=(()=>{o=i.querySelector(".dropdown-menu"),n=[],[...o.children].forEach(e=>{e.children.length&&"A"===e.children[0].tagName&&n.push(e.children[0]),"A"===e.tagName&&n.push(e)}),!("tabindex"in o)&&o.setAttribute("tabindex","0"),o.classList.add("show"),i.classList.add("show"),s.setAttribute("aria-expanded",!0),s.open=!0,s.removeEventListener("click",l,!1),setTimeout(()=>{t(o.getElementsByTagName("INPUT")[0]||s),c()},1)}),r.hide=(()=>{o.classList.remove("show"),i.classList.remove("show"),s.setAttribute("aria-expanded",!1),s.open=!1,c(),t(s),setTimeout(()=>s.Dropdown&&s.addEventListener("click",l,!1),1)}),r.toggle=(()=>i.classList.contains("show")&&s.open?r.hide():r.show()),s.addEventListener("click",l,!1),s.open=!1,s.Dropdown=r},Tab:class{constructor(e){this.element=e,e.Tab=this,e.addEventListener("click",e=>{e.preventDefault(),this.show()})}show(){const t=this.element,s=t.closest("li");if(!s.classList.contains("active")){const o=t.closest("ul").querySelector(".active a");o.closest("li").classList.remove("active"),e.querySelector(o.getAttribute("href")).classList.remove("active"),s.classList.add("active"),e.querySelector(t.getAttribute("href")).classList.add("active")}}}}})();

View file

@ -130,12 +130,6 @@
@zindexModal: 1101; @zindexModal: 1101;
// Sprite icons path
// -------------------------
@iconSpritePath: "../img/glyphicons-halflings.png";
@iconWhiteSpritePath: "../img/glyphicons-halflings-white.png";
// Input placeholder text color // Input placeholder text color
// ------------------------- // -------------------------
@placeholderText: @grayLight; @placeholderText: @grayLight;

View file

@ -12,10 +12,9 @@
* @modified by DJMaze * @modified by DJMaze
*/ */
(() => { (doc => {
const doc = document, const createEl = (name, attr) => {
createEl = (name, attr) => {
let el = doc.createElement(name); let el = doc.createElement(name);
attr && Object.entries(attr).forEach(([k,v]) => el.setAttribute(k,v)); attr && Object.entries(attr).forEach(([k,v]) => el.setAttribute(k,v));
return el; return el;
@ -29,7 +28,7 @@ doc.body.append(fakeSpan, datalist);
let dragData; let dragData;
window.Inputosaurus = class { this.Inputosaurus = class {
constructor(element, options) { constructor(element, options) {
@ -500,4 +499,4 @@ window.Inputosaurus = class {
} }
}; };
})(); })(document);

40
vendors/jua/jua.js vendored
View file

@ -1,9 +1,6 @@
/* RainLoop Webmail (c) RainLoop Team | MIT */ /* RainLoop Webmail (c) RainLoop Team | MIT */
(()=>{ (doc => {
'use strict';
const const
doc = document,
iDefLimit = 20, iDefLimit = 20,
defined = v => undefined !== v, defined = v => undefined !== v,
/** /**
@ -42,9 +39,8 @@
} }
}, },
addEventListeners = (element, obj) => { addEventListeners = (element, obj) =>
Object.entries(obj).forEach(([key, value]) => element.addEventListener(key, value)); Object.entries(obj).forEach(([key, value]) => element.addEventListener(key, value)),
},
/** /**
* @param {*} oFile * @param {*} oFile
@ -214,24 +210,24 @@
if (oClickElement) if (oClickElement)
{ {
const self = this, const self = this,
oLabel = doc.createElement('label'), oInput = doc.createElement('input'),
oInput = oLabel.appendChild(doc.createElement('input')); onClick = ()=>oInput.click();
oInput.type = 'file'; oInput.type = 'file';
oInput.tabIndex = -1; oInput.tabIndex = -1;
oInput.style.cssText = 'position:absolute;left:-9999px;'; oInput.style.display = 'none';
oInput.multiple = !self.oOptions.disableMultiple; oInput.multiple = !self.oOptions.disableMultiple;
oLabel.style.cssText = 'position:absolute;background-color:#fff;right:0;top:0;left:0;bottom:0;margin:0;padding:0;cursor:pointer;opacity:0'; oClickElement.addEventListener('click', onClick);
oClickElement.append(oLabel);
oInput.addEventListener('input', () => { oInput.addEventListener('input', () => {
const fFileCallback = oFile => { const fFileCallback = oFile => {
self.oJua.addNewFile(oFile); self.oJua.addNewFile(oFile);
setTimeout(() => {
oInput.remove();
oClickElement.removeEventListener('click', onClick);
self.generateNewInput(oClickElement); self.generateNewInput(oClickElement);
}, 10);
setTimeout(() => oLabel.remove(), 10);
}; };
if (oInput.files && oInput.files.length) { if (oInput.files && oInput.files.length) {
getDataFromFiles(oInput.files, fFileCallback, getDataFromFiles(oInput.files, fFileCallback,
@ -258,10 +254,7 @@
{ {
try try
{ {
if (this.oXhrs[sUid].abort) this.oXhrs[sUid].abort && this.oXhrs[sUid].abort();
{
this.oXhrs[sUid].abort();
}
} }
catch (oError) catch (oError)
{ {
@ -496,11 +489,10 @@
addNewFile(oFileInfo) addNewFile(oFileInfo)
{ {
let iLen = 16, let iLen = 16,
fakeMd5 = '', fakeMd5 = '';
sLine = '0123456789abcdefghijklmnopqrstuvwxyz';
while (iLen--) while (iLen--)
fakeMd5 += sLine.substr(Math.round(Math.random() * 36), 1); fakeMd5 += '0123456789abcdefghijklmnopqrstuvwxyz'.substr(Math.round(Math.random() * 36), 1);
this.addFile('jua-uid-' + fakeMd5 + '-' + (new Date()).getTime().toString(), oFileInfo); this.addFile('jua-uid-' + fakeMd5 + '-' + (new Date()).getTime().toString(), oFileInfo);
} }
@ -538,6 +530,6 @@
} }
}; };
window.Jua = Jua; this.Jua = Jua;
})(); })(document);

File diff suppressed because one or more lines are too long

View file

@ -10,8 +10,6 @@
( doc => { ( doc => {
"use strict";
const const
DOCUMENT_POSITION_PRECEDING = 2, // Node.DOCUMENT_POSITION_PRECEDING DOCUMENT_POSITION_PRECEDING = 2, // Node.DOCUMENT_POSITION_PRECEDING
ELEMENT_NODE = 1, // Node.ELEMENT_NODE, ELEMENT_NODE = 1, // Node.ELEMENT_NODE,
@ -35,8 +33,7 @@ const
isMac = /Mac OS X/.test( ua ), isMac = /Mac OS X/.test( ua ),
isWin = /Windows NT/.test( ua ), isWin = /Windows NT/.test( ua ),
isIOS = /iP(?:ad|hone|od)/.test( ua ) || isIOS = /iP(?:ad|hone|od)/.test( ua ) || ( isMac && !!navigator.maxTouchPoints ),
( isMac && !!navigator.maxTouchPoints ),
isGecko = /Gecko\//.test( ua ), isGecko = /Gecko\//.test( ua ),
isEdge = /Edge\//.test( ua ), isEdge = /Edge\//.test( ua ),