diff --git a/dev/Common/Translator.js b/dev/Common/Translator.js
index c265f0537..a5cbd6378 100644
--- a/dev/Common/Translator.js
+++ b/dev/Common/Translator.js
@@ -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());
diff --git a/tasks/config.js b/tasks/config.js
index b3277935f..0903e9d70 100644
--- a/tasks/config.js
+++ b/tasks/config.js
@@ -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
diff --git a/vendors/jquery-letterfx/LICENSE.md b/vendors/jquery-letterfx/LICENSE.md
deleted file mode 100644
index ea208db2d..000000000
--- a/vendors/jquery-letterfx/LICENSE.md
+++ /dev/null
@@ -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.
diff --git a/vendors/jquery-letterfx/README.md b/vendors/jquery-letterfx/README.md
deleted file mode 100644
index e720c041f..000000000
--- a/vendors/jquery-letterfx/README.md
+++ /dev/null
@@ -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)
diff --git a/vendors/jquery-letterfx/jquery-letterfx.css b/vendors/jquery-letterfx/jquery-letterfx.css
deleted file mode 100644
index ebec49fdd..000000000
--- a/vendors/jquery-letterfx/jquery-letterfx.css
+++ /dev/null
@@ -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; }
-
-
-
diff --git a/vendors/jquery-letterfx/jquery-letterfx.js b/vendors/jquery-letterfx/jquery-letterfx.js
deleted file mode 100644
index 0370399af..000000000
--- a/vendors/jquery-letterfx/jquery-letterfx.js
+++ /dev/null
@@ -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:"$1",
-
- //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));
-
diff --git a/vendors/jquery-letterfx/jquery-letterfx.min.css b/vendors/jquery-letterfx/jquery-letterfx.min.css
deleted file mode 100644
index 8691e66c3..000000000
--- a/vendors/jquery-letterfx/jquery-letterfx.min.css
+++ /dev/null
@@ -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}
\ No newline at end of file
diff --git a/vendors/jquery-letterfx/jquery-letterfx.min.js b/vendors/jquery-letterfx/jquery-letterfx.min.js
deleted file mode 100644
index 8aeb86b18..000000000
--- a/vendors/jquery-letterfx/jquery-letterfx.min.js
+++ /dev/null
@@ -1 +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;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;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);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(0!==currentIndex){randomIndex=Math.floor(Math.random()*currentIndex);currentIndex-=1;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};$.fn.letterfx.defaults={fx:"spin fly-top",pattern:/(\S)/gi,word:false,backwards:false,replacement:"$1",selector:"span",timing:50,fx_duration:"1s",sort:function($letters){return $letters},onLetterComplete:function($letter,$element,LetterFXObj){},onElementComplete:function($element,LetterFXObj){},letter_end:"restore",element_end:"restore",restore:true,destroy:false,element_class:"letterfx",css:{element:{base:"",before:"",after:""},letters:{base:"",before:"",after:""}}}})(jQuery);
\ No newline at end of file