mirror of
https://github.com/the-djmaze/snappymail.git
synced 2025-09-06 21:24:12 +08:00
Remove jquery-letterfx, just like cd55e3ccc2
This commit is contained in:
parent
f16f604f48
commit
ec3fd5b7e4
8 changed files with 3 additions and 493 deletions
|
@ -4,7 +4,7 @@ import $ from '$';
|
|||
import ko from 'ko';
|
||||
import { Notification, UploadErrorCode } from 'Common/Enums';
|
||||
import { pInt, isUnd, isNull, has, microtime, inArray } from 'Common/Utils';
|
||||
import { $html, $htmlCL, bAnimationSupported } from 'Common/Globals';
|
||||
import { $html, $htmlCL } from 'Common/Globals';
|
||||
import { reload as momentorReload } from 'Common/Momentor';
|
||||
import { langLink } from 'Common/Links';
|
||||
|
||||
|
@ -137,22 +137,11 @@ const i18nToNode = (element) => {
|
|||
* @param {Object} elements
|
||||
* @param {boolean=} animate = false
|
||||
*/
|
||||
export function i18nToNodes(elements, animate = false) {
|
||||
export function i18nToNodes(elements) {
|
||||
_.defer(() => {
|
||||
$('[data-i18n]', elements).each((index, item) => {
|
||||
i18nToNode(item);
|
||||
});
|
||||
|
||||
if (animate && bAnimationSupported) {
|
||||
$('.i18n-animation[data-i18n]', elements).letterfx({
|
||||
'fx': 'fall fade',
|
||||
'backwards': false,
|
||||
'timing': 50,
|
||||
'fx_duration': '50ms',
|
||||
'letter_end': 'restore',
|
||||
'element_end': 'restore'
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -160,7 +149,7 @@ const reloadData = () => {
|
|||
if (window.rainloopI18N) {
|
||||
I18N_DATA = window.rainloopI18N || {};
|
||||
|
||||
i18nToNodes(window.document, true);
|
||||
i18nToNodes(window.document);
|
||||
|
||||
momentorReload();
|
||||
trigger(!trigger());
|
||||
|
|
|
@ -53,7 +53,6 @@ config.paths.css = {
|
|||
'node_modules/normalize.css/normalize.css',
|
||||
'vendors/jquery-ui/css/smoothness/jquery-ui-1.12.1.custom.css',
|
||||
'vendors/fontastic/styles.css',
|
||||
'vendors/jquery-letterfx/jquery-letterfx.min.css',
|
||||
'vendors/inputosaurus/inputosaurus.css',
|
||||
'vendors/flags/flags-fixed.css',
|
||||
'node_modules/opentip/css/opentip.css',
|
||||
|
@ -75,7 +74,6 @@ config.paths.js = {
|
|||
src: [
|
||||
'node_modules/jquery/dist/jquery.min.js',
|
||||
'vendors/jquery-ui/js/jquery-ui-1.12.1.custom.min.js', // custom
|
||||
'vendors/jquery-letterfx/jquery-letterfx.min.js', // no-npm
|
||||
'vendors/inputosaurus/inputosaurus.js', // custom (modified)
|
||||
'vendors/routes/signals.min.js', // fixed
|
||||
'vendors/routes/hasher.min.js', // fixed
|
||||
|
|
21
vendors/jquery-letterfx/LICENSE.md
vendored
21
vendors/jquery-letterfx/LICENSE.md
vendored
|
@ -1,21 +0,0 @@
|
|||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2014 Jared Anderson, dba tuxsudo.com
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
11
vendors/jquery-letterfx/README.md
vendored
11
vendors/jquery-letterfx/README.md
vendored
|
@ -1,11 +0,0 @@
|
|||
LetterFX
|
||||
========
|
||||
|
||||
A jQuery plugin to apply animated, visual effects to letters, words or other text patterns.
|
||||
|
||||
example usage:
|
||||
|
||||
$(element).letterfx({"fx":"fly-right fly-bottom spin"})
|
||||
|
||||
|
||||
[More Info](http://tuxsudo.com/code/project/letterfx)
|
111
vendors/jquery-letterfx/jquery-letterfx.css
vendored
111
vendors/jquery-letterfx/jquery-letterfx.css
vendored
|
@ -1,111 +0,0 @@
|
|||
.letterfx-container{}
|
||||
|
||||
.letterfx{
|
||||
display:inline-block;
|
||||
margin:0;
|
||||
padding:0;
|
||||
transition: all 1s; -ms-transition: all 1s; -webkit-transition: all 1s;
|
||||
}
|
||||
|
||||
/* Spin FX */
|
||||
.letterfx-spin-before{
|
||||
transform:rotate(3600deg); -ms-transform:rotate(3600deg); -webkit-transform:rotate(3600deg);
|
||||
}
|
||||
|
||||
.letterfx-spin-after{
|
||||
transform:none;
|
||||
}
|
||||
|
||||
/* Fade FX */
|
||||
.letterfx-fade-before{
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
|
||||
/* Grow FX */
|
||||
.letterfx-grow-before{
|
||||
transform:scale(0,0); -ms-transform:scale(0,0); -webkit-transform:scale(0,0);
|
||||
}
|
||||
|
||||
.letterfx-grow-after{
|
||||
transform:none;
|
||||
}
|
||||
|
||||
|
||||
/* Smear FX */
|
||||
.letterfx-smear-before{
|
||||
color: transparent;
|
||||
text-shadow:-1px -1px 25px transparent;
|
||||
}
|
||||
|
||||
.letterfx-smear-after{
|
||||
color:inherit;
|
||||
text-shadow:0 0 #333;
|
||||
|
||||
}
|
||||
|
||||
/* Fall FX */
|
||||
.letterfx-fall-before
|
||||
{
|
||||
visibility: hidden;
|
||||
transform:scale(3,3); -ms-transform:scale(3,3); -webkit-transform:scale(3,3);
|
||||
}
|
||||
|
||||
.letterfx-fall-after{
|
||||
transform:scale(1,1); -ms-transform:scale(1,1); -webkit-transform:scale(1,1);
|
||||
text-shadow:0;
|
||||
}
|
||||
|
||||
/* Swirl FX */
|
||||
.letterfx-swirl-before
|
||||
{
|
||||
visibility: hidden;
|
||||
transform:scale(3,3) rotate(3600deg); -ms-transform:scale(3,3) rotate(3600deg); -webkit-transform:scale(3,3) rotate(3600deg);
|
||||
}
|
||||
|
||||
.letterfx-swirl-after{
|
||||
transform:none;
|
||||
text-shadow:0;
|
||||
}
|
||||
|
||||
|
||||
/* Wave FX */
|
||||
.letterfx-wave-container .letterfx
|
||||
{
|
||||
position:relative;
|
||||
}
|
||||
|
||||
.letterfx-wave-before
|
||||
{
|
||||
bottom:0;
|
||||
}
|
||||
|
||||
.letterfx-wave-after{
|
||||
bottom:15px;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* FLY FX */
|
||||
.letterfx-fly-left-container .letterfx,
|
||||
.letterfx-fly-right-container .letterfx,
|
||||
.letterfx-fly-top-container .letterfx,
|
||||
.letterfx-fly-bottom-container .letterfx
|
||||
{
|
||||
position:relative;
|
||||
}
|
||||
|
||||
.letterfx-fly-left-before{ left:-50em; }
|
||||
.letterfx-fly-left-after{ left:0; }
|
||||
|
||||
.letterfx-fly-right-before{ right:-50em; }
|
||||
.letterfx-fly-right-after{ right:0; }
|
||||
|
||||
.letterfx-fly-top-before{ top:-20em; }
|
||||
.letterfx-fly-top-after{ top:0; }
|
||||
|
||||
.letterfx-fly-bottom-before{ bottom:-20em; }
|
||||
.letterfx-fly-bottom-after{ bottom:0; }
|
||||
|
||||
|
||||
|
332
vendors/jquery-letterfx/jquery-letterfx.js
vendored
332
vendors/jquery-letterfx/jquery-letterfx.js
vendored
|
@ -1,332 +0,0 @@
|
|||
(function ($) {
|
||||
|
||||
"use strict";
|
||||
|
||||
var LetterFx = function (element, options) {
|
||||
|
||||
this.options = $.extend({}, $.fn.letterfx.defaults, options);
|
||||
|
||||
this.num_completed_fx = 0;
|
||||
|
||||
this.is_done = false;
|
||||
|
||||
this.monitor_timer = null;
|
||||
|
||||
this.killswitch=null;
|
||||
|
||||
this.$element = $(element);
|
||||
|
||||
if(this.options.restore)
|
||||
this.original_html = this.$element.html();
|
||||
|
||||
this.init();
|
||||
|
||||
}
|
||||
|
||||
LetterFx.prototype.init = function(){
|
||||
|
||||
this.new_html = this.$element.text().replace( this.options.pattern, this.options.replacement );
|
||||
|
||||
this.$element.addClass(this.options.css.element.base).addClass( this.options.css.element.before );
|
||||
|
||||
this.$element.html( this.new_html );
|
||||
|
||||
this.$letters = this.$element.find(this.options.selector);
|
||||
|
||||
this.$letters
|
||||
.css('transition-duration', this.options.fx_duration)
|
||||
.addClass(this.options.css.letters.base)
|
||||
.addClass(this.options.css.letters.before);
|
||||
|
||||
this.bindLetterFxEnd();
|
||||
|
||||
this.num_letters = this.$letters.length;
|
||||
|
||||
|
||||
this.fx();
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
LetterFx.prototype.bindLetterFxEnd = function(){
|
||||
var options = this.options;
|
||||
var lfx = this;
|
||||
this.$letters.bind("transitionend", function(){
|
||||
options.onLetterComplete( $(this), lfx.$element, lfx );
|
||||
lfx.notifyFXEnd( );
|
||||
|
||||
switch(options.letter_end){
|
||||
case "destroy":
|
||||
$(this).remove();
|
||||
break;
|
||||
|
||||
case "rewind":
|
||||
lfx.applyLetterFx( $(this), options.timing, options.css.letters.after, options.css.letters.before );
|
||||
break;
|
||||
|
||||
case "stay":
|
||||
break;
|
||||
|
||||
// restore
|
||||
default:
|
||||
$(this).replaceWith( $(this).text() );
|
||||
}
|
||||
|
||||
});
|
||||
return lfx;
|
||||
}
|
||||
|
||||
LetterFx.prototype.terminate=function(){
|
||||
this.is_done = true;
|
||||
this.options.onElementComplete(this.$element, this);
|
||||
|
||||
clearTimeout(this.killswitch);
|
||||
|
||||
switch(this.options.element_end){
|
||||
case "destroy":
|
||||
this.$element.remove();
|
||||
break;
|
||||
|
||||
case "stay":
|
||||
break;
|
||||
|
||||
// restore
|
||||
default:
|
||||
this.$element.html( this.original_html );
|
||||
this.$element.removeClass( this.options.css.element.base ).removeClass(this.options.css.element.after);
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
LetterFx.prototype.notifyFXEnd=function(){
|
||||
clearTimeout(this.monitor_timer);
|
||||
this.num_completed_fx++;
|
||||
|
||||
var lfx = this;
|
||||
this.monitor_timer = setTimeout(
|
||||
function(){
|
||||
if(lfx.num_completed_fx % lfx.num_letters===0){
|
||||
lfx.terminate();
|
||||
}
|
||||
},
|
||||
Math.max(this.options.timing+10, 50)
|
||||
);
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
LetterFx.prototype.startKillWatch = function(){
|
||||
var fx_duration = this.options.fx_duration.match(/\d+s/) ? parseInt(this.options.fx_duration) : 1;
|
||||
var time = Math.ceil(1.5 * this.num_letters * this.options.timing * fx_duration );
|
||||
var lfx = this;
|
||||
this.killswitch = window.setTimeout(function(){
|
||||
if(!lfx.isDone()){
|
||||
lfx.terminate()
|
||||
}
|
||||
}, time)
|
||||
}
|
||||
|
||||
LetterFx.prototype.fx = function(){
|
||||
var lfx = this;
|
||||
this.startKillWatch();
|
||||
this.$element.removeClass(this.options.css.element.before).addClass(this.options.css.element.after);
|
||||
var $letters = this.options.sort(this.$letters);
|
||||
var options = this.options;
|
||||
|
||||
|
||||
|
||||
$letters.each(
|
||||
function(i, letter){
|
||||
lfx.applyLetterFx( $(letter), (i+1)*options.timing, options.css.letters.before, options.css.letters.after);
|
||||
}
|
||||
);
|
||||
return this;
|
||||
}
|
||||
|
||||
LetterFx.prototype.applyLetterFx = function($letter, timing, css_before, css_after){
|
||||
var options = this.options;
|
||||
|
||||
window.setTimeout(
|
||||
function(){
|
||||
$letter.removeClass(css_before).addClass(css_after);
|
||||
},
|
||||
timing
|
||||
);
|
||||
return this
|
||||
}
|
||||
|
||||
LetterFx.prototype.isDone = function(){
|
||||
return this.is_done;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
var LetterFxConfig = function(conf){
|
||||
this.config = $.extend({}, $.fn.letterfx.defaults, conf);
|
||||
this.buildCss(this.config.backwards);
|
||||
|
||||
// check & change to word pattern
|
||||
if(this.config.words)
|
||||
this.config.pattern=/(\S+)/g;
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
LetterFxConfig.prototype.buildCss = function(flip){
|
||||
var options = this.config;
|
||||
var before = flip ? 'after' : 'before';
|
||||
var after = flip ? 'before' : 'after';
|
||||
|
||||
|
||||
var css = { element:{}, letters:{} };
|
||||
|
||||
css.element.base=options.element_class+ "-container " + options.fx.replace(/(\S+)/g, options.element_class + "-$1-container");
|
||||
css.element[before]=options.fx.replace(/(\S+)/g, options.element_class + "-$1-before-container");
|
||||
css.element[after]=options.fx.replace(/(\S+)/g, options.element_class + "-$1-after-container");
|
||||
|
||||
css.letters.base = options.element_class;
|
||||
css.letters[before] = options.fx.replace(/(\S+)/g, options.element_class + "-$1-before")
|
||||
css.letters[after] = options.fx.replace(/(\S+)/g, options.element_class + "-$1-after")
|
||||
|
||||
this.config = $.extend( options, {'css':css} );
|
||||
}
|
||||
|
||||
LetterFxConfig.prototype.getConfig = function(){
|
||||
return this.config;
|
||||
}
|
||||
|
||||
LetterFxConfig.parse=function(config){
|
||||
return (new LetterFxConfig( config )).getConfig();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
$.fn.letterfx=function(config){
|
||||
|
||||
config = LetterFxConfig.parse( config );
|
||||
|
||||
return $(this).each(function(){
|
||||
var $element = $(this);
|
||||
if (! $element.data('letterfx-obj') || $element.data('letterfx-obj').isDone() ){
|
||||
$element.data('letterfx-obj', new LetterFx( $element, config ) );
|
||||
}
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
$.fn.letterfx.sort={
|
||||
random:function(array){
|
||||
var currentIndex = array.length, temporaryValue, randomIndex;
|
||||
|
||||
// While there remain elements to shuffle...
|
||||
while (0 !== currentIndex) {
|
||||
|
||||
// Pick a remaining element...
|
||||
randomIndex = Math.floor(Math.random() * currentIndex);
|
||||
currentIndex -= 1;
|
||||
|
||||
// And swap it with the current element.
|
||||
temporaryValue = array[currentIndex];
|
||||
array[currentIndex] = array[randomIndex];
|
||||
array[randomIndex] = temporaryValue;
|
||||
}
|
||||
|
||||
return array;
|
||||
},
|
||||
reverse:function($array){
|
||||
return $array.toArray().reverse();
|
||||
}
|
||||
}
|
||||
|
||||
$.fn.letterfx.patterns={
|
||||
letters:/(\S)/gi
|
||||
}
|
||||
|
||||
// Plugin Configurables
|
||||
$.fn.letterfx.defaults = {
|
||||
|
||||
// Default fx
|
||||
fx:'spin fly-top',
|
||||
|
||||
// defaults to selecting all characters
|
||||
pattern:/(\S)/gi,
|
||||
|
||||
// switch from letter FX to word FX.
|
||||
word:false,
|
||||
|
||||
// fx, like fly or fade, can happen in (eg fade-in) or out (eg fade-out).
|
||||
// The default is in; change backwards to true to reverse the order of the effects.
|
||||
backwards:false,
|
||||
|
||||
// defaults to injecting spans, can be any inline element
|
||||
replacement:"<span>$1</span>",
|
||||
|
||||
//selector -- should match replacement above
|
||||
selector:'span',
|
||||
|
||||
// letter fx start sequentially: letters start their fx one after another.
|
||||
// this sets time between the letters
|
||||
timing:50,
|
||||
|
||||
//duration of each fx
|
||||
// options the same as css property for transition-duration ("1ms", "1s", etc)
|
||||
fx_duration:"1s",
|
||||
|
||||
|
||||
// stabile dimensions
|
||||
// stabilize:true,
|
||||
|
||||
// sort callback for custom sorting elements
|
||||
sort:function($letters){ return $letters; },
|
||||
|
||||
|
||||
// Callback when letter is done animating. Runs after each letter
|
||||
onLetterComplete:function($letter, $element, LetterFXObj){},
|
||||
|
||||
// Runs after all are done.
|
||||
onElementComplete:function($element, LetterFXObj){},
|
||||
|
||||
|
||||
// what to do when a letter completes its animation.
|
||||
// options include
|
||||
// restore: return letter to plain text (default)
|
||||
// destroy: get rid of the letter.
|
||||
// stay: leave it as is.
|
||||
// rewind: reverse the animation
|
||||
letter_end:"restore",
|
||||
|
||||
|
||||
// what to do when the entire element has completed all its letter effects
|
||||
// options include:
|
||||
// restore: return element to its pre-fx state (default)
|
||||
// stay: do nothing
|
||||
// destroy: get rid of the element... FOREVER
|
||||
element_end:"restore",
|
||||
|
||||
// Restore container element back to original state.
|
||||
// options: true, false, "element" ("element" waits until all letters complete fx before restoring)
|
||||
restore:true,
|
||||
|
||||
// destroy element/letters after fx, useful on {out:true} fx
|
||||
// options: true, false, "letters" ("letters" destroys each letter after fx, but elements original content may be restored after all letters complete fx)
|
||||
destroy:false,
|
||||
|
||||
// default class for injected elements
|
||||
element_class:'letterfx',
|
||||
|
||||
// placeholder values that are calculated on launch
|
||||
css:{
|
||||
element:{ base:'', before:'', after:''},
|
||||
letters:{ base:'', before:'', after:''}
|
||||
}
|
||||
|
||||
|
||||
|
||||
};
|
||||
|
||||
}(jQuery));
|
||||
|
|
@ -1 +0,0 @@
|
|||
.letterfx{display:inline-block;margin:0;padding:0;transition:all 1s;-ms-transition:all 1s;-webkit-transition:all 1s}.letterfx-spin-before{transform:rotate(3600deg);-ms-transform:rotate(3600deg);-webkit-transform:rotate(3600deg)}.letterfx-spin-after{transform:none}.letterfx-fade-before{opacity:0}.letterfx-grow-before{transform:scale(0,0);-ms-transform:scale(0,0);-webkit-transform:scale(0,0)}.letterfx-grow-after{transform:none}.letterfx-smear-before{color:transparent;text-shadow:-1px -1px 25px transparent}.letterfx-smear-after{color:inherit;text-shadow:0 0 #333}.letterfx-fall-before{visibility:hidden;transform:scale(3,3);-ms-transform:scale(3,3);-webkit-transform:scale(3,3)}.letterfx-fall-after{transform:scale(1,1);-ms-transform:scale(1,1);-webkit-transform:scale(1,1);text-shadow:0}.letterfx-swirl-before{visibility:hidden;transform:scale(3,3) rotate(3600deg);-ms-transform:scale(3,3) rotate(3600deg);-webkit-transform:scale(3,3) rotate(3600deg)}.letterfx-swirl-after{transform:none; text-shadow:0}.letterfx-wave-container .letterfx{position:relative}.letterfx-wave-before{bottom:0}.letterfx-wave-after{bottom:15px}.letterfx-fly-left-container .letterfx,.letterfx-fly-right-container .letterfx,.letterfx-fly-top-container .letterfx,.letterfx-fly-bottom-container .letterfx{position:relative}.letterfx-fly-left-before{left:-50em}.letterfx-fly-left-after{left:0}.letterfx-fly-right-before{right:-50em}.letterfx-fly-right-after{right:0}.letterfx-fly-top-before{top:-20em}.letterfx-fly-top-after{top:0}.letterfx-fly-bottom-before{bottom:-20em}.letterfx-fly-bottom-after{bottom:0}
|
File diff suppressed because one or more lines are too long
Loading…
Add table
Reference in a new issue