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