{"version":3,"file":"moderesponsable-built.js","mappings":"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","sources":["webpack://modz/./src/Modules/Resources/Error.js","webpack://modz/./src/Modules/ads.js","webpack://modz/./src/Modules/ajaxLoader.js","webpack://modz/./src/Modules/bootstrapValidationForm.js","webpack://modz/./src/Libs/mustache.js","webpack://modz/webpack/bootstrap","webpack://modz/webpack/runtime/compat get default export","webpack://modz/webpack/runtime/define property getters","webpack://modz/webpack/runtime/hasOwnProperty shorthand","webpack://modz/webpack/runtime/make namespace object","webpack://modz/./src/Modules/modal.js","webpack://modz/./src/Modules/cleanTextOnFocus.js","webpack://modz/./src/Modules/selectorPanel.js","webpack://modz/./src/Modules/profileCookie.js","webpack://modz/./src/Modules/tooltips.js","webpack://modz/./src/Modules/Resources/Label.js","webpack://modz/./src/Modules/url.js","webpack://modz/./src/Modules/validationForm.js","webpack://modz/./src/Modules/_3MPlus.js","webpack://modz/./src/Modules/miniPanier.js","webpack://modz/./src/Modules/gestionLocalStorage.js","webpack://modz/./src/Modules/inscriptionGoogleAPI.js","webpack://modz/./src/Modules/inscriptionConnexionCustomAction.js","webpack://modz/./src/Modules/password.js","webpack://modz/./src/Modules/adresseForm.js","webpack://modz/./src/Modules/ajaxManagement.js","webpack://modz/./src/Modules/inscriptionModule.js","webpack://modz/./src/Modules/master.js","webpack://modz/./node_modules/gsap/gsap-core.js","webpack://modz/./node_modules/gsap/CSSPlugin.js","webpack://modz/./node_modules/gsap/index.js","webpack://modz/./src/Modules/rollingTexts.js","webpack://modz/./src/Views/moderesponsable.js"],"sourcesContent":["export const _404 = 'La page demandée est introuvable.'\r\nexport const _500 = 'Une erreur interne est survenue.'\r\nexport const ADRESSE_DOIT_ETRE_RENSEIGNEE =\r\n 'L\\u0027adresse doit être renseignée'\r\nexport const ADRESSE_EMAIL_INVALIDE = 'L\\u0027adresse e-mail est invalide'\r\nexport const ADRESSE_EMAIL_OBLIGATOIRE =\r\n 'L\\u0027adresse e-mail est obligatoire et ne peut être vide.'\r\nexport const ADRESSE_EMAIL_UTILISEE = 'L\\u0027adresse email est déjà utilisée.'\r\nexport const AJAXLOADERINTERNALERROR =\r\n 'Une erreur interne est survenue lors du chargement de la page. Veuillez actualiser la page.'\r\nexport const AUCUN_COMPTE_CLIENT_CORRESPONDANT =\r\n 'Aucun compte client ne correspond à cet e-mail.'\r\nexport const CODEPOSTAL_DIFFERENT_VILLE =\r\n 'Le code postal indiqué ne correspond pas à la bonne ville.'\r\nexport const COMPLETEZ_VOTRE_PROFIL_POUR_VOIR_VOTRE_SELECTION_PERSO =\r\n 'Complétez votre profil\\rpour voir votre sélection\\rpersonnalisée'\r\nexport const COMPTE_CLIENT_EXISTE_DEJA =\r\n 'Il existe déjà un compte client avec cet e-mail. Merci de vous connecter avec vos identifiants.'\r\nexport const CONFIRMATION_MOT_PASSE_OBLIGATOIRE =\r\n 'La confirmation de mot de passe est obligatoire et ne peut être vide.'\r\nexport const CONNECTION_ECHOUE =\r\n 'Votre email ou votre mot de passe est incorrect.'\r\nexport const CONTACTINFORMATION_PARAMETERS_WRONG =\r\n 'Certaines informations sont invalides.'\r\nexport const DATABASEERRORUPDATE =\r\n 'Une erreur est survenu durant la mise à jour de la base de données.'\r\nexport const DATE_INVALIDE =\r\n 'Date de naissance invalide. Merci de respecter le format JJ/MM/AAAA. Elle doit être supérieur au 01/01/1900.'\r\nexport const DATENAISSANCEOBLIGATOIRE =\r\n 'La date de naissance est obligatoire et ne peut être vide'\r\nexport const DEJA_INSCRIT_JEU_CONCOURS =\r\n 'Votre inscription pour ce jeu concours a déjà été prise en compte.'\r\nexport const DOIT_SELECTIONNER_TAILLE = 'SÉLECTIONNEZ VOTRE TAILLE'\r\nexport const ERREUR_CARTE_CADEAU =\r\n 'Le numéro de carte n’existe pas. Veuillez recommencer.'\r\nexport const ERREUR_CARTE_DEJA_ENREGISTREE =\r\n 'Cette carte a déjà été enregistrée.'\r\nexport const ERREUR_CODE_PROMO =\r\n 'Désolé, le code promotionnel saisi n\\u0027est pas valide ou a expiré. Veuillez saisir un code promotionnel valide.'\r\nexport const ERREUR_CODE_PROMO_INVALIDE =\r\n 'Veuillez saisir un code promo valide.'\r\nexport const ERREUR_INTERNE_RECUPERATION_MARQUES =\r\n 'Une erreur interne est survenue lors de la récupération de la liste des marques.'\r\nexport const ERREUR_INTERNE_RECUPERATION_VILLE =\r\n 'Une erreur est survenue lors de la récupération de la liste des villes'\r\nexport const FAILTOCREATEALERTE =\r\n 'Une erreur est survenue lors de la création de votre alerte.'\r\nexport const FAILTOCREATENEWSLETTER = 'Erreur interne.'\r\nexport const INSCRIPTION_PARAMETERS_WRONG =\r\n 'Impossible de créer votre compte. Merci de vérifier vos informations personnelles'\r\nexport const INVALIDCURRENTPASSWORD =\r\n 'Le mot de passe actuel saisi est incorrect !'\r\nexport const INVALIDEMAIL = 'E-mail incorrect.'\r\nexport const INVALIDINTEGER =\r\n 'Ce champ ne peut contenir qu\\u0027un nombre entier valide.'\r\nexport const LA_VILLE_DOIT_ETRE_RENSEIGNEE = 'La ville doit être renseignée.'\r\nexport const LE_CODE_POSTAL_DOIT_ETRE_RENSEIGNE =\r\n 'Le code postal doit être renseigné.'\r\nexport const LE_NUMERO_DE_TELEPHONE_OBLIGATOIRE =\r\n 'Le numéro de téléphone est obligatoire.'\r\nexport const MAXNUMBEROFPROFILESREACHED =\r\n 'Vous avez atteint le nombre maximum de profils enregistrés.'\r\nexport const MERCI_PRECISER_CIVILITE = 'Merci de préciser votre civilité'\r\nexport const MOT_PASSE_CONFIRMATION =\r\n 'Le mot de passe et sa confirmation ne correspondent pas'\r\nexport const MOT_PASSE_NON_CONFORME_CONFIRMATION =\r\n 'Le mot de passe et sa confirmation ne correspondent pas'\r\nexport const MOT_PASSE_NON_IDENTIQUE_CONFIRMATION =\r\n 'Le mot de passe ne peut être identique à votre adresse e-mail'\r\nexport const MOT_PASSE_NON_IDENTIQUE_MAIL =\r\n 'Le mot de passe ne peut être identique à votre adresse e-mail'\r\nexport const MOT_PASSE_OBLIGATOIRE =\r\n 'Le mot de passe est obligatoire et ne peut être vide.'\r\nexport const NEWPASSWORDDOESNOTMATCH =\r\n 'Les nouveaux mots de passe saisis ne correspondent pas !'\r\nexport const NEWSLETTERALREADYSUBSCRIBED = 'E-mail déjà enregistré.'\r\nexport const NOM_OBLIGATOIRE = 'Le nom est obligatoire et ne peut être vide.'\r\nexport const PASSWORDCHARACTER =\r\n 'Le mot de passe doit contenir {2} caractères au minimum.'\r\nexport const PASSWORDCONFIRMATION =\r\n 'Veuillez saisir un mot de passe identique au précédent.'\r\nexport const PAYS_OBLIGATOIRE = 'Le pays est obligatoire et ne peut être vide.'\r\nexport const PRENOM_OBLIGATOIRE =\r\n 'Le prénom est obligatoire et ne peut être vide.'\r\nexport const PRODUITINDISPONIBLE =\r\n 'Dommage, ce produit vient d\\u0027etre vendu il y a quelques minutes !'\r\nexport const PRODUITINDISPONIBLETAILLE =\r\n 'Cette taille n\\u0027est pas disponible actuellement.'\r\nexport const REGLE_CODE_POSTAL =\r\n 'Le code postal doit contenir au minimum 4 caractères et au maximum 5'\r\nexport const REGLE_MOT_PASSE =\r\n 'Le mot de passe doit contenir au minimum 6 caractères.'\r\nexport const REGLE_TELEPHONE = 'Numéro de téléphone incorrect.'\r\nexport const TELEPHONE_OBLIGATOIRE =\r\n 'Veuillez saisir votre numéro de téléphone fixe ou mobile.'\r\nexport const UNKNOWERROR =\r\n 'Une erreur interne est survenue lors du chargement de la page.'\r\nexport const VEUILLEZ_INDIQUER_MAIL_VALIDE =\r\n 'Veuillez indiquer un e-mail valide.'\r\nexport const VOUS_SELECTIONNER_TAILLE = 'Vous devez sélectionner une taille !'\r\nexport const WRONGNAMEOFPROFILE =\r\n 'Merci d\\u0027insérer un nom de profil valide.'\r\n","'use strict'\r\n\r\n/**\r\n * Module Ad Blocker\r\n */\r\nlet adBlockEnabled = false\r\n\r\n/**\r\n * Détecte si un bloquer de publicité est activé sur le poste de l'utilisateur\r\n */\r\nfunction initAdBlockerDetection() {\r\n const testAd = document.createElement('div')\r\n testAd.innerHTML = ' '\r\n testAd.className = 'adsbox'\r\n document.body.appendChild(testAd)\r\n window.setTimeout(function () {\r\n if (testAd.offsetHeight === 0) {\r\n adBlockEnabled = true\r\n }\r\n testAd.remove()\r\n }, 100)\r\n}\r\n\r\n/**\r\n * Retourne si un utilisateur utilisateur un bloqueur de publicité\r\n */\r\nfunction useAdBlocker() {\r\n return adBlockEnabled\r\n}\r\n\r\nexport default {\r\n useAdBlocker: useAdBlocker,\r\n initAdBlockerDetection: initAdBlockerDetection\r\n}\r\n","'use strict'\r\n\r\n/**\r\n * Module AJAX\r\n */\r\n\r\nimport { AJAXLOADERINTERNALERROR } from 'Modules/Resources/Error'\r\n\r\nconst J_LOCATION_PRINT = '.j_ajaxloader_print'\r\nconst J_AJAX_LOADER_GIF = '.j_loader_gif'\r\nconst C_ERROR_CLASS = 'error'\r\nconst C_HIDDEN = 'hidden'\r\n\r\n/*\r\n * Load une action d'un controlleur et insert le content dans la page web\r\n * Les paramètres à envoyer doivent-être de la forme { id: id }, etc.\r\n */\r\nfunction loadAndPrintContent(paramsToSend) {\r\n // On affiche le gif de chargement\r\n let $location = $(J_LOCATION_PRINT)\r\n const action = $location.data('action') // On récupère le controller visé\r\n const $gif = $(J_AJAX_LOADER_GIF)\r\n\r\n $location.removeClass(C_ERROR_CLASS)\r\n\r\n if ($gif !== undefined) {\r\n $gif.removeClass(C_HIDDEN)\r\n }\r\n\r\n const posting = $.ajax({\r\n // On appel l'action du controlleur en lui passant les paramètres désirés\r\n type: 'POST',\r\n url: action,\r\n data: paramsToSend\r\n })\r\n\r\n posting.done(function (content) {\r\n // En cas de réussite, on ajoute le résultat au html\r\n // On cache le gif de chargement\r\n const $gif = $(J_AJAX_LOADER_GIF)\r\n if ($gif !== undefined) {\r\n $gif.addClass(C_HIDDEN)\r\n }\r\n $(J_LOCATION_PRINT).empty().append(content)\r\n })\r\n\r\n posting.fail(function () {\r\n // En cas d'échec on affiche une erreur\r\n // On cache le gif de chargement\r\n const $gif = $(J_AJAX_LOADER_GIF)\r\n if ($gif !== undefined) {\r\n $gif.addClass(C_HIDDEN)\r\n }\r\n\r\n $location = $(J_LOCATION_PRINT)\r\n\r\n $location.addClass(C_ERROR_CLASS)\r\n $location.empty().append(AJAXLOADERINTERNALERROR)\r\n })\r\n}\r\n\r\n/*\r\n * Load une action d'un controller et execute une callback avec son content\r\n * Les paramètres à envoyer doivent-être de la forme { id: id }, etc.\r\n */\r\nfunction loadAndExecuteCallBack(\r\n requestType,\r\n paramsToSend,\r\n sucessCallback,\r\n failCallback,\r\n action\r\n) {\r\n // On affiche le gif de chargement\r\n const $gif = $(J_AJAX_LOADER_GIF)\r\n\r\n if ($gif !== undefined) {\r\n $gif.removeClass(C_HIDDEN)\r\n }\r\n\r\n const posting = $.ajax({\r\n // On appel l'action du controlleur en lui passant les paramètres désirés\r\n type: requestType,\r\n url: action,\r\n data: paramsToSend\r\n })\r\n\r\n posting.done(function (content) {\r\n // En cas de réussite, on ajoute le résultat au html\r\n // On cache le gif de chargement\r\n const $gif = $(J_AJAX_LOADER_GIF)\r\n if ($gif !== undefined) {\r\n $gif.addClass(C_HIDDEN)\r\n }\r\n if (content.TagScripts !== undefined && content.TagScripts != '') {\r\n try {\r\n eval(content.TagScripts)\r\n } catch (error) {\r\n console.error(error)\r\n }\r\n }\r\n sucessCallback(content)\r\n })\r\n\r\n posting.fail(function (content) {\r\n // on cache le gif de chargement\r\n const $gif = $(J_AJAX_LOADER_GIF)\r\n if ($gif !== undefined) {\r\n $gif.addClass(C_HIDDEN)\r\n }\r\n\r\n failCallback(content)\r\n })\r\n}\r\n\r\nexport default {\r\n loadAndPrintContent: loadAndPrintContent,\r\n loadAndExecuteCallBack: loadAndExecuteCallBack\r\n}\r\n","'use strict'\r\n\r\n// Module qui gère les tooltips bootstrap\r\n\r\n/*\r\n * Fonction qui init le validator bootstrap sur des input.\r\n * Le premier paramètre représente la class de l'input sur lequel il faut init le validator\r\n */\r\nfunction initForm(classOfElementToInit, callback, callBackOnField) {\r\n $(classOfElementToInit)\r\n .bootstrapValidator({\r\n fields: {\r\n 'model.CP': {\r\n validators: {\r\n callback: {\r\n message:\r\n 'Veuillez vérifier le code postal et la ville',\r\n callback: function (value, validator, $field) {\r\n return $field.data('villecperror') == 0\r\n }\r\n }\r\n }\r\n },\r\n\r\n 'model.Ville': {\r\n validators: {\r\n callback: {\r\n message:\r\n 'Veuillez vérifier le code postal et la ville',\r\n callback: function (value, validator, $field) {\r\n return $field.data('villecperror') == 0\r\n }\r\n }\r\n }\r\n }\r\n }\r\n })\r\n .on('success.form.bv', callback) // sur la validation du form on execute la callback qui doit prendre un form en entrée\r\n .on('success.field.bv', callBackOnField)\r\n}\r\n\r\nfunction destroyForm(classOfElementToDestroy) {\r\n $(classOfElementToDestroy).bootstrapValidator('destroy')\r\n}\r\n\r\n/*\r\n * Fonction qui init le validator bootstrap sur des input.\r\n * Le premier paramètre représente la class de l'input sur lequel il faut init le validator\r\n */\r\nfunction initModalForm(classOfModal, classOfElementToInit, callback) {\r\n $(classOfModal)\r\n .on('shown.bs.modal', function () {\r\n $(classOfElementToInit).bootstrapValidator('resetForm', true)\r\n })\r\n .on('success.form.bv', callback) // sur la validation du form on execute la callback qui doit prendre un form en entrée\r\n}\r\n\r\n/*\r\n * Va déclarer un champ comme invalide avec le bootstrap validator\r\n * Premier paramètre : id du formulaire avec le #\r\n * Deuxieme paramètre : nom du champ\r\n * Troisième paramètre : nom du validator à utiliser pour invalider le champ\r\n */\r\nfunction setItemAsInvalid(formId, fieldName, validator) {\r\n if (existsField(formId, fieldName)) {\r\n $(formId).bootstrapValidator(\r\n 'updateStatus',\r\n fieldName,\r\n 'INVALID',\r\n validator\r\n )\r\n }\r\n}\r\n\r\n/*\r\n * Va déclarer un champ comme invalide avec le bootstrap validator\r\n * Premier paramètre : id du formulaire avec le #\r\n * Deuxieme paramètre : nom du champ\r\n * Troisième paramètre : nom du validator à utiliser pour invalider le champ\r\n */\r\nfunction setItemAsValid(formId, fieldName, validator) {\r\n if (existsField(formId, fieldName)) {\r\n $(formId).bootstrapValidator(\r\n 'updateStatus',\r\n fieldName,\r\n 'VALID',\r\n validator\r\n )\r\n }\r\n}\r\n\r\n/*\r\n * Fonction qui désactive une vérification sur un champ du formulaire dont l'id est passé en paramètre\r\n * Premier paramètre : id du formulaire avec le #\r\n * Deuxieme paramètre : nom du champ\r\n * Troisème paramètre : nom du validator à désactiver\r\n */\r\nfunction disableValidator(formId, fieldName, validator) {\r\n if (existsValidators(formId, fieldName, validator)) {\r\n $(formId).bootstrapValidator(\r\n 'enableFieldValidators',\r\n fieldName,\r\n false,\r\n validator\r\n )\r\n }\r\n}\r\n\r\n/*\r\n * Fonction qui active une vérification sur un champ du formulaire dont l'id est passé en paramètre\r\n * Premier paramètre : id du formulaire avec le #\r\n * Deuxieme paramètre : nom du champ\r\n * Troisème paramètre : nom du validator à activer\r\n */\r\nfunction enableValidator(formId, fieldName, validator) {\r\n if (existsValidators(formId, fieldName, validator)) {\r\n $(formId).bootstrapValidator(\r\n 'enableFieldValidators',\r\n fieldName,\r\n true,\r\n validator\r\n )\r\n }\r\n}\r\n\r\nfunction existsValidators(formId, fieldName, validator) {\r\n const bv = $(formId).data('bootstrapValidator')\r\n\r\n if (bv == null || bv.options == null) {\r\n return false\r\n }\r\n\r\n const field = bv.options.fields[fieldName]\r\n\r\n if (field == null) {\r\n return false\r\n }\r\n\r\n return field.validators[validator] != null\r\n}\r\n\r\nfunction existsField(formId, fieldName) {\r\n const bv = $(formId).data('bootstrapValidator')\r\n\r\n if (bv == null || bv.options == null) {\r\n return false\r\n }\r\n\r\n const field = bv.options.fields[fieldName]\r\n\r\n return field != null\r\n}\r\n\r\n/*\r\n * Check si l'input est valide ou non. Retourne true si tout les validateurs du field sont passés\r\n * Premier paramètre : id du formulaire avec le #\r\n * deuxième paramètre : champ à vérifier si valide ou non\r\n */\r\nfunction isValidField(formId, fieldNameOrElement) {\r\n return $(formId).data('bootstrapValidator').isValidField(fieldNameOrElement)\r\n}\r\n\r\n/*\r\n * Va valider un field passé en paramètre\r\n * Premier paramètre : id du formulaire avec le #\r\n * deuxième paramètre : champ à valider\r\n */\r\nfunction validateField(formId, fieldNameOrElement) {\r\n if (existsField(formId, fieldNameOrElement)) {\r\n $(formId).data('bootstrapValidator').validateField(fieldNameOrElement)\r\n }\r\n}\r\n\r\nfunction validate(formId, classtoSearch) {\r\n // Récupération de tous les champs a valider\r\n $(formId)\r\n .find(classtoSearch)\r\n .each(function (index) {\r\n validateField(formId, $(this).attr('name'))\r\n })\r\n}\r\n\r\nexport default {\r\n initForm: initForm,\r\n destroyForm: destroyForm,\r\n initModalForm: initModalForm,\r\n setItemAsInvalid: setItemAsInvalid,\r\n setItemAsValid: setItemAsValid,\r\n disableValidator: disableValidator,\r\n enableValidator: enableValidator,\r\n validateField: validateField,\r\n isValidField: isValidField,\r\n validate: validate\r\n}\r\n","/*** IMPORTS FROM imports-loader ***/\n\n(function() {\n(function defineMustache(global,factory){if(typeof exports===\"object\"&&exports&&typeof exports.nodeName!==\"string\"){factory(exports)}else if(typeof define===\"function\"&&define.amd){define([\"exports\"],factory)}else{global.Mustache={};factory(global.Mustache)}})(this,function mustacheFactory(mustache){var objectToString=Object.prototype.toString;var isArray=Array.isArray||function isArrayPolyfill(object){return objectToString.call(object)===\"[object Array]\"};function isFunction(object){return typeof object===\"function\"}function typeStr(obj){return isArray(obj)?\"array\":typeof obj}function escapeRegExp(string){return string.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g,\"\\\\$&\")}function hasProperty(obj,propName){return obj!=null&&typeof obj===\"object\"&&propName in obj}function primitiveHasOwnProperty(primitive,propName){return primitive!=null&&typeof primitive!==\"object\"&&primitive.hasOwnProperty&&primitive.hasOwnProperty(propName)}var regExpTest=RegExp.prototype.test;function testRegExp(re,string){return regExpTest.call(re,string)}var nonSpaceRe=/\\S/;function isWhitespace(string){return!testRegExp(nonSpaceRe,string)}var entityMap={\"&\":\"&\",\"<\":\"<\",\">\":\">\",'\"':\""\",\"'\":\"'\",\"/\":\"/\",\"`\":\"`\",\"=\":\"=\"};function escapeHtml(string){return String(string).replace(/[&<>\"'`=\\/]/g,function fromEntityMap(s){return entityMap[s]})}var whiteRe=/\\s*/;var spaceRe=/\\s+/;var equalsRe=/\\s*=/;var curlyRe=/\\s*\\}/;var tagRe=/#|\\^|\\/|>|\\{|&|=|!/;function parseTemplate(template,tags){if(!template)return[];var lineHasNonSpace=false;var sections=[];var tokens=[];var spaces=[];var hasTag=false;var nonSpace=false;var indentation=\"\";var tagIndex=0;function stripSpace(){if(hasTag&&!nonSpace){while(spaces.length)delete tokens[spaces.pop()]}else{spaces=[]}hasTag=false;nonSpace=false}var openingTagRe,closingTagRe,closingCurlyRe;function compileTags(tagsToCompile){if(typeof tagsToCompile===\"string\")tagsToCompile=tagsToCompile.split(spaceRe,2);if(!isArray(tagsToCompile)||tagsToCompile.length!==2)throw new Error(\"Invalid tags: \"+tagsToCompile);openingTagRe=new RegExp(escapeRegExp(tagsToCompile[0])+\"\\\\s*\");closingTagRe=new RegExp(\"\\\\s*\"+escapeRegExp(tagsToCompile[1]));closingCurlyRe=new RegExp(\"\\\\s*\"+escapeRegExp(\"}\"+tagsToCompile[1]))}compileTags(tags||mustache.tags);var scanner=new Scanner(template);var start,type,value,chr,token,openSection;while(!scanner.eos()){start=scanner.pos;value=scanner.scanUntil(openingTagRe);if(value){for(var i=0,valueLength=value.length;i\"){token=[type,value,start,scanner.pos,indentation,tagIndex,lineHasNonSpace]}else{token=[type,value,start,scanner.pos]}tagIndex++;tokens.push(token);if(type===\"#\"||type===\"^\"){sections.push(token)}else if(type===\"/\"){openSection=sections.pop();if(!openSection)throw new Error('Unopened section \"'+value+'\" at '+start);if(openSection[1]!==value)throw new Error('Unclosed section \"'+openSection[1]+'\" at '+start)}else if(type===\"name\"||type===\"{\"||type===\"&\"){nonSpace=true}else if(type===\"=\"){compileTags(value)}}stripSpace();openSection=sections.pop();if(openSection)throw new Error('Unclosed section \"'+openSection[1]+'\" at '+scanner.pos);return nestTokens(squashTokens(tokens))}function squashTokens(tokens){var squashedTokens=[];var token,lastToken;for(var i=0,numTokens=tokens.length;i0?sections[sections.length-1][4]:nestedTokens;break;default:collector.push(token)}}return nestedTokens}function Scanner(string){this.string=string;this.tail=string;this.pos=0}Scanner.prototype.eos=function eos(){return this.tail===\"\"};Scanner.prototype.scan=function scan(re){var match=this.tail.match(re);if(!match||match.index!==0)return\"\";var string=match[0];this.tail=this.tail.substring(string.length);this.pos+=string.length;return string};Scanner.prototype.scanUntil=function scanUntil(re){var index=this.tail.search(re),match;switch(index){case-1:match=this.tail;this.tail=\"\";break;case 0:match=\"\";break;default:match=this.tail.substring(0,index);this.tail=this.tail.substring(index)}this.pos+=match.length;return match};function Context(view,parentContext){this.view=view;this.cache={\".\":this.view};this.parent=parentContext}Context.prototype.push=function push(view){return new Context(view,this)};Context.prototype.lookup=function lookup(name){var cache=this.cache;var value;if(cache.hasOwnProperty(name)){value=cache[name]}else{var context=this,intermediateValue,names,index,lookupHit=false;while(context){if(name.indexOf(\".\")>0){intermediateValue=context.view;names=name.split(\".\");index=0;while(intermediateValue!=null&&index\")value=this.renderPartial(token,context,partials,tags);else if(symbol===\"&\")value=this.unescapedValue(token,context);else if(symbol===\"name\")value=this.escapedValue(token,context);else if(symbol===\"text\")value=this.rawValue(token);if(value!==undefined)buffer+=value}return buffer};Writer.prototype.renderSection=function renderSection(token,context,partials,originalTemplate){var self=this;var buffer=\"\";var value=context.lookup(token[1]);function subRender(template){return self.render(template,context,partials)}if(!value)return;if(isArray(value)){for(var j=0,valueLength=value.length;j0||!lineHasNonSpace)){partialByNl[i]=filteredIndentation+partialByNl[i]}}return partialByNl.join(\"\\n\")};Writer.prototype.renderPartial=function renderPartial(token,context,partials,tags){if(!partials)return;var value=isFunction(partials)?partials(token[1]):partials[token[1]];if(value!=null){var lineHasNonSpace=token[6];var tagIndex=token[5];var indentation=token[4];var indentedValue=value;if(tagIndex==0&&indentation){indentedValue=this.indentPartial(value,indentation,lineHasNonSpace)}return this.renderTokens(this.parse(indentedValue,tags),context,partials,indentedValue)}};Writer.prototype.unescapedValue=function unescapedValue(token,context){var value=context.lookup(token[1]);if(value!=null)return value};Writer.prototype.escapedValue=function escapedValue(token,context){var value=context.lookup(token[1]);if(value!=null)return mustache.escape(value)};Writer.prototype.rawValue=function rawValue(token){return token[1]};mustache.name=\"mustache.js\";mustache.version=\"3.1.0\";mustache.tags=[\"{{\",\"}}\"];var defaultWriter=new Writer;mustache.clearCache=function clearCache(){return defaultWriter.clearCache()};mustache.parse=function parse(template,tags){return defaultWriter.parse(template,tags)};mustache.render=function render(template,view,partials,tags){if(typeof template!==\"string\"){throw new TypeError('Invalid template! Template should be a \"string\" '+'but \"'+typeStr(template)+'\" was given as the first '+\"argument for mustache#render(template, view, partials)\")}return defaultWriter.render(template,view,partials,tags)};mustache.to_html=function to_html(template,view,partials,send){var result=mustache.render(template,view,partials);if(isFunction(send)){send(result)}else{return result}};mustache.escape=escapeHtml;mustache.Scanner=Scanner;mustache.Context=Context;mustache.Writer=Writer;return mustache});\r\n\n}.call(window));\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","'use strict'\r\n\r\n/**\r\n * Module de gestion des modales\r\n */\r\n\r\nfunction creer(\r\n id,\r\n classCss,\r\n url,\r\n callback,\r\n type,\r\n data,\r\n contentType,\r\n forcereload = false\r\n) {\r\n if (forcereload) {\r\n $('#' + id).html('')\r\n } else {\r\n if ($('#' + id).length > 0) {\r\n $('#' + id).modal('show')\r\n\r\n return\r\n }\r\n }\r\n // si la modal existe déjà on l'ouvre\r\n\r\n // sinon on crée la modal\r\n $('body').append(\r\n '
'\r\n )\r\n $('#' + id).append('
')\r\n $('#' + id + '> .modal-dialog').append('
')\r\n\r\n // on l'ouvre\r\n $('#' + id).modal()\r\n\r\n // on met à jour son contenu par ajax\r\n\r\n $.ajax({\r\n type: type == undefined ? 'GET' : type,\r\n url: url,\r\n data: data,\r\n contentType: contentType,\r\n success: function (reponse) {\r\n $('#' + id + '> .modal-dialog > .modal-content').html(reponse)\r\n\r\n // on appelle le callback\r\n if (callback !== undefined) {\r\n callback()\r\n }\r\n },\r\n error: function (xhr, ajaxOptions, thrownError) {\r\n $('#' + id).modal('hide')\r\n $('#' + id).remove()\r\n }\r\n })\r\n}\r\n\r\nfunction miseAjourParClassCss(cssClassSelector, url, callback) {\r\n let classname = cssClassSelector\r\n\r\n if (!classname.startsWith('.')) {\r\n classname = '.' + classname\r\n }\r\n\r\n if ($(classname).length == 0) {\r\n return\r\n }\r\n\r\n if ($(classname).hasClass('loaded')) {\r\n return\r\n }\r\n\r\n $(classname).addClass('loaded')\r\n\r\n // on met à jour son contenu par ajax\r\n\r\n $.ajax({\r\n type: 'GET',\r\n url: url,\r\n success: function (reponse) {\r\n $(classname).html(reponse)\r\n\r\n // on appelle le callback\r\n if (callback !== undefined) {\r\n callback()\r\n }\r\n },\r\n error: function (xhr, ajaxOptions, thrownError) {\r\n $(classname).modal('hide')\r\n }\r\n })\r\n}\r\n\r\nfunction supprimer(id) {\r\n $('#' + id).remove()\r\n}\r\n\r\nexport default {\r\n creer: creer,\r\n supprimer: supprimer,\r\n miseAjourParClassCss: miseAjourParClassCss\r\n}\r\n","'use strict'\r\n\r\n/**\r\n * Module qui gère l'effacement du texte dans les input quand on clique dessus (ex. Saisissez votre newsletter)\r\n */\r\n\r\nconst J_CLEANTEXTONFOCUS = '.j_cleanTextOnFocus'\r\nconst J_DATA_DEFAULTVALUE = 'defaultvalue'\r\n\r\n/*\r\n * Set des events pour détecter si c'est le message par défaut dans le champs, et si il faut le supprimer\r\n */\r\nfunction setEvent() {\r\n const $items = $(J_CLEANTEXTONFOCUS)\r\n\r\n $items.each(function (index, inputElement) {\r\n $(inputElement).on('blur', function (event) {\r\n setDefaultValueIfEmpty(event.currentTarget)\r\n })\r\n $(inputElement).on('focus', function (event) {\r\n eraseIfDefaultValue(event.currentTarget)\r\n })\r\n })\r\n}\r\n\r\n/**\r\n * Vide le champ si il contient la valeur par défaut\r\n * @param {string} target Element HTML\r\n */\r\nfunction eraseIfDefaultValue(target) {\r\n const focusedInput = target\r\n const defaultValue = $(focusedInput).data(J_DATA_DEFAULTVALUE)\r\n\r\n if (focusedInput.value === defaultValue) {\r\n focusedInput.value = ''\r\n }\r\n}\r\n\r\n/**\r\n * Si le champ est vide, on met la valeur par défaut\r\n * @param {string} target Element HTML\r\n */\r\nfunction setDefaultValueIfEmpty(target) {\r\n const focusedInput = target\r\n const defaultValue = $(focusedInput).data(J_DATA_DEFAULTVALUE)\r\n\r\n if (focusedInput.value === '') {\r\n focusedInput.value = defaultValue\r\n }\r\n}\r\n\r\n/*\r\n * Set des events pour détecter si c'est le message qui doit être effacé au clique dans le champ. Le message est la valeur du champ au moment de l'appel du setEvent\r\n */\r\nfunction setEventOnCustomText(val) {\r\n const $items = $(J_CLEANTEXTONFOCUS)\r\n $items.off() // On désactive les autres events sur ces items si elles y sont\r\n\r\n $items.each(function (index, inputElement) {\r\n $(inputElement).on('blur', function (event) {\r\n setCustomValueIfEmpty(val, event.currentTarget)\r\n })\r\n $(inputElement).on('focus', function (event) {\r\n eraseIfCustomValue(val, event.currentTarget)\r\n })\r\n })\r\n}\r\n\r\n/**\r\n * Vide le champ si il contient la valeur par défaut passée en paramètre\r\n * @param {string} defaultValue Valeur pas défaut\r\n * @param {string} target Element HTML\r\n */\r\nfunction eraseIfCustomValue(defaultValue, target) {\r\n const focusedInput = target\r\n\r\n if (focusedInput.value === defaultValue) {\r\n focusedInput.value = ''\r\n }\r\n}\r\n\r\n/**\r\n * Si le champ est vide, on met la valeur par défaut passée en paramètre\r\n * @param {string} defaultValue Valeur pas défaut\r\n * @param {string} target Element HTML\r\n */\r\nfunction setCustomValueIfEmpty(defaultValue, target) {\r\n const focusedInput = target\r\n\r\n if (focusedInput.value === '') {\r\n focusedInput.value = defaultValue\r\n }\r\n}\r\n\r\nexport default {\r\n setEvent: setEvent,\r\n setEventOnCustomText: setEventOnCustomText\r\n}\r\n","'use strict'\r\n\r\n/*\r\n * Module permettant la sélection d'une catégorie et l'affichage du panel correspondant.\r\n * Ce panel peut contenir des items, par exemple des tailles.\r\n */\r\n\r\nconst J_PANEL_SELECTOR = '.j_panelSelector'\r\nconst J_LIST_CATEGORY = '.j_listCategory'\r\nconst J_PANEL_ITEM = '.j_panelItem'\r\nconst J_BORDER_SELECTED = '.j_borderSelected'\r\nconst J_SELECTED_PANEL_DATA = 'selectedpanel'\r\nconst C_HIDDEN = 'hidden'\r\nconst C_SELECTED = 'active'\r\n\r\n/*\r\n * Fonction de gestion du clique sur chacune des différentes icônes du genre\r\n * pour afficher les tailles correspondantes. Peut exécuter une callback si elle est différent de undefined\r\n */\r\nfunction setEvents(callback) {\r\n $(J_PANEL_SELECTOR)\r\n .find(J_LIST_CATEGORY)\r\n .on('click', function (event) {\r\n setSelectedCategory(event.currentTarget)\r\n showPanel(event.currentTarget)\r\n if (callback !== undefined) {\r\n callback()\r\n }\r\n })\r\n}\r\n\r\n/*\r\n * D'abord on désélectionne toutes les catégories\r\n * puis on sélectionne celle qui nous intéresse\r\n */\r\nfunction setSelectedCategory(currentTarget) {\r\n $(J_LIST_CATEGORY).prop('checked', false)\r\n $(J_BORDER_SELECTED).removeClass(C_SELECTED)\r\n $(currentTarget).prop('checked', true)\r\n $(currentTarget).parent().addClass(C_SELECTED)\r\n}\r\n\r\n/*\r\n * D'abord on cache les panels correspondant aux catégories\r\n * ensuite on affiche celui qui nous intéresse\r\n */\r\nfunction showPanel(currentTarget) {\r\n const destination = $(currentTarget).data(J_SELECTED_PANEL_DATA)\r\n $(J_PANEL_ITEM).addClass(C_HIDDEN)\r\n $(destination).removeClass(C_HIDDEN)\r\n}\r\n\r\nexport default {\r\n setEvents: setEvents,\r\n setSelectedCategory: setSelectedCategory,\r\n showPanel: showPanel\r\n}\r\n","'use strict'\r\n\r\n/*\r\n * Module qui contient les données des profils et les persistes\r\n * dans les cookies en JSON\r\n */\r\n\r\nlet profiles = {}\r\nlet currentProfile = {\r\n name: '',\r\n gender: '',\r\n selected: false,\r\n sizes: {}\r\n}\r\n\r\nconst COOKIE_NAME = 'MP'\r\nconst LINK_EVENT_DELETE_COOKIE = '.j_deleteCookie'\r\nconst URL_UPDATE_COOKIE = '/_3MPlus/UpdateCookie'\r\n\r\n/*\r\n * Récupère le cookie du profil s'il existe, et créer l'objet correspondant.\r\n */\r\nfunction init() {\r\n profiles = getCookie()\r\n if (profiles === undefined) {\r\n profiles = {}\r\n } else {\r\n for (const property in profiles) {\r\n if (profiles.hasOwnProperty(property)) {\r\n if (profiles[property].selected === true) {\r\n currentProfile = profiles[property]\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n/*\r\n * Récupère le cookie s'il existe et le transforme en objet\r\n */\r\nfunction getCookie() {\r\n const name = COOKIE_NAME + '='\r\n const cookiesArray = document.cookie.split(';')\r\n let cookie = ''\r\n\r\n for (let i = 0; i < cookiesArray.length; i++) {\r\n // On récupère le cookie\r\n cookie = cookiesArray[i].trim()\r\n\r\n if (cookie !== undefined) {\r\n if (cookie.indexOf(name) === 0) {\r\n return JSON.parse(cookie.substring(name.length, cookie.length)) // On transforme le cookie en object\r\n }\r\n }\r\n }\r\n return undefined\r\n}\r\n\r\n/*\r\n * Enregistre le cookie\r\n */\r\nfunction saveCookie() {\r\n const now = new Date()\r\n\r\n for (const i in profiles) {\r\n deleteObjectProperty(profiles[i], 'version')\r\n deleteObjectProperty(profiles[i], 'customProfile')\r\n deleteObjectProperty(profiles[i], 'research')\r\n }\r\n\r\n const myDressingProfile = JSON.stringify(profiles)\r\n\r\n now.setTime(now.getTime() + 3650 * 24 * 60 * 60 * 1000) // le cookie expire dans 10 ans\r\n\r\n document.cookie =\r\n COOKIE_NAME +\r\n '=' +\r\n myDressingProfile +\r\n ';expires=' +\r\n now.toGMTString() +\r\n ';domain=' +\r\n window.location.hostname +\r\n ';path=/'\r\n\r\n // Envoi du cookie au serveur pour sauvegarde\r\n $.ajax({\r\n url: URL_UPDATE_COOKIE,\r\n success: function (data) {}\r\n })\r\n}\r\n\r\nfunction deleteObjectProperty(o, prop) {\r\n if (o.hasOwnProperty(prop)) {\r\n delete o[prop]\r\n }\r\n}\r\n\r\n/*\r\n * Supprime le cookie\r\n */\r\nfunction deleteCookie() {\r\n document.cookie =\r\n COOKIE_NAME +\r\n '=; expires=Thu, 01 Jan 1970 00:00:01 GMT' +\r\n ';domain=' +\r\n window.location.hostname +\r\n ';path=/'\r\n}\r\n\r\n/*\r\n * Récupère les données présent dans les éléments $category et $selectedSize\r\n * qui représente une partie du DOM\r\n */\r\nfunction saveDataAsCookie(category, name, dataArray, dataFamily) {\r\n let family = ''\r\n\r\n if (name === '') {\r\n return\r\n }\r\n\r\n if (profiles !== undefined) {\r\n // Si on avait déjà un profil sélectionné avant, on le désélectionne\r\n for (const property in profiles) {\r\n if (profiles.hasOwnProperty(property)) {\r\n if (profiles[property].selected === true) {\r\n profiles[property].selected = false\r\n }\r\n }\r\n }\r\n }\r\n if (profiles[name] !== undefined) {\r\n currentProfile = profiles[name]\r\n currentProfile.selected = true\r\n currentProfile.sizes = {}\r\n } else {\r\n profiles[name] = {\r\n name: name,\r\n gender: category,\r\n selected: true,\r\n sizes: {}\r\n }\r\n currentProfile = profiles[name]\r\n }\r\n\r\n // Pour chaque élément option sélectionné, on enregistre ca valeur sous forme family=value\r\n for (const item in dataArray) {\r\n if (item !== undefined) {\r\n if (dataArray.hasOwnProperty(item)) {\r\n family = item\r\n profiles[name].sizes[family] = dataArray[item]\r\n }\r\n }\r\n }\r\n\r\n if (profiles[name].lastupdated == null) {\r\n profiles[name].lastupdated = {}\r\n }\r\n\r\n if (profiles[name].lastupdated[dataFamily] == null) {\r\n profiles[name].lastupdated[dataFamily] = []\r\n }\r\n\r\n profiles[name].lastupdated[dataFamily] = new Date().toISOString()\r\n\r\n saveCookie()\r\n}\r\n\r\n/*\r\n * Vérifie si il existe un profil pour le nom passé en paramètre\r\n */\r\nfunction existProfil(name) {\r\n if (profiles[name] === undefined) {\r\n return false\r\n } else if (profiles[name] !== undefined) {\r\n return true\r\n }\r\n}\r\n\r\n/*\r\n * Vérifie si il existe un profil pour le genre passé en paramètre\r\n * retourne son nom ou undefined\r\n */\r\nfunction existProfilByGender(gender) {\r\n let name\r\n\r\n for (const i in profiles) {\r\n // On compte combien de profils on a dans notre cookie\r\n if (profiles.hasOwnProperty(i)) {\r\n if (profiles[i].gender === gender) {\r\n name = profiles[i].name\r\n }\r\n }\r\n }\r\n return name\r\n}\r\n\r\n/*\r\n * Récupère le cookie des profils\r\n * et compte combien il y a de profils a l'intérieur\r\n */\r\nfunction getNbOfProfile() {\r\n let cpt = 0\r\n\r\n for (const i in profiles) {\r\n // On compte combien de profils on a dans notre cookie\r\n if (profiles.hasOwnProperty(i)) {\r\n cpt++\r\n }\r\n }\r\n return cpt\r\n}\r\n\r\n/*\r\n * Va sortir le profil qui a le numéro le plus élevé\r\n */\r\nfunction getMaxNbOfProfile() {\r\n let cpt = 0\r\n let tmpcpt = 0\r\n\r\n for (const i in profiles) {\r\n if (profiles.hasOwnProperty(i)) {\r\n if (!isNaN(parseInt(profiles[i].name.slice(-1)))) {\r\n tmpcpt = parseInt(profiles[i].name.slice(-1))\r\n if (tmpcpt > cpt) {\r\n cpt = tmpcpt\r\n }\r\n }\r\n }\r\n }\r\n return cpt\r\n}\r\n\r\n/*\r\n * Set le profil concerné en selected et set l'ancien\r\n * profil qui était sélectionné en non sélectionné\r\n */\r\nfunction setSelected(name) {\r\n init()\r\n profiles[currentProfile.name].selected = false\r\n profiles[name].selected = true\r\n currentProfile = profiles[name]\r\n saveCookie()\r\n}\r\n\r\nfunction getProfileByGender(gender) {\r\n for (const i in profiles) {\r\n if (profiles.hasOwnProperty(i)) {\r\n if (profiles[i].gender === gender) {\r\n return profiles[i]\r\n }\r\n }\r\n }\r\n return undefined\r\n}\r\n\r\nfunction getProfiles() {\r\n return profiles\r\n}\r\n\r\nfunction getCurrentProfile() {\r\n return currentProfile\r\n}\r\n\r\nfunction setEventDeleteProfileAndReloadPage() {\r\n $(LINK_EVENT_DELETE_COOKIE).on('click', function (event) {\r\n deleteCookie()\r\n location.reload()\r\n })\r\n}\r\n\r\n// Appel du constructeur\r\ninit()\r\n\r\nexport default {\r\n init: init,\r\n getProfiles: getProfiles,\r\n getCurrentProfile: getCurrentProfile,\r\n saveCookie: saveCookie,\r\n deleteCookie: deleteCookie,\r\n saveDataAsCookie: saveDataAsCookie,\r\n existProfil: existProfil,\r\n existProfilByGender: existProfilByGender,\r\n getNbOfProfile: getNbOfProfile,\r\n setSelected: setSelected,\r\n getMaxNbOfProfile: getMaxNbOfProfile,\r\n getProfileByGender: getProfileByGender,\r\n setEventDeleteProfileAndReloadPage: setEventDeleteProfileAndReloadPage\r\n}\r\n","'use strict'\r\n\r\n/**\r\n * Module qui gère les tooltips bootstrap\r\n */\r\n\r\n/*\r\n * Fonction qui met en place un tooltip sur l'item passé en paramètre\r\n */\r\nfunction setEventOnItem(item, position, label) {\r\n const option = {\r\n placement: position,\r\n title: label,\r\n trigger: 'manual'\r\n }\r\n $(item).tooltip(option)\r\n $(item).attr('data-original-title', label)\r\n $(item).tooltip('show')\r\n}\r\n\r\nfunction hideToolTip(item) {\r\n $(item).tooltip('hide')\r\n}\r\n\r\nexport default {\r\n setEventOnItem: setEventOnItem,\r\n hideToolTip: hideToolTip\r\n}\r\n","\r\nexport const A_ACCENT = 'à'\r\nexport const A_JOINDRE_DANS_COLIS = 'A joindre dans votre colis'\r\nexport const A_PARTIR_DE_MAJ = 'À PARTIR DE'\r\nexport const A_PROPOS_DE_MODZ = 'À propos de Modz'\r\nexport const A_VENIR_TRES_PROCHAINEMENT = 'À venir très prochainement !'\r\nexport const ACCEDER_A_MES_CMD = 'Accéder à mes commandes'\r\nexport const ACCEDER_A_MES_INFOS = 'Accéder à mes infos'\r\nexport const ACCEDER_A_MES_RETOURS = 'Accéder à mes retours'\r\nexport const ACCEDER_AU_FORMULAIRE_DE_CONTACT = 'Accéder au formulaire de contact'\r\nexport const ACCEDEZ_A_VOS_DONNES_PERSOS = 'Accédez à vos données personnelles'\r\nexport const ACCEPTER_CGV = 'En cliquant sur COMMANDER, vous acceptez les'\r\nexport const ACCES_ALL_PDTS_MARQUE_MAJ = 'ACCÉDER À TOUS LES PRODUITS DE LA MARQUE'\r\nexport const ACCUEIL = 'Accueil'\r\nexport const ACHAT_EXPRESS = 'Achat Express'\r\nexport const ACHETER = 'Acheter'\r\nexport const ACTIVE = 'Activé'\r\nexport const ADRESSE = 'Adresse'\r\nexport const ADRESSE_FACTURATION = 'Adresse de facturation'\r\nexport const ADRESSE_LIVRAISON = 'Adresse de livraison'\r\nexport const ADRESSE_LIVRAISON_MODIFIER = 'Votre adresse de livraison a été modifié pour cette commande.'\r\nexport const ADRESSE_MAIL = 'Adresse e-mail'\r\nexport const AFFICHER = 'Afficher'\r\nexport const AFFICHER_PLUS_PRODUITS = 'Afficher plus de produits'\r\nexport const AGE = 'Age'\r\nexport const AGES = 'Ages'\r\nexport const AIDE = 'Aide'\r\nexport const AJOINDRE_DANS_VOTRE_COLIS_MAJ = '(A JOINDRE DANS VOTRE COLIS SVP)'\r\nexport const AJOUTER = 'Ajouter'\r\nexport const AJOUTER_A_MON_PANIER = 'AJOUTER À MON PANIER'\r\nexport const AJOUTER_AUX_FAVORIS = 'Ajouter aux favoris'\r\nexport const AJOUTER_PANIER = 'AJOUTER AU PANIER'\r\nexport const AJOUTER_PROFIL = 'Ajouter un profil'\r\nexport const AJOUTER_UNE_MARQUE = 'Ajouter une marque'\r\nexport const ALERTE_ACTIVE_POUR = 'L\\u0027alerte sera activée pour'\r\nexport const ALERTES_AVANT_PREMIERE = 'avant première'\r\nexport const ALERTES_CEST_POURQUOI = 'C\\u0027est pourquoi nous vous proposons d\\u0027être informé en'\r\nexport const ALERTES_DE_NOS_ARRIVAGES = 'de nos arrivages. En quelques clics seulement, créez vos alertes et recevez les nouveautés en fonctions de vos critères. Ne perdez pas une minute pour profiter des bons plans avant les autres !'\r\nexport const ALERTES_MES_ALERTES = 'Mes alertes'\r\nexport const ALERTES_MODZ_NUM1_DESTOCKAGE = 'Modz, numéro 1 du déstockage des boutiques de mode, vous propose des'\r\nexport const ALERTES_NE_MANQUEZ_PLUS_LE_PRODUIT = 'Ne manquez plus le produit dont vous rêviez !'\r\nexport const ALERTES_NLLES_PIECES = 'nouvelles pièces'\r\nexport const ALERTES_NOM_ALERTE = 'Nom de l\\u0027alerte'\r\nexport const ALERTES_TLJ_CES_PIECES = 'tous les jours. Ces pièces sont pour la plupart'\r\nexport const ALERTES_UNIQUES_COURTISEES = 'uniques et très courtisées'\r\nexport const APPEL_FACTURE = 'Appel facturé'\r\nexport const APPLIQUER_CODE_MAJ = 'APPLIQUER LE CODE'\r\nexport const ARTICLE = 'article'\r\nexport const ARTICLE_AJOUT_FAVORIS_MSG = 'L\\u0027article a bien été ajouté à votre liste de favoris.'\r\nexport const ARTICLE_BIEN_AJOUTE_PANIER = 'L\\u0027article a été ajouté dans le panier.'\r\nexport const ARTICLE_DANS_FAVORIS = 'article dans vos favoris'\r\nexport const ARTICLE_EXPE_24H = 'Article expédié en 24h'\r\nexport const ARTICLES = 'articles'\r\nexport const ARTICLES_DANS_FAVORIS = 'articles dans vos favoris'\r\nexport const ATTENTION = 'Attention'\r\nexport const AU = 'au'\r\nexport const AUCUN_ESCOMPTE_ACCORDE = 'Aucun escompte pour paiement anticipé n\\u0027est accordé.'\r\nexport const AUCUN_PRODUIT_CORRESPONDANT_SANS_MARQUES = 'Nous n’avons plus aucun produit correspondant à votre recherche.\\r\\n\\u003cbr /\\u003eDemain, il y aura \\u003cspan class=\\\"PoppinsSemiBold\\\"\\u003e3 000 nouveautés\\u003c/span\\u003e en plus sur le site donc restez connecté !'\r\nexport const AUCUNRETOURENREGISTRE = 'Aucun retour enregistré'\r\nexport const AULIEUDE = 'au lieu de'\r\nexport const AUTOUR_DE_MOI = 'Autour de moi'\r\nexport const AUTRE = 'Autre'\r\nexport const AUTRES_PAYS = 'Autres pays'\r\nexport const AUTRES_VILLES = 'Autres villes'\r\nexport const AVANTAGE_CODE_PROMO = 'Avantage code promotionnel'\r\nexport const AVANTAGE_CODE_PROMO_DOTS = 'Avantage code promotionnel ...................'\r\nexport const AVANTAGE_REDUCTION = 'Avantages, promos, réduction -'\r\nexport const AVEC = 'avec'\r\nexport const AVEC_MONDIAL_RELAY = 'avec Mondial Relay.'\r\nexport const AVEC_MONDIAL_RELAY_MAJ = 'AVEC MONDIAL RELAY'\r\nexport const AVIS_CLIENTS = 'AVIS CLIENTS'\r\nexport const AVIS_TRUSTPILOT = 'Voir les avis de http://trustpilot.fr'\r\nexport const AVOIR = 'Avoir'\r\nexport const AVOIR_ETE_PORTE = '- Avoir été porté'\r\nexport const BAS = 'Bas'\r\nexport const BAS_MAJ = 'BAS'\r\nexport const BENEFICIER_MAJ = 'BENEFICIER'\r\nexport const BESOINAIDE = 'Besoin d\\u0027aide? Commander par téléphone ?'\r\nexport const BOHEME_FP = 'bohèmes'\r\nexport const BON_ACHAT = 'Bon d\\u0027achat'\r\nexport const BONDERETOUR = 'Bon de retour'\r\nexport const BONJOUR = 'Bonjour'\r\nexport const BONNE_ANNEE = 'Bonne année'\r\nexport const BONNE_IDEE = 'Bonne idée \\u003e'\r\nexport const BONNE_NOUVELLE_LIVRAISON_GRATUITE = 'Bonne nouvelle ! Vous bénéficiez de la livraison gratuite.'\r\nexport const BONS_PARRAINAGE = 'Bons de parrainage'\r\nexport const BONUS = 'Bonus'\r\nexport const BORDEREAU_RETOUR = 'Bordereau de retour'\r\nexport const BORDEREAU_RETOUR_MAJ = 'BORDEREAU DE RETOUR'\r\nexport const BR_A_RECEPTION_MODZ = 'A réception, Modz créditera votre compte d\\u0027un avoir utilisable immédiatement, vous bénéficierez de la possibilité de demander le remboursement.'\r\nexport const BR_LES_CGV_APPLICABLE_A_VOTRE_CMD = 'Les conditions Générales de vente applicables à votre commande acceptées lors de votre enregistrement sont disponibles sur notre site. Les consommateurs disposent d\\u0027un délai de 14 Jours francs à compter de la réception des biens pour exercer leur droit de rétractation sans avoir à justifier de motif ni à payer de pénalités, à l\\u0027exception des frais de retour.'\r\nexport const BRAVO_VOUS_VENEZ_DE_METTRE_LA_MAIN = 'Bravo ! Vous venez de mettre la main sur le dernier produit disponible !'\r\nexport const BUREAU = 'Bureau'\r\nexport const CARTES_BANCAIRES = 'Cartes bancaires'\r\nexport const CATEGORIE = 'Catégorie'\r\nexport const CATEGORIES = 'Catégories'\r\nexport const CELA_POURRAIT_VOUS_INTERESSER = 'Cela pourrait vous intéresser'\r\nexport const CEST_PARTI = 'C\\u0027est parti !'\r\nexport const CET_ART_A_BIEN_ETE_AJOUTE = '\\u003cspan class=\\\"d-block\\\"\\u003eCet article a bien été ajouté\\u003c/span\\u003e\\r\\n\\u003cspan class=\\\"d-block\\\"\\u003eà votre panier\\u003c/span\\u003e'\r\nexport const CET_ARTICLE_A_ETE_VENDU = 'Cet article a été vendu.'\r\nexport const CET_ARTICLE_NEST_PLUS_DISPO = 'Cet article n\\u0027est plus disponible.'\r\nexport const CETTE_PAGE_SECURISEE = 'Cette page sécurisée est la page d\\u0027accueil de votre compte Modz. Elle regroupe tous les outils utiles pour gérer vos commandes, modifier vos informations personnelles ou créer des alertes. Vous y trouverez aussi notre offre de parrainage afin de bénéficier de 20€ sur votre prochaine commande.'\r\nexport const CGV_MODZ = 'conditions générales de vente de Modz.'\r\nexport const CHAMPS_OBLIGATOIRES = '* Champs obligatoires'\r\nexport const CHANGER_MON_MDP = 'Changer mon mot de passe'\r\nexport const CHAQUE_JOUR_NOUVEAUTES_EN_LIGNE = 'Chaque jour, ce sont plus de 1.500 nouveautés en ligne. Découvrez-les vite !'\r\nexport const CHARGEMENTZOOM = 'Chargement du zoom...'\r\nexport const CHAUSSURE = 'Chaussure'\r\nexport const CHAUSSURES = 'Chaussures'\r\nexport const CHAUSSURES_MAJ = 'CHAUSSURES'\r\nexport const CHEQUE = 'Chèque'\r\nexport const CHEQUE_1 = 'Chèque numéro 1:'\r\nexport const CHEQUE_2 = 'Chèque numéro 2:'\r\nexport const CHEQUE_3 = 'Chèque numéro 3:'\r\nexport const CHERCHER_AUTOUR_DE_MOI = 'Chercher autour de moi'\r\nexport const CHIFFRE24H = '24h'\r\nexport const CHOISIR_AUTRE_ADRESSE = 'Choisir une autre adresse'\r\nexport const CHOISIR_UN_FICHIER = 'Choisir un fichier'\r\nexport const CHOISISSEZ_MODE_EXPE_COLIS = 'Choisissez le mode d\\u0027expédition de votre colis.'\r\nexport const CHOISISSEZ_TRANSPORTEUR_DE_VITRE_CHOIX = 'Choisissez le transporteur de votre choix.'\r\nexport const CHOIX = 'Choix'\r\nexport const CHOIX_PAIEMENT_3XCHEQUE = 'Vous avez choisi de régler par chèques 3 fois sans frais, nous vous informons que vous devez établir 3 chèques, à l\\u0027ordre de Modz.fr, des montants suivants :'\r\nexport const CHOIX_PAIEMENT_CHEQUE = 'Vous avez choisi de régler par chèque, nous vous informons que vous devez établir votre chèque à l\\u0027ordre de Modz.fr et l\\u0027envoyer à l\\u0027adresse suivante :'\r\nexport const CHOIX_PAIEMENT_VIREMENT = 'Vous avez choisi de régler par virement bancaire, les coordonnées bancaires sont les suivantes :'\r\nexport const CHOIX_POINT_RELAY = 'Choix du point relais'\r\nexport const CINQ_EUROS = '5€'\r\nexport const CIVILITE = 'Civilité'\r\nexport const CLIQUANT_ICI = 'cliquant ici'\r\nexport const CLIQUER_ICI = 'cliquez ici'\r\nexport const CLIQUEZ_ICI = 'Cliquez ici'\r\nexport const CLIQUEZ_POUR_AGRANDIR = 'Cliquez sur l\\u0027image pour agrandir'\r\nexport const CLIQUEZPOURZOOM = 'Cliquez sur l\\u0027image pour agrandir'\r\nexport const CLUB_AUCUN_ARTICLE_ELIGBLE = 'Vous n\\u0027avez pas d\\u0027article éligible actuellement.'\r\nexport const CLUB_BENEFICIER_AVOIR_OU_REMBOURSEMENT = '5. Bénéficier d’un avoir ou d’un remboursement'\r\nexport const CLUB_CARTE_CADEAU_LORS_DU_PAIEMENT = 'Lors du paiement de votre commande, le solde de vos bons d’achat apparaitra et il vous suffira de cocher la case pour que le montant soit déduit de votre commande.'\r\nexport const CLUB_CARTE_CADEAU_SUCCES = 'Bravo ! Votre carte a bien été enregistrée. Bon shopping !'\r\nexport const CLUB_CARTECADEAU = 'Carte cadeau'\r\nexport const CLUB_COCHEZ_LES_ARTICLES = 'Cochez les articles que vous souhaitez retourner et indiquez le motif. Choisissez ensuite votre mode d’expédition.'\r\nexport const CLUB_COLLER_ETIQUETTE_MR_COLIS = 'Coller l’étiquette Mondial Relay sur votre colis.'\r\nexport const CLUB_CONTACT = 'Contact'\r\nexport const CLUB_CONTACTEZNOUS = 'Contactez-nous'\r\nexport const CLUB_DEMANDE_DE_RETOUR = 'Demande de retour'\r\nexport const CLUB_DEPOSER_COLIS_DANS_POINT_RELAIS = 'Déposer votre colis dans le point Mondial Relay suivant:'\r\nexport const CLUB_DEPOSEZ_COLIS_AVEC_SHOPPING_TRANQUILLE = 'Déposez le colis dans le point relais que vous avez choisi.'\r\nexport const CLUB_DEPOSEZ_COLIS_INTERNATIONNAL = 'Déposez le colis dans un bureau de poste.'\r\nexport const CLUB_DESCR_PREPARATION_RETOUR = 'Les articles doivent être pliés dans leur emballage d’origine avec toutes les étiquettes, \\r\\nou boite originale pour les chaussures, le tout dans un colis correctement fermé.\\r\\nConstituez solidement votre colis car la marchandise voyage à vos frais et périls.'\r\nexport const CLUB_EN_FONCTION_DU_MODE_DE_LIVRAISON_SANS_SHOPPING_TRANQUILLE = 'En fonction du mode de livraison choisi, déposez le colis dans un bureau de poste ou un point relais.'\r\nexport const CLUB_ETIQUETTE_MR_A_COLLER = 'L\\u0027étiquette Mondial Relay (à coller sur votre colis) \\u003e'\r\nexport const CLUB_EXPEDIER_COLIS = '4. Expédier votre colis'\r\nexport const CLUB_IMRIMER_ETIQUETTE_MR = '3. Imprimer l\\u0027étiquette Mondial Relay'\r\nexport const CLUB_INDIQUER_ADRESSE_RETOUR_COLIS = '3. Indiquer l’adresse de retour sur votre colis'\r\nexport const CLUB_INDIQUEZ_ADRESSE_RETOUR_COLIS = 'Indiquez l’adresse de retour sur votre colis :'\r\nexport const CLUB_LAVES_REPASSES = '- Lavés et/ou repassés'\r\nexport const CLUB_LES_ARTICLES_NE_DOIVENT_PAS_AVOIR_ETE = 'Les articles ne doivent pas avoir été :'\r\nexport const CLUB_MARQUES_PREFEREES = 'Mes marques préférées'\r\nexport const CLUB_MES_ARTICLES_ELIGIBLES_RETOUR = 'Mes articles éligibles au retour'\r\nexport const CLUB_MES_COULEURS_FAVORITES = 'Mes couleurs favorites'\r\nexport const CLUB_MES_DEMANDES_DE_RETOUR = 'Mes demandes de retour'\r\nexport const CLUB_MES_PROFILS = 'Mes profils'\r\nexport const CLUB_MESABONNEMENTS = 'Mes abonnements'\r\nexport const CLUB_MESALERTES = 'Mes alertes'\r\nexport const CLUB_MESALERTESNOUVEAUTES = 'Mes alertes nouveautés'\r\nexport const CLUB_MESCOMMANDES = 'Mes commandes'\r\nexport const CLUB_MESINFOS = 'Mes infos'\r\nexport const CLUB_MESINFOSPERSO = 'Mes infos personnelles'\r\nexport const CLUB_MESRETOURS = 'Mes retours'\r\nexport const CLUB_MODIFIER_MES_MARQUES = 'Modifier mes marques préférés'\r\nexport const CLUB_MODIFIER_MES_MARQUES_PREFEREES = 'Modifier mes marques préférées'\r\nexport const CLUB_MODIFIER_MES_PRODUITS = 'Modifier mes produits fétiches'\r\nexport const CLUB_MODIFIER_MES_PRODUITS_FETICHES = 'Modifier mes produits fétiches'\r\nexport const CLUB_MODIFIER_MES_TAILLES = 'Modifier mes tailles'\r\nexport const CLUB_MODIFIER_MON_STYLE = 'Modifier mon style'\r\nexport const CLUB_MON_SOLDE_DE_COMPE = 'Mon solde de compte'\r\nexport const CLUB_MON_STYLE = 'Mon style'\r\nexport const CLUB_MONPROFIL = 'Mon profil'\r\nexport const CLUB_NEWS_SOUHAIT_1 = 'Être informé de toutes les actus et promos de Modz\\r\\n\\u003cspan\\u003e(pour que rien ne m\\u0027échappe !)\\u003c/span\\u003e'\r\nexport const CLUB_NEWS_SOUHAIT_2 = 'Recevoir un récap sur les produits que j\\u0027ai mis au panier\\r\\n\\u003cspan\\u003e(pour ne pas les oublier !)\\u003c/span\\u003e'\r\nexport const CLUB_NEWS_SOUHAIT_3 = 'Garder un oeil sur tous mes produits favoris\\r\\n\\u003cspan\\u003e(pour que personne d\\u0027autre ne mette la main dessus !)\\u003c/span\\u003e'\r\nexport const CLUB_NEWS_SOUHAIT_4 = 'Être alerté dès qu\\u0027un produit que j\\u0027ai repéré revient en stock\\u003cspan\\u003e\\r\\n(pour qu\\u0027il ne m\\u0027échappe pas une 2e fois !)\\u003c/span\\u003e'\r\nexport const CLUB_NEWS_SOUHAIT_5 = 'Recevoir des offres exclusives en tant que client Modz\\r\\n\\u003cspan\\u003e(parce que je le vaux bien !)\\u003c/span\\u003e'\r\nexport const CLUB_NEWS_SOUHAIT_6 = 'Recevoir des alertes nouveautés de mes marques préférées\\u003cspan class=\\\"pink\\\"\\u003e\\r\\n(\\u003ca href=\\\"/club/alertes/\\\" class=\\\"underline pink\\\"\\u003egérer mes alertes\\u003c/a\\u003e)\\u003c/span\\u003e'\r\nexport const CLUB_PARRAINAGE = 'Parrainage'\r\nexport const CLUB_PARRAINAGE_BONACHAT_20E_CREDIT = 'Un bon d\\u0027achat de 20€ sera crédité sur votre compte pour chaque \\r\\n1ère commande passée par vos filleuls !'\r\nexport const CLUB_PARRAINAGE_CREDITES_SUR_VOTRE_COMPTE = 'Crédités sur votre compte pour chaque 1ère commande passée \\r\\npar vos filleuls donc 5 filleuls = 100€ pour vous !'\r\nexport const CLUB_PARRAINAGE_FAITES_DECOUVRIR_MODZ = 'Et si vous faisiez découvrir Modz à vos amis afin de leur faire bénéficier \\u003cspan class=\\\"hidden-xs d-block\\\"\\u003e\\u003c/span\\u003e\\r\\nde nos plus belles affaires… c’est gagnant gagnant !'\r\nexport const CLUB_PARRAINAGE_INVIATION_ENVOYEE = 'Votre invitation a bien été envoyée !'\r\nexport const CLUB_PARRAINAGE_PARRAINER = 'Parrainer !'\r\nexport const CLUB_PARRAINAGE_PARRAINER_PLUS_DAMIS = 'Parrainez encore plus d’amis \\u003e'\r\nexport const CLUB_PARRAINAGE_PARRAINNEZ_VOS_AMIS = 'Parrainez vos amis en leur envoyant une invitation :'\r\nexport const CLUB_PARRAINAGE_POUR_VOS_FILLEULS = 'Pour vos filleuls,'\r\nexport const CLUB_PARRAINAGE_PROFITEZ_DU_PROGRAMME_PARRAINAGE = 'Pour profiter du programme de parrainage et envoyez des invitations à vos amis, connectez-vous à votre compte client :'\r\nexport const CLUB_PARRAINAGE_SUR_1ERE_COMMANDE = 'Sur leur 1ère commande d’une valeur minimum de 50€.'\r\nexport const CLUB_PARRAINGE_15E_EN_BON_DACHAT = '15€ en bon d\\u0027achat'\r\nexport const CLUB_PARRAINGE_20E = '20€'\r\nexport const CLUB_PARRAINGE_EN_BON_DACHAT = 'en bon\\u003cbr /\\u003ed\\u0027achat'\r\nexport const CLUB_PARRAINGE_POUR_VOUS = 'Pour vous,'\r\nexport const CLUB_PLACEZ_ARTICLE_AVEC_SHOPPING_TRANQUILLE = 'Placez le ou les articles dans le colis. Collez le code-barres sur le colis (par-dessus l’étiquette de livraison).'\r\nexport const CLUB_PLACEZ_ARTICLE_INTERNATIONNAL = 'Placez le ou les articles dans le colis.'\r\nexport const CLUB_PLACEZ_ARTICLE_SANS_SHOPPING_TRANQUILLE = 'Placez le ou les articles dans le colis. Pour un retour via Mondial Relay, collez le code-barres sur le colis (par-dessus l’étiquette de livraison).'\r\nexport const CLUB_PORTES = '- Portés'\r\nexport const CLUB_PREPARER_COLIS_RETOUR = '2. Préparer votre colis de retour'\r\nexport const CLUB_PRODUITS_FETICHE = 'Mes Produits fétiches'\r\nexport const CLUB_PROFIL_FEMME = 'Profil femme'\r\nexport const CLUB_PROFIL_FILLE = 'Profil Fille'\r\nexport const CLUB_PROFIL_GARCON = 'Profil Garçon'\r\nexport const CLUB_PROFIL_HOMME = 'Profil homme'\r\nexport const CLUB_REFPRODUIT = 'Réf. Produit'\r\nexport const CLUB_RENDEZ_VOUS_SUR_MODZ = 'Rendez-vous sur modz.fr. Connectez-vous à votre compte pour accéder à la rubrique Mes retours.'\r\nexport const CLUB_RENSEIGNER_CODE_CARTE = 'Il vous suffit de renseigner ci-dessous le code inscrit au dos de la carte et vous serez immédiatement crédité du montant correspondant :'\r\nexport const CLUB_RESUME = 'Résumé'\r\nexport const CLUB_RETOUR_ACCUEIL_MON_COMPTE = 'Retourner à l\\u0027accueil de mon compte'\r\nexport const CLUB_RETOUR_AVEC_SHOPPING_TRANQUILLE = 'En France / Belgique avec l’option Shopping Tranquille.'\r\nexport const CLUB_RETOUR_INTERNATIONNAL = 'A l’international.'\r\nexport const CLUB_RETOUR_SANS_SHOPPING_TRANQUILLE = 'En France / Belgique sans l’option Shopping Tranquille.'\r\nexport const CLUB_RETOURNER_ARTICLE = 'Comment retourner un article ?'\r\nexport const CLUB_SALIS = '- Salis'\r\nexport const CLUB_SHOPPING_TRANQUILLE_FRAIS_DE_RETOUR = 'Grâce au Shopping Tranquille, les frais de retour sont pris en charge par Modz.'\r\nexport const CLUB_SOLDE_COMPTE = 'Solde du compte'\r\nexport const CLUB_SUIVI_DES_RETOURS = 'Suivi des retours'\r\nexport const CLUB_TELECHARGEZ_ET_IMPRIMEZ = 'Téléchargez et imprimez'\r\nexport const CLUB_UTILISES_DAUCUNE_MANIER = '- Utilisés d\\u0027aucune manière'\r\nexport const CLUB_VERIFIER_ETAT_ARTICLES = '1. Vérifier l\\u0027état des articles'\r\nexport const CLUB_VOTRE_COMPTE_MODZ_EST_CREDITE = 'Votre compte Modz est crédité d\\u0027un avoir dès réception du colis. Vous recevrez un email de confirmation lorsque votre avoir sera disponible sur votre compte.'\r\nexport const CLUB_VOTRE_DEMANDE_DE_RETOUR = 'Votre demande de retour'\r\nexport const CLUB_VOTRE_RETOUR_EST_ENGISTRE = 'Votre retour est enregistré !'\r\nexport const CLUB_VOUS_AVEZ_RECU_CARTE_CADEAU = 'Vous avez reçu une carte cadeau Modz et vous souhaitez vous faire plaisir ?'\r\nexport const CLUB_VOUS_RECEVREZ_UN_EMAIL_VOUS_CONFIRMANT_LA_RECEPTION = 'Vous recevrez un email vous confirmant la réception de votre colis et votre compte Modz sera instantanément crédité d’un avoir.'\r\nexport const COCHEZ_ARTCILES_SOUHAITEZ_RETOUR = 'Cochez le ou les articles que vous souhaitez renvoyer dans la rubrique \\\"Mes articles éligibles au retour\\\".'\r\nexport const CODE = 'Code'\r\nexport const CODE_POSTAL = 'Code Postal'\r\nexport const CODE_PROMO = 'Code promo'\r\nexport const CODEPOSTAL_ARNAS = '69400 Arnas'\r\nexport const COLORI = 'Coloris :'\r\nexport const COLORIS = 'Coloris'\r\nexport const COMMANDE = 'Commande'\r\nexport const COMMANDE_ATTENTE_MAJ = 'COMMANDE EN ATTENTE'\r\nexport const COMMANDE_ATTENTE_PAIEMENT = 'Vous avez une commande en attente de paiement'\r\nexport const COMMANDE_NUM = 'Commande n°'\r\nexport const COMMANDER_MAJ = 'COMMANDER'\r\nexport const COMPLEMENT_D_ADRESSE = 'Complément d\\u0027adresse'\r\nexport const COMPLEMENTADRESSE = 'Complément d\\u0027adresse'\r\nexport const COMPLETER_CE_PROFIL = 'Compléter ce profil'\r\nexport const COMPOSITION = 'Composition'\r\nexport const COMPTE = 'Compte'\r\nexport const CONFIRMATION_MAJ = 'CONFIRMATION'\r\nexport const CONFIRMATION_MOT_PASSE = 'Confirmation de mot de passe'\r\nexport const CONFIRMEZ_NOUVEAU_PASS = 'Confirmez votre nouveau mot de passe'\r\nexport const CONNECTEZ_VOUS_AVEC_VOTRE_COMPTE = 'Connectez-vous avec votre compte'\r\nexport const CONNECTEZ_VOUS_POUR_ECRIRE_MAIL = 'Pour nous écrire par mail, \\u003cspan style=\\\"text-decoration:underline;\\\" class=\\\"pink\\\"\\u003econnectez-vous ici\\u003c/span\\u003e.'\r\nexport const CONNECTEZ_VOUS_POUR_SUIVRE_MESSAGES = 'Connectez-vous pour voir le suivi de vos messages.'\r\nexport const CONNEXION = 'Connexion'\r\nexport const CONSTITUER_SOLIDEMENT_VOTRE_COLIS = 'Constituer solidement votre colis car la marchandise voyage à vos frais et périls.'\r\nexport const CONSULTEZ_HISTO_CMD = 'Consultez l\\u0027historique de vos commandes'\r\nexport const CONSULTEZ_SOLDE = 'Consultez votre solde d\\u0027avoir disponible'\r\nexport const CONTACT = 'Contact'\r\nexport const CONTACT_ADRESSE_POSTAL_MODZ = 'Adresse Postale de MODZ pour toutes correspondances :\\u003cbr /\\u003e(Courriers, envois de paiements, retours...)'\r\nexport const CONTACT_DE_9H_18H = 'de 9h à18h'\r\nexport const CONTACT_DU_LUNDI_VENDREDI = 'Du lundi au vendredi'\r\nexport const CONTACT_JOUR_DISPO = 'Lundi au Vendredi de 9H à 18H.'\r\nexport const CONTACT_LE_SC_DISPO = 'Le service client est disponible par téléphone du lundi au vendredi de 9h à 17h ou sur rendez-vous de 17h à 19h.'\r\nexport const CONTACT_PAR_COURRIER = 'Par courrier'\r\nexport const CONTACT_PAR_MESSAGERIE = 'Par messagerie'\r\nexport const CONTACT_PAR_TELEPHONE = 'Par téléphone'\r\nexport const CONTACT_POUR_VOS_RETOURS_PAIEMENT_COURRIERS = 'Pour vos courriers, envois de paiements, retours...'\r\nexport const CONTACT_SERVICE_CLIENT_DISPO = 'Le service client est disponible '\r\nexport const CONTACT_THEME_MESSAGE = 'Thème de votre message'\r\nexport const CONTACT_VOTRE_MESSAGE = 'Votre message'\r\nexport const CONTACTEZ_NOUS = 'Contactez-nous'\r\nexport const CONTACTEZ_NOUS_TELEPHONE = 'Contactez nous par téléphone :'\r\nexport const CONTACTSERVICECLIENT = 'Contactez notre service client : 0 892 186 818'\r\nexport const CONTINUER_MAJ = 'CONTINUER'\r\nexport const CONTINUER_MES_ACHATS = 'Continuer mon shopping'\r\nexport const CONTINUER_MON_SHOPPING = 'Continuer mon shopping'\r\nexport const COULEUR = 'Couleur'\r\nexport const COULEURS = 'Couleurs'\r\nexport const COULEURS_FAVORITES = 'Couleurs favorites'\r\nexport const COUP_DE_COEUR = 'Coup de coeur'\r\nexport const CREATIONALERTE = 'Créer votre alerte'\r\nexport const CREER_ALERTE = 'Créer votre alerte'\r\nexport const CREER_CE_PROFIL = 'Créer ce profil'\r\nexport const CREER_MON_COMPTE = 'Créer mon compte'\r\nexport const CREER_UN_COMPTE = 'Créer un compte'\r\nexport const CREER_UNE_ALERTE = 'CRÉER UNE ALERTE'\r\nexport const CREEZ_UNE_ALERTE = 'Créez une alerte'\r\nexport const CREEZ_VOTRE_ALERTE = 'Créez votre alerte !'\r\nexport const DANS_LE_CAS_RETOUR_MR = 'Dans le cas d\\u0027un retour par Mondial Relay, collez le code barre sur le colis, par dessus l\\u0027étiquette de livraison.'\r\nexport const DATE = 'Date'\r\nexport const DATE_COMMANDE_MAJ = 'DATE DE LA COMMANDE'\r\nexport const DATE_DE_COMMANDE = 'Date de la commande'\r\nexport const DATE_DE_NAISSANCE = 'Date de naissance'\r\nexport const DATE_EXPIRTATION = 'Date d\\u0027expiration'\r\nexport const DATE_FACTURE_MAJ = 'DATE DE LA FACTURE'\r\nexport const DATERETOUR = 'Date de retour'\r\nexport const DE = 'de'\r\nexport const DE_LA_MEME_MARQUE = 'De la même marque...'\r\nexport const DE_REDUCTION = 'de réduction'\r\nexport const DE_SPACE_MAJ = 'DE '\r\nexport const DE_STYLE = ' de style '\r\nexport const DECONOMIE = 'd\\u0027économie'\r\nexport const DECOUVREZ_LOFFRE_DU_MOMENT = 'Découvrez l\\u0027offre du moment :'\r\nexport const DECOUVRIR_ARTICLES_SIMILAIRES = 'Découvrir les articles similaires'\r\nexport const DECOUVRIR_CE_SERVICE = 'Découvrir ce service'\r\nexport const DECOUVRIR_LA_SUITE = 'Découvrir la suite'\r\nexport const DECOUVRIR_LOFFRE = 'Découvrir l\\u0027offre'\r\nexport const DECOUVRIR_LOOKBOOK = 'Découvrir le Lookbook'\r\nexport const DECOUVRIR_MA_SELECTION = 'Découvrir ma sélection'\r\nexport const DEDUISEZ_VOTRE_AVOIR = 'Déduisez votre avoir'\r\nexport const DEDUISEZ_VOTRE_AVOIR_DE = 'Je déduis mon avoir, montant total disponible de'\r\nexport const DEDUISEZ_VOTRE_AVOIR_PDESIGN_LIVRAISON = 'Je déduis mon avoir, montant total disponible de'\r\nexport const DEDUISEZ_VOTRE_BON_ACHAT_DE = 'Déduisez votre bon d\\u0027achat de'\r\nexport const DEDUISEZ_VOTRE_BON_ACHAT_PDESIGN_LIVRAISON = 'Je déduis mon bon d\\u0027achat, montant total disponible de'\r\nexport const DEFAULT_PROFILNAME = 'Votre nom...'\r\nexport const DEJA_CLIENT = 'Déjà client ?'\r\nexport const DELAI = 'Délai'\r\nexport const DEMAIN = 'demain'\r\nexport const DEMANDE_DE_RETOUR_ARTICLE = 'Demande de retour d\\u0027article'\r\nexport const DEMANDE_PARRAINAGE_PRIS_EN_COMPTE = 'Votre demande a bien été prise en compte'\r\nexport const DEMANDEZ_UN_REMBOURSEMENT = 'Demandez un remboursement'\r\nexport const DERNIERES_HEURES = 'Dernières heures'\r\nexport const DERNIERS_JOURS = 'Derniers jours'\r\nexport const DES_100E_DACHAT = 'dès 100€ d\\u0027achat'\r\nexport const DES_BOUTIQUES_DE_MODE = 'des boutiques de mode'\r\nexport const DES_QUESTIONS_ENVIES = 'Des questions, des envies ?'\r\nexport const DES_RECEPTION_DE_MON_COLIS = 'Dès réception de mon colis, le Service Retour crédite immédiatement mon compte Modz.'\r\nexport const DESACTIVE = 'Désactivé'\r\nexport const DESCRIPTION = 'DESCRIPTION'\r\nexport const DESCRIPTION_MODZ_ALERTE = 'Modz vous propose des articles de déstockage en provenance de boutiques de mode. Chaque article est une pièce quasi unique, disponible en quelques tailles seulement. Cette rareté nous permet de vous proposer des prix cassés toute l\\u0027année, même en dehors des soldes !'\r\nexport const DESCRIPTION_PROBLEME = 'Veuillez décrire votre problème :'\r\nexport const DESCRIPTION_UTILISATION_ALERTE = 'Pour être tenu(e) informé(e) par e-mail des arrivages correspondant à votre recherche, rien de plus simple !'\r\nexport const DESIGNATION = 'Désignation'\r\nexport const DESIGNATION_VENDEUR = 'Désignation vendeur'\r\nexport const DETAIL_COMMANDE = 'Détail de ma commande'\r\nexport const DETAILS = 'Détails'\r\nexport const DETAILS_DE_MA_COMMANDE = 'Détails de ma commande'\r\nexport const DETAILS_PROBLEME = 'Que s’est-il produit ? Donnez-nous les détails de votre problème.'\r\nexport const DIMANCHE = 'Dimanche'\r\nexport const DOMMAGE_EX = 'Dommage !'\r\nexport const DU = 'Du'\r\nexport const DUN_AVOIR_OU = 'd\\u0027un avoir ou'\r\nexport const DUN_REMBOURSEMENT = 'd\\u0027un remboursement'\r\nexport const ECONOMISEZ = 'économisez'\r\nexport const ECONOMISEZ_CATALOGUE = 'Économisez'\r\nexport const EFFACER_LES_FILTRES = 'Effacer les filtres'\r\nexport const EFFACER_TOUS_LES_FILTRES = 'Effacer tous les filtres'\r\nexport const EFFECTUEZ_UN_RETOUR = 'Effectuez un retour'\r\nexport const ELEGANTE_FP = 'élégantes'\r\nexport const EMAIL_COMPTE_CLIENT = 'Adresse email du compte client'\r\nexport const EMBALLAGE_CADEAU = 'Emballage Cadeau'\r\nexport const EN = 'En'\r\nexport const EN_BON_DACHAT = 'en bon d\\u0027achat'\r\nexport const EN_CLIQUANT_SUR_COMMANDER_JACCEPTE_LES_CGV = 'En cliquant sur Commander, j\\u0027accepte les \\u003ca href=\\\"/reassurance/cgv/\\\" target=\\\"_blank\\\" class=\\\"underline\\\"\\u003eConditions Générales de Vente\\u003c/a\\u003e.'\r\nexport const EN_CLIQUANT_SUR_VALIDER_VOUS_REVEREZ_NOS_NEWS = 'En cliquant sur VALIDER, vous recevrez\\u003cbr /\\u003enos actus et nos offres'\r\nexport const EN_DETAILS = 'En Détails'\r\nexport const EN_FONCTION_MODE_RETOUR = 'En fonction du mode de retour choisi (étape 1), déposez le colis dans un bureau de Poste ou en Point relais.'\r\nexport const EN_PISTE = 'Allez, hop, en piste.'\r\nexport const EN_RENSEIGNANT_DATE_ANNIVERSAIRE = 'En renseignant votre date d’anniversaire, nous ne manquerons pas de fêter ce bel évènement, comme il se doit !'\r\nexport const EN_SAVOIR_PLUSSYMBOLE = 'En savoir +'\r\nexport const EN_STOCK = 'EN STOCK'\r\nexport const EN_STOCK_EXPEDIE_24_H = 'En stock, Expédié en 24H'\r\nexport const EN_STOCK_LIVRE_LE = 'En stock, livré le'\r\nexport const ENCAISSE_RECEPTION = 'encaissé à réception'\r\nexport const ENCAISSE_RECEPTION_1MOIS = 'encaissé 1 mois après réception'\r\nexport const ENCAISSE_RECEPTION_2MOIS = 'encaissé 2 mois après réception'\r\nexport const ENCEMOMENT = 'En ce moment '\r\nexport const ENFANT = 'Enfant'\r\nexport const ENFANTS = 'Enfants'\r\nexport const ENFANTS_MAJ = 'ENFANTS'\r\nexport const ENGAGEMENTS = 'Engagements'\r\nexport const ENGAGEMENTSATISFACTION = 'Engagement Satisfaction'\r\nexport const ENREGISTRER = 'Enregistrer'\r\nexport const ENREGISTRER_MA_CARTE_CADEAU = 'Enregistrer ma carte cadeau'\r\nexport const ENREGISTRER_MODIFICATIONS = 'Enregistrer les modifications'\r\nexport const ENREGISTRER_NOUVEAU_PASS = 'Enregistrer mon nouveau mot de passe'\r\nexport const ENREGISTRERIBAN = 'Enregistrer mon IBAN'\r\nexport const ENSAVOIRPLUS = 'En savoir plus'\r\nexport const ENSEMBLE = 'Ensemble'\r\nexport const ENTRE = 'Entre'\r\nexport const ENVIRON_ABREGES_MIN = 'env.'\r\nexport const ENVOI_LIEN_CONEXION = '(un lien de connexion vous sera envoyé)'\r\nexport const ENVOYER = 'Envoyer'\r\nexport const ENVOYER_CHEQUE_ADRESSE = 'et de les envoyer à l\\u0027adresse suivante :'\r\nexport const ENVOYER_MA_DEMANDE = 'Envoyer ma demande'\r\nexport const ENVOYER_RAPPORT_INCIDENT = 'Envoyer le rapport d\\u0027incident'\r\nexport const ENVOYER_VOTRE_MESSAGE = 'Envoyer votre message'\r\nexport const EPUISE_LE_LE_VEUX = 'Epuisé, je le veux !'\r\nexport const ERREUR_TYPE_PIECE_JOINTE = 'Seulement les fichiers de type \\u0027.jpg\\u0027 , \\u0027.jpeg\\u0027, \\u0027.png\\u0027 et \\u0027.pdf\\u0027 sont autorisés'\r\nexport const EST_EN_COURS_DE_TRAITEMENT = 'est en cours de traitement. Un e-mail de confirmation vient également de vous être envoyé sur votre boîte mail'\r\nexport const ET = 'et'\r\nexport const ET_AUSSI = 'Et aussi ...'\r\nexport const ET_FAITES_PROFITER_DE_15E_DE_BA_A_VOS_FILLEULS = 'et faites profiter de 15€ de bon d’achat à vos filleuls !'\r\nexport const ET_SUIVEZ_NOTRE_ACTU = 'et suivez notre actualité shopping et bons plans !'\r\nexport const ET_TOUTE_LANNEE = 'et toute l\\u0027année'\r\nexport const ETAPES = 'Etapes'\r\nexport const ETAT = 'Etat'\r\nexport const ETAT_DES_ARTICLES = 'L\\u0027Etat du ou des articles'\r\nexport const ETAT_PARRAINAGE = 'Etat du parrainage'\r\nexport const EXCEPTIONNEL_LIVRAISON_OFFERTE = 'Exceptionnel : livraison offerte dès 100€ d\\u0027achat'\r\nexport const EXCEPTIONNELLE_LIVRAISON_1EURO = 'Exceptionnel : livraison à 1€ dès 50€ d\\u0027achat'\r\nexport const EXPEDIE_24_H = 'Expédié en 24h'\r\nexport const EXPEDIE_EN = 'Expédié en'\r\nexport const EXPEDIER_COLIS_MAJ = 'EXPEDIER VOTRE COLIS'\r\nexport const EXPEDITION_EN_24H_MAJ = 'EXPEDITION EN 24 H'\r\nexport const EXPEDITION_IMMEDIATE = 'EXPÉDITION IMMÉDIATE'\r\nexport const EXPEDITION_RAPIDE = 'Expédition rapide'\r\nexport const EXPEDITION_RAPIDE_MAJ = 'EXPÉDITION RAPIDE'\r\nexport const EXPIRE_LE = 'Expire le'\r\nexport const FACTURE = 'Facture'\r\nexport const FACTURE_CONDITIONSGENERALES_MAJ = 'CONDITIONS GENERALES :'\r\nexport const FACTURE_CONDITIONSGENERALES_TXT = 'Les conditions Générales de vente applicables à votre commande acceptées lors de l\\u0027enregistrement sont disponibles sur simple demande auprès du vendeur.'\r\nexport const FACTURE_INFOS_DE_FACTURATION = 'Informations de Facturation'\r\nexport const FACTURE_INFOS_DE_LIVRAISON = 'Informations de Livraison'\r\nexport const FACTURE_LOI_RETOUR = 'Conformément à l\\u0027article L.121-20 et suivants du Code de la Consommation, vous disposez d\\u0027un délai de 7 jours à compter de la date de livraison de votre commande pour retourner tout article ne convenant pas. L\\u0027exercice de ce droit de rétractation est LIBRE sans avoir à justifier de motif ni à payer de pénalités. Les modalités précises de retour sont indiquées dans les conditions générales de vente de chaque vendeur.'\r\nexport const FACTURE_MODE_EXPEDITION = 'Mode d\\u0027expédition'\r\nexport const FACTURE_TYPE_PAIEMENT = 'Type de paiement'\r\nexport const FAMILLES = 'Famille(s) :'\r\nexport const FAMILLESMOB = 'Familles'\r\nexport const FAVORIS = 'Favoris'\r\nexport const FDP_A_MAJ = 'FRAIS DE PORT À'\r\nexport const FDP_OFFERTS_AVEC_MR_A_PARTIR_DE_MAJ = 'FRAIS DE PORT OFFERTS AVEC MONDIAL RELAY À PARTIR DE'\r\nexport const FEMME = 'Femme'\r\nexport const FEMME_MAJ = 'FEMME'\r\nexport const FERME = 'Fermé'\r\nexport const FERMER_MAJ = 'FERMER'\r\nexport const FILLE = 'Fille'\r\nexport const FILLE_MAJ = 'FILLE'\r\nexport const FILLES = 'Filles'\r\nexport const FILTRECATEGORIE = 'Sous-catégories'\r\nexport const FILTRECOULEUR = 'Couleurs'\r\nexport const FILTREFAMILLE = 'Catégories'\r\nexport const FILTREMARQUE = 'Marques'\r\nexport const FILTRER = 'Filtrer'\r\nexport const FILTRER_ET_TRIER = 'Filtrer et trier'\r\nexport const FILTRES = 'Filtres'\r\nexport const FILTRES_SELECTIONNES = 'Filtres sélectionnés :'\r\nexport const FOOTNEWS_RECEVEZ_TOUTES_NOS_OFFRES = 'Recevez toutes nos offres, coups de coeur et nouveautés par mail en vous inscrivant à notre newsletter :'\r\nexport const FRAIS_LIVRAISON_ÉSTIMÉS_AVEC = 'Frais de livraison estimés avec'\r\nexport const FRAIS_LIVRAISON_ÉSTIMÉS_MR = 'Frais de port estimés Mondial Relay'\r\nexport const FRAISDELIVRAISON = 'Frais de livraison'\r\nexport const FRAISDEPORT = 'Frais de Port'\r\nexport const FRAISPORTOFFERT_PRODUIT = 'En ce moment,\\u003cstrong class=\\\"pink\\\"\\u003efrais de port offerts dès {0} €\\u003c/strong\\u003e avec Mondial Relay sur tout le site'\r\nexport const FRAISPORTREDUIT_PRODUIT = 'En ce moment,\\u003cstrong class=\\\"pink\\\"\\u003efrais de port à {0} € dès {1} €\\u003c/strong\\u003e avec Mondial Relay sur tout le site'\r\nexport const FRANCE = 'France'\r\nexport const FRANCE_METROPOLITAINE = 'France métropolitaine'\r\nexport const GAGNEZ = 'Gagnez'\r\nexport const GARANTI = 'Garanti'\r\nexport const GARANTIE_100_MOINS_CHER = 'Garantie 100% moins cher'\r\nexport const GARANTIE_AVANT_NOEL = 'Garantie avant Noël'\r\nexport const GARANTIE_AVANT_REVEILLON = 'Garantie avant le Réveillon'\r\nexport const GARANTIE_MOINS_CHER_MAJ = 'GARANTIE MOINS CHER'\r\nexport const GARANTIE_SATISFAIT_OU_REMBOURSE = 'Garantie satisfait ou remboursé'\r\nexport const GARANTIE_SATISFAIT_OU_REMBOURSE_MAJ = 'GARANTIE SATISFAIT OU REMBOURSÉ'\r\nexport const GARCON = 'Garçon'\r\nexport const GARCON_MAJ = 'GARÇON'\r\nexport const GARCONS = 'Garçons'\r\nexport const GERER_ADRESSES_FACTU_LIV = 'Gérer mes adresses de livraison\\r\\n'\r\nexport const GERER_MES_ALERTES = 'Mes alertes nouveautés'\r\nexport const GERER_MES_PREFERENCES = 'Gérer mes préférences'\r\nexport const GERER_MON_PROFIL_ET_MES_TAILLES = 'Gérer mon profil et mes tailles'\r\nexport const GEREZ_MES_PREFERENCES = 'Gérez mes préférences \\u003e'\r\nexport const GEREZ_VOS_ADRESSES = 'Gérez vos adresses de livraison et de facturation'\r\nexport const GO_MAJ = 'GO !'\r\nexport const GO_TOP_MAJ = 'HAUT'\r\nexport const GRATUIT = 'Gratuit'\r\nexport const GUIDE_DENIM_PARFAIT = 'Guide du denim parfait'\r\nexport const GUIDER_CHERCHER_PRODUITS = 'C\\u0027est décidé, je me laisse guider ! Parce que oui, c\\u0027est pas facile de chercher parmi plus de 200.000 produits en stock, Modz s\\u0027occupe de me dénicher la perle rare... Allez, hop, en piste.'\r\nexport const GUIDER_CHERCHER_PRODUITS_RETOUR_LIGNE = 'C\\u0027est décidé, je me laisse guider ! Parce que oui, c\\u0027est pas facile de chercher parmi plus de 200.000 produits en stock, Modz s\\u0027occupe de me dénicher la perle rare...'\r\nexport const HAUT = 'Haut'\r\nexport const HAUTS = 'Hauts'\r\nexport const HAUTS_MAJ = 'HAUTS'\r\nexport const HOMME = 'Homme'\r\nexport const HOMME_MAJ = 'HOMME'\r\nexport const IDEE_CADEAU = 'New'\r\nexport const IDENTIFICATION_MAJ = 'IDENTIFICATION'\r\nexport const IL_NE_VOUS_RESTE_PLUS_QUE = 'Il ne vous reste plus que'\r\nexport const IL_RESTE_PLUS_QUE = 'Il ne vous reste plus que'\r\nexport const IMAGE_PRODUIT = 'Image Produit'\r\nexport const IMPASSE_CHAVANNE = '1, Impasse De Chavanne - ZAC De Chavanne'\r\nexport const IMPORTANT = 'Important'\r\nexport const IMPR_BON_RETOUR_MAJ = 'IMPRIMER LE BON DE RETOUR'\r\nexport const IMPRIMER_FACTURE_MAJ = 'IMPRIMER LA FACTURE'\r\nexport const IMPRIMER_LE_BORDEREAU_DE_RETOUR = 'Imprimer le bordereau de retour'\r\nexport const IMPRIMER_MAJ = 'IMPRIMER'\r\nexport const IMPRIMEZ_BON_RETOUR = 'Imprimez votre bon de retour.'\r\nexport const INDIQUER_MAJ = 'INDIQUER'\r\nexport const INSCRIPTION = 'Inscription'\r\nexport const INSCRIRE_EMAIL = 'Veuillez inscrire votre adresse mail :'\r\nexport const INSCRIVANT_RECEVOIR_OFFRES = 'En vous inscrivant, vous recevrez les meilleures offres et les promotions Modz.fr'\r\nexport const INTEMPORELLE_FP = 'intemporelles'\r\nexport const JACCEPTE = 'J\\u0027accepte'\r\nexport const JAI = 'J\\u0027ai'\r\nexport const JAI_DEJA_COMPTE_CLIENT = 'J\\u0027ai déjà un compte client'\r\nexport const JAI_UN_COMPTE = 'J\\u0027ai un compte'\r\nexport const JAIME_ET_JE_PARTAGE = 'J\\u0027aime et je partage'\r\nexport const JE_CHERCHE_POUR = 'Je cherche pour :'\r\nexport const JE_CRAQUE = 'JE CRAQUE !'\r\nexport const JE_DECOUVRE = 'Je découvre'\r\nexport const JE_LE_VEUX_MAJ = 'JE LE VEUX !'\r\nexport const JE_MABONNE = 'Je m\\u0027abonne'\r\nexport const JE_ME_CONNECTE_A_MON_COMPTE = 'Je me connecte à Mon compte \\u003e Mes retours et je suis la procédure de retour.'\r\nexport const JE_PARRAINE = 'Je parraine'\r\nexport const JE_REEXPEDIE_LE_COLIS_AVEC_LE_TRANSPORTEUR = 'Je réexpédie le colis avec le transporteur de mon choix : Colissimo, Mondial Relay...'\r\nexport const JE_RENSEIGNE_LES_TAILLES = 'Je renseigne les tailles :'\r\nexport const JE_SELECTIONNE_MA_CARTE_PAIEMENT = 'Je sélectionne ma carte de paiement :'\r\nexport const JE_SHOPPE_MAJ = 'JE SHOPPE !'\r\nexport const JE_SOUHAITE = 'Je souhaite'\r\nexport const JE_SUIS_NOUVEAU_CLIENT = 'Je suis nouveau client'\r\nexport const JE_VALIDE = 'JE VALIDE'\r\nexport const JECONOMISE = 'J\\u0027économise'\r\nexport const JEN_PROFITE = 'J\\u0027en profite'\r\nexport const JEN_PROFITE_MAJ = 'J\\u0027EN PROFITE'\r\nexport const JESOUHAITEQUONMEREMBOURSE = 'Je souhaite qu\\u0027on me rembourse'\r\nexport const JEUDI = 'Jeudi'\r\nexport const JOURS = 'jours'\r\nexport const JUSTE_POUR_MOI_OH_OUI_JE_MINSCRIS = 'juste pour moi ? Oh oui, je m\\u0027inscris !'\r\nexport const JY_VAIS = 'J\\u0027y vais !'\r\nexport const L_ENVOI_SE_FAIT_EN_24H = 'L\\u0027envoi se fait en 24H'\r\nexport const LA_COMMUNAUTE_MAJ = 'LA COMMUNAUTÉ'\r\nexport const LADRESSE_DE_RETOUR = 'L\\u0027adresse de retour'\r\nexport const LADRESSE_INDIQUER_COLIS = 'L\\u0027adresse à indiquer sur votre colis est :'\r\nexport const LE_LES_ARTICLES_NE_DOIVENT = 'Le ou les articles ne doivent ni :'\r\nexport const LE_LES_ARTICLES_PLIES_EMBALLAGE_ORIGINE = 'Le ou les articles doivent etre pliés dans leur emballage d\\u0027origine'\r\nexport const LE_MIN = 'le'\r\nexport const LE_PARRAINAGE_CHEZ_MODZ = 'Le Parrainage chez Modz'\r\nexport const LE_PRODUIT_NE_CONVIENT_PAS = 'Le produit ne me convient pas : je le remets dans son sachet rose.'\r\nexport const LES_CHAUSSURES_DE_LA_SAISON = 'LES CHAUSSURES DE LA SAISON'\r\nexport const LES_DERNIRES_ARRIVAGES_MAJ = 'LES DERNIERS ARRIVAGES'\r\nexport const LES_FACTURES_SONT_EN_EUROS = 'Les factures sont libellées en Euros.'\r\nexport const LES_MARQUES_A_LA_UNE = 'Les marques à la une'\r\nexport const LES_PLUS_BELLES_PEPITES_EN_SOLDES = 'Les plus belles pépites en soldes'\r\nexport const LIB_POPUP_PAIEMENT_CB = 'Merci de renseigner les informations suivantes pour vérifier votre éligibilité au paiement en'\r\nexport const LIENGUIDETAILLES = 'Guide des tailles'\r\nexport const LINGERIE = 'Lingerie'\r\nexport const LIVRAISON = 'LIVRAISON'\r\nexport const LIVRAISON_A = 'Livraison à'\r\nexport const LIVRAISON_A_DOMICILE_EXPRESS = 'Livraison à domicile express'\r\nexport const LIVRAISON_A_DOMICILE_STANDARD = 'Livraison à domicile standard'\r\nexport const LIVRAISON_EN_RELAIS_EXPRESS = 'Livraison en relais express'\r\nexport const LIVRAISON_EN_RELAIS_STANDARD = 'Livraison en relais standard'\r\nexport const LIVRAISON_EXPRESS_GARANTIE_AVANT_NOEL = 'Livraison express garantie avant Noël'\r\nexport const LIVRAISON_EXPRESS_POINT_RELAIS = 'Livraison EXPRESS en point relais'\r\nexport const LIVRAISON_GARANTIE_AVANT_NOEL = 'Livraison garantie avant Noël'\r\nexport const LIVRAISON_GARANTIE_AVANT_NOEL_AVEC_CHRONOPOST = 'Livraison garantie avant Noël avec Chronopost'\r\nexport const LIVRAISON_GARANTIE_AVANT_REVEILLON_AVEC_CHRONOPOST = 'Livraison garantie avant le Réveillon avec Chronopost'\r\nexport const LIVRAISON_GRATUITE_DES = 'Livraison gratuite dès'\r\nexport const LIVRAISON_GRATUITE_DES_100 = 'Livraison gratuite dès 100€ d\\u0027achat'\r\nexport const LIVRAISON_MIN = 'livraison'\r\nexport const LIVRAISON_OFFERTE = 'Livraison offerte'\r\nexport const LIVRAISON_OFFERTE_DES_100 = 'Livraison offerte dès 100€'\r\nexport const LIVRAISON_OFFERTE_MAJ = 'LIVRAISON OFFERTE'\r\nexport const LIVRAISON_PAIEMENT_MAJ = 'Livraison et Paiement'\r\nexport const LIVRAISON_PAIEMENT_RETOUR = 'Livraison, paiement et retour'\r\nexport const LIVRAISON_PREVUE = 'Livraison prévue'\r\nexport const LIVRER_AUTRE_ADRESSE_MAJ = 'LIVRER À UNE AUTRE ADRESSE'\r\nexport const LOOKBOOK = 'Lookbook'\r\nexport const LOOKBOOK_MAJ = 'LOOKBOOK'\r\nexport const LUNDI = 'Lundi'\r\nexport const LUNDI_AU_VENDREDI = 'lundi au vendredi'\r\nexport const LUXE = 'LUXE'\r\nexport const LUXE_FP = 'luxe'\r\nexport const M = 'M'\r\nexport const M_DOT = 'M.'\r\nexport const MA_COMMANDE = 'Ma commande'\r\nexport const MAINTENANT_MAJ = 'MAINTENANT !'\r\nexport const MARDI = 'mardi'\r\nexport const MARIAGE_CEREMONIE = 'Mariage et cérémonies'\r\nexport const MARQUE = 'Marque'\r\nexport const MARQUES = 'Marques'\r\nexport const MARQUES_DE_MODE_PAS_CHER = 'Marques de mode pas cher'\r\nexport const MARQUES_PREFEREES = 'Marques préférées'\r\nexport const MARQUESUNE = 'Marques à la une'\r\nexport const MASQUER_LES_HORAIRES = 'Masquer les horaires'\r\nexport const MATIERES = 'Matières'\r\nexport const MDP_ACTUEL = 'Mot de Passe actuel'\r\nexport const MDP_CONFIRMER = 'Confirmer le mot de passe'\r\nexport const MDP_NOUVEAU = 'Nouveau mot de passe'\r\nexport const ME_CONNECTER = 'Me connecter'\r\nexport const ME_DECONNECTER = 'Me déconnecter'\r\nexport const ME_MIN = 'me'\r\nexport const MERCI_PRECISER_DEFAUT = 'Merci de préciser le défaut :'\r\nexport const MERCI_PRECISER_ENDROIT_DECHIERE = 'Merci de préciser à quel endroit l\\u0027article est déchiré'\r\nexport const MERCI_PRECISER_ERREUR = 'Merci de préciser l\\u0027erreur :'\r\nexport const MERCIMODZ = 'Merci Modz !'\r\nexport const MERCREDI = 'Mercredi'\r\nexport const MES_ALERTES = 'Mes alertes'\r\nexport const MES_ALERTES_NOUVEAUTES = 'Mes alertes nouveautés'\r\nexport const MES_BONS_PARRAINAGE = 'Mes bons de parrainage'\r\nexport const MES_FAVORIS = 'Mes favoris'\r\nexport const MES_FILLEULS = 'Mes filleuls'\r\nexport const MES_INFOS_FACTURATION = 'Mes informations de facturation'\r\nexport const MES_INFOS_PERSONNELLES = 'Mes infos personnelles'\r\nexport const MES_INFOS_PERSOS = 'Gérer mon compte'\r\nexport const MES_TAILLES = 'Mes tailles'\r\nexport const MESSAGERIE = 'Messagerie'\r\nexport const MESSAGES = 'Messages'\r\nexport const MODIFIER = 'Modifier'\r\nexport const MODIFIER_ADRESSE = '\\u003e\\u003e modifier'\r\nexport const MODIFIER_ADRESSE_LIVRAISON = 'Modifier mon adresse de livraison'\r\nexport const MODIFIER_CE_PROFIL = 'Modifier ce profil'\r\nexport const MODIFIER_LE_CP = 'Modifier le code postal'\r\nexport const MODIFIER_MES_COULEURS_ET_MES_MARQUES = 'Modifier mes couleurs et mes marques'\r\nexport const MODIFIER_MES_TAILLES = 'Modifier mes tailles'\r\nexport const MODIFIEZ_ADRESSES_PERSOS = 'Vous pouvez modifier ci-dessous à tout moment vos données personnelles: vos coordonnées, email et mot de passe.'\r\nexport const MODZ = 'Modz'\r\nexport const MODZ_AVIS = 'MODZ Avis'\r\nexport const MODZ_REMBOURSE_10_FOIS_LA_DIFF = 'Modz rembourse 10 fois la différence'\r\nexport const MOINS_50_SUR_TOUT_LE_SITE_MAJ = '-50% SUR TOUT LE SITE'\r\nexport const MON_ADRESSE_LIVRAISON = 'Mon adresse de livraison'\r\nexport const MON_COMPTE = 'Mon compte'\r\nexport const MON_PANIER = 'Mon Panier'\r\nexport const MON_PANIER_MAJ = 'MON PANIER'\r\nexport const MON_PROFIL = 'Mon profil'\r\nexport const MON_PROFIL_ET_MES_TAILLES = 'Mon profil et mes tailles'\r\nexport const MON_SHOPPING_PERSONNALISE = 'Mon shopping personnalisé'\r\nexport const MONTANT = 'Montant'\r\nexport const MONTANT_COMMANDE = 'Montant de ma commande'\r\nexport const MONTANT_INITIAL = 'Montant initial'\r\nexport const MONTANT_MINI_ACHAT = 'Montant minimum d\\u0027achat'\r\nexport const MONTANT_PAYE = 'Montant Payé'\r\nexport const MONTANT_RESTANT = 'Montant restant'\r\nexport const MONTANT_TOTAL = 'Montant Total'\r\nexport const MONTANTTVA = 'Montant TVA'\r\nexport const MOT_PASSE = 'Mot de passe'\r\nexport const MOT_PASSE_OUBLIE = 'Mot de passe oublié ?'\r\nexport const MOTIF = 'Motif'\r\nexport const N1_DU_DESTOCKAGE = 'N°1 du déstockage'\r\nexport const NATURE_MESSAGE = 'Nature de votre message'\r\nexport const NATURE_PROBLEME = 'La nature de votre problème : souci de connexion, problème sur votre panier, erreur de serveur…'\r\nexport const NAVIGATION = 'Navigation'\r\nexport const NAVIGATION_PRECEDENT = '\\u003c\\u003c Précédent '\r\nexport const NAVIGATION_RETOUR_LISTE = '\\u003c\\u003c RETOUR À LA LISTE'\r\nexport const NAVIGATION_SUIVANT = ' Suivant \\u003e\\u003e'\r\nexport const NB_ARTICLES_CONCERNES_RETOUR = 'Nombre d\\u0027articles concernés par le retour :'\r\nexport const NBR_TAILLES_UTILISÉES = 'Les tailles de votre profil ont été utilisées pour cette alerte.'\r\nexport const NE_ETRANGER_COCHEZ = 'Né(e) à l\\u0027étranger, cochez ici :'\r\nexport const NEST_DESORMAIS_PLUS_DISPO = 'n\\u0027est désormais plus disponible.'\r\nexport const NEUFH_DIXHUITH = '9h à 18h'\r\nexport const NEW = 'New'\r\nexport const NEWSDESTYLE = 'News de style'\r\nexport const NI_ETRE_SALI = '- Ni être sali'\r\nexport const NI_LAVE = '- Ni lavé'\r\nexport const NI_REPASSE = '- Ni repassé'\r\nexport const NOM = 'Nom'\r\nexport const NOM_TITULAIRE_CARTE = 'Nom du titulaire de la carte'\r\nexport const NON = 'Non'\r\nexport const NON_MERCI_PLUS_TARD = 'Non merci, plus tard'\r\nexport const NON_RENSEIGNEES = 'Non renseignées'\r\nexport const NOS_ARRIVAGES_MAJ = 'NOS ARRIVAGES'\r\nexport const NOS_CLIENTS_RECOMMANDENT_MODZ = 'Nos clients recommandent Modz'\r\nexport const NOS_MARQUES = 'Nos marques'\r\nexport const NOS_MARQUES_SELECTIONNEES = 'Nos marques sélectionnées'\r\nexport const NOS_PLUS_BEAUX_PULLS_JACQUARD = 'Nos plus beaux pulls en jacquard'\r\nexport const NOS_SUGGESTIONS = 'Nos suggestions'\r\nexport const NOSASTUCES = 'Nos astuces'\r\nexport const NOTRE_SERVICE_CLIENT_EST_A_VOTRE_ECOUTE = 'Notre service client est à votre écoute du'\r\nexport const NOUS_ENVERRONS_LIEN_RÉINITIALISER_MOT_PASSE = 'Nous vous enverrons par e-mail un lien qui vous permettra de réinitialiser votre mot de passe.'\r\nexport const NOUS_ESPERONS_AVOIR = 'Nous espèrons avoir bientôt de vos nouvelles !'\r\nexport const NOUVEAU_CLIENT = 'Nouveau client ?'\r\nexport const NOUVEAU_MAJ = 'NOUVEAU'\r\nexport const NOUVEAU_SERVICE_CLICK_COLLECT = 'Notre nouveau service Click \\u0026 Collect !'\r\nexport const NOUVEAUTES = 'Nouveautés'\r\nexport const NOUVEAUTES_AH_50 = 'Nouveautés Automne-Hiver à -50%'\r\nexport const NOUVEAUTES_COLOREES = 'Nouveautés colorées !'\r\nexport const NOUVEAUX_ARRIVAGES = 'Soyez le 1er informé des nouveaux arrivages'\r\nexport const NUM_FACTURE_MAJ = 'N° DE FACTURE'\r\nexport const NUMENVOI = 'Numéro d\\u0027envoi'\r\nexport const NUMERO_TELEPHONE_TRANSPORTEUR_INFORME = 'Votre numéro de téléphone permettra au transporteur de vous tenir informé'\r\nexport const NUMRETOUR = 'N° de retour'\r\nexport const OFFERT = 'Offert'\r\nexport const OFFERT_MAJ = 'OFFERT'\r\nexport const OFFERTE = 'offerte'\r\nexport const OFFRE_SPECIALE = 'OFFRE SPECIALE'\r\nexport const OFFREZ_LEUR = 'Offrez leur'\r\nexport const OFFRIR_CARTE_CADEAU = 'Offrir la carte cadeau'\r\nexport const OFFRIR_UNE_CARTE = 'Offrir une carte'\r\nexport const OHLALA_JE_CRAQUE_MAJ = 'OH LA LA, JE CRAQUE !'\r\nexport const OHNON = 'Oh non :('\r\nexport const OK = 'OK'\r\nexport const ORIGINAL_FP = 'originales'\r\nexport const OU = 'ou'\r\nexport const OU_PAR_TELEPHONE = 'ou par téléphone au'\r\nexport const OUI = 'Oui'\r\nexport const PAIEMENT = 'PAIEMENT'\r\nexport const PAIEMENT_3X_4X_CB = 'Paiement en 3X ou 4X CB'\r\nexport const PAIEMENT_3X_OU_4X_CB = 'Paiement en 3x ou 4x CB'\r\nexport const PAIEMENT_ANNULE_MAJ = 'PAIEMENT ANNULÉ'\r\nexport const PAIEMENT_MAJ = 'PAIEMENT'\r\nexport const PAIEMENT_REFUSE_MAJ = 'PAIEMENT REFUSÉ'\r\nexport const PAIEMENT_SECURISE = 'Paiement sécurisé'\r\nexport const PAIEMENT_SECURISE_MAJ = 'PAIEMENT SÉCURISÉ'\r\nexport const PANIER = 'Panier'\r\nexport const PANIER_MAJ = 'PANIER'\r\nexport const PARRAINAGE_CINQEUROS_BONACHAT = '5 € en bon d\\u0027achat'\r\nexport const PARRAINAGE_DES_PREMIER_ACHAT_AMI = 'Dès le premier achat de l\\u0027un(e) de vos ami(e)s, vous bénéficiez d\\u0027un bon d\\u0027achat de'\r\nexport const PARRAINAGE_EMAIL_FILLEUL_1 = 'Adresse email du 1er filleul'\r\nexport const PARRAINAGE_EMAIL_FILLEUL_2 = 'Adresse email du 2ème filleul'\r\nexport const PARRAINAGE_EMAIL_FILLEUL_3 = 'Adresse email du 3ème filleul'\r\nexport const PARRAINAGE_EN_PARRAINANT_VOS_AMIES = 'En parrainant vos ami(e)s, vous leur offrez'\r\nexport const PARRAINAGE_PARRAINEZ_VOS_AMIS = 'Parrainez vos ami(e)s en inscrivant ci-dessous leurs adresses mails :'\r\nexport const PARRAINAGE_PARRAINEZ_VOS_AMIS_ENOYANT_INVITATION = 'Parrainez-vos ami(s) en leur envoyant une invitation.'\r\nexport const PARRAINAGE_POUR_LEUR_PREMIERE_COMMANDE = 'pour leur(s) première commande. Validité : 3 mois à partir de l\\u0027inscription et dès 50 € d\\u0027achat.'\r\nexport const PARRAINAGE_SAISISSEZ_EMAIL_FILLEUL = 'Saisissez l\\u0027email de votre filleul'\r\nexport const PARRAINER = 'Parrainez !'\r\nexport const PARRAINER_AMIS = 'Parrainer mes amis'\r\nexport const PARRAINER_UN_AMI = 'Parrainer un ami'\r\nexport const PARRAINEZ_VOS_AMIS_GAGNEZ_20E = 'Parrainez vos amis, gagnez 20€'\r\nexport const PARRAINEZ_VOS_PROCHES = 'Parrainez vos proches'\r\nexport const PARTENARIAT = 'Partenariat'\r\nexport const PAS_DE_BLABLA = 'Pas de blabla, que des promos !'\r\nexport const PAS_VOTRE_TAILLE = 'Il n\\u0027y a pas votre taille'\r\nexport const PASSEE_LE = 'Passée le'\r\nexport const PAYER_AVEC_CETTE_CARTE = 'Payer avec cette carte'\r\nexport const PAYER_CETTE_COMMANDE = 'Payer cette commande'\r\nexport const PAYPAL = 'Paypal'\r\nexport const PAYS = 'Pays'\r\nexport const PERSONNAL_SHOPPING = 'Personnal shopping'\r\nexport const PHOTO = 'Photo'\r\nexport const PLACEZ_LES_ARTICLES = 'Placez le ou les articles ainsi que le bon de retour dans le colis.'\r\nexport const PLIE_EMBALLAGE_ORIGINE = '- Plié dans son emballage d\\u0027origine'\r\nexport const PLUS_DE_11000_POINT_RELAIS_AU_CHOIX = 'Plus de 11 000 points relais au choix'\r\nexport const PLUS_DE_6000_POINT_RELAIS_AU_CHOIX = 'Plus de 7 000 points relais au choix.'\r\nexport const PLUS_DE_FILTRES = 'Plus de filtres'\r\nexport const POINT_RELAIS_STANDARD = 'Point relais standard'\r\nexport const POINTURES = 'Pointures'\r\nexport const POPUP_RETOUR_CHOIX_MODE_EXPE = 'Choisissez le mode d\\u0027expédition de votre retour'\r\nexport const POPUP_RETOUR_COUT = 'Coût :'\r\nexport const POPUP_RETOUR_SHOPPING_TRANQUILLE = 'Vous bénéficiez de l\\u0027option Shopping tranquille, votre retour est gratuit ! Sélectionnez un point Mondial Relay.'\r\nexport const PORTABLE = 'Portable'\r\nexport const POUR = 'pour'\r\nexport const POUR_BENEFICIER_DE_LA = 'pour bénéficier de la'\r\nexport const POUR_BENEFICIER_DE_LA_LIVRAISON_GRATUITE = 'pour bénéficier de la livraison gratuite.'\r\nexport const POUR_ENFANTS_MAJ = 'POUR ENFANTS'\r\nexport const POUR_ETRE_FACTURE_MODIFIER = 'Pour être facturé à une autre adresse, veuillez modifier vos informations'\r\nexport const POUR_ETRE_LIVRE_DEMAIN = 'pour être livré demain !'\r\nexport const POUR_ETRE_LIVRE_DEMAIN_AVEC_CHRONOPOST = 'pour être livré demain avec Chronopost !'\r\nexport const POUR_ETRE_LIVRER_MODIFIER_LIVRAISON = 'Pour être livrer à une autre adresse, veuillez modifier vos informations'\r\nexport const POUR_FEMME_MAJ = 'POUR FEMME'\r\nexport const POUR_HOMME_MAJ = 'POUR HOMME'\r\nexport const POUR_SAISIR_MANUELLEMENT_VOTRE_ADRESSE = 'pour saisir manuellement votre adresse'\r\nexport const PREFERENCES = 'Préférences'\r\nexport const PRENOM = 'Prénom'\r\nexport const PREPARER_MAJ = 'PREPARER'\r\nexport const PRESTATAIRE = 'Prestataire'\r\nexport const PRIX = 'Prix'\r\nexport const PRIX_BOUTIQUE = 'Prix boutique'\r\nexport const PRIX_BOUTIQUE_CATALOGUE = 'Prix Boutique : '\r\nexport const PRIX_MODZ_CATALOGUE = 'Prix Modz '\r\nexport const PRIX_TOTAL_MAJ = 'PRIX TOTAL'\r\nexport const PRIX_UNITAIRE_MAJ = 'PRIX UNITAIRE'\r\nexport const PRIXSERVICECLIENT = '0,35 cts/min'\r\nexport const PROBLEME_TECHNIQUE_CONNEXION = 'Si votre problème technique n’est pas un problème de connexion, nos techniciens vous apporteront une solution personnalisée dans les plus brefs délais.'\r\nexport const PRODUIT = 'Produit'\r\nexport const PRODUIT_EPUISE = 'Produit épuisé'\r\nexport const PRODUITS = 'Produits'\r\nexport const PROFILE = 'Profile'\r\nexport const PROLONGATION_JUSQU_AU = 'PROLONGATION JUSQU\\u0027AU 24.05.19'\r\nexport const PROMO = 'Promo'\r\nexport const PROMO_CATALOGUE = 'Promotion'\r\nexport const PROMOS = 'Promos'\r\nexport const PROMOTION = 'Promotion'\r\nexport const QTE_MAJ = 'QTE'\r\nexport const QUANTITE_LIMITEE = 'Quantité limitée'\r\nexport const QUATORZE_JOURS_POUR_RENVOYER_VOS_ARTICLES = '14 jours pour renvoyer vos articles.'\r\nexport const QUATRE_JOURS_SEULEMENT = '4 JOURS SEULEMENT !'\r\nexport const QUEL_NAVIGATEUR = 'Quel est votre navigateur ? (Google Chrome, Internet Explorer, Mozilla Firefox…)'\r\nexport const QUINZE_EUROS = '15€'\r\nexport const QUOIDENEUF = 'Quoi de neuf ?'\r\nexport const RAPPEL_CRITERES_ALERTE = 'Rappel de vos critères d\\u0027alerte :'\r\nexport const RAPPORT_ENVOI_MAIL = 'Un mail vient de vous êtes envoyé. Il contient un lien qui pourra résoudre un éventuel problème de connexion.'\r\nexport const RAPPORT_INCIDENT_EMAIL_INCORRECT = 'L\\u0027email renseigné ne correspond à aucun compte client.'\r\nexport const RAPPORT_INCIDENT_SOUMIS = 'Votre demande a bien été envoyée.'\r\nexport const RECEVOIR_TOUTES_NOS_ACTUS_OFFRES = 'Recevoir toutes nos actus et nos offres'\r\nexport const RECHERCHER = 'Rechercher'\r\nexport const RECHERCHER_UNE_MARQUE = 'Rechercher une marque...'\r\nexport const RECOMMANDATION_PRODUIT = 'Recommandation produit'\r\nexport const REDUCTION = 'Réduction'\r\nexport const REF = 'Réf'\r\nexport const REF_CLIENT_MAJ = 'REFERENCE CLIENT'\r\nexport const REF_COMMANDE_MAJ = 'REFERENCE COMMANDE'\r\nexport const REF_MODELE = 'Ref Modèle'\r\nexport const REF_PRODUIT = 'Ref Produit'\r\nexport const REFERENCE = 'Référence'\r\nexport const REFERENCE_CLIENT = 'Référence client :'\r\nexport const REFERENCE_NUMBER = 'Référence n°'\r\nexport const REINITIALISER = 'Réinitialiser'\r\nexport const REINITIALISEZ_VOTRE_PASSWORD = 'Réinitialisez votre mot de passe : '\r\nexport const REJOIGNEZ_COMMU_FACEBOOK = 'Rejoignez la communauté Facebook'\r\nexport const REMBOURSE_2X = 'remboursé 2x'\r\nexport const REMBOURSEMENT_DIFFERENCE = 'nous vous remboursons la différence'\r\nexport const REMBOURSEMENTENCOURS = 'Remboursement en cours'\r\nexport const REMISES = 'Remises'\r\nexport const RENSEIGNEZ_LES_TAILLES_MAJ = 'RENSEIGNEZ LES TAILLES'\r\nexport const RESTANTDUTTC = 'Restant dû TTC'\r\nexport const RESTE_A_PAYER = 'Reste à payer'\r\nexport const RESULTAT = 'Résultat'\r\nexport const RESULTATS = 'Résultats :'\r\nexport const RESULTATS_DE_VOTRE_RECHERCHE = 'Resultats de votre recherche'\r\nexport const RESULTATS_TROUVES = 'Résultats trouvés'\r\nexport const RETOUR = 'RETOUR'\r\nexport const RETOUR_A_TOUS_MES_PROFILS = 'Retour à tous mes profils'\r\nexport const RETOUR_ADRESSER_MAJ = 'RETOURS A ADRESSER A :'\r\nexport const RETOUR_DESPOSER_POINT_MR = 'RETOUR A DEPOSER AU POINT MONDIAL RELAY:'\r\nexport const RETOUR_FACILE_SANS_CONDITION = 'Retour facile sans condition'\r\nexport const RETOUR_FACILE_SANS_CONDITION_MAJ = 'RETOUR FACILE SANS CONDITION'\r\nexport const RETOUR_HAUT_DE_PAGE = 'Retour haut de page'\r\nexport const RETOUR_HAUT_DE_PAGE_MAJ = 'RETOUR HAUT DE PAGE'\r\nexport const RETOUR_PAGE_ACCUEIL = 'Retour à la page d\\u0027accueil'\r\nexport const RETOURNER_ARTICLE_FACE = 'RETOURNER UN ARTICLE C\\u0027EST FACILE ET RAPIDE EN 5 ÉTAPES'\r\nexport const RETOURNERUNARTICLE = 'Retourner un article'\r\nexport const RETROUVEZ_ARTICLES_SELECTION_PERSO = 'Retrouvez tous vos articles de votre sélection personnalisée.'\r\nexport const RETROUVEZ_INFOS_PERSOS_COMDES = 'Retrouvez toutes les informations sur vos données personnelles et vos commandes.'\r\nexport const ROCK_FP = 'Rock \\u0026 Denim'\r\nexport const SABONNER_A_LA_NEWS = 'S\\u0027abonner à la newsletter'\r\nexport const SACS_ACCESSOIRES_MAJ = 'SACS \\u0026 ACCESSOIRES'\r\nexport const SAISIE_EMAIL = 'Saisissez votre adresse e-mail'\r\nexport const SAISIEIBAN = 'Saisie de votre IBAN :'\r\nexport const SAISIR_LE_CODE = 'Saisir le code'\r\nexport const SAISISSEZ_ADRESSE_MAIL = 'Saisissez votre adresse mail'\r\nexport const SAISISSEZ_MAIL_CLIQUEZ_CONTINUER = 'Saisissez l’adresse e-mail que vous utilisez habituellement pour vous connecter à Modz et cliquez sur continuer.'\r\nexport const SAISISSEZ_NOUVEAU_PASS = 'Saisissez votre nouveau mot de passe'\r\nexport const SAMEDI = 'Samedi'\r\nexport const SAUVEGARDER = 'Sauvegarder'\r\nexport const SE_SOUVENIR_MOI = 'Se souvenir de moi'\r\nexport const SELECTION_CADEAUX_POUR_ELLE = 'Sélection cadeaux pour elle'\r\nexport const SELECTION_CADEAUX_POUR_LUI = 'Sélection cadeaux pour lui'\r\nexport const SELECTION_PERSONNALISEE = 'Ma sélection personnalisée'\r\nexport const SELECTIONNER_COULEUR_FILTRES = 'Sélectionner une couleur'\r\nexport const SELECTIONNEZ_POINT_RELAIS = 'Sélectionnez un point relais'\r\nexport const SELECTIONNEZ_VILLE = 'Sélectionnez votre ville'\r\nexport const SELECTIONNEZ_VOTRE_POINT_CHRONOPOST = 'Sélectionnez votre point Chronopost'\r\nexport const SELECTIONNEZ_VOTRE_POINT_RELAY = 'Sélectionnez votre point Mondial Relay.'\r\nexport const SELECTIONNEZ_VOTRE_TAILLE = 'Sélectionnez votre taille'\r\nexport const SELECTIONS_SPECIALES = 'Sélections Spéciales'\r\nexport const SERVER_SECURISE = 'SERVEUR SÉCURISÉ'\r\nexport const SERVEUR_SÉCURISE = 'SERVEUR SÉCURISÉ'\r\nexport const SERVICE_CLIENT = 'SERVICE CLIENT'\r\nexport const SERVICE_CLIENT_DISPONIBLE = 'Le service client est disponible du :'\r\nexport const SERVICE_CLIENT_HORAIRE = 'Lundi au Vendredi de 9H00 à 18H00.'\r\nexport const SERVICE_MARKETING = 'Service marketing'\r\nexport const SESAME_OUVRE_TOI = 'Sésame ouvre toi'\r\nexport const SHOOPING_TRANQUILLE = 'Shopping tranquille'\r\nexport const SI_VOUS_AVEZ_UN_CODE_PROMO = 'Si vous avez un code promotionnel, veuillez le saisir ici :'\r\nexport const SI_VOUS_NE_RECEVEZ_PAS = 'Si vous ne recevez pas cet e-mail, vérifiez alors vos courriers indésirables ou contactez l’un de nos conseillers au 0892 186 818 (0,35€/min)'\r\nexport const SI_VOUS_SOUHAITEZ_ANNULER_VOTRE_COMMANDE = 'Si vous souhaitez annuler votre commande, merci de le signaler au service client en'\r\nexport const SI_VOUS_SOUHAITEZ_REGLER_VOTRE_COMMANDE = 'Si vous souhaitez régler votre commande par un autre moyen de paiement, cliquez sur'\r\nexport const SOLDES = 'Soldes'\r\nexport const SOLDESAVOIRS = 'Solde des avoirs'\r\nexport const SOLDESBONSACHAT = 'Solde des bons d\\u0027achat'\r\nexport const SOUHAITEZ_RECEVOIR_OFFRES = 'Souhaitez-vous également recevoir les offres de partenaire de Modz :'\r\nexport const SOUS_48H = 'sous 48H'\r\nexport const SOUS_CATEGORIE = 'Sous-catégorie'\r\nexport const SOUS_TOTAL_ACHATS = 'Sous Total des achats ..................'\r\nexport const SOUSCATEGORIES = 'Sous-catégories'\r\nexport const SOUSTOTALTTC = 'Sous-total TTC'\r\nexport const SOYEZ_INFORME_DE_LETAT_DES_CMDES = 'Soyez informé de l\\u0027état d\\u0027avancement des commandes que vous avez réalisées, consultez l\\u0027historique de vos commandes, imprimez vos factures ou annulez une commande en cours.'\r\nexport const SOYEZ_INFORME_DES_NOUVEAUTES_DE_LA_MARQUE = 'Soyez informé en avant-première des nouveautés de la marque !'\r\nexport const SPORT = 'Sport'\r\nexport const SPORTSWEAR_FP = 'sportswear'\r\nexport const STATUT = 'Statut'\r\nexport const SUIVANT = 'Suivant'\r\nexport const SUIVANT_MAJ = 'SUIVANT'\r\nexport const SUIVEZ_NOUS = 'Suivez-nous'\r\nexport const SUIVEZ_STATU_CMD = 'Suivez le statut de votre commande en cours'\r\nexport const SUIVEZ_VOS_RETOURS = 'Suivez vos retours'\r\nexport const SUIVI_DE_LIVRAISON = 'Suivi de livraison'\r\nexport const SUIVI_DE_MES_CMDES = 'Suivi de mes commandes'\r\nexport const SUIVI_DES_MESSAGES = 'Suivi des messages'\r\nexport const SUIVRE_MES_RETOURS = 'Retourner un article'\r\nexport const SUPP = 'supp.'\r\nexport const SUPPRIMER = 'Supprimer'\r\nexport const SUPPRIMER_ARTICLE_PANIER = 'Supprimer un article du panier'\r\nexport const SUPPRIMER_LA_SELECTION = 'Supprimer la sélection'\r\nexport const SUPPRIMER_SELECTION = 'Supprimer ma sélection'\r\nexport const SUR_VOTRE_COLIS = 'sur votre colis'\r\nexport const T_DOT = 'T.'\r\nexport const TAILLE = 'Taille'\r\nexport const TAILLE_BAS = 'Tailles de bas'\r\nexport const TAILLE_CONVERTIE_SELON_STANDARD = '*Taille convertie selon les standards de tailles françaises.'\r\nexport const TAILLE_ETIQUETTE = 'Taille étiquette'\r\nexport const TAILLE_HAUT = 'Tailles de haut'\r\nexport const TAILLE_MARUE_ETIQUETEE_PRODUIT = '** Taille de la marque étiquetée sur le produit.'\r\nexport const TAILLE_MAXIMUM_PIECE_JOINTE_1MO = 'La taille maximum pour votre pièce jointe ne doit pas dépasser 1 Mo'\r\nexport const TAILLEDISPO_PRODUIT = 'Taille(s) Disponible(s)'\r\nexport const TAILLEDISPO_PRODUIT_SING = 'Taille Disponible'\r\nexport const TAILLEFRANCAISE = 'Taille\\u003cbr /\\u003eFrançaise'\r\nexport const TAILLEMARQUE = 'Taille(s) Étiquette'\r\nexport const TAILLES = 'Tailles'\r\nexport const TAILLES_DE = 'Taille de'\r\nexport const TAILLES_DE_BIS = 'Tailles de'\r\nexport const TAILLES_DISPOS = 'Tailles disponibles'\r\nexport const TAILLES_PRODUIT_DISPO_CATALOGUE = 'Tailles dispo : '\r\nexport const TAILLES_SELECTIONNEES = 'taille(s) sélectionnée(s)'\r\nexport const TAILLESDISPOS_PRODUIT = 'Tailles disponibles'\r\nexport const TARIFTTC = 'Tarif TTC'\r\nexport const TELECHARGEZ_IMPRIMER_BORDEREAU_RETOUR_MAJ = 'TELECHARGEZ ET IMPRIMEZ LE BORDEREAU DE RETOUR A JOINDRE DANS VOTRE COLIS'\r\nexport const TELECOPIE = 'Télécopie'\r\nexport const TELEPHONE = 'Téléphone'\r\nexport const TENDANCE_FP = 'tendances'\r\nexport const TENUES_DE_FETES = 'Tenues de fêtes'\r\nexport const TEST13M_CHEZ_MODZ_CEST_LA_JUNGLE = 'Chez Modz, \\u003cspan class=\\\"visible-xs\\\"\\u003e\\u003c/span\\u003ec’est un peu la jungle'\r\nexport const TEST13M_ET_POUR_FINIR_LA_POINTURE = '... et pour finir la pointure !'\r\nexport const TEST13M_ETAPE = 'Étape'\r\nexport const TEST13M_ETAPE_SUIVANTE = 'Suivant'\r\nexport const TEST13M_JAMELIORE_MON_EXP_ACHAT = 'J\\u0027améliore mon expérience d\\u0027achat'\r\nexport const TEST13M_JE_CHERCHE_POUR = 'Je cherche pour :'\r\nexport const TEST13M_JE_SELECTIONNE_TAILLE = 'Je sélectionne la taille de'\r\nexport const TEST13M_LA_TAILLE_DE_BAS = '... la taille de bas'\r\nexport const TEST13M_MON_PROFIL_PERSO = 'Mon profil personnalisé'\r\nexport const TEST13M_NE_PERDEZ_PAS_DE_VUE_VOS_BONNES_AFFAIRES = 'Ne perdez pas de vue vos bonnes affaires, et rentrez immédiatement votre profil en moins \\u003cstrong\\u003eDE 30 SECONDES.\\u003c/strong\\u003e'\r\nexport const TEST13M_SI_ON_REPERE_DES_PETITS_PRIX = 'Si on repère toujours des petits prix, c’est en cherchant sa taille que l’on peut s’y perdre.'\r\nexport const TEST23M_AMELIO_EXP_ACHAT = 'Améliorez votre \\u003cspan class=\\\"visible-xs\\\"\\u003e\\u003c/span\\u003eexpérience d\\u0027achat'\r\nexport const TEST23M_CEST_PARTI = 'C\\u0027est parti !'\r\nexport const TEST23M_ET_POUR_FINIR = '... \\u003cspan class=\\\"visible-xs\\\"\\u003e\\u003c/span\\u003eet pour finir !'\r\nexport const TEST23M_ET_POUR_LES_PANTALONS = '... \\u003cspan class=\\\"visible-xs\\\"\\u003e\\u003c/span\\u003eet pour les pantalons ?'\r\nexport const TEST23M_MA_POINTURE = 'Ma pointure est :'\r\nexport const TEST23M_MA_TAILLE_DE_HAUT = 'Ma taille de haut est :'\r\nexport const TEST23M_MA_TAILLE_EST = 'Ma taille est :'\r\nexport const TEST23M_SELECTIONNEZ_VOS_INFOS_DE_PROFIL = 'Sélectionnez vos \\u003cspan class=\\\"visible-xs\\\"\\u003e\\u003c/span\\u003einformations de profil'\r\nexport const TEST33M_CHEZ_MODZ_CHAQUE_PRODUIT_EST_UNIQUE = 'Chez Modz, chaque produit est unique.'\r\nexport const TEST33M_SELECTIONNEZ_VOS_TAILLES = 'Sélectionnez vos tailles\\u003cbr /\\u003epour faire des trouvailles !'\r\nexport const TEST43M_POINTURE_DE_CHAUSSURES = 'Pointure de\\u003cspan class=\\\"visible-xs\\\"\\u003e\\u003c/span\\u003e chaussures :'\r\nexport const TEST43M_TAILLE_POUR_LE_BAS = 'Taille pour le bas :'\r\nexport const TEST43M_TAILLE_POUR_LE_HAUT = 'Taille pour le haut :'\r\nexport const TEST43M_VOUS_RECHERCHEZ_POUR = 'Vous recherchez pour :'\r\nexport const TEST73M_POINTURE = 'Pointure'\r\nexport const TEST73M_TAILLE_DE_BAS = 'Taille de bas'\r\nexport const TEST73M_TAILLE_DE_HAUT = 'Taille de haut'\r\nexport const TOP_DES_MARQUES = 'Top des marques'\r\nexport const TOTAL_A_PAYER = 'Total à payer'\r\nexport const TOTAL_ÉCONOMISE = 'Total économisé'\r\nexport const TOTAL_MAJ = 'TOTAL : '\r\nexport const TOTAL_REGLER = 'Total à régler'\r\nexport const TOTALARTICLESTTC = 'Total Articles TTC'\r\nexport const TOTALHT = 'Total HT'\r\nexport const TOTALTTC = 'Total TTC'\r\nexport const TOUS_GENRES = 'Tous les genres'\r\nexport const TOUS_LES_BAS = 'Tous les bas'\r\nexport const TOUS_LES_HAUTS = 'Tous les hauts'\r\nexport const TOUS_PAYS = 'Tous les pays'\r\nexport const TOUTES_LES_CHAUSSURES = 'Toutes les chaussures'\r\nexport const TOUTES_LES_COULEURS = 'Toutes les couleurs'\r\nexport const TOUTES_NOS_MARQUES = 'Toutes nos marques'\r\nexport const TRANSPORTEUR = 'Transporteur'\r\nexport const TRIER_PAR = 'Trier par'\r\nexport const TROP_DARTICLES = 'Trop d\\u0027articles ? Faites le tri !'\r\nexport const TROP_TARD = 'Trop tard !'\r\nexport const TTC = 'TTC'\r\nexport const TYPE = 'Type'\r\nexport const UN_CADEAU_POUR_ELLE = 'Un cadeau pour elle'\r\nexport const UN_CADEAU_POUR_LUI = 'Un cadeau pour lui'\r\nexport const UN_EMAIL_ÉTÉ_ENVOYE = 'Un e-mail a été envoyé à l\\u0027adresse suivante : '\r\nexport const UN_ZESTE_DE_PROMO_EN_PLUS_MAJ = 'UN ZESTE DE PROMO EN PLUS'\r\nexport const UNE_ALERTE_SUR_LES_NOUVEAUTES_DE = 'Une alerte sur les nouveautés de'\r\nexport const UNIVERS = 'Univers :'\r\nexport const UNIVERS0 = 'Univers'\r\nexport const UTILISATION_EMAIL_COMPTE = 'Votre adresse mail doit correspondre celle utilisée pour votre compte.'\r\nexport const UTILISER_AUTRE_CARTE = 'Utiliser une autre carte'\r\nexport const UTILISER_CODE_PROMO = 'Vous avez un code promo ? Cliquez ici !'\r\nexport const VALIDER = 'valider'\r\nexport const VALIDER_DEMANDE_RETOUR = 'Valider ma demande de retour'\r\nexport const VALIDER_ET_CONTINUER = 'Valider et continuer'\r\nexport const VALIDER_MON_PANIER = 'Valider mon panier'\r\nexport const VALIDER_MON_RETOUR = 'Valider mon retour'\r\nexport const VENDREDI = 'Vendredi'\r\nexport const VERIFIER_MAJ = 'VERIFIER'\r\nexport const VERIFIER_SPAM = 'Vous n\\u0027avez rien reçu ? Pensez à vérifier vos spams !'\r\nexport const VETEMENTS_FEMME = 'Vêtements femme'\r\nexport const VETEMENTS_FILLE = 'Vêtements fille'\r\nexport const VETEMENTS_GARCON = 'Vêtements garçon'\r\nexport const VETEMENTS_HOMME = 'Vêtements homme'\r\nexport const VEUILLEZ_CLIQUER_POUR_CONNECTER = 'Veuillez cliquer ici pour vous connecter'\r\nexport const VEUILLEZ_MODIFIER_VOS_TAILLES = 'Veuillez modifier vos tailles'\r\nexport const VEUILLEZ_SELECTIONNER_TAILLES = 'Veuillez sélectionner ou modifier vos tailles'\r\nexport const VIGNETTE_PRODUIT = 'Vignette Produit'\r\nexport const VILLE = 'Ville'\r\nexport const VINGT_EUROS = '20€'\r\nexport const VIREMENT_BANCAIRE = 'Virement bancaire'\r\nexport const VITE_JE_SHOPPE_MAJ = 'VITE, JE SHOPPE !'\r\nexport const VOIR_ARTICLE = 'VOIR L\\u0027ARTICLE'\r\nexport const VOIR_CADEAUX_MODE_MAJ = 'VOIR CADEAUX MODE'\r\nexport const VOIR_CONDITIONS_PARRAINAGE = 'Voir les conditions de parrainage \\u003e'\r\nexport const VOIR_LA_MARQUE = 'Voir la marque'\r\nexport const VOIR_LA_MARQUE_MAJ = 'VOIR LA MARQUE'\r\nexport const VOIR_LA_SELECTION = 'Voir la sélection'\r\nexport const VOIR_LA_SUITE = 'Voir la suite'\r\nexport const VOIR_LES = 'Voir les'\r\nexport const VOIR_LES_HORAIRES = 'Voir les horaires'\r\nexport const VOIR_LOOKBOOK = 'Voir le lookbook'\r\nexport const VOIR_MA_SELECTION = 'Voir ma sélection'\r\nexport const VOIR_MA_SELECTION_PERSO = 'Voir ma sélection personnalisée'\r\nexport const VOIR_MES_COMMANDES = 'Suivre mes commandes'\r\nexport const VOIR_MON_COMPTE = 'VOIR MON COMPTE'\r\nexport const VOIR_MON_PANIER = 'Voir mon panier'\r\nexport const VOIR_SELECTION_VINS_MAJ = 'VOIR SÉLECTION VINS'\r\nexport const VOIR_TOUS_ARTICLES = 'Voir tous les articles'\r\nexport const VOIR_TOUT = 'Voir tout'\r\nexport const VOIR_TOUTE_MA_SELECTION = 'Voir toute ma sélection \\u003e'\r\nexport const VOIR_TOUTES_LES_MARQUES = 'Voir toutes les marques'\r\nexport const VOIRVOS = 'VOIR VOS'\r\nexport const VOS = 'Vos'\r\nexport const VOS_CARTES_PAIEMENT = 'Vos cartes de paiement'\r\nexport const VOS_COMS_PARTICULIERS_SUR_CE_RETOUR = 'Vos commentaires particuliers sur ce retour :'\r\nexport const VOS_DONNES_PROTEGEES = 'Vos données protégées'\r\nexport const VOS_FILLEULS = 'Vos filleuls'\r\nexport const VOS_SPACE = 'Vos '\r\nexport const VOS_TAILLES = 'Vos tailles'\r\nexport const VOTRE_ADRESSE_EMAIL = 'Votre adresse email'\r\nexport const VOTRE_ADRESSE_MAIL = 'Votre adresse mail'\r\nexport const VOTRE_ADRESSE_NEST_PAS_REPERTORIEE = 'Votre adresse n\\u0027est pas répertoriée ?'\r\nexport const VOTRE_CMD_SERA_EXPEDIEE = 'Votre commande sera expédiée dès réception de votre règlement.'\r\nexport const VOTRE_COLIS_RETOUR = 'Votre colis de retour'\r\nexport const VOTRE_COMMANDE = 'Votre commande'\r\nexport const VOTRE_CP_DE_NAISSANCE = 'Votre code postal de naissance :'\r\nexport const VOTRE_DRESSING_VA_ADORER_NOTRE_NOTRE_NEWS = 'Votre dressing va adorer notre newsletter !'\r\nexport const VOTRE_NOM_DE_NAISSANCE = 'Votre nom de naissance :'\r\nexport const VOTRE_PAIEMENT_A_ETE_ANNULE = 'Votre paiement a été annulé.'\r\nexport const VOTRE_PAIEMENT_A_ETE_REFUSE = 'Votre paiement a été refusé.'\r\nexport const VOTRE_PARRAIN = 'Votre parrain :'\r\nexport const VOTRE_PASS_A_ETE_RESET = 'Votre mot de passe a été réinitialisé.'\r\nexport const VOTRE_REF_CLIENT = 'Votre référence client :'\r\nexport const VOTRE_SELECTION_PERSO = 'Votre sélection personnalisée'\r\nexport const VOTRE_SHOPPING = 'Votre shopping uniquement sur des articles dans votre taille grâce au profil.'\r\nexport const VOTRETAILLE = 'Votre taille'\r\nexport const VOUS = 'Vous'\r\nexport const VOUS_ADOREZ = 'Vous adorez'\r\nexport const VOUS_AIMEREZ_SUREMENT = 'Vous aimerez sûrement'\r\nexport const VOUS_AVEZ = 'Vous avez'\r\nexport const VOUS_AVEZ_AJOUTER_PANIER = 'Cet article a bien été ajouté à votre panier'\r\nexport const VOUS_AVEZ_ECONOMISE = 'Vous avez économisé'\r\nexport const VOUS_AVEZ_QUITTE_PAGE_PAIEMENT = 'Vous avez quitté la page de paiement. Votre commande sera expédiée une fois que le paiement sera finalisé.'\r\nexport const VOUS_AVEZ_RECU_CARTE_CADEAU = 'Vous avez reçu une carte cadeau Modz et vous souhaitez l’utiliser.'\r\nexport const VOUS_BENEFICIEZ_DE = 'Vous bénéficiez de'\r\nexport const VOUS_CONNECTEZ_CODE_PROMO = 'Un code promo? Connectez-vous !'\r\nexport const VOUS_DEVEZ_CHOISIR_POINT_RELAY = 'Vous devez choisir un point relais pour la livraison avant d\\u0027accéder au paiement.'\r\nexport const VOUS_NAVEZ_PAS_DE_MESSAGES = 'Vous n\\u0027avez pas de message.'\r\nexport const VOUS_POUVEZ_BENEFICIER_DE = 'Vous pouvez bénéficier de'\r\nexport const VOUS_POUVEZ_REGLER_VOTRE_COMMANDE = 'Vous pouvez régler votre commande à l\\u0027aide d\\u0027un autre moyen de paiement.'\r\nexport const VOUS_POUVEZ_SUIVRE_COMMANDE = 'Vous pouvez suivre l\\u0027évolution de votre commande à partir de l\\u0027onglet Mon compte.'\r\nexport const VOUS_RECEVREZ_PAR_MAIL = 'Vous recevrez par e-mail tous les nouveaux produits correspondant à vos critères dès leur mise en ligne.'\r\nexport const VOUS_TROUVEREZ_LA_PROCEDURE_RETOUR = 'Vous trouverez ci-après la procédure de retour à bien respecter.'\r\nexport const VOUS_UTILISEZ_LAVOIR_POUR_UN_PROCHAIN_ACHAT = 'Vous utilisez l\\u0027avoir pour un prochain achat ou vous demandez le remboursement : c\\u0027est vous qui choisissez !'\r\nexport const X_PERSONNES_ONT_AJOUTE_AUX_FAVORIS = 'personnes ont ajouté ce produit à leur favoris.'\r\nexport const ZOOM_SUR_MARQUES = 'Zoom sur les marques'\r\n\r\n\r\n","'use strict'\r\n\r\n/**\r\n * Module qui charge une action d'un controlleur en ajax\r\n */\r\n\r\nconst J_URL_HIDDEN = '.j_url'\r\nconst J_PAGENUMBER_DATA = 'pagenumber'\r\nconst J_PAGE = '.j_page'\r\nconst J_REDIRECTION_PARAMETERS = 'redirect'\r\nlet backBrowser = true\r\nconst J_PAGINATION_METHOD = '.j_pagination_method'\r\nconst J_ACTION = 'action'\r\nconst J_ACTION_DEGRADATED = 'actiondegradatedproduct'\r\n\r\n/*\r\n * Fonction init permettant notamment la gestion du bouton précédent du navigateur\r\n * Elle est appelé à chaque fois qu'on charge, la page, et donc le module.\r\n * Donc on ajoute l'URL en cours à l'history\r\n */\r\nfunction init(callback) {\r\n window.onpopstate = function (event) {\r\n /**\r\n * Si on clique sur le bouton précédent du navigateur\r\n * après le chargement d'une ou plusieurs pages du catalogue,\r\n * On revient en arrière dans le history autant que de pages ont été chargées\r\n */\r\n goToPreviousPage(event)\r\n\r\n if (backBrowser === true && typeof History !== 'function') {\r\n document.body.scrollTop = document.documentElement.scrollTop = 0\r\n const State = History.getState()\r\n const currentPage = State.data.np === undefined ? 1 : State.data.np\r\n const element = $(\r\n J_PAGE +\r\n '[data-' +\r\n J_PAGENUMBER_DATA +\r\n \"='\" +\r\n currentPage +\r\n \"']\"\r\n )\r\n callback(currentPage, element)\r\n }\r\n\r\n backBrowser = true\r\n\r\n return false\r\n }\r\n}\r\n\r\n/**\r\n * Retourne à la page précédente dans le navigateur lorsqu'on\r\n * est sur une page catalogue avec la paramètre np\r\n */\r\nfunction goToPreviousPage(event) {\r\n if (event === null) {\r\n return\r\n }\r\n\r\n if (event.state === 'undefined' || event.state === null) {\r\n return\r\n }\r\n\r\n if (event.state.np === 'undefined' || event.state.np === null) {\r\n return\r\n }\r\n\r\n window.history.go(parseInt(event.state.np) * -1)\r\n}\r\n\r\n/*\r\n *Efface un paramtre dans l'url, retourne l'url sans ce parametre.\r\n */\r\nfunction deleteParameter(key, sourceURL) {\r\n let rtn = sourceURL.split('?')[0]\r\n let param\r\n let paramsArr = []\r\n const queryString =\r\n sourceURL.indexOf('?') !== -1 ? sourceURL.split('?')[1] : ''\r\n if (queryString !== '') {\r\n paramsArr = queryString.split('&')\r\n for (let i = paramsArr.length - 1; i >= 0; i -= 1) {\r\n param = paramsArr[i].split('=')[0]\r\n if (param === key) {\r\n paramsArr.splice(i, 1)\r\n }\r\n }\r\n if (paramsArr.length) rtn = rtn + '?' + paramsArr.join('&')\r\n }\r\n return rtn\r\n}\r\n\r\n/*\r\n * Insert les paramètres dans l'url à l'aide de history.js (documentation dispo sur internet)\r\n * Si on veut mettre en place le chargement des pages d'un coup (de 1 à 10 par ex.), on doit mustAddPosition à true.\r\n * Sinon, dans le cas de la pagination classique par ex., on doit mettre à false\r\n * Si le paramètre existe déjà, on le remplace.\r\n */\r\n// TODO PUBLIC\r\nfunction insertParams(params, mustAddPosition) {\r\n let newUrl = $(J_URL_HIDDEN).first().val()\r\n let prefix = ''\r\n let suffix = ''\r\n let noParameters = false\r\n let start = -1\r\n let end = -1\r\n\r\n if (params.hasOwnProperty('ct')) {\r\n delete params.ct\r\n newUrl = deleteParameter('ct', newUrl)\r\n }\r\n\r\n if (params.hasOwnProperty('ctr')) {\r\n delete params.ctr\r\n newUrl = deleteParameter('ctr', newUrl)\r\n }\r\n\r\n if (params.hasOwnProperty('reload') && mustAddPosition === true) {\r\n // On efface le parametre reload dans l'url\r\n delete params.reload\r\n newUrl = deleteParameter('reload', newUrl)\r\n }\r\n if (params.hasOwnProperty('index') && mustAddPosition === true) {\r\n // On efface le parametre index dans l'url\r\n delete params.index\r\n newUrl = deleteParameter('index', newUrl)\r\n }\r\n\r\n // Ajout du ? si aucun parametre\r\n if (newUrl.indexOf('?') === -1) {\r\n noParameters = true\r\n }\r\n\r\n for (const keyParam in params) {\r\n if (params.hasOwnProperty(keyParam)) {\r\n if (keyParam == 'tri' || keyParam == 'remise') {\r\n continue\r\n }\r\n\r\n if ((start = newUrl.indexOf(keyParam + '=')) !== -1) {\r\n prefix = newUrl.substring(0, start)\r\n if ((end = newUrl.indexOf('&', start)) === -1) {\r\n suffix = ''\r\n } else {\r\n suffix = newUrl.substring(end, newUrl.length)\r\n }\r\n newUrl = prefix + keyParam + '=' + params[keyParam] + suffix\r\n } else if (!noParameters) {\r\n newUrl = newUrl + '&' + keyParam + '=' + params[keyParam]\r\n } else if (noParameters) {\r\n newUrl = newUrl + '?' + keyParam + '=' + params[keyParam]\r\n noParameters = false\r\n }\r\n }\r\n }\r\n $(J_URL_HIDDEN).first().val(newUrl)\r\n backBrowser = false\r\n history.pushState(params, document.title, newUrl)\r\n}\r\n\r\n/*\r\n * Change l'URL de la page courante\r\n */\r\nfunction setUrl(params, newUrl) {\r\n $(J_PAGINATION_METHOD).data(J_ACTION, newUrl)\r\n $(J_ACTION_DEGRADATED).data(J_ACTION_DEGRADATED, newUrl)\r\n backBrowser = false\r\n history.pushState(params, document.title, newUrl)\r\n}\r\n\r\nfunction setUrl2(params, newUrlAvecTri, newUrlSansTri) {\r\n $(J_PAGINATION_METHOD).data(J_ACTION, newUrlSansTri)\r\n $(J_ACTION_DEGRADATED).data(J_ACTION_DEGRADATED, newUrlSansTri)\r\n backBrowser = false\r\n newUrlAvecTri = deleteParameter('ct', newUrlAvecTri)\r\n newUrlAvecTri = deleteParameter('ctr', newUrlAvecTri)\r\n history.pushState(params, document.title, newUrlAvecTri)\r\n}\r\n\r\n/*\r\n * Retourne la valeur du paramètre dont le nom est passé en paramètre\r\n * Si il n'est pas trouvé, defaultValue sera retourné\r\n */\r\nfunction getParameter(paramName, defaultValue) {\r\n const kvp = document.location.search.substr(1).split('&')\r\n let i = kvp.length\r\n let param = ''\r\n\r\n paramName = encodeURI(paramName)\r\n while (i-- && i >= 0) {\r\n param = kvp[i].split('=')\r\n\r\n if (param[0] === paramName && paramName === 'np') {\r\n if (param[1] < 1) {\r\n return defaultValue\r\n } else {\r\n return param[1]\r\n }\r\n } else if (param[0] === paramName && paramName !== 'np') {\r\n return param[1]\r\n }\r\n }\r\n return defaultValue\r\n}\r\n\r\n/*\r\n * Retourne un objet contenant tout les paramètres de la requête\r\n */\r\nfunction getAllParameters() {\r\n let url = $(J_URL_HIDDEN).val().split('?')\r\n let parameters = []\r\n const returnValue = {}\r\n let kpv = ''\r\n\r\n if (url.length > 1) {\r\n url = url[1]\r\n parameters = url.split('&')\r\n for (let i = 0; i < parameters.length; i++) {\r\n kpv = parameters[i].split('=')\r\n returnValue[kpv[0]] = kpv[1]\r\n }\r\n }\r\n return returnValue\r\n}\r\n\r\n/*\r\n * Va chercher le paramètre J_REDIRECTION_PARAMETERS et retourner sa valeur\r\n */\r\nfunction parseRedirectionParameter() {\r\n const paramName = encodeURI(J_REDIRECTION_PARAMETERS)\r\n const kvp = document.location.search.substr(1).split('&')\r\n let i = kvp.length\r\n let param = ''\r\n\r\n while (i-- && i >= 0) {\r\n param = kvp[i].split('=')\r\n if (param[0] === paramName) {\r\n return param[1]\r\n }\r\n }\r\n return undefined\r\n}\r\n\r\nexport default {\r\n insertParams: insertParams,\r\n deleteParams: deleteParameter,\r\n getParameter: getParameter,\r\n getAllParameters: getAllParameters,\r\n init: init,\r\n parseRedirectionParameter: parseRedirectionParameter,\r\n setUrl: setUrl,\r\n setUrl2: setUrl2\r\n}\r\n","'use strict'\r\n\r\n/**\r\n * Module qui gère la validation des différents éléments d'un formulaire\r\n */\r\n\r\nimport ajaxLoader from 'Modules/ajaxLoader'\r\nimport { INVALIDEMAIL, INVALIDINTEGER } from 'Modules/Resources/Error'\r\n\r\nconst J_INPUT_CLASS = '.j_input'\r\nconst J_EMAIL_INPUT_TYPE = 'j_email'\r\nconst J_INTEGER_INPUT_TYPE = 'j_integer'\r\nconst J_PARAM_NAME = 'parameter'\r\n\r\n/*\r\n * Cette fonction vérifiera chaque élément j_input du j_form de la page\r\n * Elle procédera aux différents vérifications selon le type d'input.\r\n * La callback failCheckFormatCallback sera exécuter si un input n'est pas correct\r\n * Puis elle va appeler ajaxLoader.loadAndExecuteCallBack qui va\r\n * effectuer un appel AJAX sur 'action' et executer successCallbackAjax ou failCallbackAjax selon si l'appel réussi ou échoue\r\n */\r\nfunction process(\r\n successCallbackAjax,\r\n failCallbackAjax,\r\n failCheckFormatCallback,\r\n action,\r\n jForm\r\n) {\r\n const $formInputs = $(jForm).find('input' + J_INPUT_CLASS)\r\n const paramsToSend = {}\r\n let isFalseValue = false\r\n\r\n $formInputs.each(function (index, inputElement) {\r\n if ($(inputElement).hasClass(J_EMAIL_INPUT_TYPE)) {\r\n // Si il s'agit d'un champ email\r\n if (!isValideEmail(inputElement.value)) {\r\n failCheckFormatCallback(INVALIDEMAIL)\r\n isFalseValue = true\r\n return false\r\n } else {\r\n paramsToSend[$(inputElement).data(J_PARAM_NAME)] =\r\n $(inputElement).val() // Paramètre à envoyer à la fonction du controller\r\n }\r\n }\r\n\r\n if ($(inputElement).hasClass(J_INTEGER_INPUT_TYPE)) {\r\n // Si il s'agit d'un champ int\r\n if (!isValideInteger(inputElement.value)) {\r\n failCheckFormatCallback(INVALIDINTEGER)\r\n isFalseValue = true\r\n return false\r\n } else {\r\n paramsToSend[$(inputElement).data(J_PARAM_NAME)] =\r\n $(inputElement).val() // Paramètre à envoyer à la fonction du controller\r\n }\r\n }\r\n // Rajouter une fonction et un if pour vérifier un nouvel élément\r\n })\r\n\r\n // si les valeurs des inputs sont valides, on submit le form. Si un callback est présent, il sera exécuté lorsque le POST aura réussi\r\n if (isFalseValue === false) {\r\n ajaxLoader.loadAndExecuteCallBack(\r\n 'POST',\r\n paramsToSend,\r\n successCallbackAjax,\r\n failCallbackAjax,\r\n action\r\n )\r\n }\r\n}\r\n\r\nfunction isValideEmail(email) {\r\n const regexPattern =\r\n /^([a-zA-Z0-9_\\-.]+)@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})(]?)+$/\r\n return regexPattern.test(email)\r\n}\r\n\r\nfunction isValideInteger(integer) {\r\n const regexPattern = /^([0-9-])+$/\r\n return regexPattern.test(parseInt(integer))\r\n}\r\n\r\nfunction hasSpecialChar(str) {\r\n const regexPattern =\r\n /([^a-zA-Z0-9áàâäãåçéèêëíìîïñóòôöõúùûüýÿæœÁÀÂÄÃÅÇÉÈÊËÍÌÎÏÑÓÒÔÖÕÚÙÛÜÝŸÆŒ\\s])+/\r\n return regexPattern.test(str)\r\n}\r\n\r\nexport default {\r\n process: process,\r\n isValideEmail: isValideEmail,\r\n hasSpecialChar: hasSpecialChar\r\n}\r\n","'use strict'\r\n\r\n/**\r\n * Pop up 3M\r\n */\r\n\r\nimport selectorPanel from 'Modules/selectorPanel'\r\nimport profileCookie from 'Modules/profileCookie'\r\nimport tooltips from 'Modules/tooltips'\r\nimport {\r\n TAILLE,\r\n TAILLES,\r\n TAILLES_DE,\r\n HAUT,\r\n BAS,\r\n POINTURES,\r\n CHAUSSURES,\r\n AGE,\r\n AGES,\r\n VEUILLEZ_SELECTIONNER_TAILLES\r\n} from 'Modules/Resources/Label'\r\nimport url from 'Modules/url'\r\nimport modal from 'Modules/modal'\r\nimport validationForm from 'Modules/validationForm'\r\n\r\nconst J_BUTTON_SUBMIT = '.j_submit3MPlus'\r\nconst J_BORDER_SELECTED = '.j_borderSelected'\r\nconst J_LIST_CATEGORY = '.j_listCategory'\r\nconst J_GENDER_DATA = 'category'\r\nconst C_ACTIVE_SELECTOR = '.active'\r\nconst J_URL = '.j_url'\r\nconst J_TYPE_MODULE_DATA = 'type'\r\nconst J_FORM_3MPLUS = '.j_form3MPlus'\r\nconst J_PROFILE_GENDER_DATA = 'profilegender'\r\nconst J_PANEL_ITEM = '.j_panelItem'\r\nconst C_BUTTON_STYLE_OFF = 'goBtn-disabled'\r\nconst C_BUTTON_STYLE_ON = 'goBtn'\r\nconst C_CLASS_PINK_BUTTON = 'btn-empty'\r\nconst J_TOOLTIP_TRIGGER = '.j_3mPlusToolTipTrigger'\r\nconst J_FAMILY_DATA = 'family'\r\nconst J_TRIGGER_DATA = 'count'\r\nconst J_MUST_LOAD_DATA = 'mustload'\r\nconst J_LINKFEMME_DATA = 'linkfemme'\r\nconst J_LINKHOMME_DATA = 'linkhomme'\r\nconst J_LINKGARCON_DATA = 'linkgarcon'\r\nconst J_LINKFILLE_DATA = 'linkfille'\r\nconst J_LINK_DATA = 'link'\r\nconst J_ACCORDION_3M = '.j_accordion3M'\r\nconst setEnableEvent = switch3MPlus\r\nconst C_ARROW = ' '\r\nconst C_ARROW2ROTATE =\r\n ''\r\nconst setDisableEvent = setOnClickToolTip\r\n/*\r\n * Fonction qui va lancer tous le process du 3m+\r\n */\r\nfunction process() {\r\n $(document).ready(function () {\r\n $('.modaltest3m10')\r\n .parents('.mm-page')\r\n .siblings('.modal-backdrop')\r\n .addClass('zindex')\r\n })\r\n\r\n /* Lazyload img */\r\n $('.bloc3M .j_listCategory').click(function () {\r\n const imgArray = document.querySelectorAll('.lazyload-3m')\r\n\r\n for (let i = 0; i < imgArray.length; i++) {\r\n const img = imgArray[i]\r\n\r\n if (img.getAttribute('data-src')) {\r\n img.src = img.getAttribute('data-src')\r\n img.removeAttribute('data-src')\r\n }\r\n }\r\n })\r\n\r\n $('.jfinalstep').mouseup(function () {\r\n profileCookie.init()\r\n const cookie = profileCookie.getCurrentProfile()\r\n const genre = cookie.gender\r\n window.location.href =\r\n url.deleteParams('np', window.location.href) + '?cg=' + genre\r\n })\r\n $('#modaltest3m10 .j_listCategory').on('click', function () {\r\n selectorPanel.showPanel(this)\r\n $('.j_genreSelector').hide()\r\n $('.j_panelItems').fadeIn()\r\n })\r\n $('#modaltest3m10 .j_tailleshaut .checkbox-t3m').on('click', function () {\r\n $('.j_tailleshaut').hide()\r\n $('.j_taillesbas').fadeIn()\r\n })\r\n $('#modaltest3m10 .j_taillesbas .checkbox-t3m').on('click', function () {\r\n $('.j_taillesbas').hide()\r\n $('.j_tailleschaussure').fadeIn()\r\n })\r\n $('#modaltest3m10 .j_taillesage .checkbox-t3m').on('click', function () {\r\n $('.j_taillesage').hide()\r\n $('.j_tailleschaussure').fadeIn()\r\n })\r\n $('#modaltest3m10 .j_tailleschaussure .checkbox-t3m').on(\r\n 'click',\r\n function () {\r\n $('.j_tailleschaussure').hide()\r\n $('.j_taillesorigin').hide()\r\n $('.blocmail3m').fadeIn()\r\n }\r\n )\r\n\r\n // Enregistrement du mail du client dans la pop-up du 3M\r\n\r\n const J_VALIDATION_BUTTON_3M = '.btnvalidemail3m'\r\n const J_FORM_NEWSLETTER_3M = '.j_form_newsletter_3m'\r\n const J_EMAIL_NAME = 'j_email'\r\n const J_ACTION_DATA = 'action'\r\n const C_GREEN = 'green'\r\n const C_RED = 'red'\r\n const C_BLACK = 'black'\r\n /*\r\n * Set l'event click sur le bouton de validation de la newsletter\r\n *\r\n */\r\n\r\n $(J_FORM_NEWSLETTER_3M).on('submit', function () {\r\n const form = $(this)\r\n\r\n $(J_VALIDATION_BUTTON_3M).attr('disabled', true)\r\n validationForm.process(\r\n function (content) {\r\n // Callback de réussite\r\n $(\"input[name='\" + J_EMAIL_NAME + \"']\").val(content.Message)\r\n manageStyleForNewsletterError(content)\r\n eraseColorForNewsLetter()\r\n profileCookie.saveCookie()\r\n\r\n const cookie = profileCookie.getCurrentProfile()\r\n const genre = cookie.gender\r\n\r\n if ($(J_VALIDATION_BUTTON_3M).hasClass('j_test_modal3M')) {\r\n $('.j_message_capital').show()\r\n $('.email3m').css('margin-top', '30px')\r\n $(J_VALIDATION_BUTTON_3M).hide()\r\n $('.j_close_modal3M').show()\r\n } else {\r\n window.location.href =\r\n url.deleteParams('np', window.location.href) +\r\n '?cg=' +\r\n genre\r\n }\r\n },\r\n function (content) {\r\n // Callback si échec. C'est la même que la réussite : l'erreur est mis dans le champ email\r\n $(\"input[name='\" + J_EMAIL_NAME + \"']\").val(content.Message)\r\n manageStyleForNewsletterError(content)\r\n eraseColorForNewsLetter()\r\n $(J_VALIDATION_BUTTON_3M).attr('disabled', false)\r\n },\r\n function (msg) {\r\n // Callback exécuter si l'email n'a pas le bon format\r\n const content = {\r\n // Dans le cas du mail incorrect, on est pas passé dans l'ajax, il faut donc ajouter les éléments permettant de gérer les erreurs manuellement\r\n Error: true,\r\n CssClass: C_RED,\r\n Message: msg\r\n }\r\n $(\"input[name='\" + J_EMAIL_NAME + \"']\").val(content.Message)\r\n manageStyleForNewsletterError(content)\r\n eraseColorForNewsLetter()\r\n $(J_VALIDATION_BUTTON_3M).attr('disabled', false)\r\n },\r\n $(form).data(J_ACTION_DATA), // Le controller à appeler\r\n form\r\n )\r\n\r\n return false\r\n })\r\n\r\n /*\r\n * Va gérer les styles CSS à appliquer au champ newsletter selon le message\r\n */\r\n function manageStyleForNewsletterError(content) {\r\n if (content.CssClass == C_GREEN) {\r\n $(\"input[name='\" + J_EMAIL_NAME + \"']\").addClass(C_GREEN)\r\n }\r\n if (content.CssClass == C_BLACK) {\r\n $(\"input[name='\" + J_EMAIL_NAME + \"']\").addClass(C_BLACK)\r\n }\r\n if (content.CssClass == C_RED) {\r\n $(\"input[name='\" + J_EMAIL_NAME + \"']\").addClass(C_RED)\r\n }\r\n }\r\n\r\n /*\r\n * Va effacer les couleurs des champs emails quand on tape dedans\r\n */\r\n function eraseColorForNewsLetter() {\r\n $(\"input[name='\" + J_EMAIL_NAME + \"']\").on('focus', function (item) {\r\n $(item.currentTarget).removeClass(C_GREEN)\r\n $(item.currentTarget).removeClass(C_BLACK)\r\n $(item.currentTarget).removeClass(C_RED)\r\n })\r\n }\r\n\r\n $('.j_btn_intro').on('click', function () {\r\n $('.j_3m_intro').hide()\r\n $('.j_panelSelector').fadeIn()\r\n })\r\n $('.j_return_step_1').on('click', function () {\r\n $('.j_panelItems').hide()\r\n $('.j_genreSelector').fadeIn()\r\n })\r\n $('.j_return_step_2').on('click', function () {\r\n $('.j_taillesbas').hide()\r\n $('.j_tailleshaut').fadeIn()\r\n })\r\n $('.j_return_step_3').on('click', function () {\r\n $('.j_tailleschaussure').hide()\r\n $('.j_taillesbas').fadeIn()\r\n })\r\n $(\r\n '#modaltest3m10 ul.multiselect-tailles3m li:first-child > label > span'\r\n ).each(function () {\r\n if ($(this).text() === 'Prématuré') {\r\n $(this).parents().addClass('prehaut')\r\n }\r\n })\r\n\r\n $('.j_show_profil3m').bind('click', function () {\r\n if ($('.j-accordeon3M').html() == '') {\r\n const gender = $('.j-accordeon3M').data('genre')\r\n const urlAccordeon =\r\n window.location.origin + '/_3MPlus/Accordeon/?gender=' + gender\r\n modal.miseAjourParClassCss(\r\n 'j-accordeon3M',\r\n urlAccordeon,\r\n CallbackAccordeon\r\n )\r\n } else {\r\n // on appelle la callback sans le chargement ajax car c'est déjà chargé\r\n $(J_ACCORDION_3M).addClass('open')\r\n $('.bandeau-3M').css('background-color', '#fff4f6')\r\n $('.bloc-config-taille > div').fadeIn()\r\n }\r\n })\r\n\r\n function CallbackAccordeon() {\r\n selectorPanel.setEvents(checkButtonForEachForm)\r\n checkButtonForEachForm()\r\n\r\n setOnClickTaille()\r\n\r\n $(J_ACCORDION_3M).addClass('open')\r\n $('.bandeau-3M').css('background-color', '#fff4f6')\r\n $('.bloc-config-taille > div').fadeIn()\r\n\r\n $('.j_tailles3m').on('click', function () {\r\n const id = $(this).attr('id')\r\n if ($('.multiselect-container').is(':visible')) {\r\n $('.j_tailles3m').removeClass('font-semi-sans')\r\n $('.multiselect-container').slideUp()\r\n $('.chevronrotate').animate(\r\n { deg: -45 },\r\n {\r\n duration: 400,\r\n step: function (now) {\r\n $(this).css({ transform: 'rotate(' + now + 'deg)' })\r\n }\r\n }\r\n )\r\n if (!$('[data-label=' + id + ']').is(':visible')) {\r\n $(this).addClass('font-semi-sans')\r\n $('[data-label=' + id + ']').slideDown('slow')\r\n $('#' + id + ' span').animate(\r\n { deg: 45 },\r\n {\r\n duration: 400,\r\n step: function (now) {\r\n $(this).css({\r\n transform: 'rotate(' + now + 'deg)'\r\n })\r\n }\r\n }\r\n )\r\n }\r\n } else {\r\n $(this).addClass('font-semi-sans')\r\n $('[data-label=' + id + ']').slideDown('slow')\r\n $('#' + id + ' span').animate(\r\n { deg: 45 },\r\n {\r\n duration: 400,\r\n step: function (now) {\r\n $(this).css({ transform: 'rotate(' + now + 'deg)' })\r\n }\r\n }\r\n )\r\n }\r\n })\r\n\r\n $('.jbtnpress').mousedown(function () {\r\n const idrange =\r\n '#' +\r\n $(this).siblings('.range-slider').find('.range').attr('id')\r\n const iddatalist =\r\n '#' +\r\n $(this).siblings('.range-slider').find('datalist').attr('id')\r\n const opt = $(\r\n iddatalist + ' option[value=\"' + $(idrange).val() + '\"]'\r\n )\r\n const reg = /[-;]+/g\r\n const tableau = iddatalist.split(reg)\r\n const idDivContainerMulitselect =\r\n '.j_' +\r\n tableau[2].toUpperCase() +\r\n '_' +\r\n tableau[1].toUpperCase()\r\n $(idDivContainerMulitselect)\r\n .find('ul.multiselect-tailles3m')\r\n .each(function (index, item) {\r\n const option = $($(item).find('.checkbox-t3m'))\r\n option.each(function () {\r\n if ($(this).val() == opt.attr('id')) {\r\n $(this).trigger('click')\r\n }\r\n })\r\n })\r\n })\r\n\r\n $('.j_accordion_3M p.h3').on('click', function () {\r\n if ($(J_ACCORDION_3M).hasClass('open')) {\r\n $('.j_accordion_3M > div').hide()\r\n $(J_ACCORDION_3M).removeClass('open')\r\n } else {\r\n $(J_ACCORDION_3M).addClass('open')\r\n $(' .j_accordion_3M > div').fadeIn()\r\n }\r\n })\r\n }\r\n\r\n $(document).bind('click', function (e) {\r\n const $clicked = $(e.target)\r\n if (!$clicked.parents().hasClass('zonetailles3m'))\r\n $('.zonetailles3m .multiselect-container').slideUp()\r\n if (\r\n !$clicked.parents().hasClass('bandeau-3M') &&\r\n !$clicked.hasClass('j_show_profil3m')\r\n ) {\r\n $('.bandeau-3M').css('background-color', '#fff')\r\n $('.bloc-config-taille').removeClass('open')\r\n $('.bloc-config-taille > div').hide('slow')\r\n }\r\n })\r\n\r\n setToolTip()\r\n setOnClickTaille()\r\n}\r\n\r\nfunction processLight() {\r\n // Enregistrement du mail du client dans la pop-up du 3M\r\n\r\n const J_VALIDATION_BUTTON_3M = '.btnvalidemail3m'\r\n const J_FORM_NEWSLETTER_3M = '.j_formr_3m_light'\r\n const J_EMAIL_NAME = 'j_email'\r\n const J_ACTION_DATA = 'action'\r\n const C_GREEN = 'green'\r\n const C_RED = 'red'\r\n const C_BLACK = 'black'\r\n /*\r\n * Set l'event click sur le bouton de validation de la newsletter\r\n *\r\n */\r\n\r\n $('.jfinalstep').mouseup(function () {\r\n $('#modal3mlight').modal('hide')\r\n })\r\n\r\n $(J_FORM_NEWSLETTER_3M).on('submit', function () {\r\n const form = $(this)\r\n\r\n $(J_VALIDATION_BUTTON_3M).attr('disabled', true)\r\n validationForm.process(\r\n function (content) {\r\n // Callback de réussite\r\n $(\"input[name='\" + J_EMAIL_NAME + \"']\").val(content.Message)\r\n manageStyleForNewsletterError(content)\r\n eraseColorForNewsLetter()\r\n //$('#modal3mlight').modal('hide')\r\n $('.j_message_capital').show()\r\n },\r\n function (content) {\r\n // Callback si échec. C'est la même que la réussite : l'erreur est mis dans le champ email\r\n $(\"input[name='\" + J_EMAIL_NAME + \"']\").val(content.Message)\r\n manageStyleForNewsletterError(content)\r\n eraseColorForNewsLetter()\r\n $(J_VALIDATION_BUTTON_3M).attr('disabled', false)\r\n },\r\n function (msg) {\r\n // Callback exécuter si l'email n'a pas le bon format\r\n const content = {\r\n // Dans le cas du mail incorrect, on est pas passé dans l'ajax, il faut donc ajouter les éléments permettant de gérer les erreurs manuellement\r\n Error: true,\r\n CssClass: C_RED,\r\n Message: msg\r\n }\r\n $(\"input[name='\" + J_EMAIL_NAME + \"']\").val(content.Message)\r\n manageStyleForNewsletterError(content)\r\n eraseColorForNewsLetter()\r\n $(J_VALIDATION_BUTTON_3M).attr('disabled', false)\r\n },\r\n $(form).data(J_ACTION_DATA), // Le controller à appeler\r\n form\r\n )\r\n\r\n return false\r\n })\r\n\r\n /*\r\n * Va gérer les styles CSS à appliquer au champ newsletter selon le message\r\n */\r\n function manageStyleForNewsletterError(content) {\r\n if (content.CssClass == C_GREEN) {\r\n $(\"input[name='\" + J_EMAIL_NAME + \"']\").addClass(C_GREEN)\r\n }\r\n if (content.CssClass == C_BLACK) {\r\n $(\"input[name='\" + J_EMAIL_NAME + \"']\").addClass(C_BLACK)\r\n }\r\n if (content.CssClass == C_RED) {\r\n $(\"input[name='\" + J_EMAIL_NAME + \"']\").addClass(C_RED)\r\n }\r\n }\r\n\r\n /*\r\n * Va effacer les couleurs des champs emails quand on tape dedans\r\n */\r\n function eraseColorForNewsLetter() {\r\n $(\"input[name='\" + J_EMAIL_NAME + \"']\").on('focus', function (item) {\r\n $(item.currentTarget).removeClass(C_GREEN)\r\n $(item.currentTarget).removeClass(C_BLACK)\r\n $(item.currentTarget).removeClass(C_RED)\r\n })\r\n }\r\n\r\n $('.j_btn_intro').on('click', function () {\r\n $('.j_3m_intro').hide()\r\n $('.j_panelSelector').fadeIn()\r\n })\r\n $('.j_return_step_1').on('click', function () {\r\n $('.j_panelItems').hide()\r\n $('.j_genreSelector').fadeIn()\r\n })\r\n $('.j_return_step_2').on('click', function () {\r\n $('.j_taillesbas').hide()\r\n $('.j_tailleshaut').fadeIn()\r\n })\r\n $('.j_return_step_3').on('click', function () {\r\n $('.j_tailleschaussure').hide()\r\n $('.j_taillesbas').fadeIn()\r\n })\r\n $(\r\n '#modaltest3m10 ul.multiselect-tailles3m li:first-child > label > span'\r\n ).each(function () {\r\n if ($(this).text() === 'Prématuré') {\r\n $(this).parents().addClass('prehaut')\r\n }\r\n })\r\n\r\n $('.j_show_profil3m').bind('click', function () {\r\n if ($('.j-accordeon3M').html() == '') {\r\n const gender = $('.j-accordeon3M').data('genre')\r\n const urlAccordeon =\r\n window.location.origin + '/_3MPlus/Accordeon/?gender=' + gender\r\n modal.miseAjourParClassCss(\r\n 'j-accordeon3M',\r\n urlAccordeon,\r\n CallbackAccordeon\r\n )\r\n } else {\r\n // on appelle la callback sans le chargement ajax car c'est déjà chargé\r\n $(J_ACCORDION_3M).addClass('open')\r\n $('.bandeau-3M').css('background-color', '#fff4f6')\r\n $('.bloc-config-taille > div').fadeIn()\r\n }\r\n })\r\n\r\n function CallbackAccordeon() {\r\n selectorPanel.setEvents(checkButtonForEachForm)\r\n checkButtonForEachForm()\r\n\r\n setOnClickTaille()\r\n\r\n $(J_ACCORDION_3M).addClass('open')\r\n $('.bandeau-3M').css('background-color', '#fff4f6')\r\n $('.bloc-config-taille > div').fadeIn()\r\n\r\n $('.j_tailles3m').on('click', function () {\r\n const id = $(this).attr('id')\r\n if ($('.multiselect-container').is(':visible')) {\r\n $('.j_tailles3m').removeClass('font-semi-sans')\r\n $('.multiselect-container').slideUp()\r\n $('.chevronrotate').animate(\r\n { deg: -45 },\r\n {\r\n duration: 400,\r\n step: function (now) {\r\n $(this).css({ transform: 'rotate(' + now + 'deg)' })\r\n }\r\n }\r\n )\r\n if (!$('[data-label=' + id + ']').is(':visible')) {\r\n $(this).addClass('font-semi-sans')\r\n $('[data-label=' + id + ']').slideDown('slow')\r\n $('#' + id + ' span').animate(\r\n { deg: 45 },\r\n {\r\n duration: 400,\r\n step: function (now) {\r\n $(this).css({\r\n transform: 'rotate(' + now + 'deg)'\r\n })\r\n }\r\n }\r\n )\r\n }\r\n } else {\r\n $(this).addClass('font-semi-sans')\r\n $('[data-label=' + id + ']').slideDown('slow')\r\n $('#' + id + ' span').animate(\r\n { deg: 45 },\r\n {\r\n duration: 400,\r\n step: function (now) {\r\n $(this).css({ transform: 'rotate(' + now + 'deg)' })\r\n }\r\n }\r\n )\r\n }\r\n })\r\n\r\n $('.jbtnpress').mousedown(function () {\r\n const idrange =\r\n '#' +\r\n $(this).siblings('.range-slider').find('.range').attr('id')\r\n const iddatalist =\r\n '#' +\r\n $(this).siblings('.range-slider').find('datalist').attr('id')\r\n const opt = $(\r\n iddatalist + ' option[value=\"' + $(idrange).val() + '\"]'\r\n )\r\n const reg = /[-;]+/g\r\n const tableau = iddatalist.split(reg)\r\n const idDivContainerMulitselect =\r\n '.j_' +\r\n tableau[2].toUpperCase() +\r\n '_' +\r\n tableau[1].toUpperCase()\r\n $(idDivContainerMulitselect)\r\n .find('ul.multiselect-tailles3m')\r\n .each(function (index, item) {\r\n const option = $($(item).find('.checkbox-t3m'))\r\n option.each(function () {\r\n if ($(this).val() == opt.attr('id')) {\r\n $(this).trigger('click')\r\n }\r\n })\r\n })\r\n })\r\n\r\n $('.j_accordion_3M p.h3').on('click', function () {\r\n if ($(J_ACCORDION_3M).hasClass('open')) {\r\n $('.j_accordion_3M > div').hide()\r\n $(J_ACCORDION_3M).removeClass('open')\r\n } else {\r\n $(J_ACCORDION_3M).addClass('open')\r\n $(' .j_accordion_3M > div').fadeIn()\r\n }\r\n })\r\n }\r\n\r\n $(document).bind('click', function (e) {\r\n const $clicked = $(e.target)\r\n if (!$clicked.parents().hasClass('zonetailles3m'))\r\n $('.zonetailles3m .multiselect-container').slideUp()\r\n if (\r\n !$clicked.parents().hasClass('bandeau-3M') &&\r\n !$clicked.hasClass('j_show_profil3m')\r\n ) {\r\n $('.bandeau-3M').css('background-color', '#fff')\r\n $('.bloc-config-taille').removeClass('open')\r\n $('.bloc-config-taille > div').hide('slow')\r\n }\r\n })\r\n\r\n setToolTip()\r\n setOnClickTaille()\r\n}\r\n\r\n/*\r\n * Gestion de l'événement onClick sur les bouton j_submit3MPlus (GO)\r\n * Actuellement, cela va rediriger vers la page du genre auquel correspond ce bouton\r\n */\r\nfunction setOnClickEvent($element) {\r\n $element.off('click', setDisableEvent)\r\n $element.on('click', setEnableEvent)\r\n}\r\n\r\nfunction setOnClickTaille() {\r\n $('.j_taillesorigin .checkbox-t3m').on('click', function (event) {\r\n const parentUL = $(this).parents('ul.multiselect-tailles3m')\r\n const labelTaille = parentUL.siblings('.btn-multiselect')\r\n const options = parentUL.find('.checkbox-t3m:checked')\r\n if (options.length === 0) {\r\n // Si on a rien de sélectionné\r\n labelTaille.html(TAILLE + C_ARROW)\r\n } else if (options.length > 0 && options.length < 3) {\r\n // Si on a moins de 3 options sélectionnées\r\n let selected = ''\r\n options.each(function () {\r\n selected += $(this).data('label') + ', '\r\n })\r\n labelTaille.html(selected.substr(0, selected.length - 2) + C_ARROW)\r\n } else {\r\n // Si on a plus de 3 options sélectionnées\r\n labelTaille.html(options.length + ' ' + TAILLES + C_ARROW)\r\n }\r\n\r\n $(event.currentTarget).removeClass(C_CLASS_PINK_BUTTON)\r\n tooltips.hideToolTip(event.currentTarget)\r\n\r\n getDataAndSaveProfileV2(this, parentUL)\r\n })\r\n $('.lestailles .checkbox-t3m').on('click', function (event) {\r\n const parentUL = $(this).parents('ul.multiselect-tailles3m')\r\n const labelTaille = parentUL.siblings('.btn-multiselect')\r\n const options = parentUL.find('.checkbox-t3m:checked')\r\n if (options.length === 0) {\r\n // Si on a rien de sélectionné\r\n if ($(this).parents('.genre').hasClass('HAUT')) {\r\n labelTaille.html('Haut' + C_ARROW)\r\n }\r\n if ($(this).parents('.genre').hasClass('BAS')) {\r\n labelTaille.html('Bas' + C_ARROW)\r\n }\r\n if ($(this).parents('.genre').hasClass('CHAUSSURE')) {\r\n labelTaille.html('Chaussures' + C_ARROW)\r\n }\r\n } else if (options.length > 0 && options.length < 3) {\r\n // Si on a moins de 3 options sélectionnées\r\n let selected = ''\r\n options.each(function () {\r\n selected += $(this).data('label') + ', '\r\n })\r\n labelTaille.html(selected.substr(0, selected.length - 2) + C_ARROW)\r\n } else {\r\n // Si on a plus de 3 options sélectionnées\r\n labelTaille.html(options.length + ' ' + TAILLES + C_ARROW)\r\n }\r\n\r\n $(event.currentTarget).removeClass(C_CLASS_PINK_BUTTON)\r\n tooltips.hideToolTip(event.currentTarget)\r\n\r\n getDataAndSaveProfileV2(this, parentUL)\r\n })\r\n\r\n $('.bloclestailles .checkbox-t3m').on('click', function (event) {\r\n let isMobile = false // initiate as false\r\n // device detection\r\n if (\r\n /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(\r\n navigator.userAgent\r\n ) ||\r\n /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(\r\n navigator.userAgent.substr(0, 4)\r\n )\r\n ) {\r\n isMobile = true\r\n }\r\n const parentUL = $(this).parents('.multiselect-tailles3m')\r\n const labelTaille = parentUL.parent().siblings('.j_tailles3m')\r\n const options = parentUL.find('.checkbox-t3m:checked')\r\n if (options.length === 0) {\r\n // Si on a rien de sélectionné\r\n if ($(this).parents('.genre').hasClass('HAUT')) {\r\n if (\r\n isMobile &&\r\n $(this).parents('.catalogue3m').hasClass('cat3m')\r\n ) {\r\n labelTaille.html(TAILLES_DE + ' ' + HAUT + C_ARROW2ROTATE)\r\n } else {\r\n labelTaille.html(HAUT + C_ARROW2ROTATE)\r\n }\r\n }\r\n if ($(this).parents('.genre').hasClass('BAS')) {\r\n if (\r\n isMobile &&\r\n $(this).parents('.catalogue3m').hasClass('cat3m')\r\n ) {\r\n labelTaille.html(TAILLES_DE + ' ' + BAS + C_ARROW2ROTATE)\r\n } else {\r\n labelTaille.html(BAS + C_ARROW2ROTATE)\r\n }\r\n }\r\n if ($(this).parents('.genre').hasClass('AGE')) {\r\n if (\r\n isMobile &&\r\n $(this).parents('.catalogue3m').hasClass('cat3m')\r\n ) {\r\n labelTaille.html(AGE + C_ARROW2ROTATE)\r\n } else {\r\n labelTaille.html(AGES + C_ARROW2ROTATE)\r\n }\r\n }\r\n if ($(this).parents('.genre').hasClass('CHAUSSURE')) {\r\n if (\r\n isMobile &&\r\n $(this).parents('.catalogue3m').hasClass('cat3m')\r\n ) {\r\n labelTaille.html(POINTURES + C_ARROW2ROTATE)\r\n } else {\r\n labelTaille.html(CHAUSSURES + C_ARROW2ROTATE)\r\n }\r\n }\r\n if ($(this).parents('.genre').hasClass('CHAUSSURES')) {\r\n if (\r\n isMobile &&\r\n $(this).parents('.catalogue3m').hasClass('cat3m')\r\n ) {\r\n labelTaille.html(POINTURES + C_ARROW2ROTATE)\r\n } else {\r\n labelTaille.html(CHAUSSURES + C_ARROW2ROTATE)\r\n }\r\n }\r\n } else if (options.length > 0 && options.length < 3) {\r\n // Si on a moins de 3 options sélectionnées\r\n let mongenre = ''\r\n if ($(this).parents('.genre').hasClass('HAUT')) {\r\n if (\r\n isMobile &&\r\n $(this).parents('.catalogue3m').hasClass('cat3m')\r\n ) {\r\n mongenre = TAILLES_DE + ' ' + HAUT\r\n } else {\r\n mongenre = HAUT\r\n }\r\n }\r\n if ($(this).parents('.genre').hasClass('BAS')) {\r\n if (\r\n isMobile &&\r\n $(this).parents('.catalogue3m').hasClass('cat3m')\r\n ) {\r\n mongenre = TAILLES_DE + ' ' + BAS\r\n } else {\r\n mongenre = BAS\r\n }\r\n }\r\n if ($(this).parents('.genre').hasClass('AGE')) {\r\n if (\r\n isMobile &&\r\n $(this).parents('.catalogue3m').hasClass('cat3m')\r\n ) {\r\n mongenre = AGE + ' ' + BAS\r\n } else {\r\n mongenre = AGE\r\n }\r\n }\r\n if ($(this).parents('.genre').hasClass('CHAUSSURE')) {\r\n if (\r\n isMobile &&\r\n $(this).parents('.catalogue3m').hasClass('cat3m')\r\n ) {\r\n mongenre = POINTURES\r\n } else {\r\n mongenre = CHAUSSURES\r\n }\r\n }\r\n if ($(this).parents('.genre').hasClass('CHAUSSURES')) {\r\n if (\r\n isMobile &&\r\n $(this).parents('.catalogue3m').hasClass('cat3m')\r\n ) {\r\n mongenre = POINTURES\r\n } else {\r\n mongenre = CHAUSSURES\r\n }\r\n }\r\n let selected = ''\r\n options.each(function () {\r\n selected += $(this).data('label') + ', '\r\n })\r\n labelTaille.html(\r\n mongenre +\r\n ' (' +\r\n selected.substr(0, selected.length - 2) +\r\n ')' +\r\n C_ARROW2ROTATE\r\n )\r\n } else {\r\n let mongenre = ''\r\n\r\n // Si on a plus de 3 options sélectionnées\r\n if ($(this).parents('.genre').hasClass('HAUT')) {\r\n if (\r\n isMobile &&\r\n $(this).parents('.catalogue3m').hasClass('cat3m')\r\n ) {\r\n mongenre = TAILLES_DE + ' ' + HAUT\r\n } else {\r\n mongenre = HAUT\r\n }\r\n }\r\n if ($(this).parents('.genre').hasClass('BAS')) {\r\n if (\r\n isMobile &&\r\n $(this).parents('.catalogue3m').hasClass('cat3m')\r\n ) {\r\n mongenre = TAILLES_DE + ' ' + BAS\r\n } else {\r\n mongenre = BAS\r\n }\r\n }\r\n if ($(this).parents('.genre').hasClass('AGE')) {\r\n mongenre = AGE\r\n }\r\n if ($(this).parents('.genre').hasClass('CHAUSSURE')) {\r\n if (\r\n isMobile &&\r\n $(this).parents('.catalogue3m').hasClass('cat3m')\r\n ) {\r\n mongenre = POINTURES\r\n } else {\r\n mongenre = CHAUSSURES\r\n }\r\n }\r\n if ($(this).parents('.genre').hasClass('CHAUSSURES')) {\r\n if (\r\n isMobile &&\r\n $(this).parents('.catalogue3m').hasClass('cat3m')\r\n ) {\r\n mongenre = POINTURES\r\n } else {\r\n mongenre = CHAUSSURES\r\n }\r\n }\r\n labelTaille.html(\r\n mongenre +\r\n ' (' +\r\n options.length +\r\n ' ' +\r\n TAILLES +\r\n ')' +\r\n C_ARROW2ROTATE\r\n )\r\n }\r\n\r\n $(event.currentTarget).removeClass(C_CLASS_PINK_BUTTON)\r\n tooltips.hideToolTip(event.currentTarget)\r\n\r\n getDataAndSaveProfileV2(this, parentUL)\r\n })\r\n}\r\n\r\n/*\r\n * Switch pour rediriger vers la bonne page du genre selon le type de 3MPlus\r\n */\r\nfunction switch3MPlus(event) {\r\n const $form = $(J_PANEL_ITEM + ':not(.hidden)').find('form')\r\n const type = $($form).data(J_TYPE_MODULE_DATA)\r\n let location = ''\r\n let gender\r\n\r\n if (type === 'simple3MPlus') {\r\n gender = $($form).data(J_PROFILE_GENDER_DATA)\r\n if (gender === 'HOMME') {\r\n location = $(event.currentTarget).data(J_LINKHOMME_DATA)\r\n }\r\n if (gender === 'FEMME') {\r\n location = $(event.currentTarget).data(J_LINKFEMME_DATA)\r\n }\r\n if (gender === 'FILLE') {\r\n location = $(event.currentTarget).data(J_LINKFILLE_DATA)\r\n }\r\n if (gender === 'GARCON') {\r\n location = $(event.currentTarget).data(J_LINKGARCON_DATA)\r\n }\r\n } else if (type === 'avance3MPlus') {\r\n gender = $(event.currentTarget)\r\n .closest('form')\r\n .data(J_PROFILE_GENDER_DATA)\r\n location = $(event.currentTarget).data(J_LINK_DATA)\r\n }\r\n redirectToNewGengerProfilePage(gender, location) // Fonction qui va rediriger vers le genre\r\n}\r\n\r\n/*\r\n * Efface l'événements on click sur les boutons\r\n */\r\nfunction blockGoButton($element) {\r\n $element.off('click', setEnableEvent)\r\n $element.on('click', setDisableEvent)\r\n}\r\n\r\nfunction getDataAndSaveProfileV2(element, parent) {\r\n const $form = $(element).closest('form') // On récupère le plus proche formulaire\r\n const data = []\r\n const selectedDataFamily = $(parent).data(J_FAMILY_DATA)\r\n const category = $($form).data(J_PROFILE_GENDER_DATA)\r\n let mustReload = false\r\n\r\n // On va construire le tableau de données. On se sert du form courrant pour cela, afin d'être sur que ce sont bien les bonnes données qui sont envoyées\r\n $form.find('ul.multiselect-tailles3m').each(function (index, item) {\r\n const option = $($(item).find('.checkbox-t3m:checked'))\r\n if (option.length > 0) {\r\n const dataFamily = $(item).data(J_FAMILY_DATA)\r\n const values = []\r\n option.each(function () {\r\n values.push(this.value)\r\n })\r\n\r\n data[dataFamily] = values\r\n } else {\r\n data[$(item).data(J_FAMILY_DATA)] = []\r\n }\r\n })\r\n let name = profileCookie.existProfilByGender(category)\r\n\r\n if (name === undefined) {\r\n // Si le profil existe pas, on construit son nom\r\n name = category + ' ' + (profileCookie.getMaxNbOfProfile() + 1)\r\n }\r\n\r\n profileCookie.saveDataAsCookie(category, name, data, selectedDataFamily)\r\n\r\n checkIfGoButtonIsAvailableAndShow($form)\r\n\r\n // On récupère la variable indiquant si on reload la page ou non\r\n mustReload = $(J_PANEL_ITEM).data(J_MUST_LOAD_DATA)\r\n if (mustReload !== undefined && mustReload === true) {\r\n if ($(J_URL).length > 0) {\r\n if ($(J_URL).val().indexOf('/Catalogue') !== -1) {\r\n window.location.href = url.deleteParams(\r\n 'ct',\r\n window.location.href\r\n ) // GCVIA fix Mantis 0001952\r\n }\r\n }\r\n }\r\n}\r\n\r\n/*\r\n * Redirige vers la page du genre passé en paramètre\r\n */\r\nfunction redirectToNewGengerProfilePage(gender, location) {\r\n const profile = profileCookie.getProfileByGender(gender)\r\n switch (gender) {\r\n case 'FEMME':\r\n case 'HOMME':\r\n if (profile !== undefined) {\r\n if (profile.sizes !== undefined) {\r\n if (\r\n profile.sizes.BAS !== undefined &&\r\n profile.sizes.BAS.length > 0 &&\r\n profile.sizes.HAUT !== undefined &&\r\n profile.sizes.HAUT.length > 0 &&\r\n profile.sizes.CHAUSSURE !== undefined &&\r\n profile.sizes.CHAUSSURE.length > 0\r\n ) {\r\n document.location.href = location\r\n }\r\n }\r\n }\r\n break\r\n case 'FILLE':\r\n case 'GARCON':\r\n if (profile !== undefined) {\r\n if (profile.sizes !== undefined) {\r\n if (\r\n profile.sizes.AGE !== undefined &&\r\n profile.sizes.AGE.length > 0 &&\r\n profile.sizes.CHAUSSURE !== undefined &&\r\n profile.sizes.CHAUSSURE.length > 0\r\n ) {\r\n document.location.href = location\r\n }\r\n }\r\n }\r\n break\r\n default:\r\n document.location.href = location\r\n }\r\n}\r\n\r\n/*\r\n * Va récupérer le form et vérifier pour vérifier si on doit afficher le bouton cliquable ou non\r\n */\r\nfunction checkButtonForEachForm() {\r\n const selectedGender = $(J_BORDER_SELECTED + C_ACTIVE_SELECTOR)\r\n .find(J_LIST_CATEGORY)\r\n .data(J_GENDER_DATA)\r\n\r\n const form = $(\r\n J_FORM_3MPLUS +\r\n '[data-' +\r\n J_PROFILE_GENDER_DATA +\r\n \"='\" +\r\n selectedGender +\r\n \"']\"\r\n )\r\n checkIfGoButtonIsAvailableAndShow(form)\r\n}\r\n\r\n/*\r\n * Fonction appelé sur le click du bouton go grisé.\r\n * Si le bouton est grisé, on appel cette méthode qui va afficher les tooltips\r\n */\r\nfunction setOnClickToolTip(event) {\r\n let form = $(J_PANEL_ITEM + ':not(.hidden)').find('form')\r\n const type = $(form).data(J_TYPE_MODULE_DATA)\r\n let gender = ''\r\n let location = 'right'\r\n\r\n if (type === 'simple3MPlus') {\r\n gender = $(form).data(J_PROFILE_GENDER_DATA)\r\n location = 'bottom'\r\n } else if (type === 'avance3MPlus') {\r\n gender = $(event.currentTarget)\r\n .closest('form')\r\n .data(J_PROFILE_GENDER_DATA)\r\n form = $(event.currentTarget).closest('form')\r\n }\r\n\r\n $(form)\r\n .find('ul.multiselect-tailles3m')\r\n .each(function (index, item) {\r\n const option = $($(item).find('.checkbox-t3m:checked'))\r\n if (option.length == 0) {\r\n const dataFamily = $(item).data(J_FAMILY_DATA)\r\n const div = $(item).closest('.j_' + gender + '_' + dataFamily)\r\n const button = $(div).find('.btn-multiselect') // On récupère le button le plus proche : Dans le cas du simple et avancé, on a pas de form\r\n button.addClass(C_CLASS_PINK_BUTTON)\r\n tooltips.setEventOnItem(\r\n button,\r\n location,\r\n VEUILLEZ_SELECTIONNER_TAILLES\r\n )\r\n }\r\n })\r\n}\r\n$('.j_submit3MPlusDropDown').on('click', function () {\r\n window.location.href = url.deleteParams('np', window.location.href)\r\n})\r\n/*\r\n * Va checker si il y a des counts, et s'ils sont à 0. Si c'est le cas on met en place les tooltips\r\n */\r\nfunction setToolTip() {\r\n const $triggers = $(J_TOOLTIP_TRIGGER)\r\n let dataCount = -1\r\n\r\n if ($triggers.length > 0) {\r\n $triggers.each(function (index, item) {\r\n dataCount = $(item).data(J_TRIGGER_DATA)\r\n\r\n if (dataCount === 0) {\r\n // On regarde si on a bien 0\r\n const dataFamily = $(item).data(J_FAMILY_DATA)\r\n const form = $(\r\n 'ul.multiselect-tailles3m' +\r\n '[data-' +\r\n J_FAMILY_DATA +\r\n \"='\" +\r\n dataFamily +\r\n \"']\"\r\n ).closest('form') // On récupère le form correspondant à la nature (haut, bas, etc.)\r\n if (form.length > 0) {\r\n const button = $(form).find('button') // et grace au form, on récupère le bouton\r\n button.addClass(C_CLASS_PINK_BUTTON)\r\n tooltips.setEventOnItem(\r\n button,\r\n 'right',\r\n VEUILLEZ_SELECTIONNER_TAILLES\r\n )\r\n }\r\n }\r\n })\r\n }\r\n}\r\n\r\n/*\r\n * Prend le form courant en paramètre. Va vérifier si les multiselects de ce form ont des valeurs sélectionnées\r\n * Si oui, on va afficher le bouton cliquable et setter le click dessus\r\n * Si non, on va afficher le bouton non cliquable et supprimer l'event click dessus\r\n */\r\nfunction checkIfGoButtonIsAvailableAndShow(form) {\r\n const button = $(J_BUTTON_SUBMIT)\r\n const classForShowing = C_BUTTON_STYLE_ON\r\n const classForHidding = C_BUTTON_STYLE_OFF\r\n let result = false\r\n\r\n // pour chaque multiselect, on va vérifier si on a des options sélectionnées. Si oui, on affiche le bouton cliquable\r\n // Si non, on affiche le non cliquable et on sort de la boucle\r\n $(form)\r\n .find('ul.multiselect-tailles3m')\r\n .each(function (index, item) {\r\n const option = $($(item).find('.checkbox-t3m:checked'))\r\n if (option.length > 0) {\r\n $(button).addClass(classForShowing)\r\n $(button).removeClass(classForHidding)\r\n result = true\r\n } else {\r\n blockGoButton($(button))\r\n $(button).removeClass(classForShowing)\r\n $(button).addClass(classForHidding)\r\n result = false\r\n return false\r\n }\r\n })\r\n if (result === true) {\r\n setOnClickEvent($(button)) // Si on arrive là, c'est qu'on a des tailles dans les trois champs. Donc on peut setter le click sur le bouton\r\n }\r\n}\r\n\r\nexport default {\r\n process: process,\r\n processLight: processLight\r\n}\r\n","'use strict'\r\n\r\n/**\r\n * Module de gestion du mini panier dans le header\r\n */\r\n\r\nconst J_MINIPANIER_MODAL = '#modal-resume-panier'\r\nconst J_MINIPANIER_MODAL_CONTENT = '#modal-resume-panier'\r\nconst J_MINIPANIER_HOVER_CLASS = '.panierjs'\r\nconst J_TOOPENLOGINFORM = '.j_to_open_loginForm'\r\nconst C_OPEN = 'open'\r\nlet timeOut\r\nlet isPanierCharger = false\r\n\r\n/**\r\n * Initialise les events du mini panier\r\n */\r\nfunction setEvent() {\r\n $(J_MINIPANIER_HOVER_CLASS).tooltip()\r\n\r\n $(J_MINIPANIER_MODAL).hide()\r\n\r\n $(J_MINIPANIER_HOVER_CLASS).hover(\r\n function () {\r\n // affichage en ajax du contenu du mini panier\r\n showMiniPanier()\r\n $(J_TOOPENLOGINFORM).removeClass(C_OPEN)\r\n /* supprimer la.menu-user si newheader */\r\n $('.menu-user-loggedin').removeClass('d-block')\r\n $('.j_to_open_personalshop').removeClass('open')\r\n },\r\n function () {\r\n // affichage en ajax du contenu du mini panier\r\n timeOut = setTimeout(function () {\r\n hideMiniPanier()\r\n }, 150)\r\n }\r\n )\r\n\r\n $(J_MINIPANIER_MODAL_CONTENT).hover(\r\n function () {\r\n // affichage en ajax du contenu du mini panier\r\n clearTimeout(timeOut)\r\n },\r\n function () {\r\n hideMiniPanier()\r\n }\r\n )\r\n}\r\n\r\nfunction process() {\r\n let isMobile = false // initiate as false\r\n // device detection\r\n if (\r\n /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(\r\n navigator.userAgent\r\n ) ||\r\n /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(\r\n navigator.userAgent.substr(0, 4)\r\n )\r\n ) {\r\n isMobile = true\r\n }\r\n\r\n $(J_MINIPANIER_HOVER_CLASS).mouseenter(function () {\r\n if (isPanierCharger === false && isMobile === false) {\r\n isPanierCharger = true\r\n UpdateMiniPanier(showMiniPanier, true)\r\n }\r\n })\r\n}\r\n\r\n/**\r\n * Mets à jour le panier\r\n * @param {Function} callback\r\n * @param {boolean} disableHideMinipanier\r\n */\r\nexport function UpdateMiniPanier(callback, disableHideMinipanier) {\r\n $.ajax({\r\n url: '/panier/ResumePanier',\r\n type: 'GET',\r\n dataType: 'html', // On désire recevoir du HTML\r\n success: function (html) {\r\n $(J_MINIPANIER_MODAL).html(html)\r\n isPanierCharger = true\r\n\r\n if (callback) {\r\n callback()\r\n\r\n if (!disableHideMinipanier) {\r\n setTimeout(hideMiniPanier)\r\n }\r\n }\r\n }\r\n })\r\n}\r\n\r\nfunction showMiniPanier() {\r\n if ($('#modal-resume-panier article').length > 0) {\r\n $(J_MINIPANIER_MODAL).show()\r\n }\r\n}\r\n\r\nfunction hideMiniPanier() {\r\n $(J_MINIPANIER_MODAL).hide()\r\n}\r\n\r\n/**\r\n * Mets à jour le panier et affiche la modale\r\n */\r\nexport function UpdateAndFlashMiniPanier() {\r\n UpdateMiniPanier(showMiniPanier, 4500)\r\n}\r\n\r\nexport default {\r\n setEvent: setEvent,\r\n process: process,\r\n showMiniPanier: showMiniPanier\r\n}\r\n","'use strict'\r\n\r\n/**\r\n * Module LocalStorage pour la wishlist\r\n */\r\n\r\nconst ARTICLE_WISHLIST = 'articleswishlist'\r\n\r\n/**\r\n * Initialise la wishlist dans le localStorage\r\n * @param {boolean} force Force l'appel api pour la récupération de la wishlist\r\n */\r\nexport function InitialiserWishlistInLocalStorage(force) {\r\n if (\r\n window.location.search.indexOf('id') != -1 &&\r\n window.location.search.indexOf('key') != -1\r\n ) {\r\n force = true\r\n }\r\n\r\n if ($('.j_user_notconnected').length != 0) {\r\n nettoyer()\r\n } else {\r\n const data = localStorage.getItem(ARTICLE_WISHLIST)\r\n\r\n if (force === true || data === null) {\r\n $.ajax({\r\n url: '/WishList/GetArticles',\r\n success: function (data) {\r\n try {\r\n if (data != null && data.length > 0) {\r\n localStorage.setItem(\r\n ARTICLE_WISHLIST,\r\n JSON.stringify(data)\r\n )\r\n\r\n afficheWishlistCatalogue()\r\n } else {\r\n localStorage.setItem(\r\n ARTICLE_WISHLIST,\r\n JSON.stringify([])\r\n )\r\n }\r\n } catch (QuotaExceededError) {\r\n //TODO Gestion du LocalStorage plein\r\n }\r\n }\r\n })\r\n } else {\r\n afficheWishlistCatalogue()\r\n }\r\n }\r\n}\r\n\r\nfunction afficheWishlistCatalogue() {\r\n const listeArticle = JSON.parse(localStorage.getItem(ARTICLE_WISHLIST))\r\n\r\n if (listeArticle !== null) {\r\n listeArticle.forEach(function (article, index) {\r\n let item = $(\r\n \".wishListItem[data-refmodele='\" +\r\n article.RefModele +\r\n \"'][data-couleur='\" +\r\n article.CodeCouleur +\r\n \"']\"\r\n )\r\n if (item !== undefined && item.length > 0) {\r\n item.data('id', article.Id)\r\n item.attr('data-id', article.Id)\r\n item.addClass('is-wishlist')\r\n }\r\n\r\n item = $(\r\n \".wishListItem-sim[data-refmodele='\" +\r\n article.RefModele +\r\n \"'][data-couleur='\" +\r\n article.CodeCouleur +\r\n \"']\"\r\n )\r\n if (item !== undefined && item.length > 0) {\r\n item.data('id', article.Id)\r\n item.attr('data-id', article.Id)\r\n item.addClass('is-wishlist')\r\n }\r\n })\r\n }\r\n}\r\n\r\nfunction ajouterArticleWishList(article) {\r\n if (article.Id !== 0) {\r\n const liste = JSON.parse(localStorage.getItem(ARTICLE_WISHLIST))\r\n\r\n if (liste == null) {\r\n InitialiserWishlistInLocalStorage(true)\r\n } else {\r\n liste.push(article)\r\n localStorage.setItem(ARTICLE_WISHLIST, JSON.stringify(liste))\r\n afficheWishlistCatalogue()\r\n }\r\n } else {\r\n InitialiserWishlistInLocalStorage(true)\r\n }\r\n}\r\n\r\n/**\r\n * Supprime un élément dans la wishlist et réaffiche la wishlist catalogue\r\n * @param {string} articleId Id de l'article\r\n */\r\nexport function SupprimerArticleWishListInLocalStorage(articleId) {\r\n if (articleId === 0) {\r\n return\r\n }\r\n const wishlist = JSON.parse(localStorage.getItem(ARTICLE_WISHLIST))\r\n\r\n if (wishlist == null) {\r\n return\r\n }\r\n\r\n wishlist.forEach(function (element, index) {\r\n if (element.Id === articleId) {\r\n wishlist.splice(index, 1)\r\n localStorage.setItem(ARTICLE_WISHLIST, JSON.stringify(wishlist))\r\n return\r\n }\r\n })\r\n\r\n afficheWishlistCatalogue()\r\n}\r\n\r\nfunction nettoyer() {\r\n localStorage.removeItem(ARTICLE_WISHLIST)\r\n}\r\n\r\nexport default {\r\n ajouterArticleWishList: ajouterArticleWishList\r\n}\r\n","'use strict'\r\n\r\n/**\r\n * MODULE API GOOGLE\r\n * Recherche une adresse\r\n */\r\n\r\nimport mustache from 'mustache'\r\n\r\nlet inputRecherche\r\nlet formGroupRecherche\r\nlet formGroupAutocomplete\r\n\r\nfunction gererPays(codpaystri) {\r\n // gestion indicatif téléphone\r\n $('.j_select_indicatifTel').val(\r\n $('.j_select_indicatifTel')\r\n .find('[data-codepays=\"' + codpaystri + '\"]')\r\n .val()\r\n )\r\n\r\n // on cherche le codepays\r\n let codpays = ''\r\n const itemPays = $('.j_select_autresPays').find(\r\n '[data-trigramme=\"' + codpaystri + '\"]'\r\n )\r\n if (itemPays != undefined) {\r\n codpays = itemPays.data('value')\r\n }\r\n // DOM-TOM\r\n if (\r\n codpays == '' ||\r\n codpays == 'GP' ||\r\n codpays == 'GF' ||\r\n codpays == 'RE' ||\r\n codpays == 'MQ' ||\r\n codpays == 'YT' ||\r\n codpays == 'NC' ||\r\n codpays == 'PF' ||\r\n codpays == 'WF' ||\r\n codpays == 'PM'\r\n ) {\r\n codpays = 'FR'\r\n }\r\n\r\n $(\"[name='codePays']\").val(codpays)\r\n}\r\n\r\nfunction hideGoogleShowAdress() {\r\n if (formGroupRecherche.length > 0) {\r\n formGroupAutocomplete.hide()\r\n formGroupRecherche.show()\r\n\r\n afficherSaisieManuelAdresse()\r\n } else {\r\n formGroupAutocomplete.show()\r\n }\r\n}\r\n\r\nfunction afficherSaisieManuelAdresse() {\r\n $('.j-adress_manuel').unbind('click')\r\n $('.j-adress_manuel').click(function () {\r\n formGroupAutocomplete.show()\r\n formGroupRecherche.hide()\r\n const adresse = $(\"[name='adresse']\").val()\r\n const adresseAutoComplete = $(\"[name='adresseG']\").val()\r\n\r\n if (adresseAutoComplete != '' && adresse == '') {\r\n $(\"[name='adresse']\").val(adresseAutoComplete)\r\n $(\"[name='adresseG']\").val('')\r\n }\r\n\r\n $(\"[name='adresse']\").focus()\r\n })\r\n}\r\n\r\n// Liste des pays=developers.arcgis.com/rest/geocode/api-reference/geocode-coverage.htm\r\nfunction ListeAdresseAjax(recherche) {\r\n const parametres = {\r\n text: recherche,\r\n maxSuggestions: 5,\r\n countryCode:\r\n 'FRA, BEL, DEU, ITA, LUX, REU, ESP, CHE, GUF, MCO, PYF, BLM, MTQ, GLP, NCL, PRT, NLD',\r\n f: 'json'\r\n }\r\n\r\n $.ajax({\r\n type: 'GET',\r\n url: 'https://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer/suggest',\r\n data: parametres,\r\n success: function (reponse) {\r\n const template = $('#template').html()\r\n\r\n if (\r\n reponse.suggestions !== undefined &&\r\n reponse.suggestions !== null\r\n ) {\r\n const rendered = mustache.render(template, reponse)\r\n $('.autocomplete-adress').html(rendered)\r\n\r\n afficherSaisieManuelAdresse()\r\n\r\n $('.adress-item').click(function () {\r\n const magickey = $(this).data('key')\r\n if (magickey !== undefined) {\r\n infoAdresseAjax(magickey)\r\n }\r\n })\r\n }\r\n },\r\n failure: function (response) {}\r\n })\r\n}\r\n\r\nfunction infoAdresseAjax(key) {\r\n $('.autocomplete-adress').hide()\r\n\r\n const parametres = {\r\n outFields: '*',\r\n magicKey: key,\r\n f: 'json'\r\n }\r\n\r\n $.ajax({\r\n type: 'GET',\r\n url: 'https://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer/findAddressCandidates',\r\n data: parametres,\r\n success: function (reponse) {\r\n if (\r\n reponse.candidates !== undefined &&\r\n reponse.candidates[0] !== undefined\r\n ) {\r\n const data = reponse.candidates[0].attributes\r\n const codepostal = data.Postal\r\n const adresse = data.StAddr\r\n const ville = data.City\r\n const pays = data.Country\r\n\r\n $(\"[name='adresseG']\").val(reponse.candidates[0].address)\r\n $(\"[name='cp']\").val(codepostal)\r\n $(\"[name='ville']\").val(ville)\r\n $(\"[name='adresse']\").val(adresse)\r\n\r\n gererPays(pays)\r\n\r\n if (pays == 'FRA') {\r\n verifierCodepostalVille(codepostal, ville)\r\n }\r\n\r\n $('.j-adress_manuel').click()\r\n }\r\n },\r\n failure: function (response) {}\r\n })\r\n}\r\n\r\nfunction Process($formGroupRecherche, $inputRecherche, $formGroupAutocomplete) {\r\n formGroupRecherche = $formGroupRecherche\r\n inputRecherche = $inputRecherche\r\n formGroupAutocomplete = $formGroupAutocomplete\r\n\r\n $(document).ready(function () {\r\n hideGoogleShowAdress()\r\n\r\n inputRecherche.keydown(function () {\r\n if (inputRecherche.val().length < 3) {\r\n $('.autocomplete-adress').hide()\r\n return\r\n }\r\n\r\n $('.autocomplete-adress').show()\r\n\r\n ListeAdresseAjax(inputRecherche.val())\r\n })\r\n\r\n inputRecherche.blur(function () {\r\n setTimeout(function () {\r\n $('.autocomplete-adress').hide()\r\n }, 500)\r\n })\r\n })\r\n}\r\n\r\nfunction verifierCodepostalVille(codepostal, ville) {\r\n const data = {\r\n cp: codepostal\r\n }\r\n\r\n $.ajax({\r\n type: 'POST',\r\n url: '/Inscription/GetListOfVilleByCodePostal',\r\n data: data,\r\n success: function (data) {\r\n if (\r\n data === null ||\r\n data.ListVilles === null ||\r\n data.ListVilles === undefined ||\r\n data.ListVilles.length === 0\r\n ) {\r\n $('.j-adress_manuel').click()\r\n $(\"[name='ville']\").val('')\r\n $(\"[name='cp']\").change()\r\n } else {\r\n const villetrouve = data.ListVilles.find(function (element) {\r\n return (\r\n element.NomVille.toUpperCase() === ville.toUpperCase()\r\n )\r\n })\r\n\r\n if (villetrouve == undefined || villetrouve == null) {\r\n $('.j-adress_manuel').click()\r\n $(\"[name='ville']\").val('')\r\n $(\"[name='cp']\").change()\r\n }\r\n }\r\n },\r\n failure: function (response) {\r\n $('.j-adress_manuel').click()\r\n $(\"[name='ville']\").val('')\r\n $(\"[name='cp']\").change()\r\n $(\"[name='ville']\").focus()\r\n }\r\n })\r\n}\r\n\r\nexport default {\r\n Process: Process\r\n}\r\n","'use strict'\r\n\r\n/**\r\n * Module qui gère les transitions entre les deux formulaires connexion / inscription\r\n */\r\n\r\nimport tooltips from 'Modules/tooltips'\r\nimport ajaxLoader from 'Modules/ajaxLoader'\r\nimport { EN_RENSEIGNANT_DATE_ANNIVERSAIRE } from 'Modules/Resources/Label'\r\nimport { _500 } from 'Modules/Resources/Error'\r\n\r\nconst J_SUBMIT_FORGOTTEN_PASSWORD = '.j_submit_forgottenPassword'\r\nconst J_DATA_ACTION_RECOVER_PASSWORD = 'action'\r\nconst J_FORGOTTEN_PASSWORD_RESULT_LOCATION = '.j_forgottenPassword_result'\r\nconst C_HIDDEN = 'hidden'\r\nconst C_ERROR = 'has-error'\r\nconst C_SUCCESS = 'has-success'\r\nconst C_GREEN_CHECKED_ICON = 'icon-checkform-ok'\r\nconst J_BIRTHDAY_TOOLTIP = '.j_birthDay_tooltip'\r\nconst J_BIRTHDAY_TOOLTIP_PLACEMENT = 'placement'\r\nconst J_FORGOTTEN_PASSWORD_DIV_TO_HIDE = '.j_forgottenpassword_divToHide'\r\n\r\n/*\r\n * Fonction AJAX de récupération du mot de passe. Utiliser dans la modal de récupération du mdp\r\n */\r\nfunction recoverPassword(event) {\r\n const $form = $(event.target)\r\n const button = $form\r\n .find(J_SUBMIT_FORGOTTEN_PASSWORD + ':submit')\r\n .not(':hidden')\r\n const action = $(button).data(J_DATA_ACTION_RECOVER_PASSWORD)\r\n const parameters = $form.find(':input').not(':hidden').serializeArray()\r\n\r\n ajaxLoader.loadAndExecuteCallBack(\r\n 'POST',\r\n parameters,\r\n function (content) {\r\n const $location = $(J_FORGOTTEN_PASSWORD_RESULT_LOCATION)\r\n if (content.Result === false) {\r\n $location.empty().append(content.Message)\r\n $location.removeClass(C_HIDDEN)\r\n $location.removeClass(C_SUCCESS)\r\n $location.removeClass(C_GREEN_CHECKED_ICON)\r\n $location.addClass(C_ERROR)\r\n } else {\r\n $location.append(content.Message)\r\n $location.removeClass(C_HIDDEN)\r\n $location.removeClass(C_ERROR)\r\n $(J_FORGOTTEN_PASSWORD_DIV_TO_HIDE).addClass(C_HIDDEN)\r\n $location.find('i').addClass(C_GREEN_CHECKED_ICON)\r\n }\r\n },\r\n function () {\r\n // En cas d'échec on affiche une erreur\r\n const $location = $(J_FORGOTTEN_PASSWORD_RESULT_LOCATION)\r\n $location.removeClass(C_HIDDEN)\r\n $location.removeClass(C_SUCCESS)\r\n $location.addClass(C_ERROR)\r\n $location.empty().append(_500)\r\n },\r\n action\r\n )\r\n\r\n return false\r\n}\r\n\r\n/*\r\n * Gestion de la tooltip sur le champ birthday\r\n */\r\nfunction setEventToolTipsOnBirthDay() {\r\n const $location = $(J_BIRTHDAY_TOOLTIP)\r\n\r\n $location.on('mouseenter', function (event) {\r\n if ($(event.currentTarget) !== undefined) {\r\n tooltips.setEventOnItem(\r\n $(event.currentTarget),\r\n $(event.currentTarget).data(J_BIRTHDAY_TOOLTIP_PLACEMENT),\r\n EN_RENSEIGNANT_DATE_ANNIVERSAIRE\r\n )\r\n }\r\n })\r\n $location.on('mouseleave', function (event) {\r\n if ($(event.currentTarget) !== undefined) {\r\n tooltips.hideToolTip($(event.currentTarget))\r\n }\r\n })\r\n}\r\n\r\nexport default {\r\n recoverPassword: recoverPassword,\r\n setEventToolTipsOnBirthDay: setEventToolTipsOnBirthDay\r\n}\r\n","'use strict'\r\n/**\r\n * Module qui gère l'affichage du contenu du champ mdp au click\r\n */\r\n\r\nimport modal from 'Modules/modal'\r\nimport bootstrapValidationForm from 'Modules/bootstrapValidationForm'\r\nimport inscriptionConnexionCustomAction from 'Modules/inscriptionConnexionCustomAction'\r\n\r\nconst J_PRINT_PASSWORD = '.j_printPassword'\r\nconst J_PASSWORD = '.j_password'\r\nconst J_AFFICHER_VALUE = 'AFFICHER'\r\nconst J_MASQUER_VALUE = 'MASQUER'\r\n\r\n/*\r\n * Set l'event sur le lien 'affichage' pour afficher ou masquer le contenu du champ password\r\n */\r\nfunction setEventForPrintingPassword() {\r\n $(J_PRINT_PASSWORD).on('click', function (event) {\r\n const $password = $(J_PASSWORD)\r\n\r\n if ($password !== undefined) {\r\n if ($password.attr('type') === 'password') {\r\n $password.attr('type', 'text')\r\n $(event.currentTarget).empty().append(J_MASQUER_VALUE)\r\n } else if ($password.attr('type') === 'text') {\r\n $password.attr('type', 'password')\r\n $(event.currentTarget).empty().append(J_AFFICHER_VALUE)\r\n }\r\n }\r\n\r\n return false\r\n })\r\n}\r\n\r\n/**\r\n * Mot de passe oublié\r\n */\r\nfunction setEventMotDePasseOublie() {\r\n $('#passwordPerdu').click(function () {\r\n modal.creer(\r\n 'modalMotdepassePerdu',\r\n 'fade m-password-forgotten modal-pass-forgot in',\r\n window.location.origin + '/Inscription/ModalMotdepassePerdu/',\r\n initModalMotdepassePerdu\r\n )\r\n })\r\n\r\n function initModalMotdepassePerdu() {\r\n const J_PASSWORD_FORGOTTEN_FORM_ID = '.j-pwdForgotten'\r\n const J_PASSWORD_FORGOTTEN_ID = '.modal-pass-forgot'\r\n\r\n bootstrapValidationForm.initModalForm(\r\n J_PASSWORD_FORGOTTEN_ID,\r\n J_PASSWORD_FORGOTTEN_FORM_ID,\r\n inscriptionConnexionCustomAction.recoverPassword\r\n )\r\n }\r\n}\r\n\r\nexport default {\r\n setEventForPrintingPassword: setEventForPrintingPassword,\r\n setEventMotDePasseOublie: setEventMotDePasseOublie\r\n}\r\n","'use strict'\r\n\r\n/**\r\n * MODULE ADRESSE INSCRIPTION\r\n */\r\n\r\nimport { ERREUR_INTERNE_RECUPERATION_VILLE } from 'Modules/Resources/Error'\r\nimport { SELECTIONNEZ_VILLE } from 'Modules/Resources/Label'\r\nimport ajaxLoader from 'Modules/ajaxLoader'\r\nimport urlModule from 'Modules/url'\r\n\r\nconst J_COMPLEMENT_ADRESSE_LINK = '.j_inscriptionProcess_complementAdressClick'\r\nconst J_COMPLEMENT_ADRESSE = '.j_inscriptionProcess_complementAdresse'\r\nconst J_CODE_POSTAL = '.j_inscriptionProcess_codePostal'\r\nconst J_CODE_POSTAL_NAME = 'cp'\r\nconst J_CODE_POSTAL_ACTION = 'action'\r\nconst J_DIV_ERROR_CODE_POSTAL = '.j_inscriptionProcess_codePostalError'\r\nconst J_VILLE_SELECTOR = '.j_inscriptionProcess_villeSelector'\r\nconst J_CLASSICAL_VILLE_INPUT = '.j_inscriptionProcess_villeInput'\r\nconst C_HIDDEN = 'hidden'\r\nconst J_SOURCE_AJAX_DATA = 'source'\r\nconst J_DATA_VALUE_PAYS = 'value'\r\nconst J_VILLE_ERROR = '.j_inscriptionProcess_villeError'\r\nconst J_AUTRES_PAYS_LINK = '.j_inscriptionProcess_autresPays'\r\nconst J_AUTRES_PAYS_SELECT = '.j_select_autresPays'\r\nconst J_LABEL_PAYS_TO_HIDE = '.j_inscriptionProcess_PaysToHide'\r\nconst J_VILLE_NAME = 'ville'\r\nconst J_INSCRIPTION_ERROR = '.j_inscription_error'\r\nconst J_MODIFIER_ADRESSE_LIVRAISON_BUTTON = '.j_submit_modifierAdresseLivraison'\r\nconst J_MODIFIER_ADRESSE_FACTURATION_BUTTON =\r\n '.j_submit_modifierAdresseFacturation'\r\nconst J_DATA_ACTION_MODIFICATION_ADRESSE_LIVRAISON = 'action'\r\nconst J_DATA_ACTION_MODIFICATION_ADRESSE_FACTURATION = 'actionfacturation'\r\nconst J_TELEPHONE = '.j_telephone'\r\nconst J_LAST_TELEPHONE_NAME = 'telephonePart5'\r\nconst J_OTHER_TELEPHONE = '.j_otherPaysTelephone'\r\nconst J_AUTRES_VILLES = 'j_autres_villes'\r\nconst J_CHANGE_ADDRESS_POPUP = '.j_modal_change_address'\r\n\r\nconst J_CODE_POSTAL_SELECTOR = '.j_code_postal_select'\r\nconst J_LINE_ADRESSE_SELECTOR = '.j_line_adresse_select'\r\nconst J_COMPLEMENT_ADRESSE_SELECTOR = '.j_complement_adresse_select'\r\nconst J_VILLE_NAME_SELECTOR = '.j_ville_name_select'\r\nconst J_NAME_SELECTOR = '.j_name_select'\r\n\r\n/*\r\n * Fonction de validation du formulaire et d'appel du process d'inscription en ajax\r\n * pour modification d'adresse inscription en popup\r\n */\r\nfunction processModificationAdresseLivraison(event) {\r\n const $form = $(event.target)\r\n const button = $form\r\n .find(J_MODIFIER_ADRESSE_LIVRAISON_BUTTON + ':submit')\r\n .not(':hidden')\r\n const action = $(button).data(J_DATA_ACTION_MODIFICATION_ADRESSE_LIVRAISON)\r\n\r\n const parameters = $form\r\n .find(':input')\r\n .not(J_AUTRES_PAYS_SELECT)\r\n .serializeArray()\r\n const $pays = $(J_AUTRES_PAYS_SELECT)\r\n\r\n if ($pays.val() == '') {\r\n return false\r\n }\r\n\r\n parameters.push({\r\n name: $pays.attr('name'),\r\n value: $($pays.find(':selected')).data(J_DATA_VALUE_PAYS)\r\n })\r\n\r\n ajaxLoader.loadAndExecuteCallBack(\r\n 'POST',\r\n parameters,\r\n function (content) {\r\n if (content.Result === false) {\r\n $(J_INSCRIPTION_ERROR).removeClass(C_HIDDEN)\r\n $(J_INSCRIPTION_ERROR).empty().append(content.Message)\r\n } else {\r\n $(J_LINE_ADRESSE_SELECTOR).empty().append(content.LigneAdresse)\r\n if (content.ComplementLigneAdresse != null) {\r\n $(J_COMPLEMENT_ADRESSE_SELECTOR)\r\n .empty()\r\n .append(content.ComplementLigneAdresse)\r\n }\r\n $(J_CODE_POSTAL_SELECTOR + J_VILLE_NAME_SELECTOR)\r\n .empty()\r\n .append(content.CodePostal + ' - ' + content.Ville)\r\n $(J_NAME_SELECTOR)\r\n .empty()\r\n .append(content.Prenom + ' ' + content.Nom)\r\n\r\n const redirectionUrl = urlModule.parseRedirectionParameter()\r\n\r\n if (redirectionUrl !== undefined && redirectionUrl !== '') {\r\n parent.location.href = redirectionUrl\r\n } else {\r\n // close popup\r\n $(J_CHANGE_ADDRESS_POPUP).modal('hide')\r\n }\r\n\r\n if (content.Reload === true) {\r\n window.location.reload(true)\r\n }\r\n }\r\n },\r\n function () {\r\n // En cas d'échec on affiche une erreur\r\n },\r\n action\r\n )\r\n\r\n return false\r\n}\r\n\r\nfunction processModificationAdresseFacturation(event) {\r\n const $form = $(event.target)\r\n const button = $form\r\n .find(J_MODIFIER_ADRESSE_FACTURATION_BUTTON + ':submit')\r\n .not(':hidden')\r\n const action = $(button).data(\r\n J_DATA_ACTION_MODIFICATION_ADRESSE_FACTURATION\r\n )\r\n const parameters = $form\r\n .find(':input')\r\n .not(':hidden')\r\n .not(J_AUTRES_PAYS_SELECT)\r\n .serializeArray()\r\n const $pays = $(J_AUTRES_PAYS_SELECT)\r\n\r\n parameters.push({\r\n name: $pays.attr('name'),\r\n value: $($pays.find(':selected')).data(J_DATA_VALUE_PAYS)\r\n })\r\n\r\n ajaxLoader.loadAndExecuteCallBack(\r\n 'POST',\r\n parameters,\r\n function (content) {\r\n if (content.Result === false) {\r\n $(J_INSCRIPTION_ERROR).removeClass(C_HIDDEN)\r\n $(J_INSCRIPTION_ERROR).empty().append(content.Message)\r\n } else {\r\n const redirectionUrl = urlModule.parseRedirectionParameter()\r\n\r\n if (redirectionUrl !== undefined && redirectionUrl !== '') {\r\n parent.location.href = redirectionUrl\r\n }\r\n }\r\n },\r\n function () {\r\n // En cas d'échec on affiche une erreur\r\n },\r\n action\r\n )\r\n\r\n return false\r\n}\r\n\r\n/*\r\n * Fonction d'apparition du champ complément d'adresse au clique\r\n */\r\nfunction setEventOnComplementAdresseLink() {\r\n $(J_COMPLEMENT_ADRESSE_LINK).on('click', function (event) {\r\n $(J_COMPLEMENT_ADRESSE).removeClass(C_HIDDEN)\r\n $(event.currentTarget).addClass(C_HIDDEN)\r\n return false\r\n })\r\n}\r\n\r\n/*\r\n * Fonction d'affichage des villes à partir du CP rentré par l'utilisateur\r\n */\r\nfunction setEventForGettingVillesByCodePostal() {\r\n $(J_CODE_POSTAL).on('change paste keyup', function (event) {\r\n // on execute sur les events de modidification de la value du champ\r\n // $(J_AUTRES_PAYS_SELECT + ' option[data-value=FR]').remove();\r\n $(J_AUTRES_PAYS_SELECT).removeClass(C_HIDDEN)\r\n $(J_LABEL_PAYS_TO_HIDE).addClass(C_HIDDEN)\r\n\r\n if (event.preventDefault) {\r\n event.preventDefault()\r\n } else {\r\n event.returnValue = false\r\n }\r\n\r\n if (\r\n $(J_AUTRES_PAYS_SELECT + ' option:selected').data('value') !=\r\n 'FR' &&\r\n $(J_AUTRES_PAYS_SELECT + ' option:selected').data('value') !=\r\n 'GF' &&\r\n $(J_AUTRES_PAYS_SELECT + ' option:selected').data('value') !=\r\n 'GP' &&\r\n $(J_AUTRES_PAYS_SELECT + ' option:selected').data('value') !=\r\n 'MQ' &&\r\n $(J_AUTRES_PAYS_SELECT + ' option:selected').data('value') !=\r\n 'MU' &&\r\n $(J_AUTRES_PAYS_SELECT + ' option:selected').data('value') !=\r\n 'PM' &&\r\n $(J_AUTRES_PAYS_SELECT + ' option:selected').data('value') != 'RE'\r\n ) {\r\n // On ne fais pas le chargement de la liste si ce n'est pas nécessaire\r\n return\r\n }\r\n\r\n const form = $(event.currentTarget).closest('form')\r\n\r\n import('Modules/bootstrapValidationForm').then(\r\n (bootstrapValidationForm) => {\r\n bootstrapValidationForm.default.validateField(\r\n '#' + $(form).attr('id'),\r\n $(event.currentTarget).attr('name')\r\n ) // On dois valider le field si on veut que le isValidField fonctionne\r\n\r\n if (\r\n bootstrapValidationForm.default.isValidField(\r\n '#' + $(form).attr('id'),\r\n $(event.currentTarget).attr('name')\r\n ) === true\r\n ) {\r\n const action = $(event.currentTarget).data(\r\n J_CODE_POSTAL_ACTION\r\n )\r\n const parameters = {\r\n cp: $(event.currentTarget).val()\r\n }\r\n\r\n ajaxLoader.loadAndExecuteCallBack(\r\n 'POST',\r\n parameters,\r\n function (content) {\r\n const select = $(J_VILLE_SELECTOR)\r\n\r\n if (content.ListVilles.length > 0) {\r\n const selectElement = select[0]\r\n\r\n // On supprime tout les 'options' pour nettoyer la liste pour les nouvelles valeurs\r\n for (const a in selectElement.options) {\r\n selectElement.options.remove(a)\r\n }\r\n\r\n // On ajout l'élément par défaut\r\n const opt = document.createElement('option')\r\n opt.value = ''\r\n opt.innerHTML = SELECTIONNEZ_VILLE\r\n select[0].appendChild(opt)\r\n\r\n // On ajoute le résultat de la requête\r\n for (\r\n let i = 0;\r\n i < content.ListVilles.length;\r\n i++\r\n ) {\r\n if (\r\n content.ListVilles[i].CodePays ==\r\n $(\r\n J_AUTRES_PAYS_SELECT +\r\n ' option:selected'\r\n ).data('value') ||\r\n $(\r\n J_AUTRES_PAYS_SELECT +\r\n ' option:selected'\r\n ).data('value') == 'FR'\r\n ) {\r\n const opt =\r\n document.createElement('option')\r\n opt.value =\r\n content.ListVilles[i].NomVilleReel\r\n opt.innerHTML =\r\n content.ListVilles[i].NomVille\r\n select[0].appendChild(opt)\r\n }\r\n }\r\n\r\n // On affiche la liste si elle est caché, et on cache le input classique s'il était affiché\r\n if ($(select).hasClass(C_HIDDEN)) {\r\n bootstrapValidationForm.default.disableValidator(\r\n $(form),\r\n J_VILLE_NAME,\r\n 'notEmpty'\r\n ) // on désactive également le validateur noEmpty, pour qu'on puisse appuyer sur le bouton submit si on choisit une ville\r\n $(select).removeClass(C_HIDDEN)\r\n $(J_CLASSICAL_VILLE_INPUT).addClass(\r\n C_HIDDEN\r\n )\r\n }\r\n } else if (content.ListVilles.length === 0) {\r\n if ($(select).hasClass(C_HIDDEN) === false) {\r\n $(select).addClass(C_HIDDEN)\r\n }\r\n if (\r\n $(J_CLASSICAL_VILLE_INPUT).hasClass(\r\n C_HIDDEN\r\n )\r\n ) {\r\n $(J_CLASSICAL_VILLE_INPUT).removeClass(\r\n C_HIDDEN\r\n )\r\n }\r\n }\r\n },\r\n function () {\r\n // En cas d'échec on affiche une erreur\r\n const $location = $(J_DIV_ERROR_CODE_POSTAL)\r\n $location.removeClass(C_HIDDEN)\r\n $location\r\n .empty()\r\n .append(ERREUR_INTERNE_RECUPERATION_VILLE)\r\n },\r\n action\r\n )\r\n }\r\n }\r\n )\r\n })\r\n}\r\n\r\n/*\r\n * Fonction qui sera passé en callback du module autoComplete : elle récupère la liste des villes qui commencent par la valeur de l'input passé en paramètre de cette fonction\r\n */\r\nfunction getListOfVillesForAutoCompleteField($item) {\r\n return function findMatches(q, callback) {\r\n const action = $item.data(J_SOURCE_AJAX_DATA)\r\n\r\n // q = valeur de l'input\r\n const parameters = {\r\n name: q\r\n }\r\n\r\n ajaxLoader.loadAndExecuteCallBack(\r\n 'POST',\r\n parameters,\r\n function (content) {\r\n const matches = []\r\n for (let i = 0; i < content.ListVilles.length; i++) {\r\n matches.push({\r\n value: content.ListVilles[i].Value,\r\n cp: content.ListVilles[i].Key\r\n })\r\n }\r\n\r\n callback(matches)\r\n },\r\n function () {\r\n const $location = $(J_VILLE_ERROR)\r\n $location.removeClass(C_HIDDEN)\r\n $location.empty().append(ERREUR_INTERNE_RECUPERATION_VILLE)\r\n },\r\n action\r\n )\r\n }\r\n}\r\n\r\n/*\r\n * Insert le CP dans le champ CP quand on sélectionne une ville et change le pays (envoyé en callback de l'autocomplete)\r\n */\r\nfunction insertCodePostalWhenSelectingVille(event, item) {\r\n import('Modules/bootstrapValidationForm').then(\r\n (bootstrapValidationForm) => {\r\n $(J_CODE_POSTAL).val(item.cp)\r\n $(J_CODE_POSTAL).empty().append(item.cp)\r\n const formId = $(J_CODE_POSTAL).closest('form').attr('id')\r\n if (formId !== undefined) {\r\n bootstrapValidationForm.default.setItemAsValid(\r\n '#' + formId,\r\n $(J_CODE_POSTAL),\r\n 'notEmpty'\r\n )\r\n bootstrapValidationForm.default.validateField(\r\n '#' + formId,\r\n $(J_CODE_POSTAL)\r\n )\r\n }\r\n\r\n $(\r\n J_AUTRES_PAYS_SELECT +\r\n ' option[data-value=\"' +\r\n item.value.substr(item.value.length - 2) +\r\n '\"]'\r\n ).prop('selected', true)\r\n $(J_LABEL_PAYS_TO_HIDE).text($(J_AUTRES_PAYS_SELECT).val())\r\n $(J_LABEL_PAYS_TO_HIDE).removeClass(C_HIDDEN)\r\n $(J_AUTRES_PAYS_SELECT).addClass(C_HIDDEN)\r\n }\r\n )\r\n}\r\n\r\n/*\r\n * Function de gestion du clique sur \"Autres pays\" qui va afficher la liste select et cacher le label FRANCE\r\n */\r\nfunction setEventForPrintingOtherPays() {\r\n $(J_AUTRES_PAYS_LINK).on('click', function (event) {\r\n const $select = $(J_AUTRES_PAYS_SELECT)\r\n\r\n if ($select !== undefined && $select !== '') {\r\n if ($select.hasClass(C_HIDDEN)) {\r\n $select.removeClass(C_HIDDEN)\r\n $(J_LABEL_PAYS_TO_HIDE).addClass(C_HIDDEN)\r\n $(event.currentTarget).addClass(C_HIDDEN)\r\n }\r\n }\r\n })\r\n}\r\n\r\n/*\r\n * Efface l'icone de validation si c'est une case téléphone, mais pas la dernière\r\n */\r\nfunction removeTelephoneIcon(e, data) {\r\n if (\r\n $(data.element).hasClass(J_TELEPHONE.replace('.', '')) &&\r\n $(data.element).attr('name') !== J_LAST_TELEPHONE_NAME\r\n ) {\r\n // Remove the required icon when the field updates its status\r\n const $icon = $(\r\n \".icon-checkform-ok[data-bv-icon-for='\" +\r\n $(data.element).attr('name') +\r\n \"']\"\r\n )\r\n $icon.addClass(C_HIDDEN)\r\n }\r\n}\r\n\r\n/*\r\n * Efface l'icone de validation des champs téléphone quand on tape\r\n * on affiche toujours l'icône invalide en priorité avec la première erreur\r\n */\r\nfunction manageValidIconTelephone() {\r\n $(J_TELEPHONE).on('change paste keyup blur', function () {\r\n import('Modules/bootstrapValidationForm').then(\r\n (bootstrapValidationForm) => {\r\n const $telephone = $(J_TELEPHONE)\r\n const validTelephonList = []\r\n const invalidTelephonList = []\r\n let cptInvalidField = 0\r\n\r\n $telephone.each(function (index, item) {\r\n if (\r\n bootstrapValidationForm.default.isValidField(\r\n $($(item).closest('form')),\r\n $(item)\r\n ) === true\r\n ) {\r\n validTelephonList.push(item)\r\n }\r\n if (\r\n bootstrapValidationForm.default.isValidField(\r\n $($(item).closest('form')),\r\n $(item)\r\n ) === false\r\n ) {\r\n cptInvalidField++\r\n invalidTelephonList.push(item)\r\n }\r\n })\r\n\r\n if (\r\n cptInvalidField > 0 &&\r\n validTelephonList !== undefined &&\r\n validTelephonList.length > 0\r\n ) {\r\n $(validTelephonList).each(function (index, item) {\r\n if (\r\n bootstrapValidationForm.isValidField(\r\n $($(item).closest('form')),\r\n $(item)\r\n ) === true\r\n ) {\r\n const name = $(item).attr('name')\r\n const icon = $(\r\n \".icon-checkform-ok[data-bv-icon-for='\" +\r\n name +\r\n \"']\"\r\n )\r\n if (icon !== undefined) {\r\n $(icon).addClass(C_HIDDEN)\r\n }\r\n }\r\n })\r\n }\r\n\r\n if (\r\n cptInvalidField > 1 &&\r\n invalidTelephonList !== undefined &&\r\n invalidTelephonList.length > 1\r\n ) {\r\n // on efface le premier élément pour afficher une erreur à la fois. Si son erreur est à hidden, on l'affiche\r\n const firstElement = invalidTelephonList.shift()\r\n let name = $(firstElement).attr('name')\r\n let error = $(\".help-block[data-bv-for='\" + name + \"']\")\r\n if (error !== undefined && $(error).hasClass(C_HIDDEN)) {\r\n $(error).removeClass(C_HIDDEN)\r\n }\r\n\r\n // On cache les autres erreurs\r\n $(invalidTelephonList).each(function (index, item) {\r\n if (\r\n bootstrapValidationForm.default.isValidField(\r\n $($(item).closest('form')),\r\n $(item)\r\n ) === false\r\n ) {\r\n name = $(item).attr('name')\r\n error = $(\".help-block[data-bv-for='\" + name + \"']\")\r\n if (error !== undefined) {\r\n $(error).addClass(C_HIDDEN)\r\n }\r\n }\r\n })\r\n } else {\r\n // Si il n'y a qu'une erreur et qu'elle est caché, on l'affiche\r\n const name = $(invalidTelephonList[0]).attr('name')\r\n const error = $(\".help-block[data-bv-for='\" + name + \"']\")\r\n if (error !== undefined && $(error).hasClass(C_HIDDEN)) {\r\n $(error).removeClass(C_HIDDEN)\r\n }\r\n }\r\n }\r\n )\r\n })\r\n}\r\n\r\n/*\r\n * selon le pays actuellement sélectionné, on change les settings du formulaire / affiche des choses différentes\r\n */\r\nfunction changeSettingsByPays() {\r\n $(J_AUTRES_PAYS_SELECT).on('change', function (event) {\r\n import('Modules/bootstrapValidationForm').then(\r\n (bootstrapValidationForm) => {\r\n // produit.default.init('#modal-produit', '#modal-produit-dialog')\r\n const form = $(event.currentTarget).closest('form')\r\n\r\n // raz des champ CP et Ville\r\n $(J_VILLE_SELECTOR).val('')\r\n $(J_CLASSICAL_VILLE_INPUT).val('')\r\n $(J_CODE_POSTAL).val('')\r\n\r\n if (\r\n $(event.currentTarget)\r\n .find(':selected')\r\n .data(J_DATA_VALUE_PAYS) === 'FR'\r\n ) {\r\n // Changement du field telephone\r\n $(J_TELEPHONE).removeClass(C_HIDDEN)\r\n $(J_OTHER_TELEPHONE).addClass(C_HIDDEN)\r\n\r\n // Changement des settings du code postal\r\n bootstrapValidationForm.default.enableValidator(\r\n '#' + $(form).attr('id'),\r\n J_CODE_POSTAL_NAME,\r\n 'stringLength'\r\n )\r\n bootstrapValidationForm.default.validateField(\r\n '#' + $(form).attr('id'),\r\n J_CODE_POSTAL_NAME\r\n )\r\n } else {\r\n // Changement du field telephone\r\n $(J_OTHER_TELEPHONE).removeClass(C_HIDDEN)\r\n $(J_TELEPHONE).addClass(C_HIDDEN)\r\n\r\n $(J_VILLE_SELECTOR).addClass(C_HIDDEN)\r\n $(J_CLASSICAL_VILLE_INPUT).removeClass(C_HIDDEN)\r\n\r\n // Changement des settings du code postal\r\n bootstrapValidationForm.default.disableValidator(\r\n '#' + $(form).attr('id'),\r\n J_CODE_POSTAL_NAME,\r\n 'stringLength'\r\n )\r\n bootstrapValidationForm.default.validateField(\r\n '#' + $(form).attr('id'),\r\n J_CODE_POSTAL_NAME\r\n )\r\n }\r\n }\r\n )\r\n })\r\n}\r\n\r\nfunction showVilleFieldWhenSelectingAutresVilles() {\r\n $(J_VILLE_SELECTOR).on('change', function (event) {\r\n if ($(event.currentTarget).val() === J_AUTRES_VILLES) {\r\n if ($(event.currentTarget).hasClass(C_HIDDEN) === false) {\r\n $(event.currentTarget).addClass(C_HIDDEN)\r\n }\r\n if ($(J_CLASSICAL_VILLE_INPUT).hasClass(C_HIDDEN)) {\r\n $(J_CLASSICAL_VILLE_INPUT).removeClass(C_HIDDEN)\r\n }\r\n // $(J_AUTRES_PAYS_SELECT + ' option[data-value=FR]').remove();\r\n $(J_AUTRES_PAYS_SELECT).removeClass(C_HIDDEN)\r\n $(J_LABEL_PAYS_TO_HIDE).addClass(C_HIDDEN)\r\n } else {\r\n const cityName = $(event.currentTarget).val()\r\n // Modification du pays lors de la sélection d'une ville depuis la combobox autocomplétante\r\n if (cityName.substring(cityName.length - 2) == 'FR') {\r\n // var opt = document.createElement(\"option\");\r\n // opt.text = \"France Metropolitaine\";\r\n // opt.setAttribute('data-value', 'FR');\r\n // $(J_AUTRES_PAYS_SELECT).children('optgroup')[0].appendChild(opt);\r\n } else {\r\n // $(J_AUTRES_PAYS_SELECT + ' option[data-value=FR]').remove();\r\n }\r\n\r\n $(J_CLASSICAL_VILLE_INPUT).val(cityName)\r\n\r\n // $(J_AUTRES_PAYS_SELECT + ' option').prop('selected', false);\r\n // $(J_AUTRES_PAYS_SELECT + ' option[data-value=\"' + cityName.substring(cityName.length - 2) + '\"]').prop('selected', true);\r\n // $(J_LABEL_PAYS_TO_HIDE).removeClass(C_HIDDEN);\r\n // $(J_LABEL_PAYS_TO_HIDE).text($(J_AUTRES_PAYS_SELECT).val());\r\n // $(J_AUTRES_PAYS_SELECT).addClass(C_HIDDEN);\r\n }\r\n })\r\n}\r\n\r\nexport default {\r\n processModificationAdresseLivraison: processModificationAdresseLivraison,\r\n processModificationAdresseFacturation:\r\n processModificationAdresseFacturation,\r\n setEventOnComplementAdresseLink: setEventOnComplementAdresseLink,\r\n setEventForGettingVillesByCodePostal: setEventForGettingVillesByCodePostal,\r\n getListOfVillesForAutoCompleteField: getListOfVillesForAutoCompleteField,\r\n insertCodePostalWhenSelectingVille: insertCodePostalWhenSelectingVille,\r\n setEventForPrintingOtherPays: setEventForPrintingOtherPays,\r\n manageValidIconTelephone: manageValidIconTelephone,\r\n removeTelephoneIcon: removeTelephoneIcon,\r\n changeSettingsByPays: changeSettingsByPays,\r\n showVilleFieldWhenSelectingAutresVilles:\r\n showVilleFieldWhenSelectingAutresVilles\r\n}\r\n","'use strict'\r\n\r\n/**\r\n * MODULE AJAX\r\n * Enregistre des appels AJAX à exécuté plus tard dans un workflow (ex: connexion utilisateur)\r\n */\r\n\r\n/**\r\n * Appel AJAX en fin de workflow\r\n * @param {function} a Callback\r\n */\r\nfunction CallLast(a) {\r\n $.ajax({\r\n url: window.LastCallurl,\r\n data: window.LastCalldata,\r\n success: function (data) {\r\n if (window.LastSuccess != null) {\r\n window.LastSuccess(data)\r\n }\r\n\r\n if (a != null) {\r\n a()\r\n }\r\n }\r\n })\r\n}\r\n\r\n/**\r\n * Enregistre l'url, le payload et une callback pour un appel AJAX en fin de workflow\r\n * @param {function} a Callback\r\n */\r\nfunction SaveLastCall(url, data, onSuccess) {\r\n window.LastCallurl = url\r\n window.LastCalldata = data\r\n window.LastSuccess = onSuccess\r\n}\r\n\r\nexport default {\r\n CallLast: CallLast,\r\n SaveLastCall: SaveLastCall\r\n}\r\n","'use strict'\r\n\r\n/**\r\n * MODULE INSCRIPTION\r\n */\r\n\r\nimport inscriptionGoogleAPI from 'Modules/inscriptionGoogleAPI'\r\nimport password from 'Modules/password'\r\nimport inscriptionConnexionCustomAction from 'Modules/inscriptionConnexionCustomAction'\r\nimport ajaxLoader from 'Modules/ajaxLoader'\r\nimport adresseForm from 'Modules/adresseForm'\r\nimport ajaxManagement from 'Modules/ajaxManagement'\r\nimport ads from 'Modules/ads'\r\nimport urlModule from 'Modules/url'\r\nimport { _500 } from 'Modules/Resources/Error'\r\nimport master from 'Modules/master'\r\n\r\nconst FORM_VALIDATION_EMAIL = '.j-verification-email'\r\nconst FORM_VERIFICATION_PASSWORD = '.j-verification-password'\r\nconst FORM_INSCRIPTION = '.j-inscription'\r\nconst FORM_CONNEXION = '.j-connexion'\r\nconst INPUT_EMAILLOGIN = '.j_bsForm_email'\r\nconst INPUT_PASSWORD = '.j_password'\r\nconst INPUT_TELEPHONE = '.j-telephone'\r\nconst INPUT_USEADBLOCK = '.j-useAdBlock'\r\nconst J_INSCRIPTION_ERROR = '.j_inscription_error'\r\nconst J_DATA_REFERER = 'referer'\r\nconst J_DATA_RELOAD = 'reload'\r\nconst J_MODAL = '.j_modal_wishlist_catalogue'\r\nconst SUBMIT_INSCRITION_CONNEXION = '.j_submit_inscription'\r\nconst SUBMIT_CONNEXION = '.j_submit_connexion'\r\nconst J_SELECT_PAYS = '.j_select_autresPays'\r\nconst J_DATE_JOUR = '.j_dateJour'\r\nconst J_DATE_MOIS = '.j_dateMois'\r\nconst J_DATE_ANNEE = '.j_dateAnnee'\r\nconst J_DATE_NAISSANCE = '.j_date_naissance'\r\nconst J_DATE_NAISSANCEPART = '.j_date_naissance_part'\r\n\r\nlet validatorInscription = ''\r\n\r\nfunction Process() {\r\n password.setEventForPrintingPassword() // afficher/masquer le mot de passe\r\n\r\n inscriptionConnexionCustomAction.setEventToolTipsOnBirthDay()\r\n\r\n inscriptionGoogleAPI.Process(\r\n $('.js-group-google'),\r\n $('.js-input-google'),\r\n $('.group-autocomplete'),\r\n $('.autocomplete'),\r\n $('.j-inscription')\r\n )\r\n\r\n $(J_MODAL).on('hide.bs.modal', function (e) {\r\n $(FORM_VALIDATION_EMAIL).show()\r\n $(FORM_VERIFICATION_PASSWORD).hide()\r\n $(FORM_INSCRIPTION).hide()\r\n })\r\n\r\n if ($('#isInscription').val() == 0) {\r\n ProcessInscription()\r\n }\r\n $('form').filter(FORM_VALIDATION_EMAIL).bootstrapValidator()\r\n\r\n const validatorEmail = $('form')\r\n .filter(FORM_VALIDATION_EMAIL)\r\n .data('bootstrapValidator')\r\n\r\n $(FORM_VALIDATION_EMAIL).on('success.form.bv', function (event) {\r\n event.preventDefault()\r\n\r\n if (validatorEmail.isValid()) {\r\n ajaxLoader.loadAndExecuteCallBack(\r\n 'POST',\r\n $(this).serialize(),\r\n function (reponse) {\r\n // si l'email est invalidé par le serveur\r\n if (reponse.EmailValid === false) {\r\n validatorEmail.updateStatus(\r\n 'email',\r\n 'INVALID',\r\n 'emailAddress'\r\n )\r\n }\r\n // si l'email existe on demande le mot de passe\r\n else if (\r\n reponse.EmailExist === true &&\r\n reponse.IsInscription3M === false\r\n ) {\r\n // on cache le formulaire contenant l'email\r\n $(FORM_VALIDATION_EMAIL).hide()\r\n // on affiche le formulaire contenant le mdp\r\n $(FORM_VERIFICATION_PASSWORD).show()\r\n\r\n // on copie l'email\r\n const email = $(\r\n FORM_VALIDATION_EMAIL + ' ' + INPUT_EMAILLOGIN\r\n ).val()\r\n $(\r\n FORM_VERIFICATION_PASSWORD + ' ' + INPUT_EMAILLOGIN\r\n ).val(email)\r\n $(INPUT_PASSWORD).focus()\r\n $(\r\n FORM_VERIFICATION_PASSWORD + ' ' + INPUT_EMAILLOGIN\r\n ).attr('name', 'email')\r\n ProcessVerificationPassword()\r\n\r\n validatorEmail.resetForm()\r\n } else {\r\n // sinon on affiche le formulaire d'inscription\r\n // on cache le formulaire contenant l'email\r\n $(FORM_VALIDATION_EMAIL).hide()\r\n\r\n // on affiche le formulaire d'inscription\r\n $(FORM_INSCRIPTION).show()\r\n\r\n // on copie l'email dans l'input d'inscription\r\n const email = $(FORM_VALIDATION_EMAIL)\r\n .find(INPUT_EMAILLOGIN)\r\n .val()\r\n $(FORM_INSCRIPTION).find(INPUT_EMAILLOGIN).val(email)\r\n ProcessInscription()\r\n\r\n validatorEmail.resetForm()\r\n }\r\n },\r\n function () {\r\n const $location = $(J_INSCRIPTION_ERROR)\r\n $location.empty().append(_500)\r\n },\r\n $(this).attr('action')\r\n )\r\n }\r\n })\r\n\r\n// gestion de la page de connexion\r\n if ($(FORM_CONNEXION)[0]) {\r\n \r\n ProcessConnexion()\r\n }\r\n\r\n}\r\n\r\nfunction ProcessConnexion() {\r\n $('form').filter(FORM_CONNEXION).bootstrapValidator()\r\n const validatorConnexion = $('form')\r\n .filter(FORM_CONNEXION)\r\n .data('bootstrapValidator')\r\n $(SUBMIT_CONNEXION).click(function (event) {\r\n event.preventDefault()\r\n ajaxLoader.loadAndExecuteCallBack(\r\n 'POST',\r\n $(FORM_CONNEXION).serialize(),\r\n function (reponse) {\r\n // si le mdp est correct\r\n if (reponse.Result === true) {\r\n window.location = reponse.Redirect\r\n } else {\r\n validatorConnexion.updateStatus($(INPUT_PASSWORD), 'INVALID')\r\n validatorConnexion.updateMessage(\r\n $(INPUT_PASSWORD),\r\n 'notEmpty',\r\n $('#error-message').val()\r\n )\r\n }\r\n },\r\n function () {\r\n const $location = $(J_INSCRIPTION_ERROR)\r\n $location.empty().append(_500)\r\n },\r\n $(FORM_CONNEXION).attr('action')\r\n )\r\n\r\n\r\n \r\n })\r\n}\r\n\r\nfunction ProcessVerificationPassword() {\r\n $('form').filter(FORM_VERIFICATION_PASSWORD).bootstrapValidator()\r\n const validatorPassword = $('form')\r\n .filter(FORM_VERIFICATION_PASSWORD)\r\n .data('bootstrapValidator')\r\n\r\n $(FORM_VERIFICATION_PASSWORD).on('success.form.bv', function (event) {\r\n $(INPUT_USEADBLOCK).val(ads.useAdBlocker())\r\n event.preventDefault()\r\n const form = $(this)\r\n\r\n ajaxLoader.loadAndExecuteCallBack(\r\n 'POST',\r\n $(this).serialize(),\r\n function (reponse) {\r\n // si le mdp est correct\r\n if (reponse.Result === true) {\r\n \r\n closeOrReload(form, 'connexion')\r\n } else {\r\n validatorPassword.updateStatus($(INPUT_PASSWORD), 'INVALID')\r\n validatorPassword.updateMessage(\r\n $(INPUT_PASSWORD),\r\n 'notEmpty',\r\n reponse.Message\r\n )\r\n }\r\n },\r\n function () {\r\n const $location = $(J_INSCRIPTION_ERROR)\r\n $location.empty().append(_500)\r\n },\r\n $(this).attr('action')\r\n )\r\n })\r\n\r\n $(INPUT_PASSWORD).blur(function () {\r\n if ($(this).val() == '') {\r\n validatorPassword\r\n .updateStatus($(INPUT_PASSWORD), 'INVALID')\r\n .updateMessage(\r\n $(INPUT_PASSWORD),\r\n 'notEmpty',\r\n $('#notempty-message').val()\r\n )\r\n }\r\n })\r\n}\r\n\r\nfunction ProcessInscription() {\r\n adresseForm.setEventOnComplementAdresseLink() // gestion du lien Complement d'adresse\r\n adresseForm.setEventForGettingVillesByCodePostal() // Gestion de l'affichage des villes via le code postal\r\n adresseForm.manageValidIconTelephone() // On efface les icones valides des cases téléphone sauf si c'est la derniere\r\n adresseForm.changeSettingsByPays()\r\n adresseForm.setEventForPrintingOtherPays()\r\n adresseForm.showVilleFieldWhenSelectingAutresVilles()\r\n\r\n $('form').filter(FORM_INSCRIPTION).bootstrapValidator()\r\n validatorInscription = $('form')\r\n .filter(FORM_INSCRIPTION)\r\n .data('bootstrapValidator')\r\n\r\n $(\"[name='passwordInscr']\").focus()\r\n\r\n $('.j_select_indicatifTel')\r\n .find('option')\r\n .each(function () {\r\n const data = '+' + $(this).val()\r\n const tel = $(INPUT_TELEPHONE).val()\r\n const indicatif = tel.substring(0, 3)\r\n\r\n if (data == indicatif) {\r\n $('.j_select_indicatifTel').val($(this).val())\r\n $(INPUT_TELEPHONE).val(\r\n $(INPUT_TELEPHONE)\r\n .val()\r\n .substring(data.length, $(INPUT_TELEPHONE).val())\r\n )\r\n $(INPUT_TELEPHONE).blur()\r\n }\r\n })\r\n\r\n $('.j_submit_inscription').click(function () {\r\n validatorInscription.validate()\r\n })\r\n\r\n $(INPUT_TELEPHONE).keyup(function () {\r\n let telephone = $(this).val()\r\n\r\n if (\r\n $(\"[name='codePays']\").val() == 'FR' &&\r\n $(this).val().length == 10 &&\r\n $(this).val().substring(0, 1) == '0'\r\n ) {\r\n telephone = telephone.substring(1, 10)\r\n // $(this).val($(this).val().substring(1, 10));\r\n }\r\n\r\n const pattern = $('.js-regex-telephone')\r\n .filter(\r\n '[data-indicatiftel=\"' +\r\n $('.j_select_indicatifTel :selected').val() +\r\n '\"]'\r\n )\r\n .val()\r\n\r\n telephone =\r\n '+' + $('.j_select_indicatifTel :selected').val() + telephone\r\n\r\n $('#hiddentel').val(telephone)\r\n\r\n if (pattern !== '') {\r\n const regex = new RegExp(pattern)\r\n\r\n if (!regex.test(telephone)) {\r\n validatorInscription.updateStatus(\r\n $(INPUT_TELEPHONE),\r\n 'INVALID',\r\n 'regexp'\r\n )\r\n } else {\r\n validatorInscription.updateStatus(\r\n $(INPUT_TELEPHONE),\r\n 'VALID',\r\n 'regexp'\r\n )\r\n }\r\n } else {\r\n if ($(this).val() !== '') {\r\n validatorInscription.updateStatus($(INPUT_TELEPHONE), 'VALID')\r\n }\r\n }\r\n })\r\n\r\n $(J_SELECT_PAYS).change(function () {\r\n $('.j_select_indicatifTel').val(\r\n $('.j_select_indicatifTel')\r\n .find('[data-codepays=\"' + $(this).val() + '\"]')\r\n .val()\r\n )\r\n $('.j_select_indicatifTel').change()\r\n })\r\n\r\n $('.j_select_indicatifTel').change(function () {\r\n $(INPUT_TELEPHONE).blur()\r\n })\r\n\r\n $(FORM_INSCRIPTION).on('success.form.bv', function (event) {\r\n event.preventDefault()\r\n\r\n $(INPUT_USEADBLOCK).val(ads.useAdBlocker())\r\n const form = $(this)\r\n\r\n ajaxLoader.loadAndExecuteCallBack(\r\n 'POST',\r\n $(this).serialize(),\r\n function (reponse) {\r\n // si le mdp est correct\r\n if (reponse.Result === true) {\r\n closeOrReload(form, 'inscription')\r\n } else {\r\n $(J_INSCRIPTION_ERROR).empty().append(reponse.Message)\r\n $('.j-adress_manuel').click()\r\n $(SUBMIT_INSCRITION_CONNEXION).removeAttr('disabled')\r\n }\r\n },\r\n function () {\r\n // En cas d'échec on affiche une erreur\r\n\r\n $(J_INSCRIPTION_ERROR).empty().append(_500)\r\n $('.j-adress_manuel').click()\r\n $(SUBMIT_INSCRITION_CONNEXION).removeAttr('disabled')\r\n },\r\n $(this).attr('action')\r\n )\r\n })\r\n\r\n $(J_DATE_NAISSANCEPART).on('keyup', function () {\r\n const jour = $(J_DATE_JOUR).val()\r\n const mois = $(J_DATE_MOIS).val()\r\n const annee = $(J_DATE_ANNEE).val()\r\n\r\n if (jour != '' && mois != '' && annee != '') {\r\n const datefinal = jour + '/' + mois + '/' + annee\r\n\r\n $(J_DATE_NAISSANCE).val(datefinal)\r\n } else {\r\n $(J_DATE_NAISSANCE).val('')\r\n }\r\n })\r\n\r\n $(J_DATE_JOUR).on('keyup', function () {\r\n if ($(this).val() == '') {\r\n $(this).removeClass('has-success')\r\n $(this).removeClass('has-error')\r\n $('.error-jour').hide()\r\n return\r\n }\r\n\r\n const reg = /^[0-9]*$/\r\n if (reg.test($(this).val()) && $(this).val() < 32 && $(this).val() > 0) {\r\n $(this).addClass('has-success')\r\n $(this).removeClass('has-error')\r\n $('.error-jour').hide()\r\n } else {\r\n $(this).addClass('has-error')\r\n $(this).removeClass('has-success')\r\n $('.error-jour').show()\r\n }\r\n })\r\n $(J_DATE_MOIS).on('keyup', function () {\r\n if ($(this).val() == '') {\r\n $(this).removeClass('has-success')\r\n $(this).removeClass('has-error')\r\n $('.error-mois').hide()\r\n return\r\n }\r\n\r\n const reg = /^[0-9]*$/\r\n if (\r\n reg.test($(J_DATE_MOIS).val()) &&\r\n $(J_DATE_MOIS).val() < 13 &&\r\n $(J_DATE_MOIS).val() > 0\r\n ) {\r\n $(J_DATE_MOIS).addClass('has-success')\r\n $(J_DATE_MOIS).removeClass('has-error')\r\n $('.error-mois').hide()\r\n } else {\r\n $(J_DATE_MOIS).addClass('has-error')\r\n $(J_DATE_MOIS).removeClass('has-success')\r\n $('.error-mois').show()\r\n }\r\n })\r\n $(J_DATE_ANNEE).on('keyup', function () {\r\n if ($(this).val() == '') {\r\n $(this).removeClass('has-success')\r\n $(this).removeClass('has-error')\r\n $('.error-annee').hide()\r\n return\r\n }\r\n\r\n const reg = /^[0-9]*$/\r\n const ladate = new Date()\r\n const anneemajorite = ladate.getFullYear() - 16 // Gère l'année de naissance pour les personnes \"majeures\"\r\n if (\r\n reg.test($(J_DATE_ANNEE).val()) &&\r\n $(J_DATE_ANNEE).val() < anneemajorite &&\r\n $(J_DATE_ANNEE).val() > 1900\r\n ) {\r\n $(J_DATE_ANNEE).addClass('has-success')\r\n $(J_DATE_ANNEE).removeClass('has-error')\r\n $('.error-annee').hide()\r\n } else {\r\n $(J_DATE_ANNEE).addClass('has-error')\r\n $(J_DATE_ANNEE).removeClass('has-success')\r\n $('.error-annee').show()\r\n }\r\n })\r\n}\r\n\r\nfunction closeOrReload(form, eventname) {\r\n const reload = $(SUBMIT_INSCRITION_CONNEXION).data(J_DATA_RELOAD)\r\n const referer = $(SUBMIT_INSCRITION_CONNEXION).data(J_DATA_REFERER)\r\n let loginaction = 'default'\r\n let relocateUrl = ''\r\n const redirectionUrl = urlModule.parseRedirectionParameter()\r\n\r\n if (redirectionUrl !== undefined && redirectionUrl !== '') {\r\n relocateUrl = redirectionUrl\r\n loginaction = 'panier'\r\n } else {\r\n if (referer !== undefined) {\r\n relocateUrl = referer\r\n loginaction = 'referer'\r\n } else {\r\n relocateUrl = '/'\r\n loginaction = 'home'\r\n }\r\n }\r\n\r\n // Remontée de l'information vers analytics\r\n relocateUrl = decodeURIComponent(relocateUrl)\r\n if (window.google_tag_manager && window.ga && window.ga.create) {\r\n window.dataLayer.push({\r\n event: eventname,\r\n event_action: loginaction,\r\n event_label: 'form'\r\n })\r\n }\r\n\r\n if (reload == 1) {\r\n window.location.replace(relocateUrl)\r\n } else {\r\n $(J_MODAL).modal('hide')\r\n\r\n ajaxManagement.CallLast(function () {\r\n $.ajax({\r\n type: 'GET',\r\n url: '/Layout/GetInfoConnexion',\r\n success: function (jsReturnArgs) {\r\n $('.zone-header').replaceWith(jsReturnArgs)\r\n\r\n master.process()\r\n\r\n $('.manage_profil').attr('href', '/club/profils/')\r\n }\r\n })\r\n })\r\n }\r\n}\r\n\r\nexport default {\r\n Process: Process\r\n}\r\n","// Module de gestion du menu (touch screen).\r\n\r\nimport modal from 'Modules/modal'\r\nimport cleanTextOnFocus from 'Modules/cleanTextOnFocus'\r\nimport _3MPlus from 'Modules/_3MPlus'\r\nimport miniPanier from 'Modules/miniPanier'\r\nimport { InitialiserWishlistInLocalStorage } from 'Modules/gestionLocalStorage'\r\nimport inscriptionModule from 'Modules/inscriptionModule'\r\n\r\nfunction process() {\r\n const position = $(window).scrollTop()\r\n $(document).ready(function () {\r\n import('Modules/ads').then(\r\n ({ default: { initAdBlockerDetection } }) => {\r\n initAdBlockerDetection()\r\n }\r\n )\r\n\r\n $(function () {\r\n const $els = $('div[id^=supp]')\r\n let i = 0\r\n const len = $els.length\r\n $els.slice(1).hide()\r\n setInterval(function () {\r\n $els.eq(i).fadeOut(function () {\r\n i = (i + 1) % len\r\n $els.eq(i).fadeIn()\r\n })\r\n }, 3500)\r\n })\r\n })\r\n\r\n if ($('#modaltest3m10:visible').length > 0) {\r\n const genre = $(this).data('genre')\r\n modal.miseAjourParClassCss(\r\n 'modal3M',\r\n window.location.origin + '/_3MPlus/Modal/?gender=' + genre,\r\n _3MPlus.process\r\n )\r\n } else {\r\n $(document).on('show.bs.modal', '#modaltest3m10', function () {\r\n const genre = $(this).data('genre')\r\n modal.miseAjourParClassCss(\r\n 'modal3M',\r\n window.location.origin + '/_3MPlus/Modal/?gender=' + genre,\r\n _3MPlus.process\r\n )\r\n })\r\n }\r\n\r\n if ($('#modal3mlight:visible').length > 0) {\r\n modal.miseAjourParClassCss(\r\n 'modal3MLight',\r\n window.location.origin + '/_3MPlus/ModalLight/',\r\n _3MPlus.processLight\r\n )\r\n } else {\r\n $(document).on('show.bs.modal', '#modal3mlight', function () {\r\n modal.miseAjourParClassCss(\r\n 'modal3MLight',\r\n window.location.origin + '/_3MPlus/ModalLight/',\r\n _3MPlus.processLight\r\n )\r\n })\r\n }\r\n\r\n setDataLinks()\r\n\r\n // blocage d'un lien pour l'utilisateur\r\n $('.linkBlocked').click(function (e) {\r\n e.preventDefault()\r\n })\r\n\r\n cleanTextOnFocus.setEvent() // Gestion du texte par défaut à supprimer lors du clique sur un champ texte\r\n\r\n _3MPlus.process() // Mise en place du 3mPlus\r\n\r\n miniPanier.setEvent() // Gestion du rollover du minipanier\r\n\r\n miniPanier.process()\r\n\r\n InitialiserWishlistInLocalStorage()\r\n\r\n inscriptionModule.Process()\r\n}\r\n\r\nfunction setDataLinks() {\r\n // initialisation de l'offuscation des liens\r\n $('.lienCache').on('click', function () {\r\n window.location.href = $(this).data('link')\r\n })\r\n\r\n $('.linkAjaxReload').unbind('click')\r\n $('.linkAjaxReload').on('click', function () {\r\n window.location = $(this).attr('data')\r\n })\r\n}\r\n\r\nexport default {\r\n process: process,\r\n setDataLinks: setDataLinks\r\n}\r\n","function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/*!\n * GSAP 3.12.4\n * https://gsap.com\n *\n * @license Copyright 2008-2023, GreenSock. All rights reserved.\n * Subject to the terms at https://gsap.com/standard-license or for\n * Club GSAP members, the agreement issued with that membership.\n * @author: Jack Doyle, jack@greensock.com\n*/\n\n/* eslint-disable */\nvar _config = {\n autoSleep: 120,\n force3D: \"auto\",\n nullTargetWarn: 1,\n units: {\n lineHeight: \"\"\n }\n},\n _defaults = {\n duration: .5,\n overwrite: false,\n delay: 0\n},\n _suppressOverwrites,\n _reverting,\n _context,\n _bigNum = 1e8,\n _tinyNum = 1 / _bigNum,\n _2PI = Math.PI * 2,\n _HALF_PI = _2PI / 4,\n _gsID = 0,\n _sqrt = Math.sqrt,\n _cos = Math.cos,\n _sin = Math.sin,\n _isString = function _isString(value) {\n return typeof value === \"string\";\n},\n _isFunction = function _isFunction(value) {\n return typeof value === \"function\";\n},\n _isNumber = function _isNumber(value) {\n return typeof value === \"number\";\n},\n _isUndefined = function _isUndefined(value) {\n return typeof value === \"undefined\";\n},\n _isObject = function _isObject(value) {\n return typeof value === \"object\";\n},\n _isNotFalse = function _isNotFalse(value) {\n return value !== false;\n},\n _windowExists = function _windowExists() {\n return typeof window !== \"undefined\";\n},\n _isFuncOrString = function _isFuncOrString(value) {\n return _isFunction(value) || _isString(value);\n},\n _isTypedArray = typeof ArrayBuffer === \"function\" && ArrayBuffer.isView || function () {},\n // note: IE10 has ArrayBuffer, but NOT ArrayBuffer.isView().\n_isArray = Array.isArray,\n _strictNumExp = /(?:-?\\.?\\d|\\.)+/gi,\n //only numbers (including negatives and decimals) but NOT relative values.\n_numExp = /[-+=.]*\\d+[.e\\-+]*\\d*[e\\-+]*\\d*/g,\n //finds any numbers, including ones that start with += or -=, negative numbers, and ones in scientific notation like 1e-8.\n_numWithUnitExp = /[-+=.]*\\d+[.e-]*\\d*[a-z%]*/g,\n _complexStringNumExp = /[-+=.]*\\d+\\.?\\d*(?:e-|e\\+)?\\d*/gi,\n //duplicate so that while we're looping through matches from exec(), it doesn't contaminate the lastIndex of _numExp which we use to search for colors too.\n_relExp = /[+-]=-?[.\\d]+/,\n _delimitedValueExp = /[^,'\"\\[\\]\\s]+/gi,\n // previously /[#\\-+.]*\\b[a-z\\d\\-=+%.]+/gi but didn't catch special characters.\n_unitExp = /^[+\\-=e\\s\\d]*\\d+[.\\d]*([a-z]*|%)\\s*$/i,\n _globalTimeline,\n _win,\n _coreInitted,\n _doc,\n _globals = {},\n _installScope = {},\n _coreReady,\n _install = function _install(scope) {\n return (_installScope = _merge(scope, _globals)) && gsap;\n},\n _missingPlugin = function _missingPlugin(property, value) {\n return console.warn(\"Invalid property\", property, \"set to\", value, \"Missing plugin? gsap.registerPlugin()\");\n},\n _warn = function _warn(message, suppress) {\n return !suppress && console.warn(message);\n},\n _addGlobal = function _addGlobal(name, obj) {\n return name && (_globals[name] = obj) && _installScope && (_installScope[name] = obj) || _globals;\n},\n _emptyFunc = function _emptyFunc() {\n return 0;\n},\n _startAtRevertConfig = {\n suppressEvents: true,\n isStart: true,\n kill: false\n},\n _revertConfigNoKill = {\n suppressEvents: true,\n kill: false\n},\n _revertConfig = {\n suppressEvents: true\n},\n _reservedProps = {},\n _lazyTweens = [],\n _lazyLookup = {},\n _lastRenderedFrame,\n _plugins = {},\n _effects = {},\n _nextGCFrame = 30,\n _harnessPlugins = [],\n _callbackNames = \"\",\n _harness = function _harness(targets) {\n var target = targets[0],\n harnessPlugin,\n i;\n _isObject(target) || _isFunction(target) || (targets = [targets]);\n\n if (!(harnessPlugin = (target._gsap || {}).harness)) {\n // find the first target with a harness. We assume targets passed into an animation will be of similar type, meaning the same kind of harness can be used for them all (performance optimization)\n i = _harnessPlugins.length;\n\n while (i-- && !_harnessPlugins[i].targetTest(target)) {}\n\n harnessPlugin = _harnessPlugins[i];\n }\n\n i = targets.length;\n\n while (i--) {\n targets[i] && (targets[i]._gsap || (targets[i]._gsap = new GSCache(targets[i], harnessPlugin))) || targets.splice(i, 1);\n }\n\n return targets;\n},\n _getCache = function _getCache(target) {\n return target._gsap || _harness(toArray(target))[0]._gsap;\n},\n _getProperty = function _getProperty(target, property, v) {\n return (v = target[property]) && _isFunction(v) ? target[property]() : _isUndefined(v) && target.getAttribute && target.getAttribute(property) || v;\n},\n _forEachName = function _forEachName(names, func) {\n return (names = names.split(\",\")).forEach(func) || names;\n},\n //split a comma-delimited list of names into an array, then run a forEach() function and return the split array (this is just a way to consolidate/shorten some code).\n_round = function _round(value) {\n return Math.round(value * 100000) / 100000 || 0;\n},\n _roundPrecise = function _roundPrecise(value) {\n return Math.round(value * 10000000) / 10000000 || 0;\n},\n // increased precision mostly for timing values.\n_parseRelative = function _parseRelative(start, value) {\n var operator = value.charAt(0),\n end = parseFloat(value.substr(2));\n start = parseFloat(start);\n return operator === \"+\" ? start + end : operator === \"-\" ? start - end : operator === \"*\" ? start * end : start / end;\n},\n _arrayContainsAny = function _arrayContainsAny(toSearch, toFind) {\n //searches one array to find matches for any of the items in the toFind array. As soon as one is found, it returns true. It does NOT return all the matches; it's simply a boolean search.\n var l = toFind.length,\n i = 0;\n\n for (; toSearch.indexOf(toFind[i]) < 0 && ++i < l;) {}\n\n return i < l;\n},\n _lazyRender = function _lazyRender() {\n var l = _lazyTweens.length,\n a = _lazyTweens.slice(0),\n i,\n tween;\n\n _lazyLookup = {};\n _lazyTweens.length = 0;\n\n for (i = 0; i < l; i++) {\n tween = a[i];\n tween && tween._lazy && (tween.render(tween._lazy[0], tween._lazy[1], true)._lazy = 0);\n }\n},\n _lazySafeRender = function _lazySafeRender(animation, time, suppressEvents, force) {\n _lazyTweens.length && !_reverting && _lazyRender();\n animation.render(time, suppressEvents, force || _reverting && time < 0 && (animation._initted || animation._startAt));\n _lazyTweens.length && !_reverting && _lazyRender(); //in case rendering caused any tweens to lazy-init, we should render them because typically when someone calls seek() or time() or progress(), they expect an immediate render.\n},\n _numericIfPossible = function _numericIfPossible(value) {\n var n = parseFloat(value);\n return (n || n === 0) && (value + \"\").match(_delimitedValueExp).length < 2 ? n : _isString(value) ? value.trim() : value;\n},\n _passThrough = function _passThrough(p) {\n return p;\n},\n _setDefaults = function _setDefaults(obj, defaults) {\n for (var p in defaults) {\n p in obj || (obj[p] = defaults[p]);\n }\n\n return obj;\n},\n _setKeyframeDefaults = function _setKeyframeDefaults(excludeDuration) {\n return function (obj, defaults) {\n for (var p in defaults) {\n p in obj || p === \"duration\" && excludeDuration || p === \"ease\" || (obj[p] = defaults[p]);\n }\n };\n},\n _merge = function _merge(base, toMerge) {\n for (var p in toMerge) {\n base[p] = toMerge[p];\n }\n\n return base;\n},\n _mergeDeep = function _mergeDeep(base, toMerge) {\n for (var p in toMerge) {\n p !== \"__proto__\" && p !== \"constructor\" && p !== \"prototype\" && (base[p] = _isObject(toMerge[p]) ? _mergeDeep(base[p] || (base[p] = {}), toMerge[p]) : toMerge[p]);\n }\n\n return base;\n},\n _copyExcluding = function _copyExcluding(obj, excluding) {\n var copy = {},\n p;\n\n for (p in obj) {\n p in excluding || (copy[p] = obj[p]);\n }\n\n return copy;\n},\n _inheritDefaults = function _inheritDefaults(vars) {\n var parent = vars.parent || _globalTimeline,\n func = vars.keyframes ? _setKeyframeDefaults(_isArray(vars.keyframes)) : _setDefaults;\n\n if (_isNotFalse(vars.inherit)) {\n while (parent) {\n func(vars, parent.vars.defaults);\n parent = parent.parent || parent._dp;\n }\n }\n\n return vars;\n},\n _arraysMatch = function _arraysMatch(a1, a2) {\n var i = a1.length,\n match = i === a2.length;\n\n while (match && i-- && a1[i] === a2[i]) {}\n\n return i < 0;\n},\n _addLinkedListItem = function _addLinkedListItem(parent, child, firstProp, lastProp, sortBy) {\n if (firstProp === void 0) {\n firstProp = \"_first\";\n }\n\n if (lastProp === void 0) {\n lastProp = \"_last\";\n }\n\n var prev = parent[lastProp],\n t;\n\n if (sortBy) {\n t = child[sortBy];\n\n while (prev && prev[sortBy] > t) {\n prev = prev._prev;\n }\n }\n\n if (prev) {\n child._next = prev._next;\n prev._next = child;\n } else {\n child._next = parent[firstProp];\n parent[firstProp] = child;\n }\n\n if (child._next) {\n child._next._prev = child;\n } else {\n parent[lastProp] = child;\n }\n\n child._prev = prev;\n child.parent = child._dp = parent;\n return child;\n},\n _removeLinkedListItem = function _removeLinkedListItem(parent, child, firstProp, lastProp) {\n if (firstProp === void 0) {\n firstProp = \"_first\";\n }\n\n if (lastProp === void 0) {\n lastProp = \"_last\";\n }\n\n var prev = child._prev,\n next = child._next;\n\n if (prev) {\n prev._next = next;\n } else if (parent[firstProp] === child) {\n parent[firstProp] = next;\n }\n\n if (next) {\n next._prev = prev;\n } else if (parent[lastProp] === child) {\n parent[lastProp] = prev;\n }\n\n child._next = child._prev = child.parent = null; // don't delete the _dp just so we can revert if necessary. But parent should be null to indicate the item isn't in a linked list.\n},\n _removeFromParent = function _removeFromParent(child, onlyIfParentHasAutoRemove) {\n child.parent && (!onlyIfParentHasAutoRemove || child.parent.autoRemoveChildren) && child.parent.remove && child.parent.remove(child);\n child._act = 0;\n},\n _uncache = function _uncache(animation, child) {\n if (animation && (!child || child._end > animation._dur || child._start < 0)) {\n // performance optimization: if a child animation is passed in we should only uncache if that child EXTENDS the animation (its end time is beyond the end)\n var a = animation;\n\n while (a) {\n a._dirty = 1;\n a = a.parent;\n }\n }\n\n return animation;\n},\n _recacheAncestors = function _recacheAncestors(animation) {\n var parent = animation.parent;\n\n while (parent && parent.parent) {\n //sometimes we must force a re-sort of all children and update the duration/totalDuration of all ancestor timelines immediately in case, for example, in the middle of a render loop, one tween alters another tween's timeScale which shoves its startTime before 0, forcing the parent timeline to shift around and shiftChildren() which could affect that next tween's render (startTime). Doesn't matter for the root timeline though.\n parent._dirty = 1;\n parent.totalDuration();\n parent = parent.parent;\n }\n\n return animation;\n},\n _rewindStartAt = function _rewindStartAt(tween, totalTime, suppressEvents, force) {\n return tween._startAt && (_reverting ? tween._startAt.revert(_revertConfigNoKill) : tween.vars.immediateRender && !tween.vars.autoRevert || tween._startAt.render(totalTime, true, force));\n},\n _hasNoPausedAncestors = function _hasNoPausedAncestors(animation) {\n return !animation || animation._ts && _hasNoPausedAncestors(animation.parent);\n},\n _elapsedCycleDuration = function _elapsedCycleDuration(animation) {\n return animation._repeat ? _animationCycle(animation._tTime, animation = animation.duration() + animation._rDelay) * animation : 0;\n},\n // feed in the totalTime and cycleDuration and it'll return the cycle (iteration minus 1) and if the playhead is exactly at the very END, it will NOT bump up to the next cycle.\n_animationCycle = function _animationCycle(tTime, cycleDuration) {\n var whole = Math.floor(tTime /= cycleDuration);\n return tTime && whole === tTime ? whole - 1 : whole;\n},\n _parentToChildTotalTime = function _parentToChildTotalTime(parentTime, child) {\n return (parentTime - child._start) * child._ts + (child._ts >= 0 ? 0 : child._dirty ? child.totalDuration() : child._tDur);\n},\n _setEnd = function _setEnd(animation) {\n return animation._end = _roundPrecise(animation._start + (animation._tDur / Math.abs(animation._ts || animation._rts || _tinyNum) || 0));\n},\n _alignPlayhead = function _alignPlayhead(animation, totalTime) {\n // adjusts the animation's _start and _end according to the provided totalTime (only if the parent's smoothChildTiming is true and the animation isn't paused). It doesn't do any rendering or forcing things back into parent timelines, etc. - that's what totalTime() is for.\n var parent = animation._dp;\n\n if (parent && parent.smoothChildTiming && animation._ts) {\n animation._start = _roundPrecise(parent._time - (animation._ts > 0 ? totalTime / animation._ts : ((animation._dirty ? animation.totalDuration() : animation._tDur) - totalTime) / -animation._ts));\n\n _setEnd(animation);\n\n parent._dirty || _uncache(parent, animation); //for performance improvement. If the parent's cache is already dirty, it already took care of marking the ancestors as dirty too, so skip the function call here.\n }\n\n return animation;\n},\n\n/*\n_totalTimeToTime = (clampedTotalTime, duration, repeat, repeatDelay, yoyo) => {\n\tlet cycleDuration = duration + repeatDelay,\n\t\ttime = _round(clampedTotalTime % cycleDuration);\n\tif (time > duration) {\n\t\ttime = duration;\n\t}\n\treturn (yoyo && (~~(clampedTotalTime / cycleDuration) & 1)) ? duration - time : time;\n},\n*/\n_postAddChecks = function _postAddChecks(timeline, child) {\n var t;\n\n if (child._time || !child._dur && child._initted || child._start < timeline._time && (child._dur || !child.add)) {\n // in case, for example, the _start is moved on a tween that has already rendered, or if it's being inserted into a timeline BEFORE where the playhead is currently. Imagine it's at its end state, then the startTime is moved WAY later (after the end of this timeline), it should render at its beginning. Special case: if it's a timeline (has .add() method) and no duration, we can skip rendering because the user may be populating it AFTER adding it to a parent timeline (unconventional, but possible, and we wouldn't want it to get removed if the parent's autoRemoveChildren is true).\n t = _parentToChildTotalTime(timeline.rawTime(), child);\n\n if (!child._dur || _clamp(0, child.totalDuration(), t) - child._tTime > _tinyNum) {\n child.render(t, true);\n }\n } //if the timeline has already ended but the inserted tween/timeline extends the duration, we should enable this timeline again so that it renders properly. We should also align the playhead with the parent timeline's when appropriate.\n\n\n if (_uncache(timeline, child)._dp && timeline._initted && timeline._time >= timeline._dur && timeline._ts) {\n //in case any of the ancestors had completed but should now be enabled...\n if (timeline._dur < timeline.duration()) {\n t = timeline;\n\n while (t._dp) {\n t.rawTime() >= 0 && t.totalTime(t._tTime); //moves the timeline (shifts its startTime) if necessary, and also enables it. If it's currently zero, though, it may not be scheduled to render until later so there's no need to force it to align with the current playhead position. Only move to catch up with the playhead.\n\n t = t._dp;\n }\n }\n\n timeline._zTime = -_tinyNum; // helps ensure that the next render() will be forced (crossingStart = true in render()), even if the duration hasn't changed (we're adding a child which would need to get rendered). Definitely an edge case. Note: we MUST do this AFTER the loop above where the totalTime() might trigger a render() because this _addToTimeline() method gets called from the Animation constructor, BEFORE tweens even record their targets, etc. so we wouldn't want things to get triggered in the wrong order.\n }\n},\n _addToTimeline = function _addToTimeline(timeline, child, position, skipChecks) {\n child.parent && _removeFromParent(child);\n child._start = _roundPrecise((_isNumber(position) ? position : position || timeline !== _globalTimeline ? _parsePosition(timeline, position, child) : timeline._time) + child._delay);\n child._end = _roundPrecise(child._start + (child.totalDuration() / Math.abs(child.timeScale()) || 0));\n\n _addLinkedListItem(timeline, child, \"_first\", \"_last\", timeline._sort ? \"_start\" : 0);\n\n _isFromOrFromStart(child) || (timeline._recent = child);\n skipChecks || _postAddChecks(timeline, child);\n timeline._ts < 0 && _alignPlayhead(timeline, timeline._tTime); // if the timeline is reversed and the new child makes it longer, we may need to adjust the parent's _start (push it back)\n\n return timeline;\n},\n _scrollTrigger = function _scrollTrigger(animation, trigger) {\n return (_globals.ScrollTrigger || _missingPlugin(\"scrollTrigger\", trigger)) && _globals.ScrollTrigger.create(trigger, animation);\n},\n _attemptInitTween = function _attemptInitTween(tween, time, force, suppressEvents, tTime) {\n _initTween(tween, time, tTime);\n\n if (!tween._initted) {\n return 1;\n }\n\n if (!force && tween._pt && !_reverting && (tween._dur && tween.vars.lazy !== false || !tween._dur && tween.vars.lazy) && _lastRenderedFrame !== _ticker.frame) {\n _lazyTweens.push(tween);\n\n tween._lazy = [tTime, suppressEvents];\n return 1;\n }\n},\n _parentPlayheadIsBeforeStart = function _parentPlayheadIsBeforeStart(_ref) {\n var parent = _ref.parent;\n return parent && parent._ts && parent._initted && !parent._lock && (parent.rawTime() < 0 || _parentPlayheadIsBeforeStart(parent));\n},\n // check parent's _lock because when a timeline repeats/yoyos and does its artificial wrapping, we shouldn't force the ratio back to 0\n_isFromOrFromStart = function _isFromOrFromStart(_ref2) {\n var data = _ref2.data;\n return data === \"isFromStart\" || data === \"isStart\";\n},\n _renderZeroDurationTween = function _renderZeroDurationTween(tween, totalTime, suppressEvents, force) {\n var prevRatio = tween.ratio,\n ratio = totalTime < 0 || !totalTime && (!tween._start && _parentPlayheadIsBeforeStart(tween) && !(!tween._initted && _isFromOrFromStart(tween)) || (tween._ts < 0 || tween._dp._ts < 0) && !_isFromOrFromStart(tween)) ? 0 : 1,\n // if the tween or its parent is reversed and the totalTime is 0, we should go to a ratio of 0. Edge case: if a from() or fromTo() stagger tween is placed later in a timeline, the \"startAt\" zero-duration tween could initially render at a time when the parent timeline's playhead is technically BEFORE where this tween is, so make sure that any \"from\" and \"fromTo\" startAt tweens are rendered the first time at a ratio of 1.\n repeatDelay = tween._rDelay,\n tTime = 0,\n pt,\n iteration,\n prevIteration;\n\n if (repeatDelay && tween._repeat) {\n // in case there's a zero-duration tween that has a repeat with a repeatDelay\n tTime = _clamp(0, tween._tDur, totalTime);\n iteration = _animationCycle(tTime, repeatDelay);\n tween._yoyo && iteration & 1 && (ratio = 1 - ratio);\n\n if (iteration !== _animationCycle(tween._tTime, repeatDelay)) {\n // if iteration changed\n prevRatio = 1 - ratio;\n tween.vars.repeatRefresh && tween._initted && tween.invalidate();\n }\n }\n\n if (ratio !== prevRatio || _reverting || force || tween._zTime === _tinyNum || !totalTime && tween._zTime) {\n if (!tween._initted && _attemptInitTween(tween, totalTime, force, suppressEvents, tTime)) {\n // if we render the very beginning (time == 0) of a fromTo(), we must force the render (normal tweens wouldn't need to render at a time of 0 when the prevTime was also 0). This is also mandatory to make sure overwriting kicks in immediately.\n return;\n }\n\n prevIteration = tween._zTime;\n tween._zTime = totalTime || (suppressEvents ? _tinyNum : 0); // when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration tween, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect.\n\n suppressEvents || (suppressEvents = totalTime && !prevIteration); // if it was rendered previously at exactly 0 (_zTime) and now the playhead is moving away, DON'T fire callbacks otherwise they'll seem like duplicates.\n\n tween.ratio = ratio;\n tween._from && (ratio = 1 - ratio);\n tween._time = 0;\n tween._tTime = tTime;\n pt = tween._pt;\n\n while (pt) {\n pt.r(ratio, pt.d);\n pt = pt._next;\n }\n\n totalTime < 0 && _rewindStartAt(tween, totalTime, suppressEvents, true);\n tween._onUpdate && !suppressEvents && _callback(tween, \"onUpdate\");\n tTime && tween._repeat && !suppressEvents && tween.parent && _callback(tween, \"onRepeat\");\n\n if ((totalTime >= tween._tDur || totalTime < 0) && tween.ratio === ratio) {\n ratio && _removeFromParent(tween, 1);\n\n if (!suppressEvents && !_reverting) {\n _callback(tween, ratio ? \"onComplete\" : \"onReverseComplete\", true);\n\n tween._prom && tween._prom();\n }\n }\n } else if (!tween._zTime) {\n tween._zTime = totalTime;\n }\n},\n _findNextPauseTween = function _findNextPauseTween(animation, prevTime, time) {\n var child;\n\n if (time > prevTime) {\n child = animation._first;\n\n while (child && child._start <= time) {\n if (child.data === \"isPause\" && child._start > prevTime) {\n return child;\n }\n\n child = child._next;\n }\n } else {\n child = animation._last;\n\n while (child && child._start >= time) {\n if (child.data === \"isPause\" && child._start < prevTime) {\n return child;\n }\n\n child = child._prev;\n }\n }\n},\n _setDuration = function _setDuration(animation, duration, skipUncache, leavePlayhead) {\n var repeat = animation._repeat,\n dur = _roundPrecise(duration) || 0,\n totalProgress = animation._tTime / animation._tDur;\n totalProgress && !leavePlayhead && (animation._time *= dur / animation._dur);\n animation._dur = dur;\n animation._tDur = !repeat ? dur : repeat < 0 ? 1e10 : _roundPrecise(dur * (repeat + 1) + animation._rDelay * repeat);\n totalProgress > 0 && !leavePlayhead && _alignPlayhead(animation, animation._tTime = animation._tDur * totalProgress);\n animation.parent && _setEnd(animation);\n skipUncache || _uncache(animation.parent, animation);\n return animation;\n},\n _onUpdateTotalDuration = function _onUpdateTotalDuration(animation) {\n return animation instanceof Timeline ? _uncache(animation) : _setDuration(animation, animation._dur);\n},\n _zeroPosition = {\n _start: 0,\n endTime: _emptyFunc,\n totalDuration: _emptyFunc\n},\n _parsePosition = function _parsePosition(animation, position, percentAnimation) {\n var labels = animation.labels,\n recent = animation._recent || _zeroPosition,\n clippedDuration = animation.duration() >= _bigNum ? recent.endTime(false) : animation._dur,\n //in case there's a child that infinitely repeats, users almost never intend for the insertion point of a new child to be based on a SUPER long value like that so we clip it and assume the most recently-added child's endTime should be used instead.\n i,\n offset,\n isPercent;\n\n if (_isString(position) && (isNaN(position) || position in labels)) {\n //if the string is a number like \"1\", check to see if there's a label with that name, otherwise interpret it as a number (absolute value).\n offset = position.charAt(0);\n isPercent = position.substr(-1) === \"%\";\n i = position.indexOf(\"=\");\n\n if (offset === \"<\" || offset === \">\") {\n i >= 0 && (position = position.replace(/=/, \"\"));\n return (offset === \"<\" ? recent._start : recent.endTime(recent._repeat >= 0)) + (parseFloat(position.substr(1)) || 0) * (isPercent ? (i < 0 ? recent : percentAnimation).totalDuration() / 100 : 1);\n }\n\n if (i < 0) {\n position in labels || (labels[position] = clippedDuration);\n return labels[position];\n }\n\n offset = parseFloat(position.charAt(i - 1) + position.substr(i + 1));\n\n if (isPercent && percentAnimation) {\n offset = offset / 100 * (_isArray(percentAnimation) ? percentAnimation[0] : percentAnimation).totalDuration();\n }\n\n return i > 1 ? _parsePosition(animation, position.substr(0, i - 1), percentAnimation) + offset : clippedDuration + offset;\n }\n\n return position == null ? clippedDuration : +position;\n},\n _createTweenType = function _createTweenType(type, params, timeline) {\n var isLegacy = _isNumber(params[1]),\n varsIndex = (isLegacy ? 2 : 1) + (type < 2 ? 0 : 1),\n vars = params[varsIndex],\n irVars,\n parent;\n\n isLegacy && (vars.duration = params[1]);\n vars.parent = timeline;\n\n if (type) {\n irVars = vars;\n parent = timeline;\n\n while (parent && !(\"immediateRender\" in irVars)) {\n // inheritance hasn't happened yet, but someone may have set a default in an ancestor timeline. We could do vars.immediateRender = _isNotFalse(_inheritDefaults(vars).immediateRender) but that'd exact a slight performance penalty because _inheritDefaults() also runs in the Tween constructor. We're paying a small kb price here to gain speed.\n irVars = parent.vars.defaults || {};\n parent = _isNotFalse(parent.vars.inherit) && parent.parent;\n }\n\n vars.immediateRender = _isNotFalse(irVars.immediateRender);\n type < 2 ? vars.runBackwards = 1 : vars.startAt = params[varsIndex - 1]; // \"from\" vars\n }\n\n return new Tween(params[0], vars, params[varsIndex + 1]);\n},\n _conditionalReturn = function _conditionalReturn(value, func) {\n return value || value === 0 ? func(value) : func;\n},\n _clamp = function _clamp(min, max, value) {\n return value < min ? min : value > max ? max : value;\n},\n getUnit = function getUnit(value, v) {\n return !_isString(value) || !(v = _unitExp.exec(value)) ? \"\" : v[1];\n},\n // note: protect against padded numbers as strings, like \"100.100\". That shouldn't return \"00\" as the unit. If it's numeric, return no unit.\nclamp = function clamp(min, max, value) {\n return _conditionalReturn(value, function (v) {\n return _clamp(min, max, v);\n });\n},\n _slice = [].slice,\n _isArrayLike = function _isArrayLike(value, nonEmpty) {\n return value && _isObject(value) && \"length\" in value && (!nonEmpty && !value.length || value.length - 1 in value && _isObject(value[0])) && !value.nodeType && value !== _win;\n},\n _flatten = function _flatten(ar, leaveStrings, accumulator) {\n if (accumulator === void 0) {\n accumulator = [];\n }\n\n return ar.forEach(function (value) {\n var _accumulator;\n\n return _isString(value) && !leaveStrings || _isArrayLike(value, 1) ? (_accumulator = accumulator).push.apply(_accumulator, toArray(value)) : accumulator.push(value);\n }) || accumulator;\n},\n //takes any value and returns an array. If it's a string (and leaveStrings isn't true), it'll use document.querySelectorAll() and convert that to an array. It'll also accept iterables like jQuery objects.\ntoArray = function toArray(value, scope, leaveStrings) {\n return _context && !scope && _context.selector ? _context.selector(value) : _isString(value) && !leaveStrings && (_coreInitted || !_wake()) ? _slice.call((scope || _doc).querySelectorAll(value), 0) : _isArray(value) ? _flatten(value, leaveStrings) : _isArrayLike(value) ? _slice.call(value, 0) : value ? [value] : [];\n},\n selector = function selector(value) {\n value = toArray(value)[0] || _warn(\"Invalid scope\") || {};\n return function (v) {\n var el = value.current || value.nativeElement || value;\n return toArray(v, el.querySelectorAll ? el : el === value ? _warn(\"Invalid scope\") || _doc.createElement(\"div\") : value);\n };\n},\n shuffle = function shuffle(a) {\n return a.sort(function () {\n return .5 - Math.random();\n });\n},\n // alternative that's a bit faster and more reliably diverse but bigger: for (let j, v, i = a.length; i; j = Math.floor(Math.random() * i), v = a[--i], a[i] = a[j], a[j] = v); return a;\n//for distributing values across an array. Can accept a number, a function or (most commonly) a function which can contain the following properties: {base, amount, from, ease, grid, axis, length, each}. Returns a function that expects the following parameters: index, target, array. Recognizes the following\ndistribute = function distribute(v) {\n if (_isFunction(v)) {\n return v;\n }\n\n var vars = _isObject(v) ? v : {\n each: v\n },\n //n:1 is just to indicate v was a number; we leverage that later to set v according to the length we get. If a number is passed in, we treat it like the old stagger value where 0.1, for example, would mean that things would be distributed with 0.1 between each element in the array rather than a total \"amount\" that's chunked out among them all.\n ease = _parseEase(vars.ease),\n from = vars.from || 0,\n base = parseFloat(vars.base) || 0,\n cache = {},\n isDecimal = from > 0 && from < 1,\n ratios = isNaN(from) || isDecimal,\n axis = vars.axis,\n ratioX = from,\n ratioY = from;\n\n if (_isString(from)) {\n ratioX = ratioY = {\n center: .5,\n edges: .5,\n end: 1\n }[from] || 0;\n } else if (!isDecimal && ratios) {\n ratioX = from[0];\n ratioY = from[1];\n }\n\n return function (i, target, a) {\n var l = (a || vars).length,\n distances = cache[l],\n originX,\n originY,\n x,\n y,\n d,\n j,\n max,\n min,\n wrapAt;\n\n if (!distances) {\n wrapAt = vars.grid === \"auto\" ? 0 : (vars.grid || [1, _bigNum])[1];\n\n if (!wrapAt) {\n max = -_bigNum;\n\n while (max < (max = a[wrapAt++].getBoundingClientRect().left) && wrapAt < l) {}\n\n wrapAt < l && wrapAt--;\n }\n\n distances = cache[l] = [];\n originX = ratios ? Math.min(wrapAt, l) * ratioX - .5 : from % wrapAt;\n originY = wrapAt === _bigNum ? 0 : ratios ? l * ratioY / wrapAt - .5 : from / wrapAt | 0;\n max = 0;\n min = _bigNum;\n\n for (j = 0; j < l; j++) {\n x = j % wrapAt - originX;\n y = originY - (j / wrapAt | 0);\n distances[j] = d = !axis ? _sqrt(x * x + y * y) : Math.abs(axis === \"y\" ? y : x);\n d > max && (max = d);\n d < min && (min = d);\n }\n\n from === \"random\" && shuffle(distances);\n distances.max = max - min;\n distances.min = min;\n distances.v = l = (parseFloat(vars.amount) || parseFloat(vars.each) * (wrapAt > l ? l - 1 : !axis ? Math.max(wrapAt, l / wrapAt) : axis === \"y\" ? l / wrapAt : wrapAt) || 0) * (from === \"edges\" ? -1 : 1);\n distances.b = l < 0 ? base - l : base;\n distances.u = getUnit(vars.amount || vars.each) || 0; //unit\n\n ease = ease && l < 0 ? _invertEase(ease) : ease;\n }\n\n l = (distances[i] - distances.min) / distances.max || 0;\n return _roundPrecise(distances.b + (ease ? ease(l) : l) * distances.v) + distances.u; //round in order to work around floating point errors\n };\n},\n _roundModifier = function _roundModifier(v) {\n //pass in 0.1 get a function that'll round to the nearest tenth, or 5 to round to the closest 5, or 0.001 to the closest 1000th, etc.\n var p = Math.pow(10, ((v + \"\").split(\".\")[1] || \"\").length); //to avoid floating point math errors (like 24 * 0.1 == 2.4000000000000004), we chop off at a specific number of decimal places (much faster than toFixed())\n\n return function (raw) {\n var n = _roundPrecise(Math.round(parseFloat(raw) / v) * v * p);\n\n return (n - n % 1) / p + (_isNumber(raw) ? 0 : getUnit(raw)); // n - n % 1 replaces Math.floor() in order to handle negative values properly. For example, Math.floor(-150.00000000000003) is 151!\n };\n},\n snap = function snap(snapTo, value) {\n var isArray = _isArray(snapTo),\n radius,\n is2D;\n\n if (!isArray && _isObject(snapTo)) {\n radius = isArray = snapTo.radius || _bigNum;\n\n if (snapTo.values) {\n snapTo = toArray(snapTo.values);\n\n if (is2D = !_isNumber(snapTo[0])) {\n radius *= radius; //performance optimization so we don't have to Math.sqrt() in the loop.\n }\n } else {\n snapTo = _roundModifier(snapTo.increment);\n }\n }\n\n return _conditionalReturn(value, !isArray ? _roundModifier(snapTo) : _isFunction(snapTo) ? function (raw) {\n is2D = snapTo(raw);\n return Math.abs(is2D - raw) <= radius ? is2D : raw;\n } : function (raw) {\n var x = parseFloat(is2D ? raw.x : raw),\n y = parseFloat(is2D ? raw.y : 0),\n min = _bigNum,\n closest = 0,\n i = snapTo.length,\n dx,\n dy;\n\n while (i--) {\n if (is2D) {\n dx = snapTo[i].x - x;\n dy = snapTo[i].y - y;\n dx = dx * dx + dy * dy;\n } else {\n dx = Math.abs(snapTo[i] - x);\n }\n\n if (dx < min) {\n min = dx;\n closest = i;\n }\n }\n\n closest = !radius || min <= radius ? snapTo[closest] : raw;\n return is2D || closest === raw || _isNumber(raw) ? closest : closest + getUnit(raw);\n });\n},\n random = function random(min, max, roundingIncrement, returnFunction) {\n return _conditionalReturn(_isArray(min) ? !max : roundingIncrement === true ? !!(roundingIncrement = 0) : !returnFunction, function () {\n return _isArray(min) ? min[~~(Math.random() * min.length)] : (roundingIncrement = roundingIncrement || 1e-5) && (returnFunction = roundingIncrement < 1 ? Math.pow(10, (roundingIncrement + \"\").length - 2) : 1) && Math.floor(Math.round((min - roundingIncrement / 2 + Math.random() * (max - min + roundingIncrement * .99)) / roundingIncrement) * roundingIncrement * returnFunction) / returnFunction;\n });\n},\n pipe = function pipe() {\n for (var _len = arguments.length, functions = new Array(_len), _key = 0; _key < _len; _key++) {\n functions[_key] = arguments[_key];\n }\n\n return function (value) {\n return functions.reduce(function (v, f) {\n return f(v);\n }, value);\n };\n},\n unitize = function unitize(func, unit) {\n return function (value) {\n return func(parseFloat(value)) + (unit || getUnit(value));\n };\n},\n normalize = function normalize(min, max, value) {\n return mapRange(min, max, 0, 1, value);\n},\n _wrapArray = function _wrapArray(a, wrapper, value) {\n return _conditionalReturn(value, function (index) {\n return a[~~wrapper(index)];\n });\n},\n wrap = function wrap(min, max, value) {\n // NOTE: wrap() CANNOT be an arrow function! A very odd compiling bug causes problems (unrelated to GSAP).\n var range = max - min;\n return _isArray(min) ? _wrapArray(min, wrap(0, min.length), max) : _conditionalReturn(value, function (value) {\n return (range + (value - min) % range) % range + min;\n });\n},\n wrapYoyo = function wrapYoyo(min, max, value) {\n var range = max - min,\n total = range * 2;\n return _isArray(min) ? _wrapArray(min, wrapYoyo(0, min.length - 1), max) : _conditionalReturn(value, function (value) {\n value = (total + (value - min) % total) % total || 0;\n return min + (value > range ? total - value : value);\n });\n},\n _replaceRandom = function _replaceRandom(value) {\n //replaces all occurrences of random(...) in a string with the calculated random value. can be a range like random(-100, 100, 5) or an array like random([0, 100, 500])\n var prev = 0,\n s = \"\",\n i,\n nums,\n end,\n isArray;\n\n while (~(i = value.indexOf(\"random(\", prev))) {\n end = value.indexOf(\")\", i);\n isArray = value.charAt(i + 7) === \"[\";\n nums = value.substr(i + 7, end - i - 7).match(isArray ? _delimitedValueExp : _strictNumExp);\n s += value.substr(prev, i - prev) + random(isArray ? nums : +nums[0], isArray ? 0 : +nums[1], +nums[2] || 1e-5);\n prev = end + 1;\n }\n\n return s + value.substr(prev, value.length - prev);\n},\n mapRange = function mapRange(inMin, inMax, outMin, outMax, value) {\n var inRange = inMax - inMin,\n outRange = outMax - outMin;\n return _conditionalReturn(value, function (value) {\n return outMin + ((value - inMin) / inRange * outRange || 0);\n });\n},\n interpolate = function interpolate(start, end, progress, mutate) {\n var func = isNaN(start + end) ? 0 : function (p) {\n return (1 - p) * start + p * end;\n };\n\n if (!func) {\n var isString = _isString(start),\n master = {},\n p,\n i,\n interpolators,\n l,\n il;\n\n progress === true && (mutate = 1) && (progress = null);\n\n if (isString) {\n start = {\n p: start\n };\n end = {\n p: end\n };\n } else if (_isArray(start) && !_isArray(end)) {\n interpolators = [];\n l = start.length;\n il = l - 2;\n\n for (i = 1; i < l; i++) {\n interpolators.push(interpolate(start[i - 1], start[i])); //build the interpolators up front as a performance optimization so that when the function is called many times, it can just reuse them.\n }\n\n l--;\n\n func = function func(p) {\n p *= l;\n var i = Math.min(il, ~~p);\n return interpolators[i](p - i);\n };\n\n progress = end;\n } else if (!mutate) {\n start = _merge(_isArray(start) ? [] : {}, start);\n }\n\n if (!interpolators) {\n for (p in end) {\n _addPropTween.call(master, start, p, \"get\", end[p]);\n }\n\n func = function func(p) {\n return _renderPropTweens(p, master) || (isString ? start.p : start);\n };\n }\n }\n\n return _conditionalReturn(progress, func);\n},\n _getLabelInDirection = function _getLabelInDirection(timeline, fromTime, backward) {\n //used for nextLabel() and previousLabel()\n var labels = timeline.labels,\n min = _bigNum,\n p,\n distance,\n label;\n\n for (p in labels) {\n distance = labels[p] - fromTime;\n\n if (distance < 0 === !!backward && distance && min > (distance = Math.abs(distance))) {\n label = p;\n min = distance;\n }\n }\n\n return label;\n},\n _callback = function _callback(animation, type, executeLazyFirst) {\n var v = animation.vars,\n callback = v[type],\n prevContext = _context,\n context = animation._ctx,\n params,\n scope,\n result;\n\n if (!callback) {\n return;\n }\n\n params = v[type + \"Params\"];\n scope = v.callbackScope || animation;\n executeLazyFirst && _lazyTweens.length && _lazyRender(); //in case rendering caused any tweens to lazy-init, we should render them because typically when a timeline finishes, users expect things to have rendered fully. Imagine an onUpdate on a timeline that reports/checks tweened values.\n\n context && (_context = context);\n result = params ? callback.apply(scope, params) : callback.call(scope);\n _context = prevContext;\n return result;\n},\n _interrupt = function _interrupt(animation) {\n _removeFromParent(animation);\n\n animation.scrollTrigger && animation.scrollTrigger.kill(!!_reverting);\n animation.progress() < 1 && _callback(animation, \"onInterrupt\");\n return animation;\n},\n _quickTween,\n _registerPluginQueue = [],\n _createPlugin = function _createPlugin(config) {\n if (_windowExists() && config) {\n // edge case: some build tools may pass in a null/undefined value\n config = !config.name && config[\"default\"] || config; //UMD packaging wraps things oddly, so for example MotionPathHelper becomes {MotionPathHelper:MotionPathHelper, default:MotionPathHelper}.\n\n var name = config.name,\n isFunc = _isFunction(config),\n Plugin = name && !isFunc && config.init ? function () {\n this._props = [];\n } : config,\n //in case someone passes in an object that's not a plugin, like CustomEase\n instanceDefaults = {\n init: _emptyFunc,\n render: _renderPropTweens,\n add: _addPropTween,\n kill: _killPropTweensOf,\n modifier: _addPluginModifier,\n rawVars: 0\n },\n statics = {\n targetTest: 0,\n get: 0,\n getSetter: _getSetter,\n aliases: {},\n register: 0\n };\n\n _wake();\n\n if (config !== Plugin) {\n if (_plugins[name]) {\n return;\n }\n\n _setDefaults(Plugin, _setDefaults(_copyExcluding(config, instanceDefaults), statics)); //static methods\n\n\n _merge(Plugin.prototype, _merge(instanceDefaults, _copyExcluding(config, statics))); //instance methods\n\n\n _plugins[Plugin.prop = name] = Plugin;\n\n if (config.targetTest) {\n _harnessPlugins.push(Plugin);\n\n _reservedProps[name] = 1;\n }\n\n name = (name === \"css\" ? \"CSS\" : name.charAt(0).toUpperCase() + name.substr(1)) + \"Plugin\"; //for the global name. \"motionPath\" should become MotionPathPlugin\n }\n\n _addGlobal(name, Plugin);\n\n config.register && config.register(gsap, Plugin, PropTween);\n } else {\n config && _registerPluginQueue.push(config);\n }\n},\n\n/*\n * --------------------------------------------------------------------------------------\n * COLORS\n * --------------------------------------------------------------------------------------\n */\n_255 = 255,\n _colorLookup = {\n aqua: [0, _255, _255],\n lime: [0, _255, 0],\n silver: [192, 192, 192],\n black: [0, 0, 0],\n maroon: [128, 0, 0],\n teal: [0, 128, 128],\n blue: [0, 0, _255],\n navy: [0, 0, 128],\n white: [_255, _255, _255],\n olive: [128, 128, 0],\n yellow: [_255, _255, 0],\n orange: [_255, 165, 0],\n gray: [128, 128, 128],\n purple: [128, 0, 128],\n green: [0, 128, 0],\n red: [_255, 0, 0],\n pink: [_255, 192, 203],\n cyan: [0, _255, _255],\n transparent: [_255, _255, _255, 0]\n},\n // possible future idea to replace the hard-coded color name values - put this in the ticker.wake() where we set the _doc:\n// let ctx = _doc.createElement(\"canvas\").getContext(\"2d\");\n// _forEachName(\"aqua,lime,silver,black,maroon,teal,blue,navy,white,olive,yellow,orange,gray,purple,green,red,pink,cyan\", color => {ctx.fillStyle = color; _colorLookup[color] = splitColor(ctx.fillStyle)});\n_hue = function _hue(h, m1, m2) {\n h += h < 0 ? 1 : h > 1 ? -1 : 0;\n return (h * 6 < 1 ? m1 + (m2 - m1) * h * 6 : h < .5 ? m2 : h * 3 < 2 ? m1 + (m2 - m1) * (2 / 3 - h) * 6 : m1) * _255 + .5 | 0;\n},\n splitColor = function splitColor(v, toHSL, forceAlpha) {\n var a = !v ? _colorLookup.black : _isNumber(v) ? [v >> 16, v >> 8 & _255, v & _255] : 0,\n r,\n g,\n b,\n h,\n s,\n l,\n max,\n min,\n d,\n wasHSL;\n\n if (!a) {\n if (v.substr(-1) === \",\") {\n //sometimes a trailing comma is included and we should chop it off (typically from a comma-delimited list of values like a textShadow:\"2px 2px 2px blue, 5px 5px 5px rgb(255,0,0)\" - in this example \"blue,\" has a trailing comma. We could strip it out inside parseComplex() but we'd need to do it to the beginning and ending values plus it wouldn't provide protection from other potential scenarios like if the user passes in a similar value.\n v = v.substr(0, v.length - 1);\n }\n\n if (_colorLookup[v]) {\n a = _colorLookup[v];\n } else if (v.charAt(0) === \"#\") {\n if (v.length < 6) {\n //for shorthand like #9F0 or #9F0F (could have alpha)\n r = v.charAt(1);\n g = v.charAt(2);\n b = v.charAt(3);\n v = \"#\" + r + r + g + g + b + b + (v.length === 5 ? v.charAt(4) + v.charAt(4) : \"\");\n }\n\n if (v.length === 9) {\n // hex with alpha, like #fd5e53ff\n a = parseInt(v.substr(1, 6), 16);\n return [a >> 16, a >> 8 & _255, a & _255, parseInt(v.substr(7), 16) / 255];\n }\n\n v = parseInt(v.substr(1), 16);\n a = [v >> 16, v >> 8 & _255, v & _255];\n } else if (v.substr(0, 3) === \"hsl\") {\n a = wasHSL = v.match(_strictNumExp);\n\n if (!toHSL) {\n h = +a[0] % 360 / 360;\n s = +a[1] / 100;\n l = +a[2] / 100;\n g = l <= .5 ? l * (s + 1) : l + s - l * s;\n r = l * 2 - g;\n a.length > 3 && (a[3] *= 1); //cast as number\n\n a[0] = _hue(h + 1 / 3, r, g);\n a[1] = _hue(h, r, g);\n a[2] = _hue(h - 1 / 3, r, g);\n } else if (~v.indexOf(\"=\")) {\n //if relative values are found, just return the raw strings with the relative prefixes in place.\n a = v.match(_numExp);\n forceAlpha && a.length < 4 && (a[3] = 1);\n return a;\n }\n } else {\n a = v.match(_strictNumExp) || _colorLookup.transparent;\n }\n\n a = a.map(Number);\n }\n\n if (toHSL && !wasHSL) {\n r = a[0] / _255;\n g = a[1] / _255;\n b = a[2] / _255;\n max = Math.max(r, g, b);\n min = Math.min(r, g, b);\n l = (max + min) / 2;\n\n if (max === min) {\n h = s = 0;\n } else {\n d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n h = max === r ? (g - b) / d + (g < b ? 6 : 0) : max === g ? (b - r) / d + 2 : (r - g) / d + 4;\n h *= 60;\n }\n\n a[0] = ~~(h + .5);\n a[1] = ~~(s * 100 + .5);\n a[2] = ~~(l * 100 + .5);\n }\n\n forceAlpha && a.length < 4 && (a[3] = 1);\n return a;\n},\n _colorOrderData = function _colorOrderData(v) {\n // strips out the colors from the string, finds all the numeric slots (with units) and returns an array of those. The Array also has a \"c\" property which is an Array of the index values where the colors belong. This is to help work around issues where there's a mis-matched order of color/numeric data like drop-shadow(#f00 0px 1px 2px) and drop-shadow(0x 1px 2px #f00). This is basically a helper function used in _formatColors()\n var values = [],\n c = [],\n i = -1;\n v.split(_colorExp).forEach(function (v) {\n var a = v.match(_numWithUnitExp) || [];\n values.push.apply(values, a);\n c.push(i += a.length + 1);\n });\n values.c = c;\n return values;\n},\n _formatColors = function _formatColors(s, toHSL, orderMatchData) {\n var result = \"\",\n colors = (s + result).match(_colorExp),\n type = toHSL ? \"hsla(\" : \"rgba(\",\n i = 0,\n c,\n shell,\n d,\n l;\n\n if (!colors) {\n return s;\n }\n\n colors = colors.map(function (color) {\n return (color = splitColor(color, toHSL, 1)) && type + (toHSL ? color[0] + \",\" + color[1] + \"%,\" + color[2] + \"%,\" + color[3] : color.join(\",\")) + \")\";\n });\n\n if (orderMatchData) {\n d = _colorOrderData(s);\n c = orderMatchData.c;\n\n if (c.join(result) !== d.c.join(result)) {\n shell = s.replace(_colorExp, \"1\").split(_numWithUnitExp);\n l = shell.length - 1;\n\n for (; i < l; i++) {\n result += shell[i] + (~c.indexOf(i) ? colors.shift() || type + \"0,0,0,0)\" : (d.length ? d : colors.length ? colors : orderMatchData).shift());\n }\n }\n }\n\n if (!shell) {\n shell = s.split(_colorExp);\n l = shell.length - 1;\n\n for (; i < l; i++) {\n result += shell[i] + colors[i];\n }\n }\n\n return result + shell[l];\n},\n _colorExp = function () {\n var s = \"(?:\\\\b(?:(?:rgb|rgba|hsl|hsla)\\\\(.+?\\\\))|\\\\B#(?:[0-9a-f]{3,4}){1,2}\\\\b\",\n //we'll dynamically build this Regular Expression to conserve file size. After building it, it will be able to find rgb(), rgba(), # (hexadecimal), and named color values like red, blue, purple, etc.,\n p;\n\n for (p in _colorLookup) {\n s += \"|\" + p + \"\\\\b\";\n }\n\n return new RegExp(s + \")\", \"gi\");\n}(),\n _hslExp = /hsl[a]?\\(/,\n _colorStringFilter = function _colorStringFilter(a) {\n var combined = a.join(\" \"),\n toHSL;\n _colorExp.lastIndex = 0;\n\n if (_colorExp.test(combined)) {\n toHSL = _hslExp.test(combined);\n a[1] = _formatColors(a[1], toHSL);\n a[0] = _formatColors(a[0], toHSL, _colorOrderData(a[1])); // make sure the order of numbers/colors match with the END value.\n\n return true;\n }\n},\n\n/*\n * --------------------------------------------------------------------------------------\n * TICKER\n * --------------------------------------------------------------------------------------\n */\n_tickerActive,\n _ticker = function () {\n var _getTime = Date.now,\n _lagThreshold = 500,\n _adjustedLag = 33,\n _startTime = _getTime(),\n _lastUpdate = _startTime,\n _gap = 1000 / 240,\n _nextTime = _gap,\n _listeners = [],\n _id,\n _req,\n _raf,\n _self,\n _delta,\n _i,\n _tick = function _tick(v) {\n var elapsed = _getTime() - _lastUpdate,\n manual = v === true,\n overlap,\n dispatch,\n time,\n frame;\n\n elapsed > _lagThreshold && (_startTime += elapsed - _adjustedLag);\n _lastUpdate += elapsed;\n time = _lastUpdate - _startTime;\n overlap = time - _nextTime;\n\n if (overlap > 0 || manual) {\n frame = ++_self.frame;\n _delta = time - _self.time * 1000;\n _self.time = time = time / 1000;\n _nextTime += overlap + (overlap >= _gap ? 4 : _gap - overlap);\n dispatch = 1;\n }\n\n manual || (_id = _req(_tick)); //make sure the request is made before we dispatch the \"tick\" event so that timing is maintained. Otherwise, if processing the \"tick\" requires a bunch of time (like 15ms) and we're using a setTimeout() that's based on 16.7ms, it'd technically take 31.7ms between frames otherwise.\n\n if (dispatch) {\n for (_i = 0; _i < _listeners.length; _i++) {\n // use _i and check _listeners.length instead of a variable because a listener could get removed during the loop, and if that happens to an element less than the current index, it'd throw things off in the loop.\n _listeners[_i](time, _delta, frame, v);\n }\n }\n };\n\n _self = {\n time: 0,\n frame: 0,\n tick: function tick() {\n _tick(true);\n },\n deltaRatio: function deltaRatio(fps) {\n return _delta / (1000 / (fps || 60));\n },\n wake: function wake() {\n if (_coreReady) {\n if (!_coreInitted && _windowExists()) {\n _win = _coreInitted = window;\n _doc = _win.document || {};\n _globals.gsap = gsap;\n (_win.gsapVersions || (_win.gsapVersions = [])).push(gsap.version);\n\n _install(_installScope || _win.GreenSockGlobals || !_win.gsap && _win || {});\n\n _raf = _win.requestAnimationFrame;\n\n _registerPluginQueue.forEach(_createPlugin);\n }\n\n _id && _self.sleep();\n\n _req = _raf || function (f) {\n return setTimeout(f, _nextTime - _self.time * 1000 + 1 | 0);\n };\n\n _tickerActive = 1;\n\n _tick(2);\n }\n },\n sleep: function sleep() {\n (_raf ? _win.cancelAnimationFrame : clearTimeout)(_id);\n _tickerActive = 0;\n _req = _emptyFunc;\n },\n lagSmoothing: function lagSmoothing(threshold, adjustedLag) {\n _lagThreshold = threshold || Infinity; // zero should be interpreted as basically unlimited\n\n _adjustedLag = Math.min(adjustedLag || 33, _lagThreshold);\n },\n fps: function fps(_fps) {\n _gap = 1000 / (_fps || 240);\n _nextTime = _self.time * 1000 + _gap;\n },\n add: function add(callback, once, prioritize) {\n var func = once ? function (t, d, f, v) {\n callback(t, d, f, v);\n\n _self.remove(func);\n } : callback;\n\n _self.remove(callback);\n\n _listeners[prioritize ? \"unshift\" : \"push\"](func);\n\n _wake();\n\n return func;\n },\n remove: function remove(callback, i) {\n ~(i = _listeners.indexOf(callback)) && _listeners.splice(i, 1) && _i >= i && _i--;\n },\n _listeners: _listeners\n };\n return _self;\n}(),\n _wake = function _wake() {\n return !_tickerActive && _ticker.wake();\n},\n //also ensures the core classes are initialized.\n\n/*\n* -------------------------------------------------\n* EASING\n* -------------------------------------------------\n*/\n_easeMap = {},\n _customEaseExp = /^[\\d.\\-M][\\d.\\-,\\s]/,\n _quotesExp = /[\"']/g,\n _parseObjectInString = function _parseObjectInString(value) {\n //takes a string like \"{wiggles:10, type:anticipate})\" and turns it into a real object. Notice it ends in \")\" and includes the {} wrappers. This is because we only use this function for parsing ease configs and prioritized optimization rather than reusability.\n var obj = {},\n split = value.substr(1, value.length - 3).split(\":\"),\n key = split[0],\n i = 1,\n l = split.length,\n index,\n val,\n parsedVal;\n\n for (; i < l; i++) {\n val = split[i];\n index = i !== l - 1 ? val.lastIndexOf(\",\") : val.length;\n parsedVal = val.substr(0, index);\n obj[key] = isNaN(parsedVal) ? parsedVal.replace(_quotesExp, \"\").trim() : +parsedVal;\n key = val.substr(index + 1).trim();\n }\n\n return obj;\n},\n _valueInParentheses = function _valueInParentheses(value) {\n var open = value.indexOf(\"(\") + 1,\n close = value.indexOf(\")\"),\n nested = value.indexOf(\"(\", open);\n return value.substring(open, ~nested && nested < close ? value.indexOf(\")\", close + 1) : close);\n},\n _configEaseFromString = function _configEaseFromString(name) {\n //name can be a string like \"elastic.out(1,0.5)\", and pass in _easeMap as obj and it'll parse it out and call the actual function like _easeMap.Elastic.easeOut.config(1,0.5). It will also parse custom ease strings as long as CustomEase is loaded and registered (internally as _easeMap._CE).\n var split = (name + \"\").split(\"(\"),\n ease = _easeMap[split[0]];\n return ease && split.length > 1 && ease.config ? ease.config.apply(null, ~name.indexOf(\"{\") ? [_parseObjectInString(split[1])] : _valueInParentheses(name).split(\",\").map(_numericIfPossible)) : _easeMap._CE && _customEaseExp.test(name) ? _easeMap._CE(\"\", name) : ease;\n},\n _invertEase = function _invertEase(ease) {\n return function (p) {\n return 1 - ease(1 - p);\n };\n},\n // allow yoyoEase to be set in children and have those affected when the parent/ancestor timeline yoyos.\n_propagateYoyoEase = function _propagateYoyoEase(timeline, isYoyo) {\n var child = timeline._first,\n ease;\n\n while (child) {\n if (child instanceof Timeline) {\n _propagateYoyoEase(child, isYoyo);\n } else if (child.vars.yoyoEase && (!child._yoyo || !child._repeat) && child._yoyo !== isYoyo) {\n if (child.timeline) {\n _propagateYoyoEase(child.timeline, isYoyo);\n } else {\n ease = child._ease;\n child._ease = child._yEase;\n child._yEase = ease;\n child._yoyo = isYoyo;\n }\n }\n\n child = child._next;\n }\n},\n _parseEase = function _parseEase(ease, defaultEase) {\n return !ease ? defaultEase : (_isFunction(ease) ? ease : _easeMap[ease] || _configEaseFromString(ease)) || defaultEase;\n},\n _insertEase = function _insertEase(names, easeIn, easeOut, easeInOut) {\n if (easeOut === void 0) {\n easeOut = function easeOut(p) {\n return 1 - easeIn(1 - p);\n };\n }\n\n if (easeInOut === void 0) {\n easeInOut = function easeInOut(p) {\n return p < .5 ? easeIn(p * 2) / 2 : 1 - easeIn((1 - p) * 2) / 2;\n };\n }\n\n var ease = {\n easeIn: easeIn,\n easeOut: easeOut,\n easeInOut: easeInOut\n },\n lowercaseName;\n\n _forEachName(names, function (name) {\n _easeMap[name] = _globals[name] = ease;\n _easeMap[lowercaseName = name.toLowerCase()] = easeOut;\n\n for (var p in ease) {\n _easeMap[lowercaseName + (p === \"easeIn\" ? \".in\" : p === \"easeOut\" ? \".out\" : \".inOut\")] = _easeMap[name + \".\" + p] = ease[p];\n }\n });\n\n return ease;\n},\n _easeInOutFromOut = function _easeInOutFromOut(easeOut) {\n return function (p) {\n return p < .5 ? (1 - easeOut(1 - p * 2)) / 2 : .5 + easeOut((p - .5) * 2) / 2;\n };\n},\n _configElastic = function _configElastic(type, amplitude, period) {\n var p1 = amplitude >= 1 ? amplitude : 1,\n //note: if amplitude is < 1, we simply adjust the period for a more natural feel. Otherwise the math doesn't work right and the curve starts at 1.\n p2 = (period || (type ? .3 : .45)) / (amplitude < 1 ? amplitude : 1),\n p3 = p2 / _2PI * (Math.asin(1 / p1) || 0),\n easeOut = function easeOut(p) {\n return p === 1 ? 1 : p1 * Math.pow(2, -10 * p) * _sin((p - p3) * p2) + 1;\n },\n ease = type === \"out\" ? easeOut : type === \"in\" ? function (p) {\n return 1 - easeOut(1 - p);\n } : _easeInOutFromOut(easeOut);\n\n p2 = _2PI / p2; //precalculate to optimize\n\n ease.config = function (amplitude, period) {\n return _configElastic(type, amplitude, period);\n };\n\n return ease;\n},\n _configBack = function _configBack(type, overshoot) {\n if (overshoot === void 0) {\n overshoot = 1.70158;\n }\n\n var easeOut = function easeOut(p) {\n return p ? --p * p * ((overshoot + 1) * p + overshoot) + 1 : 0;\n },\n ease = type === \"out\" ? easeOut : type === \"in\" ? function (p) {\n return 1 - easeOut(1 - p);\n } : _easeInOutFromOut(easeOut);\n\n ease.config = function (overshoot) {\n return _configBack(type, overshoot);\n };\n\n return ease;\n}; // a cheaper (kb and cpu) but more mild way to get a parameterized weighted ease by feeding in a value between -1 (easeIn) and 1 (easeOut) where 0 is linear.\n// _weightedEase = ratio => {\n// \tlet y = 0.5 + ratio / 2;\n// \treturn p => (2 * (1 - p) * p * y + p * p);\n// },\n// a stronger (but more expensive kb/cpu) parameterized weighted ease that lets you feed in a value between -1 (easeIn) and 1 (easeOut) where 0 is linear.\n// _weightedEaseStrong = ratio => {\n// \tratio = .5 + ratio / 2;\n// \tlet o = 1 / 3 * (ratio < .5 ? ratio : 1 - ratio),\n// \t\tb = ratio - o,\n// \t\tc = ratio + o;\n// \treturn p => p === 1 ? p : 3 * b * (1 - p) * (1 - p) * p + 3 * c * (1 - p) * p * p + p * p * p;\n// };\n\n\n_forEachName(\"Linear,Quad,Cubic,Quart,Quint,Strong\", function (name, i) {\n var power = i < 5 ? i + 1 : i;\n\n _insertEase(name + \",Power\" + (power - 1), i ? function (p) {\n return Math.pow(p, power);\n } : function (p) {\n return p;\n }, function (p) {\n return 1 - Math.pow(1 - p, power);\n }, function (p) {\n return p < .5 ? Math.pow(p * 2, power) / 2 : 1 - Math.pow((1 - p) * 2, power) / 2;\n });\n});\n\n_easeMap.Linear.easeNone = _easeMap.none = _easeMap.Linear.easeIn;\n\n_insertEase(\"Elastic\", _configElastic(\"in\"), _configElastic(\"out\"), _configElastic());\n\n(function (n, c) {\n var n1 = 1 / c,\n n2 = 2 * n1,\n n3 = 2.5 * n1,\n easeOut = function easeOut(p) {\n return p < n1 ? n * p * p : p < n2 ? n * Math.pow(p - 1.5 / c, 2) + .75 : p < n3 ? n * (p -= 2.25 / c) * p + .9375 : n * Math.pow(p - 2.625 / c, 2) + .984375;\n };\n\n _insertEase(\"Bounce\", function (p) {\n return 1 - easeOut(1 - p);\n }, easeOut);\n})(7.5625, 2.75);\n\n_insertEase(\"Expo\", function (p) {\n return p ? Math.pow(2, 10 * (p - 1)) : 0;\n});\n\n_insertEase(\"Circ\", function (p) {\n return -(_sqrt(1 - p * p) - 1);\n});\n\n_insertEase(\"Sine\", function (p) {\n return p === 1 ? 1 : -_cos(p * _HALF_PI) + 1;\n});\n\n_insertEase(\"Back\", _configBack(\"in\"), _configBack(\"out\"), _configBack());\n\n_easeMap.SteppedEase = _easeMap.steps = _globals.SteppedEase = {\n config: function config(steps, immediateStart) {\n if (steps === void 0) {\n steps = 1;\n }\n\n var p1 = 1 / steps,\n p2 = steps + (immediateStart ? 0 : 1),\n p3 = immediateStart ? 1 : 0,\n max = 1 - _tinyNum;\n return function (p) {\n return ((p2 * _clamp(0, max, p) | 0) + p3) * p1;\n };\n }\n};\n_defaults.ease = _easeMap[\"quad.out\"];\n\n_forEachName(\"onComplete,onUpdate,onStart,onRepeat,onReverseComplete,onInterrupt\", function (name) {\n return _callbackNames += name + \",\" + name + \"Params,\";\n});\n/*\n * --------------------------------------------------------------------------------------\n * CACHE\n * --------------------------------------------------------------------------------------\n */\n\n\nexport var GSCache = function GSCache(target, harness) {\n this.id = _gsID++;\n target._gsap = this;\n this.target = target;\n this.harness = harness;\n this.get = harness ? harness.get : _getProperty;\n this.set = harness ? harness.getSetter : _getSetter;\n};\n/*\n * --------------------------------------------------------------------------------------\n * ANIMATION\n * --------------------------------------------------------------------------------------\n */\n\nexport var Animation = /*#__PURE__*/function () {\n function Animation(vars) {\n this.vars = vars;\n this._delay = +vars.delay || 0;\n\n if (this._repeat = vars.repeat === Infinity ? -2 : vars.repeat || 0) {\n // TODO: repeat: Infinity on a timeline's children must flag that timeline internally and affect its totalDuration, otherwise it'll stop in the negative direction when reaching the start.\n this._rDelay = vars.repeatDelay || 0;\n this._yoyo = !!vars.yoyo || !!vars.yoyoEase;\n }\n\n this._ts = 1;\n\n _setDuration(this, +vars.duration, 1, 1);\n\n this.data = vars.data;\n\n if (_context) {\n this._ctx = _context;\n\n _context.data.push(this);\n }\n\n _tickerActive || _ticker.wake();\n }\n\n var _proto = Animation.prototype;\n\n _proto.delay = function delay(value) {\n if (value || value === 0) {\n this.parent && this.parent.smoothChildTiming && this.startTime(this._start + value - this._delay);\n this._delay = value;\n return this;\n }\n\n return this._delay;\n };\n\n _proto.duration = function duration(value) {\n return arguments.length ? this.totalDuration(this._repeat > 0 ? value + (value + this._rDelay) * this._repeat : value) : this.totalDuration() && this._dur;\n };\n\n _proto.totalDuration = function totalDuration(value) {\n if (!arguments.length) {\n return this._tDur;\n }\n\n this._dirty = 0;\n return _setDuration(this, this._repeat < 0 ? value : (value - this._repeat * this._rDelay) / (this._repeat + 1));\n };\n\n _proto.totalTime = function totalTime(_totalTime, suppressEvents) {\n _wake();\n\n if (!arguments.length) {\n return this._tTime;\n }\n\n var parent = this._dp;\n\n if (parent && parent.smoothChildTiming && this._ts) {\n _alignPlayhead(this, _totalTime);\n\n !parent._dp || parent.parent || _postAddChecks(parent, this); // edge case: if this is a child of a timeline that already completed, for example, we must re-activate the parent.\n //in case any of the ancestor timelines had completed but should now be enabled, we should reset their totalTime() which will also ensure that they're lined up properly and enabled. Skip for animations that are on the root (wasteful). Example: a TimelineLite.exportRoot() is performed when there's a paused tween on the root, the export will not complete until that tween is unpaused, but imagine a child gets restarted later, after all [unpaused] tweens have completed. The start of that child would get pushed out, but one of the ancestors may have completed.\n\n while (parent && parent.parent) {\n if (parent.parent._time !== parent._start + (parent._ts >= 0 ? parent._tTime / parent._ts : (parent.totalDuration() - parent._tTime) / -parent._ts)) {\n parent.totalTime(parent._tTime, true);\n }\n\n parent = parent.parent;\n }\n\n if (!this.parent && this._dp.autoRemoveChildren && (this._ts > 0 && _totalTime < this._tDur || this._ts < 0 && _totalTime > 0 || !this._tDur && !_totalTime)) {\n //if the animation doesn't have a parent, put it back into its last parent (recorded as _dp for exactly cases like this). Limit to parents with autoRemoveChildren (like globalTimeline) so that if the user manually removes an animation from a timeline and then alters its playhead, it doesn't get added back in.\n _addToTimeline(this._dp, this, this._start - this._delay);\n }\n }\n\n if (this._tTime !== _totalTime || !this._dur && !suppressEvents || this._initted && Math.abs(this._zTime) === _tinyNum || !_totalTime && !this._initted && (this.add || this._ptLookup)) {\n // check for _ptLookup on a Tween instance to ensure it has actually finished being instantiated, otherwise if this.reverse() gets called in the Animation constructor, it could trigger a render() here even though the _targets weren't populated, thus when _init() is called there won't be any PropTweens (it'll act like the tween is non-functional)\n this._ts || (this._pTime = _totalTime); // otherwise, if an animation is paused, then the playhead is moved back to zero, then resumed, it'd revert back to the original time at the pause\n //if (!this._lock) { // avoid endless recursion (not sure we need this yet or if it's worth the performance hit)\n // this._lock = 1;\n\n _lazySafeRender(this, _totalTime, suppressEvents); // this._lock = 0;\n //}\n\n }\n\n return this;\n };\n\n _proto.time = function time(value, suppressEvents) {\n return arguments.length ? this.totalTime(Math.min(this.totalDuration(), value + _elapsedCycleDuration(this)) % (this._dur + this._rDelay) || (value ? this._dur : 0), suppressEvents) : this._time; // note: if the modulus results in 0, the playhead could be exactly at the end or the beginning, and we always defer to the END with a non-zero value, otherwise if you set the time() to the very end (duration()), it would render at the START!\n };\n\n _proto.totalProgress = function totalProgress(value, suppressEvents) {\n return arguments.length ? this.totalTime(this.totalDuration() * value, suppressEvents) : this.totalDuration() ? Math.min(1, this._tTime / this._tDur) : this.rawTime() > 0 ? 1 : 0;\n };\n\n _proto.progress = function progress(value, suppressEvents) {\n return arguments.length ? this.totalTime(this.duration() * (this._yoyo && !(this.iteration() & 1) ? 1 - value : value) + _elapsedCycleDuration(this), suppressEvents) : this.duration() ? Math.min(1, this._time / this._dur) : this.rawTime() > 0 ? 1 : 0;\n };\n\n _proto.iteration = function iteration(value, suppressEvents) {\n var cycleDuration = this.duration() + this._rDelay;\n\n return arguments.length ? this.totalTime(this._time + (value - 1) * cycleDuration, suppressEvents) : this._repeat ? _animationCycle(this._tTime, cycleDuration) + 1 : 1;\n } // potential future addition:\n // isPlayingBackwards() {\n // \tlet animation = this,\n // \t\torientation = 1; // 1 = forward, -1 = backward\n // \twhile (animation) {\n // \t\torientation *= animation.reversed() || (animation.repeat() && !(animation.iteration() & 1)) ? -1 : 1;\n // \t\tanimation = animation.parent;\n // \t}\n // \treturn orientation < 0;\n // }\n ;\n\n _proto.timeScale = function timeScale(value, suppressEvents) {\n if (!arguments.length) {\n return this._rts === -_tinyNum ? 0 : this._rts; // recorded timeScale. Special case: if someone calls reverse() on an animation with timeScale of 0, we assign it -_tinyNum to remember it's reversed.\n }\n\n if (this._rts === value) {\n return this;\n }\n\n var tTime = this.parent && this._ts ? _parentToChildTotalTime(this.parent._time, this) : this._tTime; // make sure to do the parentToChildTotalTime() BEFORE setting the new _ts because the old one must be used in that calculation.\n // future addition? Up side: fast and minimal file size. Down side: only works on this animation; if a timeline is reversed, for example, its childrens' onReverse wouldn't get called.\n //(+value < 0 && this._rts >= 0) && _callback(this, \"onReverse\", true);\n // prioritize rendering where the parent's playhead lines up instead of this._tTime because there could be a tween that's animating another tween's timeScale in the same rendering loop (same parent), thus if the timeScale tween renders first, it would alter _start BEFORE _tTime was set on that tick (in the rendering loop), effectively freezing it until the timeScale tween finishes.\n\n this._rts = +value || 0;\n this._ts = this._ps || value === -_tinyNum ? 0 : this._rts; // _ts is the functional timeScale which would be 0 if the animation is paused.\n\n this.totalTime(_clamp(-Math.abs(this._delay), this._tDur, tTime), suppressEvents !== false);\n\n _setEnd(this); // if parent.smoothChildTiming was false, the end time didn't get updated in the _alignPlayhead() method, so do it here.\n\n\n return _recacheAncestors(this);\n };\n\n _proto.paused = function paused(value) {\n if (!arguments.length) {\n return this._ps;\n }\n\n if (this._ps !== value) {\n this._ps = value;\n\n if (value) {\n this._pTime = this._tTime || Math.max(-this._delay, this.rawTime()); // if the pause occurs during the delay phase, make sure that's factored in when resuming.\n\n this._ts = this._act = 0; // _ts is the functional timeScale, so a paused tween would effectively have a timeScale of 0. We record the \"real\" timeScale as _rts (recorded time scale)\n } else {\n _wake();\n\n this._ts = this._rts; //only defer to _pTime (pauseTime) if tTime is zero. Remember, someone could pause() an animation, then scrub the playhead and resume(). If the parent doesn't have smoothChildTiming, we render at the rawTime() because the startTime won't get updated.\n\n this.totalTime(this.parent && !this.parent.smoothChildTiming ? this.rawTime() : this._tTime || this._pTime, this.progress() === 1 && Math.abs(this._zTime) !== _tinyNum && (this._tTime -= _tinyNum)); // edge case: animation.progress(1).pause().play() wouldn't render again because the playhead is already at the end, but the call to totalTime() below will add it back to its parent...and not remove it again (since removing only happens upon rendering at a new time). Offsetting the _tTime slightly is done simply to cause the final render in totalTime() that'll pop it off its timeline (if autoRemoveChildren is true, of course). Check to make sure _zTime isn't -_tinyNum to avoid an edge case where the playhead is pushed to the end but INSIDE a tween/callback, the timeline itself is paused thus halting rendering and leaving a few unrendered. When resuming, it wouldn't render those otherwise.\n }\n }\n\n return this;\n };\n\n _proto.startTime = function startTime(value) {\n if (arguments.length) {\n this._start = value;\n var parent = this.parent || this._dp;\n parent && (parent._sort || !this.parent) && _addToTimeline(parent, this, value - this._delay);\n return this;\n }\n\n return this._start;\n };\n\n _proto.endTime = function endTime(includeRepeats) {\n return this._start + (_isNotFalse(includeRepeats) ? this.totalDuration() : this.duration()) / Math.abs(this._ts || 1);\n };\n\n _proto.rawTime = function rawTime(wrapRepeats) {\n var parent = this.parent || this._dp; // _dp = detached parent\n\n return !parent ? this._tTime : wrapRepeats && (!this._ts || this._repeat && this._time && this.totalProgress() < 1) ? this._tTime % (this._dur + this._rDelay) : !this._ts ? this._tTime : _parentToChildTotalTime(parent.rawTime(wrapRepeats), this);\n };\n\n _proto.revert = function revert(config) {\n if (config === void 0) {\n config = _revertConfig;\n }\n\n var prevIsReverting = _reverting;\n _reverting = config;\n\n if (this._initted || this._startAt) {\n this.timeline && this.timeline.revert(config);\n this.totalTime(-0.01, config.suppressEvents);\n }\n\n this.data !== \"nested\" && config.kill !== false && this.kill();\n _reverting = prevIsReverting;\n return this;\n };\n\n _proto.globalTime = function globalTime(rawTime) {\n var animation = this,\n time = arguments.length ? rawTime : animation.rawTime();\n\n while (animation) {\n time = animation._start + time / (Math.abs(animation._ts) || 1);\n animation = animation._dp;\n }\n\n return !this.parent && this._sat ? this._sat.globalTime(rawTime) : time; // the _startAt tweens for .fromTo() and .from() that have immediateRender should always be FIRST in the timeline (important for context.revert()). \"_sat\" stands for _startAtTween, referring to the parent tween that created the _startAt. We must discern if that tween had immediateRender so that we can know whether or not to prioritize it in revert().\n };\n\n _proto.repeat = function repeat(value) {\n if (arguments.length) {\n this._repeat = value === Infinity ? -2 : value;\n return _onUpdateTotalDuration(this);\n }\n\n return this._repeat === -2 ? Infinity : this._repeat;\n };\n\n _proto.repeatDelay = function repeatDelay(value) {\n if (arguments.length) {\n var time = this._time;\n this._rDelay = value;\n\n _onUpdateTotalDuration(this);\n\n return time ? this.time(time) : this;\n }\n\n return this._rDelay;\n };\n\n _proto.yoyo = function yoyo(value) {\n if (arguments.length) {\n this._yoyo = value;\n return this;\n }\n\n return this._yoyo;\n };\n\n _proto.seek = function seek(position, suppressEvents) {\n return this.totalTime(_parsePosition(this, position), _isNotFalse(suppressEvents));\n };\n\n _proto.restart = function restart(includeDelay, suppressEvents) {\n return this.play().totalTime(includeDelay ? -this._delay : 0, _isNotFalse(suppressEvents));\n };\n\n _proto.play = function play(from, suppressEvents) {\n from != null && this.seek(from, suppressEvents);\n return this.reversed(false).paused(false);\n };\n\n _proto.reverse = function reverse(from, suppressEvents) {\n from != null && this.seek(from || this.totalDuration(), suppressEvents);\n return this.reversed(true).paused(false);\n };\n\n _proto.pause = function pause(atTime, suppressEvents) {\n atTime != null && this.seek(atTime, suppressEvents);\n return this.paused(true);\n };\n\n _proto.resume = function resume() {\n return this.paused(false);\n };\n\n _proto.reversed = function reversed(value) {\n if (arguments.length) {\n !!value !== this.reversed() && this.timeScale(-this._rts || (value ? -_tinyNum : 0)); // in case timeScale is zero, reversing would have no effect so we use _tinyNum.\n\n return this;\n }\n\n return this._rts < 0;\n };\n\n _proto.invalidate = function invalidate() {\n this._initted = this._act = 0;\n this._zTime = -_tinyNum;\n return this;\n };\n\n _proto.isActive = function isActive() {\n var parent = this.parent || this._dp,\n start = this._start,\n rawTime;\n return !!(!parent || this._ts && this._initted && parent.isActive() && (rawTime = parent.rawTime(true)) >= start && rawTime < this.endTime(true) - _tinyNum);\n };\n\n _proto.eventCallback = function eventCallback(type, callback, params) {\n var vars = this.vars;\n\n if (arguments.length > 1) {\n if (!callback) {\n delete vars[type];\n } else {\n vars[type] = callback;\n params && (vars[type + \"Params\"] = params);\n type === \"onUpdate\" && (this._onUpdate = callback);\n }\n\n return this;\n }\n\n return vars[type];\n };\n\n _proto.then = function then(onFulfilled) {\n var self = this;\n return new Promise(function (resolve) {\n var f = _isFunction(onFulfilled) ? onFulfilled : _passThrough,\n _resolve = function _resolve() {\n var _then = self.then;\n self.then = null; // temporarily null the then() method to avoid an infinite loop (see https://github.com/greensock/GSAP/issues/322)\n\n _isFunction(f) && (f = f(self)) && (f.then || f === self) && (self.then = _then);\n resolve(f);\n self.then = _then;\n };\n\n if (self._initted && self.totalProgress() === 1 && self._ts >= 0 || !self._tTime && self._ts < 0) {\n _resolve();\n } else {\n self._prom = _resolve;\n }\n });\n };\n\n _proto.kill = function kill() {\n _interrupt(this);\n };\n\n return Animation;\n}();\n\n_setDefaults(Animation.prototype, {\n _time: 0,\n _start: 0,\n _end: 0,\n _tTime: 0,\n _tDur: 0,\n _dirty: 0,\n _repeat: 0,\n _yoyo: false,\n parent: null,\n _initted: false,\n _rDelay: 0,\n _ts: 1,\n _dp: 0,\n ratio: 0,\n _zTime: -_tinyNum,\n _prom: 0,\n _ps: false,\n _rts: 1\n});\n/*\n * -------------------------------------------------\n * TIMELINE\n * -------------------------------------------------\n */\n\n\nexport var Timeline = /*#__PURE__*/function (_Animation) {\n _inheritsLoose(Timeline, _Animation);\n\n function Timeline(vars, position) {\n var _this;\n\n if (vars === void 0) {\n vars = {};\n }\n\n _this = _Animation.call(this, vars) || this;\n _this.labels = {};\n _this.smoothChildTiming = !!vars.smoothChildTiming;\n _this.autoRemoveChildren = !!vars.autoRemoveChildren;\n _this._sort = _isNotFalse(vars.sortChildren);\n _globalTimeline && _addToTimeline(vars.parent || _globalTimeline, _assertThisInitialized(_this), position);\n vars.reversed && _this.reverse();\n vars.paused && _this.paused(true);\n vars.scrollTrigger && _scrollTrigger(_assertThisInitialized(_this), vars.scrollTrigger);\n return _this;\n }\n\n var _proto2 = Timeline.prototype;\n\n _proto2.to = function to(targets, vars, position) {\n _createTweenType(0, arguments, this);\n\n return this;\n };\n\n _proto2.from = function from(targets, vars, position) {\n _createTweenType(1, arguments, this);\n\n return this;\n };\n\n _proto2.fromTo = function fromTo(targets, fromVars, toVars, position) {\n _createTweenType(2, arguments, this);\n\n return this;\n };\n\n _proto2.set = function set(targets, vars, position) {\n vars.duration = 0;\n vars.parent = this;\n _inheritDefaults(vars).repeatDelay || (vars.repeat = 0);\n vars.immediateRender = !!vars.immediateRender;\n new Tween(targets, vars, _parsePosition(this, position), 1);\n return this;\n };\n\n _proto2.call = function call(callback, params, position) {\n return _addToTimeline(this, Tween.delayedCall(0, callback, params), position);\n } //ONLY for backward compatibility! Maybe delete?\n ;\n\n _proto2.staggerTo = function staggerTo(targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams) {\n vars.duration = duration;\n vars.stagger = vars.stagger || stagger;\n vars.onComplete = onCompleteAll;\n vars.onCompleteParams = onCompleteAllParams;\n vars.parent = this;\n new Tween(targets, vars, _parsePosition(this, position));\n return this;\n };\n\n _proto2.staggerFrom = function staggerFrom(targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams) {\n vars.runBackwards = 1;\n _inheritDefaults(vars).immediateRender = _isNotFalse(vars.immediateRender);\n return this.staggerTo(targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams);\n };\n\n _proto2.staggerFromTo = function staggerFromTo(targets, duration, fromVars, toVars, stagger, position, onCompleteAll, onCompleteAllParams) {\n toVars.startAt = fromVars;\n _inheritDefaults(toVars).immediateRender = _isNotFalse(toVars.immediateRender);\n return this.staggerTo(targets, duration, toVars, stagger, position, onCompleteAll, onCompleteAllParams);\n };\n\n _proto2.render = function render(totalTime, suppressEvents, force) {\n var prevTime = this._time,\n tDur = this._dirty ? this.totalDuration() : this._tDur,\n dur = this._dur,\n tTime = totalTime <= 0 ? 0 : _roundPrecise(totalTime),\n // if a paused timeline is resumed (or its _start is updated for another reason...which rounds it), that could result in the playhead shifting a **tiny** amount and a zero-duration child at that spot may get rendered at a different ratio, like its totalTime in render() may be 1e-17 instead of 0, for example.\n crossingStart = this._zTime < 0 !== totalTime < 0 && (this._initted || !dur),\n time,\n child,\n next,\n iteration,\n cycleDuration,\n prevPaused,\n pauseTween,\n timeScale,\n prevStart,\n prevIteration,\n yoyo,\n isYoyo;\n this !== _globalTimeline && tTime > tDur && totalTime >= 0 && (tTime = tDur);\n\n if (tTime !== this._tTime || force || crossingStart) {\n if (prevTime !== this._time && dur) {\n //if totalDuration() finds a child with a negative startTime and smoothChildTiming is true, things get shifted around internally so we need to adjust the time accordingly. For example, if a tween starts at -30 we must shift EVERYTHING forward 30 seconds and move this timeline's startTime backward by 30 seconds so that things align with the playhead (no jump).\n tTime += this._time - prevTime;\n totalTime += this._time - prevTime;\n }\n\n time = tTime;\n prevStart = this._start;\n timeScale = this._ts;\n prevPaused = !timeScale;\n\n if (crossingStart) {\n dur || (prevTime = this._zTime); //when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration timeline, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect.\n\n (totalTime || !suppressEvents) && (this._zTime = totalTime);\n }\n\n if (this._repeat) {\n //adjust the time for repeats and yoyos\n yoyo = this._yoyo;\n cycleDuration = dur + this._rDelay;\n\n if (this._repeat < -1 && totalTime < 0) {\n return this.totalTime(cycleDuration * 100 + totalTime, suppressEvents, force);\n }\n\n time = _roundPrecise(tTime % cycleDuration); //round to avoid floating point errors. (4 % 0.8 should be 0 but some browsers report it as 0.79999999!)\n\n if (tTime === tDur) {\n // the tDur === tTime is for edge cases where there's a lengthy decimal on the duration and it may reach the very end but the time is rendered as not-quite-there (remember, tDur is rounded to 4 decimals whereas dur isn't)\n iteration = this._repeat;\n time = dur;\n } else {\n iteration = ~~(tTime / cycleDuration);\n\n if (iteration && iteration === tTime / cycleDuration) {\n time = dur;\n iteration--;\n }\n\n time > dur && (time = dur);\n }\n\n prevIteration = _animationCycle(this._tTime, cycleDuration);\n !prevTime && this._tTime && prevIteration !== iteration && this._tTime - prevIteration * cycleDuration - this._dur <= 0 && (prevIteration = iteration); // edge case - if someone does addPause() at the very beginning of a repeating timeline, that pause is technically at the same spot as the end which causes this._time to get set to 0 when the totalTime would normally place the playhead at the end. See https://gsap.com/forums/topic/23823-closing-nav-animation-not-working-on-ie-and-iphone-6-maybe-other-older-browser/?tab=comments#comment-113005 also, this._tTime - prevIteration * cycleDuration - this._dur <= 0 just checks to make sure it wasn't previously in the \"repeatDelay\" portion\n\n if (yoyo && iteration & 1) {\n time = dur - time;\n isYoyo = 1;\n }\n /*\n make sure children at the end/beginning of the timeline are rendered properly. If, for example,\n a 3-second long timeline rendered at 2.9 seconds previously, and now renders at 3.2 seconds (which\n would get translated to 2.8 seconds if the timeline yoyos or 0.2 seconds if it just repeats), there\n could be a callback or a short tween that's at 2.95 or 3 seconds in which wouldn't render. So\n we need to push the timeline to the end (and/or beginning depending on its yoyo value). Also we must\n ensure that zero-duration tweens at the very beginning or end of the Timeline work.\n */\n\n\n if (iteration !== prevIteration && !this._lock) {\n var rewinding = yoyo && prevIteration & 1,\n doesWrap = rewinding === (yoyo && iteration & 1);\n iteration < prevIteration && (rewinding = !rewinding);\n prevTime = rewinding ? 0 : tTime % dur ? dur : tTime; // if the playhead is landing exactly at the end of an iteration, use that totalTime rather than only the duration, otherwise it'll skip the 2nd render since it's effectively at the same time.\n\n this._lock = 1;\n this.render(prevTime || (isYoyo ? 0 : _roundPrecise(iteration * cycleDuration)), suppressEvents, !dur)._lock = 0;\n this._tTime = tTime; // if a user gets the iteration() inside the onRepeat, for example, it should be accurate.\n\n !suppressEvents && this.parent && _callback(this, \"onRepeat\");\n this.vars.repeatRefresh && !isYoyo && (this.invalidate()._lock = 1);\n\n if (prevTime && prevTime !== this._time || prevPaused !== !this._ts || this.vars.onRepeat && !this.parent && !this._act) {\n // if prevTime is 0 and we render at the very end, _time will be the end, thus won't match. So in this edge case, prevTime won't match _time but that's okay. If it gets killed in the onRepeat, eject as well.\n return this;\n }\n\n dur = this._dur; // in case the duration changed in the onRepeat\n\n tDur = this._tDur;\n\n if (doesWrap) {\n this._lock = 2;\n prevTime = rewinding ? dur : -0.0001;\n this.render(prevTime, true);\n this.vars.repeatRefresh && !isYoyo && this.invalidate();\n }\n\n this._lock = 0;\n\n if (!this._ts && !prevPaused) {\n return this;\n } //in order for yoyoEase to work properly when there's a stagger, we must swap out the ease in each sub-tween.\n\n\n _propagateYoyoEase(this, isYoyo);\n }\n }\n\n if (this._hasPause && !this._forcing && this._lock < 2) {\n pauseTween = _findNextPauseTween(this, _roundPrecise(prevTime), _roundPrecise(time));\n\n if (pauseTween) {\n tTime -= time - (time = pauseTween._start);\n }\n }\n\n this._tTime = tTime;\n this._time = time;\n this._act = !timeScale; //as long as it's not paused, force it to be active so that if the user renders independent of the parent timeline, it'll be forced to re-render on the next tick.\n\n if (!this._initted) {\n this._onUpdate = this.vars.onUpdate;\n this._initted = 1;\n this._zTime = totalTime;\n prevTime = 0; // upon init, the playhead should always go forward; someone could invalidate() a completed timeline and then if they restart(), that would make child tweens render in reverse order which could lock in the wrong starting values if they build on each other, like tl.to(obj, {x: 100}).to(obj, {x: 0}).\n }\n\n if (!prevTime && time && !suppressEvents && !iteration) {\n _callback(this, \"onStart\");\n\n if (this._tTime !== tTime) {\n // in case the onStart triggered a render at a different spot, eject. Like if someone did animation.pause(0.5) or something inside the onStart.\n return this;\n }\n }\n\n if (time >= prevTime && totalTime >= 0) {\n child = this._first;\n\n while (child) {\n next = child._next;\n\n if ((child._act || time >= child._start) && child._ts && pauseTween !== child) {\n if (child.parent !== this) {\n // an extreme edge case - the child's render could do something like kill() the \"next\" one in the linked list, or reparent it. In that case we must re-initiate the whole render to be safe.\n return this.render(totalTime, suppressEvents, force);\n }\n\n child.render(child._ts > 0 ? (time - child._start) * child._ts : (child._dirty ? child.totalDuration() : child._tDur) + (time - child._start) * child._ts, suppressEvents, force);\n\n if (time !== this._time || !this._ts && !prevPaused) {\n //in case a tween pauses or seeks the timeline when rendering, like inside of an onUpdate/onComplete\n pauseTween = 0;\n next && (tTime += this._zTime = -_tinyNum); // it didn't finish rendering, so flag zTime as negative so that so that the next time render() is called it'll be forced (to render any remaining children)\n\n break;\n }\n }\n\n child = next;\n }\n } else {\n child = this._last;\n var adjustedTime = totalTime < 0 ? totalTime : time; //when the playhead goes backward beyond the start of this timeline, we must pass that information down to the child animations so that zero-duration tweens know whether to render their starting or ending values.\n\n while (child) {\n next = child._prev;\n\n if ((child._act || adjustedTime <= child._end) && child._ts && pauseTween !== child) {\n if (child.parent !== this) {\n // an extreme edge case - the child's render could do something like kill() the \"next\" one in the linked list, or reparent it. In that case we must re-initiate the whole render to be safe.\n return this.render(totalTime, suppressEvents, force);\n }\n\n child.render(child._ts > 0 ? (adjustedTime - child._start) * child._ts : (child._dirty ? child.totalDuration() : child._tDur) + (adjustedTime - child._start) * child._ts, suppressEvents, force || _reverting && (child._initted || child._startAt)); // if reverting, we should always force renders of initted tweens (but remember that .fromTo() or .from() may have a _startAt but not _initted yet). If, for example, a .fromTo() tween with a stagger (which creates an internal timeline) gets reverted BEFORE some of its child tweens render for the first time, it may not properly trigger them to revert.\n\n if (time !== this._time || !this._ts && !prevPaused) {\n //in case a tween pauses or seeks the timeline when rendering, like inside of an onUpdate/onComplete\n pauseTween = 0;\n next && (tTime += this._zTime = adjustedTime ? -_tinyNum : _tinyNum); // it didn't finish rendering, so adjust zTime so that so that the next time render() is called it'll be forced (to render any remaining children)\n\n break;\n }\n }\n\n child = next;\n }\n }\n\n if (pauseTween && !suppressEvents) {\n this.pause();\n pauseTween.render(time >= prevTime ? 0 : -_tinyNum)._zTime = time >= prevTime ? 1 : -1;\n\n if (this._ts) {\n //the callback resumed playback! So since we may have held back the playhead due to where the pause is positioned, go ahead and jump to where it's SUPPOSED to be (if no pause happened).\n this._start = prevStart; //if the pause was at an earlier time and the user resumed in the callback, it could reposition the timeline (changing its startTime), throwing things off slightly, so we make sure the _start doesn't shift.\n\n _setEnd(this);\n\n return this.render(totalTime, suppressEvents, force);\n }\n }\n\n this._onUpdate && !suppressEvents && _callback(this, \"onUpdate\", true);\n if (tTime === tDur && this._tTime >= this.totalDuration() || !tTime && prevTime) if (prevStart === this._start || Math.abs(timeScale) !== Math.abs(this._ts)) if (!this._lock) {\n // remember, a child's callback may alter this timeline's playhead or timeScale which is why we need to add some of these checks.\n (totalTime || !dur) && (tTime === tDur && this._ts > 0 || !tTime && this._ts < 0) && _removeFromParent(this, 1); // don't remove if the timeline is reversed and the playhead isn't at 0, otherwise tl.progress(1).reverse() won't work. Only remove if the playhead is at the end and timeScale is positive, or if the playhead is at 0 and the timeScale is negative.\n\n if (!suppressEvents && !(totalTime < 0 && !prevTime) && (tTime || prevTime || !tDur)) {\n _callback(this, tTime === tDur && totalTime >= 0 ? \"onComplete\" : \"onReverseComplete\", true);\n\n this._prom && !(tTime < tDur && this.timeScale() > 0) && this._prom();\n }\n }\n }\n\n return this;\n };\n\n _proto2.add = function add(child, position) {\n var _this2 = this;\n\n _isNumber(position) || (position = _parsePosition(this, position, child));\n\n if (!(child instanceof Animation)) {\n if (_isArray(child)) {\n child.forEach(function (obj) {\n return _this2.add(obj, position);\n });\n return this;\n }\n\n if (_isString(child)) {\n return this.addLabel(child, position);\n }\n\n if (_isFunction(child)) {\n child = Tween.delayedCall(0, child);\n } else {\n return this;\n }\n }\n\n return this !== child ? _addToTimeline(this, child, position) : this; //don't allow a timeline to be added to itself as a child!\n };\n\n _proto2.getChildren = function getChildren(nested, tweens, timelines, ignoreBeforeTime) {\n if (nested === void 0) {\n nested = true;\n }\n\n if (tweens === void 0) {\n tweens = true;\n }\n\n if (timelines === void 0) {\n timelines = true;\n }\n\n if (ignoreBeforeTime === void 0) {\n ignoreBeforeTime = -_bigNum;\n }\n\n var a = [],\n child = this._first;\n\n while (child) {\n if (child._start >= ignoreBeforeTime) {\n if (child instanceof Tween) {\n tweens && a.push(child);\n } else {\n timelines && a.push(child);\n nested && a.push.apply(a, child.getChildren(true, tweens, timelines));\n }\n }\n\n child = child._next;\n }\n\n return a;\n };\n\n _proto2.getById = function getById(id) {\n var animations = this.getChildren(1, 1, 1),\n i = animations.length;\n\n while (i--) {\n if (animations[i].vars.id === id) {\n return animations[i];\n }\n }\n };\n\n _proto2.remove = function remove(child) {\n if (_isString(child)) {\n return this.removeLabel(child);\n }\n\n if (_isFunction(child)) {\n return this.killTweensOf(child);\n }\n\n _removeLinkedListItem(this, child);\n\n if (child === this._recent) {\n this._recent = this._last;\n }\n\n return _uncache(this);\n };\n\n _proto2.totalTime = function totalTime(_totalTime2, suppressEvents) {\n if (!arguments.length) {\n return this._tTime;\n }\n\n this._forcing = 1;\n\n if (!this._dp && this._ts) {\n //special case for the global timeline (or any other that has no parent or detached parent).\n this._start = _roundPrecise(_ticker.time - (this._ts > 0 ? _totalTime2 / this._ts : (this.totalDuration() - _totalTime2) / -this._ts));\n }\n\n _Animation.prototype.totalTime.call(this, _totalTime2, suppressEvents);\n\n this._forcing = 0;\n return this;\n };\n\n _proto2.addLabel = function addLabel(label, position) {\n this.labels[label] = _parsePosition(this, position);\n return this;\n };\n\n _proto2.removeLabel = function removeLabel(label) {\n delete this.labels[label];\n return this;\n };\n\n _proto2.addPause = function addPause(position, callback, params) {\n var t = Tween.delayedCall(0, callback || _emptyFunc, params);\n t.data = \"isPause\";\n this._hasPause = 1;\n return _addToTimeline(this, t, _parsePosition(this, position));\n };\n\n _proto2.removePause = function removePause(position) {\n var child = this._first;\n position = _parsePosition(this, position);\n\n while (child) {\n if (child._start === position && child.data === \"isPause\") {\n _removeFromParent(child);\n }\n\n child = child._next;\n }\n };\n\n _proto2.killTweensOf = function killTweensOf(targets, props, onlyActive) {\n var tweens = this.getTweensOf(targets, onlyActive),\n i = tweens.length;\n\n while (i--) {\n _overwritingTween !== tweens[i] && tweens[i].kill(targets, props);\n }\n\n return this;\n };\n\n _proto2.getTweensOf = function getTweensOf(targets, onlyActive) {\n var a = [],\n parsedTargets = toArray(targets),\n child = this._first,\n isGlobalTime = _isNumber(onlyActive),\n // a number is interpreted as a global time. If the animation spans\n children;\n\n while (child) {\n if (child instanceof Tween) {\n if (_arrayContainsAny(child._targets, parsedTargets) && (isGlobalTime ? (!_overwritingTween || child._initted && child._ts) && child.globalTime(0) <= onlyActive && child.globalTime(child.totalDuration()) > onlyActive : !onlyActive || child.isActive())) {\n // note: if this is for overwriting, it should only be for tweens that aren't paused and are initted.\n a.push(child);\n }\n } else if ((children = child.getTweensOf(parsedTargets, onlyActive)).length) {\n a.push.apply(a, children);\n }\n\n child = child._next;\n }\n\n return a;\n } // potential future feature - targets() on timelines\n // targets() {\n // \tlet result = [];\n // \tthis.getChildren(true, true, false).forEach(t => result.push(...t.targets()));\n // \treturn result.filter((v, i) => result.indexOf(v) === i);\n // }\n ;\n\n _proto2.tweenTo = function tweenTo(position, vars) {\n vars = vars || {};\n\n var tl = this,\n endTime = _parsePosition(tl, position),\n _vars = vars,\n startAt = _vars.startAt,\n _onStart = _vars.onStart,\n onStartParams = _vars.onStartParams,\n immediateRender = _vars.immediateRender,\n initted,\n tween = Tween.to(tl, _setDefaults({\n ease: vars.ease || \"none\",\n lazy: false,\n immediateRender: false,\n time: endTime,\n overwrite: \"auto\",\n duration: vars.duration || Math.abs((endTime - (startAt && \"time\" in startAt ? startAt.time : tl._time)) / tl.timeScale()) || _tinyNum,\n onStart: function onStart() {\n tl.pause();\n\n if (!initted) {\n var duration = vars.duration || Math.abs((endTime - (startAt && \"time\" in startAt ? startAt.time : tl._time)) / tl.timeScale());\n tween._dur !== duration && _setDuration(tween, duration, 0, 1).render(tween._time, true, true);\n initted = 1;\n }\n\n _onStart && _onStart.apply(tween, onStartParams || []); //in case the user had an onStart in the vars - we don't want to overwrite it.\n }\n }, vars));\n\n return immediateRender ? tween.render(0) : tween;\n };\n\n _proto2.tweenFromTo = function tweenFromTo(fromPosition, toPosition, vars) {\n return this.tweenTo(toPosition, _setDefaults({\n startAt: {\n time: _parsePosition(this, fromPosition)\n }\n }, vars));\n };\n\n _proto2.recent = function recent() {\n return this._recent;\n };\n\n _proto2.nextLabel = function nextLabel(afterTime) {\n if (afterTime === void 0) {\n afterTime = this._time;\n }\n\n return _getLabelInDirection(this, _parsePosition(this, afterTime));\n };\n\n _proto2.previousLabel = function previousLabel(beforeTime) {\n if (beforeTime === void 0) {\n beforeTime = this._time;\n }\n\n return _getLabelInDirection(this, _parsePosition(this, beforeTime), 1);\n };\n\n _proto2.currentLabel = function currentLabel(value) {\n return arguments.length ? this.seek(value, true) : this.previousLabel(this._time + _tinyNum);\n };\n\n _proto2.shiftChildren = function shiftChildren(amount, adjustLabels, ignoreBeforeTime) {\n if (ignoreBeforeTime === void 0) {\n ignoreBeforeTime = 0;\n }\n\n var child = this._first,\n labels = this.labels,\n p;\n\n while (child) {\n if (child._start >= ignoreBeforeTime) {\n child._start += amount;\n child._end += amount;\n }\n\n child = child._next;\n }\n\n if (adjustLabels) {\n for (p in labels) {\n if (labels[p] >= ignoreBeforeTime) {\n labels[p] += amount;\n }\n }\n }\n\n return _uncache(this);\n };\n\n _proto2.invalidate = function invalidate(soft) {\n var child = this._first;\n this._lock = 0;\n\n while (child) {\n child.invalidate(soft);\n child = child._next;\n }\n\n return _Animation.prototype.invalidate.call(this, soft);\n };\n\n _proto2.clear = function clear(includeLabels) {\n if (includeLabels === void 0) {\n includeLabels = true;\n }\n\n var child = this._first,\n next;\n\n while (child) {\n next = child._next;\n this.remove(child);\n child = next;\n }\n\n this._dp && (this._time = this._tTime = this._pTime = 0);\n includeLabels && (this.labels = {});\n return _uncache(this);\n };\n\n _proto2.totalDuration = function totalDuration(value) {\n var max = 0,\n self = this,\n child = self._last,\n prevStart = _bigNum,\n prev,\n start,\n parent;\n\n if (arguments.length) {\n return self.timeScale((self._repeat < 0 ? self.duration() : self.totalDuration()) / (self.reversed() ? -value : value));\n }\n\n if (self._dirty) {\n parent = self.parent;\n\n while (child) {\n prev = child._prev; //record it here in case the tween changes position in the sequence...\n\n child._dirty && child.totalDuration(); //could change the tween._startTime, so make sure the animation's cache is clean before analyzing it.\n\n start = child._start;\n\n if (start > prevStart && self._sort && child._ts && !self._lock) {\n //in case one of the tweens shifted out of order, it needs to be re-inserted into the correct position in the sequence\n self._lock = 1; //prevent endless recursive calls - there are methods that get triggered that check duration/totalDuration when we add().\n\n _addToTimeline(self, child, start - child._delay, 1)._lock = 0;\n } else {\n prevStart = start;\n }\n\n if (start < 0 && child._ts) {\n //children aren't allowed to have negative startTimes unless smoothChildTiming is true, so adjust here if one is found.\n max -= start;\n\n if (!parent && !self._dp || parent && parent.smoothChildTiming) {\n self._start += start / self._ts;\n self._time -= start;\n self._tTime -= start;\n }\n\n self.shiftChildren(-start, false, -1e999);\n prevStart = 0;\n }\n\n child._end > max && child._ts && (max = child._end);\n child = prev;\n }\n\n _setDuration(self, self === _globalTimeline && self._time > max ? self._time : max, 1, 1);\n\n self._dirty = 0;\n }\n\n return self._tDur;\n };\n\n Timeline.updateRoot = function updateRoot(time) {\n if (_globalTimeline._ts) {\n _lazySafeRender(_globalTimeline, _parentToChildTotalTime(time, _globalTimeline));\n\n _lastRenderedFrame = _ticker.frame;\n }\n\n if (_ticker.frame >= _nextGCFrame) {\n _nextGCFrame += _config.autoSleep || 120;\n var child = _globalTimeline._first;\n if (!child || !child._ts) if (_config.autoSleep && _ticker._listeners.length < 2) {\n while (child && !child._ts) {\n child = child._next;\n }\n\n child || _ticker.sleep();\n }\n }\n };\n\n return Timeline;\n}(Animation);\n\n_setDefaults(Timeline.prototype, {\n _lock: 0,\n _hasPause: 0,\n _forcing: 0\n});\n\nvar _addComplexStringPropTween = function _addComplexStringPropTween(target, prop, start, end, setter, stringFilter, funcParam) {\n //note: we call _addComplexStringPropTween.call(tweenInstance...) to ensure that it's scoped properly. We may call it from within a plugin too, thus \"this\" would refer to the plugin.\n var pt = new PropTween(this._pt, target, prop, 0, 1, _renderComplexString, null, setter),\n index = 0,\n matchIndex = 0,\n result,\n startNums,\n color,\n endNum,\n chunk,\n startNum,\n hasRandom,\n a;\n pt.b = start;\n pt.e = end;\n start += \"\"; //ensure values are strings\n\n end += \"\";\n\n if (hasRandom = ~end.indexOf(\"random(\")) {\n end = _replaceRandom(end);\n }\n\n if (stringFilter) {\n a = [start, end];\n stringFilter(a, target, prop); //pass an array with the starting and ending values and let the filter do whatever it needs to the values.\n\n start = a[0];\n end = a[1];\n }\n\n startNums = start.match(_complexStringNumExp) || [];\n\n while (result = _complexStringNumExp.exec(end)) {\n endNum = result[0];\n chunk = end.substring(index, result.index);\n\n if (color) {\n color = (color + 1) % 5;\n } else if (chunk.substr(-5) === \"rgba(\") {\n color = 1;\n }\n\n if (endNum !== startNums[matchIndex++]) {\n startNum = parseFloat(startNums[matchIndex - 1]) || 0; //these nested PropTweens are handled in a special way - we'll never actually call a render or setter method on them. We'll just loop through them in the parent complex string PropTween's render method.\n\n pt._pt = {\n _next: pt._pt,\n p: chunk || matchIndex === 1 ? chunk : \",\",\n //note: SVG spec allows omission of comma/space when a negative sign is wedged between two numbers, like 2.5-5.3 instead of 2.5,-5.3 but when tweening, the negative value may switch to positive, so we insert the comma just in case.\n s: startNum,\n c: endNum.charAt(1) === \"=\" ? _parseRelative(startNum, endNum) - startNum : parseFloat(endNum) - startNum,\n m: color && color < 4 ? Math.round : 0\n };\n index = _complexStringNumExp.lastIndex;\n }\n }\n\n pt.c = index < end.length ? end.substring(index, end.length) : \"\"; //we use the \"c\" of the PropTween to store the final part of the string (after the last number)\n\n pt.fp = funcParam;\n\n if (_relExp.test(end) || hasRandom) {\n pt.e = 0; //if the end string contains relative values or dynamic random(...) values, delete the end it so that on the final render we don't actually set it to the string with += or -= characters (forces it to use the calculated value).\n }\n\n this._pt = pt; //start the linked list with this new PropTween. Remember, we call _addComplexStringPropTween.call(tweenInstance...) to ensure that it's scoped properly. We may call it from within a plugin too, thus \"this\" would refer to the plugin.\n\n return pt;\n},\n _addPropTween = function _addPropTween(target, prop, start, end, index, targets, modifier, stringFilter, funcParam, optional) {\n _isFunction(end) && (end = end(index || 0, target, targets));\n var currentValue = target[prop],\n parsedStart = start !== \"get\" ? start : !_isFunction(currentValue) ? currentValue : funcParam ? target[prop.indexOf(\"set\") || !_isFunction(target[\"get\" + prop.substr(3)]) ? prop : \"get\" + prop.substr(3)](funcParam) : target[prop](),\n setter = !_isFunction(currentValue) ? _setterPlain : funcParam ? _setterFuncWithParam : _setterFunc,\n pt;\n\n if (_isString(end)) {\n if (~end.indexOf(\"random(\")) {\n end = _replaceRandom(end);\n }\n\n if (end.charAt(1) === \"=\") {\n pt = _parseRelative(parsedStart, end) + (getUnit(parsedStart) || 0);\n\n if (pt || pt === 0) {\n // to avoid isNaN, like if someone passes in a value like \"!= whatever\"\n end = pt;\n }\n }\n }\n\n if (!optional || parsedStart !== end || _forceAllPropTweens) {\n if (!isNaN(parsedStart * end) && end !== \"\") {\n // fun fact: any number multiplied by \"\" is evaluated as the number 0!\n pt = new PropTween(this._pt, target, prop, +parsedStart || 0, end - (parsedStart || 0), typeof currentValue === \"boolean\" ? _renderBoolean : _renderPlain, 0, setter);\n funcParam && (pt.fp = funcParam);\n modifier && pt.modifier(modifier, this, target);\n return this._pt = pt;\n }\n\n !currentValue && !(prop in target) && _missingPlugin(prop, end);\n return _addComplexStringPropTween.call(this, target, prop, parsedStart, end, setter, stringFilter || _config.stringFilter, funcParam);\n }\n},\n //creates a copy of the vars object and processes any function-based values (putting the resulting values directly into the copy) as well as strings with \"random()\" in them. It does NOT process relative values.\n_processVars = function _processVars(vars, index, target, targets, tween) {\n _isFunction(vars) && (vars = _parseFuncOrString(vars, tween, index, target, targets));\n\n if (!_isObject(vars) || vars.style && vars.nodeType || _isArray(vars) || _isTypedArray(vars)) {\n return _isString(vars) ? _parseFuncOrString(vars, tween, index, target, targets) : vars;\n }\n\n var copy = {},\n p;\n\n for (p in vars) {\n copy[p] = _parseFuncOrString(vars[p], tween, index, target, targets);\n }\n\n return copy;\n},\n _checkPlugin = function _checkPlugin(property, vars, tween, index, target, targets) {\n var plugin, pt, ptLookup, i;\n\n if (_plugins[property] && (plugin = new _plugins[property]()).init(target, plugin.rawVars ? vars[property] : _processVars(vars[property], index, target, targets, tween), tween, index, targets) !== false) {\n tween._pt = pt = new PropTween(tween._pt, target, property, 0, 1, plugin.render, plugin, 0, plugin.priority);\n\n if (tween !== _quickTween) {\n ptLookup = tween._ptLookup[tween._targets.indexOf(target)]; //note: we can't use tween._ptLookup[index] because for staggered tweens, the index from the fullTargets array won't match what it is in each individual tween that spawns from the stagger.\n\n i = plugin._props.length;\n\n while (i--) {\n ptLookup[plugin._props[i]] = pt;\n }\n }\n }\n\n return plugin;\n},\n _overwritingTween,\n //store a reference temporarily so we can avoid overwriting itself.\n_forceAllPropTweens,\n _initTween = function _initTween(tween, time, tTime) {\n var vars = tween.vars,\n ease = vars.ease,\n startAt = vars.startAt,\n immediateRender = vars.immediateRender,\n lazy = vars.lazy,\n onUpdate = vars.onUpdate,\n runBackwards = vars.runBackwards,\n yoyoEase = vars.yoyoEase,\n keyframes = vars.keyframes,\n autoRevert = vars.autoRevert,\n dur = tween._dur,\n prevStartAt = tween._startAt,\n targets = tween._targets,\n parent = tween.parent,\n fullTargets = parent && parent.data === \"nested\" ? parent.vars.targets : targets,\n autoOverwrite = tween._overwrite === \"auto\" && !_suppressOverwrites,\n tl = tween.timeline,\n cleanVars,\n i,\n p,\n pt,\n target,\n hasPriority,\n gsData,\n harness,\n plugin,\n ptLookup,\n index,\n harnessVars,\n overwritten;\n tl && (!keyframes || !ease) && (ease = \"none\");\n tween._ease = _parseEase(ease, _defaults.ease);\n tween._yEase = yoyoEase ? _invertEase(_parseEase(yoyoEase === true ? ease : yoyoEase, _defaults.ease)) : 0;\n\n if (yoyoEase && tween._yoyo && !tween._repeat) {\n //there must have been a parent timeline with yoyo:true that is currently in its yoyo phase, so flip the eases.\n yoyoEase = tween._yEase;\n tween._yEase = tween._ease;\n tween._ease = yoyoEase;\n }\n\n tween._from = !tl && !!vars.runBackwards; //nested timelines should never run backwards - the backwards-ness is in the child tweens.\n\n if (!tl || keyframes && !vars.stagger) {\n //if there's an internal timeline, skip all the parsing because we passed that task down the chain.\n harness = targets[0] ? _getCache(targets[0]).harness : 0;\n harnessVars = harness && vars[harness.prop]; //someone may need to specify CSS-specific values AND non-CSS values, like if the element has an \"x\" property plus it's a standard DOM element. We allow people to distinguish by wrapping plugin-specific stuff in a css:{} object for example.\n\n cleanVars = _copyExcluding(vars, _reservedProps);\n\n if (prevStartAt) {\n prevStartAt._zTime < 0 && prevStartAt.progress(1); // in case it's a lazy startAt that hasn't rendered yet.\n\n time < 0 && runBackwards && immediateRender && !autoRevert ? prevStartAt.render(-1, true) : prevStartAt.revert(runBackwards && dur ? _revertConfigNoKill : _startAtRevertConfig); // if it's a \"startAt\" (not \"from()\" or runBackwards: true), we only need to do a shallow revert (keep transforms cached in CSSPlugin)\n // don't just _removeFromParent(prevStartAt.render(-1, true)) because that'll leave inline styles. We're creating a new _startAt for \"startAt\" tweens that re-capture things to ensure that if the pre-tween values changed since the tween was created, they're recorded.\n\n prevStartAt._lazy = 0;\n }\n\n if (startAt) {\n _removeFromParent(tween._startAt = Tween.set(targets, _setDefaults({\n data: \"isStart\",\n overwrite: false,\n parent: parent,\n immediateRender: true,\n lazy: !prevStartAt && _isNotFalse(lazy),\n startAt: null,\n delay: 0,\n onUpdate: onUpdate && function () {\n return _callback(tween, \"onUpdate\");\n },\n stagger: 0\n }, startAt))); //copy the properties/values into a new object to avoid collisions, like var to = {x:0}, from = {x:500}; timeline.fromTo(e, from, to).fromTo(e, to, from);\n\n\n tween._startAt._dp = 0; // don't allow it to get put back into root timeline! Like when revert() is called and totalTime() gets set.\n\n tween._startAt._sat = tween; // used in globalTime(). _sat stands for _startAtTween\n\n time < 0 && (_reverting || !immediateRender && !autoRevert) && tween._startAt.revert(_revertConfigNoKill); // rare edge case, like if a render is forced in the negative direction of a non-initted tween.\n\n if (immediateRender) {\n if (dur && time <= 0 && tTime <= 0) {\n // check tTime here because in the case of a yoyo tween whose playhead gets pushed to the end like tween.progress(1), we should allow it through so that the onComplete gets fired properly.\n time && (tween._zTime = time);\n return; //we skip initialization here so that overwriting doesn't occur until the tween actually begins. Otherwise, if you create several immediateRender:true tweens of the same target/properties to drop into a Timeline, the last one created would overwrite the first ones because they didn't get placed into the timeline yet before the first render occurs and kicks in overwriting.\n }\n }\n } else if (runBackwards && dur) {\n //from() tweens must be handled uniquely: their beginning values must be rendered but we don't want overwriting to occur yet (when time is still 0). Wait until the tween actually begins before doing all the routines like overwriting. At that time, we should render at the END of the tween to ensure that things initialize correctly (remember, from() tweens go backwards)\n if (!prevStartAt) {\n time && (immediateRender = false); //in rare cases (like if a from() tween runs and then is invalidate()-ed), immediateRender could be true but the initial forced-render gets skipped, so there's no need to force the render in this context when the _time is greater than 0\n\n p = _setDefaults({\n overwrite: false,\n data: \"isFromStart\",\n //we tag the tween with as \"isFromStart\" so that if [inside a plugin] we need to only do something at the very END of a tween, we have a way of identifying this tween as merely the one that's setting the beginning values for a \"from()\" tween. For example, clearProps in CSSPlugin should only get applied at the very END of a tween and without this tag, from(...{height:100, clearProps:\"height\", delay:1}) would wipe the height at the beginning of the tween and after 1 second, it'd kick back in.\n lazy: immediateRender && !prevStartAt && _isNotFalse(lazy),\n immediateRender: immediateRender,\n //zero-duration tweens render immediately by default, but if we're not specifically instructed to render this tween immediately, we should skip this and merely _init() to record the starting values (rendering them immediately would push them to completion which is wasteful in that case - we'd have to render(-1) immediately after)\n stagger: 0,\n parent: parent //ensures that nested tweens that had a stagger are handled properly, like gsap.from(\".class\", {y: gsap.utils.wrap([-100,100]), stagger: 0.5})\n\n }, cleanVars);\n harnessVars && (p[harness.prop] = harnessVars); // in case someone does something like .from(..., {css:{}})\n\n _removeFromParent(tween._startAt = Tween.set(targets, p));\n\n tween._startAt._dp = 0; // don't allow it to get put back into root timeline!\n\n tween._startAt._sat = tween; // used in globalTime()\n\n time < 0 && (_reverting ? tween._startAt.revert(_revertConfigNoKill) : tween._startAt.render(-1, true));\n tween._zTime = time;\n\n if (!immediateRender) {\n _initTween(tween._startAt, _tinyNum, _tinyNum); //ensures that the initial values are recorded\n\n } else if (!time) {\n return;\n }\n }\n }\n\n tween._pt = tween._ptCache = 0;\n lazy = dur && _isNotFalse(lazy) || lazy && !dur;\n\n for (i = 0; i < targets.length; i++) {\n target = targets[i];\n gsData = target._gsap || _harness(targets)[i]._gsap;\n tween._ptLookup[i] = ptLookup = {};\n _lazyLookup[gsData.id] && _lazyTweens.length && _lazyRender(); //if other tweens of the same target have recently initted but haven't rendered yet, we've got to force the render so that the starting values are correct (imagine populating a timeline with a bunch of sequential tweens and then jumping to the end)\n\n index = fullTargets === targets ? i : fullTargets.indexOf(target);\n\n if (harness && (plugin = new harness()).init(target, harnessVars || cleanVars, tween, index, fullTargets) !== false) {\n tween._pt = pt = new PropTween(tween._pt, target, plugin.name, 0, 1, plugin.render, plugin, 0, plugin.priority);\n\n plugin._props.forEach(function (name) {\n ptLookup[name] = pt;\n });\n\n plugin.priority && (hasPriority = 1);\n }\n\n if (!harness || harnessVars) {\n for (p in cleanVars) {\n if (_plugins[p] && (plugin = _checkPlugin(p, cleanVars, tween, index, target, fullTargets))) {\n plugin.priority && (hasPriority = 1);\n } else {\n ptLookup[p] = pt = _addPropTween.call(tween, target, p, \"get\", cleanVars[p], index, fullTargets, 0, vars.stringFilter);\n }\n }\n }\n\n tween._op && tween._op[i] && tween.kill(target, tween._op[i]);\n\n if (autoOverwrite && tween._pt) {\n _overwritingTween = tween;\n\n _globalTimeline.killTweensOf(target, ptLookup, tween.globalTime(time)); // make sure the overwriting doesn't overwrite THIS tween!!!\n\n\n overwritten = !tween.parent;\n _overwritingTween = 0;\n }\n\n tween._pt && lazy && (_lazyLookup[gsData.id] = 1);\n }\n\n hasPriority && _sortPropTweensByPriority(tween);\n tween._onInit && tween._onInit(tween); //plugins like RoundProps must wait until ALL of the PropTweens are instantiated. In the plugin's init() function, it sets the _onInit on the tween instance. May not be pretty/intuitive, but it's fast and keeps file size down.\n }\n\n tween._onUpdate = onUpdate;\n tween._initted = (!tween._op || tween._pt) && !overwritten; // if overwrittenProps resulted in the entire tween being killed, do NOT flag it as initted or else it may render for one tick.\n\n keyframes && time <= 0 && tl.render(_bigNum, true, true); // if there's a 0% keyframe, it'll render in the \"before\" state for any staggered/delayed animations thus when the following tween initializes, it'll use the \"before\" state instead of the \"after\" state as the initial values.\n},\n _updatePropTweens = function _updatePropTweens(tween, property, value, start, startIsRelative, ratio, time, skipRecursion) {\n var ptCache = (tween._pt && tween._ptCache || (tween._ptCache = {}))[property],\n pt,\n rootPT,\n lookup,\n i;\n\n if (!ptCache) {\n ptCache = tween._ptCache[property] = [];\n lookup = tween._ptLookup;\n i = tween._targets.length;\n\n while (i--) {\n pt = lookup[i][property];\n\n if (pt && pt.d && pt.d._pt) {\n // it's a plugin, so find the nested PropTween\n pt = pt.d._pt;\n\n while (pt && pt.p !== property && pt.fp !== property) {\n // \"fp\" is functionParam for things like setting CSS variables which require .setProperty(\"--var-name\", value)\n pt = pt._next;\n }\n }\n\n if (!pt) {\n // there is no PropTween associated with that property, so we must FORCE one to be created and ditch out of this\n // if the tween has other properties that already rendered at new positions, we'd normally have to rewind to put them back like tween.render(0, true) before forcing an _initTween(), but that can create another edge case like tweening a timeline's progress would trigger onUpdates to fire which could move other things around. It's better to just inform users that .resetTo() should ONLY be used for tweens that already have that property. For example, you can't gsap.to(...{ y: 0 }) and then tween.restTo(\"x\", 200) for example.\n _forceAllPropTweens = 1; // otherwise, when we _addPropTween() and it finds no change between the start and end values, it skips creating a PropTween (for efficiency...why tween when there's no difference?) but in this case we NEED that PropTween created so we can edit it.\n\n tween.vars[property] = \"+=0\";\n\n _initTween(tween, time);\n\n _forceAllPropTweens = 0;\n return skipRecursion ? _warn(property + \" not eligible for reset\") : 1; // if someone tries to do a quickTo() on a special property like borderRadius which must get split into 4 different properties, that's not eligible for .resetTo().\n }\n\n ptCache.push(pt);\n }\n }\n\n i = ptCache.length;\n\n while (i--) {\n rootPT = ptCache[i];\n pt = rootPT._pt || rootPT; // complex values may have nested PropTweens. We only accommodate the FIRST value.\n\n pt.s = (start || start === 0) && !startIsRelative ? start : pt.s + (start || 0) + ratio * pt.c;\n pt.c = value - pt.s;\n rootPT.e && (rootPT.e = _round(value) + getUnit(rootPT.e)); // mainly for CSSPlugin (end value)\n\n rootPT.b && (rootPT.b = pt.s + getUnit(rootPT.b)); // (beginning value)\n }\n},\n _addAliasesToVars = function _addAliasesToVars(targets, vars) {\n var harness = targets[0] ? _getCache(targets[0]).harness : 0,\n propertyAliases = harness && harness.aliases,\n copy,\n p,\n i,\n aliases;\n\n if (!propertyAliases) {\n return vars;\n }\n\n copy = _merge({}, vars);\n\n for (p in propertyAliases) {\n if (p in copy) {\n aliases = propertyAliases[p].split(\",\");\n i = aliases.length;\n\n while (i--) {\n copy[aliases[i]] = copy[p];\n }\n }\n }\n\n return copy;\n},\n // parses multiple formats, like {\"0%\": {x: 100}, {\"50%\": {x: -20}} and { x: {\"0%\": 100, \"50%\": -20} }, and an \"ease\" can be set on any object. We populate an \"allProps\" object with an Array for each property, like {x: [{}, {}], y:[{}, {}]} with data for each property tween. The objects have a \"t\" (time), \"v\", (value), and \"e\" (ease) property. This allows us to piece together a timeline later.\n_parseKeyframe = function _parseKeyframe(prop, obj, allProps, easeEach) {\n var ease = obj.ease || easeEach || \"power1.inOut\",\n p,\n a;\n\n if (_isArray(obj)) {\n a = allProps[prop] || (allProps[prop] = []); // t = time (out of 100), v = value, e = ease\n\n obj.forEach(function (value, i) {\n return a.push({\n t: i / (obj.length - 1) * 100,\n v: value,\n e: ease\n });\n });\n } else {\n for (p in obj) {\n a = allProps[p] || (allProps[p] = []);\n p === \"ease\" || a.push({\n t: parseFloat(prop),\n v: obj[p],\n e: ease\n });\n }\n }\n},\n _parseFuncOrString = function _parseFuncOrString(value, tween, i, target, targets) {\n return _isFunction(value) ? value.call(tween, i, target, targets) : _isString(value) && ~value.indexOf(\"random(\") ? _replaceRandom(value) : value;\n},\n _staggerTweenProps = _callbackNames + \"repeat,repeatDelay,yoyo,repeatRefresh,yoyoEase,autoRevert\",\n _staggerPropsToSkip = {};\n\n_forEachName(_staggerTweenProps + \",id,stagger,delay,duration,paused,scrollTrigger\", function (name) {\n return _staggerPropsToSkip[name] = 1;\n});\n/*\n * --------------------------------------------------------------------------------------\n * TWEEN\n * --------------------------------------------------------------------------------------\n */\n\n\nexport var Tween = /*#__PURE__*/function (_Animation2) {\n _inheritsLoose(Tween, _Animation2);\n\n function Tween(targets, vars, position, skipInherit) {\n var _this3;\n\n if (typeof vars === \"number\") {\n position.duration = vars;\n vars = position;\n position = null;\n }\n\n _this3 = _Animation2.call(this, skipInherit ? vars : _inheritDefaults(vars)) || this;\n var _this3$vars = _this3.vars,\n duration = _this3$vars.duration,\n delay = _this3$vars.delay,\n immediateRender = _this3$vars.immediateRender,\n stagger = _this3$vars.stagger,\n overwrite = _this3$vars.overwrite,\n keyframes = _this3$vars.keyframes,\n defaults = _this3$vars.defaults,\n scrollTrigger = _this3$vars.scrollTrigger,\n yoyoEase = _this3$vars.yoyoEase,\n parent = vars.parent || _globalTimeline,\n parsedTargets = (_isArray(targets) || _isTypedArray(targets) ? _isNumber(targets[0]) : \"length\" in vars) ? [targets] : toArray(targets),\n tl,\n i,\n copy,\n l,\n p,\n curTarget,\n staggerFunc,\n staggerVarsToMerge;\n _this3._targets = parsedTargets.length ? _harness(parsedTargets) : _warn(\"GSAP target \" + targets + \" not found. https://gsap.com\", !_config.nullTargetWarn) || [];\n _this3._ptLookup = []; //PropTween lookup. An array containing an object for each target, having keys for each tweening property\n\n _this3._overwrite = overwrite;\n\n if (keyframes || stagger || _isFuncOrString(duration) || _isFuncOrString(delay)) {\n vars = _this3.vars;\n tl = _this3.timeline = new Timeline({\n data: \"nested\",\n defaults: defaults || {},\n targets: parent && parent.data === \"nested\" ? parent.vars.targets : parsedTargets\n }); // we need to store the targets because for staggers and keyframes, we end up creating an individual tween for each but function-based values need to know the index and the whole Array of targets.\n\n tl.kill();\n tl.parent = tl._dp = _assertThisInitialized(_this3);\n tl._start = 0;\n\n if (stagger || _isFuncOrString(duration) || _isFuncOrString(delay)) {\n l = parsedTargets.length;\n staggerFunc = stagger && distribute(stagger);\n\n if (_isObject(stagger)) {\n //users can pass in callbacks like onStart/onComplete in the stagger object. These should fire with each individual tween.\n for (p in stagger) {\n if (~_staggerTweenProps.indexOf(p)) {\n staggerVarsToMerge || (staggerVarsToMerge = {});\n staggerVarsToMerge[p] = stagger[p];\n }\n }\n }\n\n for (i = 0; i < l; i++) {\n copy = _copyExcluding(vars, _staggerPropsToSkip);\n copy.stagger = 0;\n yoyoEase && (copy.yoyoEase = yoyoEase);\n staggerVarsToMerge && _merge(copy, staggerVarsToMerge);\n curTarget = parsedTargets[i]; //don't just copy duration or delay because if they're a string or function, we'd end up in an infinite loop because _isFuncOrString() would evaluate as true in the child tweens, entering this loop, etc. So we parse the value straight from vars and default to 0.\n\n copy.duration = +_parseFuncOrString(duration, _assertThisInitialized(_this3), i, curTarget, parsedTargets);\n copy.delay = (+_parseFuncOrString(delay, _assertThisInitialized(_this3), i, curTarget, parsedTargets) || 0) - _this3._delay;\n\n if (!stagger && l === 1 && copy.delay) {\n // if someone does delay:\"random(1, 5)\", repeat:-1, for example, the delay shouldn't be inside the repeat.\n _this3._delay = delay = copy.delay;\n _this3._start += delay;\n copy.delay = 0;\n }\n\n tl.to(curTarget, copy, staggerFunc ? staggerFunc(i, curTarget, parsedTargets) : 0);\n tl._ease = _easeMap.none;\n }\n\n tl.duration() ? duration = delay = 0 : _this3.timeline = 0; // if the timeline's duration is 0, we don't need a timeline internally!\n } else if (keyframes) {\n _inheritDefaults(_setDefaults(tl.vars.defaults, {\n ease: \"none\"\n }));\n\n tl._ease = _parseEase(keyframes.ease || vars.ease || \"none\");\n var time = 0,\n a,\n kf,\n v;\n\n if (_isArray(keyframes)) {\n keyframes.forEach(function (frame) {\n return tl.to(parsedTargets, frame, \">\");\n });\n tl.duration(); // to ensure tl._dur is cached because we tap into it for performance purposes in the render() method.\n } else {\n copy = {};\n\n for (p in keyframes) {\n p === \"ease\" || p === \"easeEach\" || _parseKeyframe(p, keyframes[p], copy, keyframes.easeEach);\n }\n\n for (p in copy) {\n a = copy[p].sort(function (a, b) {\n return a.t - b.t;\n });\n time = 0;\n\n for (i = 0; i < a.length; i++) {\n kf = a[i];\n v = {\n ease: kf.e,\n duration: (kf.t - (i ? a[i - 1].t : 0)) / 100 * duration\n };\n v[p] = kf.v;\n tl.to(parsedTargets, v, time);\n time += v.duration;\n }\n }\n\n tl.duration() < duration && tl.to({}, {\n duration: duration - tl.duration()\n }); // in case keyframes didn't go to 100%\n }\n }\n\n duration || _this3.duration(duration = tl.duration());\n } else {\n _this3.timeline = 0; //speed optimization, faster lookups (no going up the prototype chain)\n }\n\n if (overwrite === true && !_suppressOverwrites) {\n _overwritingTween = _assertThisInitialized(_this3);\n\n _globalTimeline.killTweensOf(parsedTargets);\n\n _overwritingTween = 0;\n }\n\n _addToTimeline(parent, _assertThisInitialized(_this3), position);\n\n vars.reversed && _this3.reverse();\n vars.paused && _this3.paused(true);\n\n if (immediateRender || !duration && !keyframes && _this3._start === _roundPrecise(parent._time) && _isNotFalse(immediateRender) && _hasNoPausedAncestors(_assertThisInitialized(_this3)) && parent.data !== \"nested\") {\n _this3._tTime = -_tinyNum; //forces a render without having to set the render() \"force\" parameter to true because we want to allow lazying by default (using the \"force\" parameter always forces an immediate full render)\n\n _this3.render(Math.max(0, -delay) || 0); //in case delay is negative\n\n }\n\n scrollTrigger && _scrollTrigger(_assertThisInitialized(_this3), scrollTrigger);\n return _this3;\n }\n\n var _proto3 = Tween.prototype;\n\n _proto3.render = function render(totalTime, suppressEvents, force) {\n var prevTime = this._time,\n tDur = this._tDur,\n dur = this._dur,\n isNegative = totalTime < 0,\n tTime = totalTime > tDur - _tinyNum && !isNegative ? tDur : totalTime < _tinyNum ? 0 : totalTime,\n time,\n pt,\n iteration,\n cycleDuration,\n prevIteration,\n isYoyo,\n ratio,\n timeline,\n yoyoEase;\n\n if (!dur) {\n _renderZeroDurationTween(this, totalTime, suppressEvents, force);\n } else if (tTime !== this._tTime || !totalTime || force || !this._initted && this._tTime || this._startAt && this._zTime < 0 !== isNegative) {\n //this senses if we're crossing over the start time, in which case we must record _zTime and force the render, but we do it in this lengthy conditional way for performance reasons (usually we can skip the calculations): this._initted && (this._zTime < 0) !== (totalTime < 0)\n time = tTime;\n timeline = this.timeline;\n\n if (this._repeat) {\n //adjust the time for repeats and yoyos\n cycleDuration = dur + this._rDelay;\n\n if (this._repeat < -1 && isNegative) {\n return this.totalTime(cycleDuration * 100 + totalTime, suppressEvents, force);\n }\n\n time = _roundPrecise(tTime % cycleDuration); //round to avoid floating point errors. (4 % 0.8 should be 0 but some browsers report it as 0.79999999!)\n\n if (tTime === tDur) {\n // the tDur === tTime is for edge cases where there's a lengthy decimal on the duration and it may reach the very end but the time is rendered as not-quite-there (remember, tDur is rounded to 4 decimals whereas dur isn't)\n iteration = this._repeat;\n time = dur;\n } else {\n iteration = ~~(tTime / cycleDuration);\n\n if (iteration && iteration === _roundPrecise(tTime / cycleDuration)) {\n time = dur;\n iteration--;\n }\n\n time > dur && (time = dur);\n }\n\n isYoyo = this._yoyo && iteration & 1;\n\n if (isYoyo) {\n yoyoEase = this._yEase;\n time = dur - time;\n }\n\n prevIteration = _animationCycle(this._tTime, cycleDuration);\n\n if (time === prevTime && !force && this._initted && iteration === prevIteration) {\n //could be during the repeatDelay part. No need to render and fire callbacks.\n this._tTime = tTime;\n return this;\n }\n\n if (iteration !== prevIteration) {\n timeline && this._yEase && _propagateYoyoEase(timeline, isYoyo); //repeatRefresh functionality\n\n if (this.vars.repeatRefresh && !isYoyo && !this._lock && this._time !== dur && this._initted) {\n // this._time will === dur when we render at EXACTLY the end of an iteration. Without this condition, it'd often do the repeatRefresh render TWICE (again on the very next tick).\n this._lock = force = 1; //force, otherwise if lazy is true, the _attemptInitTween() will return and we'll jump out and get caught bouncing on each tick.\n\n this.render(_roundPrecise(cycleDuration * iteration), true).invalidate()._lock = 0;\n }\n }\n }\n\n if (!this._initted) {\n if (_attemptInitTween(this, isNegative ? totalTime : time, force, suppressEvents, tTime)) {\n this._tTime = 0; // in constructor if immediateRender is true, we set _tTime to -_tinyNum to have the playhead cross the starting point but we can't leave _tTime as a negative number.\n\n return this;\n }\n\n if (prevTime !== this._time && !(force && this.vars.repeatRefresh && iteration !== prevIteration)) {\n // rare edge case - during initialization, an onUpdate in the _startAt (.fromTo()) might force this tween to render at a different spot in which case we should ditch this render() call so that it doesn't revert the values. But we also don't want to dump if we're doing a repeatRefresh render!\n return this;\n }\n\n if (dur !== this._dur) {\n // while initting, a plugin like InertiaPlugin might alter the duration, so rerun from the start to ensure everything renders as it should.\n return this.render(totalTime, suppressEvents, force);\n }\n }\n\n this._tTime = tTime;\n this._time = time;\n\n if (!this._act && this._ts) {\n this._act = 1; //as long as it's not paused, force it to be active so that if the user renders independent of the parent timeline, it'll be forced to re-render on the next tick.\n\n this._lazy = 0;\n }\n\n this.ratio = ratio = (yoyoEase || this._ease)(time / dur);\n\n if (this._from) {\n this.ratio = ratio = 1 - ratio;\n }\n\n if (time && !prevTime && !suppressEvents && !iteration) {\n _callback(this, \"onStart\");\n\n if (this._tTime !== tTime) {\n // in case the onStart triggered a render at a different spot, eject. Like if someone did animation.pause(0.5) or something inside the onStart.\n return this;\n }\n }\n\n pt = this._pt;\n\n while (pt) {\n pt.r(ratio, pt.d);\n pt = pt._next;\n }\n\n timeline && timeline.render(totalTime < 0 ? totalTime : !time && isYoyo ? -_tinyNum : timeline._dur * timeline._ease(time / this._dur), suppressEvents, force) || this._startAt && (this._zTime = totalTime);\n\n if (this._onUpdate && !suppressEvents) {\n isNegative && _rewindStartAt(this, totalTime, suppressEvents, force); //note: for performance reasons, we tuck this conditional logic inside less traveled areas (most tweens don't have an onUpdate). We'd just have it at the end before the onComplete, but the values should be updated before any onUpdate is called, so we ALSO put it here and then if it's not called, we do so later near the onComplete.\n\n _callback(this, \"onUpdate\");\n }\n\n this._repeat && iteration !== prevIteration && this.vars.onRepeat && !suppressEvents && this.parent && _callback(this, \"onRepeat\");\n\n if ((tTime === this._tDur || !tTime) && this._tTime === tTime) {\n isNegative && !this._onUpdate && _rewindStartAt(this, totalTime, true, true);\n (totalTime || !dur) && (tTime === this._tDur && this._ts > 0 || !tTime && this._ts < 0) && _removeFromParent(this, 1); // don't remove if we're rendering at exactly a time of 0, as there could be autoRevert values that should get set on the next tick (if the playhead goes backward beyond the startTime, negative totalTime). Don't remove if the timeline is reversed and the playhead isn't at 0, otherwise tl.progress(1).reverse() won't work. Only remove if the playhead is at the end and timeScale is positive, or if the playhead is at 0 and the timeScale is negative.\n\n if (!suppressEvents && !(isNegative && !prevTime) && (tTime || prevTime || isYoyo)) {\n // if prevTime and tTime are zero, we shouldn't fire the onReverseComplete. This could happen if you gsap.to(... {paused:true}).play();\n _callback(this, tTime === tDur ? \"onComplete\" : \"onReverseComplete\", true);\n\n this._prom && !(tTime < tDur && this.timeScale() > 0) && this._prom();\n }\n }\n }\n\n return this;\n };\n\n _proto3.targets = function targets() {\n return this._targets;\n };\n\n _proto3.invalidate = function invalidate(soft) {\n // \"soft\" gives us a way to clear out everything EXCEPT the recorded pre-\"from\" portion of from() tweens. Otherwise, for example, if you tween.progress(1).render(0, true true).invalidate(), the \"from\" values would persist and then on the next render, the from() tweens would initialize and the current value would match the \"from\" values, thus animate from the same value to the same value (no animation). We tap into this in ScrollTrigger's refresh() where we must push a tween to completion and then back again but honor its init state in case the tween is dependent on another tween further up on the page.\n (!soft || !this.vars.runBackwards) && (this._startAt = 0);\n this._pt = this._op = this._onUpdate = this._lazy = this.ratio = 0;\n this._ptLookup = [];\n this.timeline && this.timeline.invalidate(soft);\n return _Animation2.prototype.invalidate.call(this, soft);\n };\n\n _proto3.resetTo = function resetTo(property, value, start, startIsRelative, skipRecursion) {\n _tickerActive || _ticker.wake();\n this._ts || this.play();\n var time = Math.min(this._dur, (this._dp._time - this._start) * this._ts),\n ratio;\n this._initted || _initTween(this, time);\n ratio = this._ease(time / this._dur); // don't just get tween.ratio because it may not have rendered yet.\n // possible future addition to allow an object with multiple values to update, like tween.resetTo({x: 100, y: 200}); At this point, it doesn't seem worth the added kb given the fact that most users will likely opt for the convenient gsap.quickTo() way of interacting with this method.\n // if (_isObject(property)) { // performance optimization\n // \tfor (p in property) {\n // \t\tif (_updatePropTweens(this, p, property[p], value ? value[p] : null, start, ratio, time)) {\n // \t\t\treturn this.resetTo(property, value, start, startIsRelative); // if a PropTween wasn't found for the property, it'll get forced with a re-initialization so we need to jump out and start over again.\n // \t\t}\n // \t}\n // } else {\n\n if (_updatePropTweens(this, property, value, start, startIsRelative, ratio, time, skipRecursion)) {\n return this.resetTo(property, value, start, startIsRelative, 1); // if a PropTween wasn't found for the property, it'll get forced with a re-initialization so we need to jump out and start over again.\n } //}\n\n\n _alignPlayhead(this, 0);\n\n this.parent || _addLinkedListItem(this._dp, this, \"_first\", \"_last\", this._dp._sort ? \"_start\" : 0);\n return this.render(0);\n };\n\n _proto3.kill = function kill(targets, vars) {\n if (vars === void 0) {\n vars = \"all\";\n }\n\n if (!targets && (!vars || vars === \"all\")) {\n this._lazy = this._pt = 0;\n return this.parent ? _interrupt(this) : this;\n }\n\n if (this.timeline) {\n var tDur = this.timeline.totalDuration();\n this.timeline.killTweensOf(targets, vars, _overwritingTween && _overwritingTween.vars.overwrite !== true)._first || _interrupt(this); // if nothing is left tweening, interrupt.\n\n this.parent && tDur !== this.timeline.totalDuration() && _setDuration(this, this._dur * this.timeline._tDur / tDur, 0, 1); // if a nested tween is killed that changes the duration, it should affect this tween's duration. We must use the ratio, though, because sometimes the internal timeline is stretched like for keyframes where they don't all add up to whatever the parent tween's duration was set to.\n\n return this;\n }\n\n var parsedTargets = this._targets,\n killingTargets = targets ? toArray(targets) : parsedTargets,\n propTweenLookup = this._ptLookup,\n firstPT = this._pt,\n overwrittenProps,\n curLookup,\n curOverwriteProps,\n props,\n p,\n pt,\n i;\n\n if ((!vars || vars === \"all\") && _arraysMatch(parsedTargets, killingTargets)) {\n vars === \"all\" && (this._pt = 0);\n return _interrupt(this);\n }\n\n overwrittenProps = this._op = this._op || [];\n\n if (vars !== \"all\") {\n //so people can pass in a comma-delimited list of property names\n if (_isString(vars)) {\n p = {};\n\n _forEachName(vars, function (name) {\n return p[name] = 1;\n });\n\n vars = p;\n }\n\n vars = _addAliasesToVars(parsedTargets, vars);\n }\n\n i = parsedTargets.length;\n\n while (i--) {\n if (~killingTargets.indexOf(parsedTargets[i])) {\n curLookup = propTweenLookup[i];\n\n if (vars === \"all\") {\n overwrittenProps[i] = vars;\n props = curLookup;\n curOverwriteProps = {};\n } else {\n curOverwriteProps = overwrittenProps[i] = overwrittenProps[i] || {};\n props = vars;\n }\n\n for (p in props) {\n pt = curLookup && curLookup[p];\n\n if (pt) {\n if (!(\"kill\" in pt.d) || pt.d.kill(p) === true) {\n _removeLinkedListItem(this, pt, \"_pt\");\n }\n\n delete curLookup[p];\n }\n\n if (curOverwriteProps !== \"all\") {\n curOverwriteProps[p] = 1;\n }\n }\n }\n }\n\n this._initted && !this._pt && firstPT && _interrupt(this); //if all tweening properties are killed, kill the tween. Without this line, if there's a tween with multiple targets and then you killTweensOf() each target individually, the tween would technically still remain active and fire its onComplete even though there aren't any more properties tweening.\n\n return this;\n };\n\n Tween.to = function to(targets, vars) {\n return new Tween(targets, vars, arguments[2]);\n };\n\n Tween.from = function from(targets, vars) {\n return _createTweenType(1, arguments);\n };\n\n Tween.delayedCall = function delayedCall(delay, callback, params, scope) {\n return new Tween(callback, 0, {\n immediateRender: false,\n lazy: false,\n overwrite: false,\n delay: delay,\n onComplete: callback,\n onReverseComplete: callback,\n onCompleteParams: params,\n onReverseCompleteParams: params,\n callbackScope: scope\n }); // we must use onReverseComplete too for things like timeline.add(() => {...}) which should be triggered in BOTH directions (forward and reverse)\n };\n\n Tween.fromTo = function fromTo(targets, fromVars, toVars) {\n return _createTweenType(2, arguments);\n };\n\n Tween.set = function set(targets, vars) {\n vars.duration = 0;\n vars.repeatDelay || (vars.repeat = 0);\n return new Tween(targets, vars);\n };\n\n Tween.killTweensOf = function killTweensOf(targets, props, onlyActive) {\n return _globalTimeline.killTweensOf(targets, props, onlyActive);\n };\n\n return Tween;\n}(Animation);\n\n_setDefaults(Tween.prototype, {\n _targets: [],\n _lazy: 0,\n _startAt: 0,\n _op: 0,\n _onInit: 0\n}); //add the pertinent timeline methods to Tween instances so that users can chain conveniently and create a timeline automatically. (removed due to concerns that it'd ultimately add to more confusion especially for beginners)\n// _forEachName(\"to,from,fromTo,set,call,add,addLabel,addPause\", name => {\n// \tTween.prototype[name] = function() {\n// \t\tlet tl = new Timeline();\n// \t\treturn _addToTimeline(tl, this)[name].apply(tl, toArray(arguments));\n// \t}\n// });\n//for backward compatibility. Leverage the timeline calls.\n\n\n_forEachName(\"staggerTo,staggerFrom,staggerFromTo\", function (name) {\n Tween[name] = function () {\n var tl = new Timeline(),\n params = _slice.call(arguments, 0);\n\n params.splice(name === \"staggerFromTo\" ? 5 : 4, 0, 0);\n return tl[name].apply(tl, params);\n };\n});\n/*\n * --------------------------------------------------------------------------------------\n * PROPTWEEN\n * --------------------------------------------------------------------------------------\n */\n\n\nvar _setterPlain = function _setterPlain(target, property, value) {\n return target[property] = value;\n},\n _setterFunc = function _setterFunc(target, property, value) {\n return target[property](value);\n},\n _setterFuncWithParam = function _setterFuncWithParam(target, property, value, data) {\n return target[property](data.fp, value);\n},\n _setterAttribute = function _setterAttribute(target, property, value) {\n return target.setAttribute(property, value);\n},\n _getSetter = function _getSetter(target, property) {\n return _isFunction(target[property]) ? _setterFunc : _isUndefined(target[property]) && target.setAttribute ? _setterAttribute : _setterPlain;\n},\n _renderPlain = function _renderPlain(ratio, data) {\n return data.set(data.t, data.p, Math.round((data.s + data.c * ratio) * 1000000) / 1000000, data);\n},\n _renderBoolean = function _renderBoolean(ratio, data) {\n return data.set(data.t, data.p, !!(data.s + data.c * ratio), data);\n},\n _renderComplexString = function _renderComplexString(ratio, data) {\n var pt = data._pt,\n s = \"\";\n\n if (!ratio && data.b) {\n //b = beginning string\n s = data.b;\n } else if (ratio === 1 && data.e) {\n //e = ending string\n s = data.e;\n } else {\n while (pt) {\n s = pt.p + (pt.m ? pt.m(pt.s + pt.c * ratio) : Math.round((pt.s + pt.c * ratio) * 10000) / 10000) + s; //we use the \"p\" property for the text inbetween (like a suffix). And in the context of a complex string, the modifier (m) is typically just Math.round(), like for RGB colors.\n\n pt = pt._next;\n }\n\n s += data.c; //we use the \"c\" of the PropTween to store the final chunk of non-numeric text.\n }\n\n data.set(data.t, data.p, s, data);\n},\n _renderPropTweens = function _renderPropTweens(ratio, data) {\n var pt = data._pt;\n\n while (pt) {\n pt.r(ratio, pt.d);\n pt = pt._next;\n }\n},\n _addPluginModifier = function _addPluginModifier(modifier, tween, target, property) {\n var pt = this._pt,\n next;\n\n while (pt) {\n next = pt._next;\n pt.p === property && pt.modifier(modifier, tween, target);\n pt = next;\n }\n},\n _killPropTweensOf = function _killPropTweensOf(property) {\n var pt = this._pt,\n hasNonDependentRemaining,\n next;\n\n while (pt) {\n next = pt._next;\n\n if (pt.p === property && !pt.op || pt.op === property) {\n _removeLinkedListItem(this, pt, \"_pt\");\n } else if (!pt.dep) {\n hasNonDependentRemaining = 1;\n }\n\n pt = next;\n }\n\n return !hasNonDependentRemaining;\n},\n _setterWithModifier = function _setterWithModifier(target, property, value, data) {\n data.mSet(target, property, data.m.call(data.tween, value, data.mt), data);\n},\n _sortPropTweensByPriority = function _sortPropTweensByPriority(parent) {\n var pt = parent._pt,\n next,\n pt2,\n first,\n last; //sorts the PropTween linked list in order of priority because some plugins need to do their work after ALL of the PropTweens were created (like RoundPropsPlugin and ModifiersPlugin)\n\n while (pt) {\n next = pt._next;\n pt2 = first;\n\n while (pt2 && pt2.pr > pt.pr) {\n pt2 = pt2._next;\n }\n\n if (pt._prev = pt2 ? pt2._prev : last) {\n pt._prev._next = pt;\n } else {\n first = pt;\n }\n\n if (pt._next = pt2) {\n pt2._prev = pt;\n } else {\n last = pt;\n }\n\n pt = next;\n }\n\n parent._pt = first;\n}; //PropTween key: t = target, p = prop, r = renderer, d = data, s = start, c = change, op = overwriteProperty (ONLY populated when it's different than p), pr = priority, _next/_prev for the linked list siblings, set = setter, m = modifier, mSet = modifierSetter (the original setter, before a modifier was added)\n\n\nexport var PropTween = /*#__PURE__*/function () {\n function PropTween(next, target, prop, start, change, renderer, data, setter, priority) {\n this.t = target;\n this.s = start;\n this.c = change;\n this.p = prop;\n this.r = renderer || _renderPlain;\n this.d = data || this;\n this.set = setter || _setterPlain;\n this.pr = priority || 0;\n this._next = next;\n\n if (next) {\n next._prev = this;\n }\n }\n\n var _proto4 = PropTween.prototype;\n\n _proto4.modifier = function modifier(func, tween, target) {\n this.mSet = this.mSet || this.set; //in case it was already set (a PropTween can only have one modifier)\n\n this.set = _setterWithModifier;\n this.m = func;\n this.mt = target; //modifier target\n\n this.tween = tween;\n };\n\n return PropTween;\n}(); //Initialization tasks\n\n_forEachName(_callbackNames + \"parent,duration,ease,delay,overwrite,runBackwards,startAt,yoyo,immediateRender,repeat,repeatDelay,data,paused,reversed,lazy,callbackScope,stringFilter,id,yoyoEase,stagger,inherit,repeatRefresh,keyframes,autoRevert,scrollTrigger\", function (name) {\n return _reservedProps[name] = 1;\n});\n\n_globals.TweenMax = _globals.TweenLite = Tween;\n_globals.TimelineLite = _globals.TimelineMax = Timeline;\n_globalTimeline = new Timeline({\n sortChildren: false,\n defaults: _defaults,\n autoRemoveChildren: true,\n id: \"root\",\n smoothChildTiming: true\n});\n_config.stringFilter = _colorStringFilter;\n\nvar _media = [],\n _listeners = {},\n _emptyArray = [],\n _lastMediaTime = 0,\n _contextID = 0,\n _dispatch = function _dispatch(type) {\n return (_listeners[type] || _emptyArray).map(function (f) {\n return f();\n });\n},\n _onMediaChange = function _onMediaChange() {\n var time = Date.now(),\n matches = [];\n\n if (time - _lastMediaTime > 2) {\n _dispatch(\"matchMediaInit\");\n\n _media.forEach(function (c) {\n var queries = c.queries,\n conditions = c.conditions,\n match,\n p,\n anyMatch,\n toggled;\n\n for (p in queries) {\n match = _win.matchMedia(queries[p]).matches; // Firefox doesn't update the \"matches\" property of the MediaQueryList object correctly - it only does so as it calls its change handler - so we must re-create a media query here to ensure it's accurate.\n\n match && (anyMatch = 1);\n\n if (match !== conditions[p]) {\n conditions[p] = match;\n toggled = 1;\n }\n }\n\n if (toggled) {\n c.revert();\n anyMatch && matches.push(c);\n }\n });\n\n _dispatch(\"matchMediaRevert\");\n\n matches.forEach(function (c) {\n return c.onMatch(c, function (func) {\n return c.add(null, func);\n });\n });\n _lastMediaTime = time;\n\n _dispatch(\"matchMedia\");\n }\n};\n\nvar Context = /*#__PURE__*/function () {\n function Context(func, scope) {\n this.selector = scope && selector(scope);\n this.data = [];\n this._r = []; // returned/cleanup functions\n\n this.isReverted = false;\n this.id = _contextID++; // to work around issues that frameworks like Vue cause by making things into Proxies which make it impossible to do something like _media.indexOf(this) because \"this\" would no longer refer to the Context instance itself - it'd refer to a Proxy! We needed a way to identify the context uniquely\n\n func && this.add(func);\n }\n\n var _proto5 = Context.prototype;\n\n _proto5.add = function add(name, func, scope) {\n // possible future addition if we need the ability to add() an animation to a context and for whatever reason cannot create that animation inside of a context.add(() => {...}) function.\n // if (name && _isFunction(name.revert)) {\n // \tthis.data.push(name);\n // \treturn (name._ctx = this);\n // }\n if (_isFunction(name)) {\n scope = func;\n func = name;\n name = _isFunction;\n }\n\n var self = this,\n f = function f() {\n var prev = _context,\n prevSelector = self.selector,\n result;\n prev && prev !== self && prev.data.push(self);\n scope && (self.selector = selector(scope));\n _context = self;\n result = func.apply(self, arguments);\n _isFunction(result) && self._r.push(result);\n _context = prev;\n self.selector = prevSelector;\n self.isReverted = false;\n return result;\n };\n\n self.last = f;\n return name === _isFunction ? f(self, function (func) {\n return self.add(null, func);\n }) : name ? self[name] = f : f;\n };\n\n _proto5.ignore = function ignore(func) {\n var prev = _context;\n _context = null;\n func(this);\n _context = prev;\n };\n\n _proto5.getTweens = function getTweens() {\n var a = [];\n this.data.forEach(function (e) {\n return e instanceof Context ? a.push.apply(a, e.getTweens()) : e instanceof Tween && !(e.parent && e.parent.data === \"nested\") && a.push(e);\n });\n return a;\n };\n\n _proto5.clear = function clear() {\n this._r.length = this.data.length = 0;\n };\n\n _proto5.kill = function kill(revert, matchMedia) {\n var _this4 = this;\n\n if (revert) {\n (function () {\n var tweens = _this4.getTweens(),\n i = _this4.data.length,\n t;\n\n while (i--) {\n // Flip plugin tweens are very different in that they should actually be pushed to their end. The plugin replaces the timeline's .revert() method to do exactly that. But we also need to remove any of those nested tweens inside the flip timeline so that they don't get individually reverted.\n t = _this4.data[i];\n\n if (t.data === \"isFlip\") {\n t.revert();\n t.getChildren(true, true, false).forEach(function (tween) {\n return tweens.splice(tweens.indexOf(tween), 1);\n });\n }\n } // save as an object so that we can cache the globalTime for each tween to optimize performance during the sort\n\n\n tweens.map(function (t) {\n return {\n g: t._dur || t._delay || t._sat && !t._sat.vars.immediateRender ? t.globalTime(0) : -Infinity,\n t: t\n };\n }).sort(function (a, b) {\n return b.g - a.g || -Infinity;\n }).forEach(function (o) {\n return o.t.revert(revert);\n }); // note: all of the _startAt tweens should be reverted in reverse order that they were created, and they'll all have the same globalTime (-1) so the \" || -1\" in the sort keeps the order properly.\n\n i = _this4.data.length;\n\n while (i--) {\n // make sure we loop backwards so that, for example, SplitTexts that were created later on the same element get reverted first\n t = _this4.data[i];\n\n if (t instanceof Timeline) {\n if (t.data !== \"nested\") {\n t.scrollTrigger && t.scrollTrigger.revert();\n t.kill(); // don't revert() the timeline because that's duplicating efforts since we already reverted all the tweens\n }\n } else {\n !(t instanceof Tween) && t.revert && t.revert(revert);\n }\n }\n\n _this4._r.forEach(function (f) {\n return f(revert, _this4);\n });\n\n _this4.isReverted = true;\n })();\n } else {\n this.data.forEach(function (e) {\n return e.kill && e.kill();\n });\n }\n\n this.clear();\n\n if (matchMedia) {\n var i = _media.length;\n\n while (i--) {\n // previously, we checked _media.indexOf(this), but some frameworks like Vue enforce Proxy objects that make it impossible to get the proper result that way, so we must use a unique ID number instead.\n _media[i].id === this.id && _media.splice(i, 1);\n }\n }\n };\n\n _proto5.revert = function revert(config) {\n this.kill(config || {});\n };\n\n return Context;\n}();\n\nvar MatchMedia = /*#__PURE__*/function () {\n function MatchMedia(scope) {\n this.contexts = [];\n this.scope = scope;\n }\n\n var _proto6 = MatchMedia.prototype;\n\n _proto6.add = function add(conditions, func, scope) {\n _isObject(conditions) || (conditions = {\n matches: conditions\n });\n var context = new Context(0, scope || this.scope),\n cond = context.conditions = {},\n mq,\n p,\n active;\n _context && !context.selector && (context.selector = _context.selector); // in case a context is created inside a context. Like a gsap.matchMedia() that's inside a scoped gsap.context()\n\n this.contexts.push(context);\n func = context.add(\"onMatch\", func);\n context.queries = conditions;\n\n for (p in conditions) {\n if (p === \"all\") {\n active = 1;\n } else {\n mq = _win.matchMedia(conditions[p]);\n\n if (mq) {\n _media.indexOf(context) < 0 && _media.push(context);\n (cond[p] = mq.matches) && (active = 1);\n mq.addListener ? mq.addListener(_onMediaChange) : mq.addEventListener(\"change\", _onMediaChange);\n }\n }\n }\n\n active && func(context, function (f) {\n return context.add(null, f);\n });\n return this;\n } // refresh() {\n // \tlet time = _lastMediaTime,\n // \t\tmedia = _media;\n // \t_lastMediaTime = -1;\n // \t_media = this.contexts;\n // \t_onMediaChange();\n // \t_lastMediaTime = time;\n // \t_media = media;\n // }\n ;\n\n _proto6.revert = function revert(config) {\n this.kill(config || {});\n };\n\n _proto6.kill = function kill(revert) {\n this.contexts.forEach(function (c) {\n return c.kill(revert, true);\n });\n };\n\n return MatchMedia;\n}();\n/*\n * --------------------------------------------------------------------------------------\n * GSAP\n * --------------------------------------------------------------------------------------\n */\n\n\nvar _gsap = {\n registerPlugin: function registerPlugin() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n args.forEach(function (config) {\n return _createPlugin(config);\n });\n },\n timeline: function timeline(vars) {\n return new Timeline(vars);\n },\n getTweensOf: function getTweensOf(targets, onlyActive) {\n return _globalTimeline.getTweensOf(targets, onlyActive);\n },\n getProperty: function getProperty(target, property, unit, uncache) {\n _isString(target) && (target = toArray(target)[0]); //in case selector text or an array is passed in\n\n var getter = _getCache(target || {}).get,\n format = unit ? _passThrough : _numericIfPossible;\n\n unit === \"native\" && (unit = \"\");\n return !target ? target : !property ? function (property, unit, uncache) {\n return format((_plugins[property] && _plugins[property].get || getter)(target, property, unit, uncache));\n } : format((_plugins[property] && _plugins[property].get || getter)(target, property, unit, uncache));\n },\n quickSetter: function quickSetter(target, property, unit) {\n target = toArray(target);\n\n if (target.length > 1) {\n var setters = target.map(function (t) {\n return gsap.quickSetter(t, property, unit);\n }),\n l = setters.length;\n return function (value) {\n var i = l;\n\n while (i--) {\n setters[i](value);\n }\n };\n }\n\n target = target[0] || {};\n\n var Plugin = _plugins[property],\n cache = _getCache(target),\n p = cache.harness && (cache.harness.aliases || {})[property] || property,\n // in case it's an alias, like \"rotate\" for \"rotation\".\n setter = Plugin ? function (value) {\n var p = new Plugin();\n _quickTween._pt = 0;\n p.init(target, unit ? value + unit : value, _quickTween, 0, [target]);\n p.render(1, p);\n _quickTween._pt && _renderPropTweens(1, _quickTween);\n } : cache.set(target, p);\n\n return Plugin ? setter : function (value) {\n return setter(target, p, unit ? value + unit : value, cache, 1);\n };\n },\n quickTo: function quickTo(target, property, vars) {\n var _merge2;\n\n var tween = gsap.to(target, _merge((_merge2 = {}, _merge2[property] = \"+=0.1\", _merge2.paused = true, _merge2), vars || {})),\n func = function func(value, start, startIsRelative) {\n return tween.resetTo(property, value, start, startIsRelative);\n };\n\n func.tween = tween;\n return func;\n },\n isTweening: function isTweening(targets) {\n return _globalTimeline.getTweensOf(targets, true).length > 0;\n },\n defaults: function defaults(value) {\n value && value.ease && (value.ease = _parseEase(value.ease, _defaults.ease));\n return _mergeDeep(_defaults, value || {});\n },\n config: function config(value) {\n return _mergeDeep(_config, value || {});\n },\n registerEffect: function registerEffect(_ref3) {\n var name = _ref3.name,\n effect = _ref3.effect,\n plugins = _ref3.plugins,\n defaults = _ref3.defaults,\n extendTimeline = _ref3.extendTimeline;\n (plugins || \"\").split(\",\").forEach(function (pluginName) {\n return pluginName && !_plugins[pluginName] && !_globals[pluginName] && _warn(name + \" effect requires \" + pluginName + \" plugin.\");\n });\n\n _effects[name] = function (targets, vars, tl) {\n return effect(toArray(targets), _setDefaults(vars || {}, defaults), tl);\n };\n\n if (extendTimeline) {\n Timeline.prototype[name] = function (targets, vars, position) {\n return this.add(_effects[name](targets, _isObject(vars) ? vars : (position = vars) && {}, this), position);\n };\n }\n },\n registerEase: function registerEase(name, ease) {\n _easeMap[name] = _parseEase(ease);\n },\n parseEase: function parseEase(ease, defaultEase) {\n return arguments.length ? _parseEase(ease, defaultEase) : _easeMap;\n },\n getById: function getById(id) {\n return _globalTimeline.getById(id);\n },\n exportRoot: function exportRoot(vars, includeDelayedCalls) {\n if (vars === void 0) {\n vars = {};\n }\n\n var tl = new Timeline(vars),\n child,\n next;\n tl.smoothChildTiming = _isNotFalse(vars.smoothChildTiming);\n\n _globalTimeline.remove(tl);\n\n tl._dp = 0; //otherwise it'll get re-activated when adding children and be re-introduced into _globalTimeline's linked list (then added to itself).\n\n tl._time = tl._tTime = _globalTimeline._time;\n child = _globalTimeline._first;\n\n while (child) {\n next = child._next;\n\n if (includeDelayedCalls || !(!child._dur && child instanceof Tween && child.vars.onComplete === child._targets[0])) {\n _addToTimeline(tl, child, child._start - child._delay);\n }\n\n child = next;\n }\n\n _addToTimeline(_globalTimeline, tl, 0);\n\n return tl;\n },\n context: function context(func, scope) {\n return func ? new Context(func, scope) : _context;\n },\n matchMedia: function matchMedia(scope) {\n return new MatchMedia(scope);\n },\n matchMediaRefresh: function matchMediaRefresh() {\n return _media.forEach(function (c) {\n var cond = c.conditions,\n found,\n p;\n\n for (p in cond) {\n if (cond[p]) {\n cond[p] = false;\n found = 1;\n }\n }\n\n found && c.revert();\n }) || _onMediaChange();\n },\n addEventListener: function addEventListener(type, callback) {\n var a = _listeners[type] || (_listeners[type] = []);\n ~a.indexOf(callback) || a.push(callback);\n },\n removeEventListener: function removeEventListener(type, callback) {\n var a = _listeners[type],\n i = a && a.indexOf(callback);\n i >= 0 && a.splice(i, 1);\n },\n utils: {\n wrap: wrap,\n wrapYoyo: wrapYoyo,\n distribute: distribute,\n random: random,\n snap: snap,\n normalize: normalize,\n getUnit: getUnit,\n clamp: clamp,\n splitColor: splitColor,\n toArray: toArray,\n selector: selector,\n mapRange: mapRange,\n pipe: pipe,\n unitize: unitize,\n interpolate: interpolate,\n shuffle: shuffle\n },\n install: _install,\n effects: _effects,\n ticker: _ticker,\n updateRoot: Timeline.updateRoot,\n plugins: _plugins,\n globalTimeline: _globalTimeline,\n core: {\n PropTween: PropTween,\n globals: _addGlobal,\n Tween: Tween,\n Timeline: Timeline,\n Animation: Animation,\n getCache: _getCache,\n _removeLinkedListItem: _removeLinkedListItem,\n reverting: function reverting() {\n return _reverting;\n },\n context: function context(toAdd) {\n if (toAdd && _context) {\n _context.data.push(toAdd);\n\n toAdd._ctx = _context;\n }\n\n return _context;\n },\n suppressOverwrites: function suppressOverwrites(value) {\n return _suppressOverwrites = value;\n }\n }\n};\n\n_forEachName(\"to,from,fromTo,delayedCall,set,killTweensOf\", function (name) {\n return _gsap[name] = Tween[name];\n});\n\n_ticker.add(Timeline.updateRoot);\n\n_quickTween = _gsap.to({}, {\n duration: 0\n}); // ---- EXTRA PLUGINS --------------------------------------------------------\n\nvar _getPluginPropTween = function _getPluginPropTween(plugin, prop) {\n var pt = plugin._pt;\n\n while (pt && pt.p !== prop && pt.op !== prop && pt.fp !== prop) {\n pt = pt._next;\n }\n\n return pt;\n},\n _addModifiers = function _addModifiers(tween, modifiers) {\n var targets = tween._targets,\n p,\n i,\n pt;\n\n for (p in modifiers) {\n i = targets.length;\n\n while (i--) {\n pt = tween._ptLookup[i][p];\n\n if (pt && (pt = pt.d)) {\n if (pt._pt) {\n // is a plugin\n pt = _getPluginPropTween(pt, p);\n }\n\n pt && pt.modifier && pt.modifier(modifiers[p], tween, targets[i], p);\n }\n }\n }\n},\n _buildModifierPlugin = function _buildModifierPlugin(name, modifier) {\n return {\n name: name,\n rawVars: 1,\n //don't pre-process function-based values or \"random()\" strings.\n init: function init(target, vars, tween) {\n tween._onInit = function (tween) {\n var temp, p;\n\n if (_isString(vars)) {\n temp = {};\n\n _forEachName(vars, function (name) {\n return temp[name] = 1;\n }); //if the user passes in a comma-delimited list of property names to roundProps, like \"x,y\", we round to whole numbers.\n\n\n vars = temp;\n }\n\n if (modifier) {\n temp = {};\n\n for (p in vars) {\n temp[p] = modifier(vars[p]);\n }\n\n vars = temp;\n }\n\n _addModifiers(tween, vars);\n };\n }\n };\n}; //register core plugins\n\n\nexport var gsap = _gsap.registerPlugin({\n name: \"attr\",\n init: function init(target, vars, tween, index, targets) {\n var p, pt, v;\n this.tween = tween;\n\n for (p in vars) {\n v = target.getAttribute(p) || \"\";\n pt = this.add(target, \"setAttribute\", (v || 0) + \"\", vars[p], index, targets, 0, 0, p);\n pt.op = p;\n pt.b = v; // record the beginning value so we can revert()\n\n this._props.push(p);\n }\n },\n render: function render(ratio, data) {\n var pt = data._pt;\n\n while (pt) {\n _reverting ? pt.set(pt.t, pt.p, pt.b, pt) : pt.r(ratio, pt.d); // if reverting, go back to the original (pt.b)\n\n pt = pt._next;\n }\n }\n}, {\n name: \"endArray\",\n init: function init(target, value) {\n var i = value.length;\n\n while (i--) {\n this.add(target, i, target[i] || 0, value[i], 0, 0, 0, 0, 0, 1);\n }\n }\n}, _buildModifierPlugin(\"roundProps\", _roundModifier), _buildModifierPlugin(\"modifiers\"), _buildModifierPlugin(\"snap\", snap)) || _gsap; //to prevent the core plugins from being dropped via aggressive tree shaking, we must include them in the variable declaration in this way.\n\nTween.version = Timeline.version = gsap.version = \"3.12.4\";\n_coreReady = 1;\n_windowExists() && _wake();\nvar Power0 = _easeMap.Power0,\n Power1 = _easeMap.Power1,\n Power2 = _easeMap.Power2,\n Power3 = _easeMap.Power3,\n Power4 = _easeMap.Power4,\n Linear = _easeMap.Linear,\n Quad = _easeMap.Quad,\n Cubic = _easeMap.Cubic,\n Quart = _easeMap.Quart,\n Quint = _easeMap.Quint,\n Strong = _easeMap.Strong,\n Elastic = _easeMap.Elastic,\n Back = _easeMap.Back,\n SteppedEase = _easeMap.SteppedEase,\n Bounce = _easeMap.Bounce,\n Sine = _easeMap.Sine,\n Expo = _easeMap.Expo,\n Circ = _easeMap.Circ;\nexport { Power0, Power1, Power2, Power3, Power4, Linear, Quad, Cubic, Quart, Quint, Strong, Elastic, Back, SteppedEase, Bounce, Sine, Expo, Circ };\nexport { Tween as TweenMax, Tween as TweenLite, Timeline as TimelineMax, Timeline as TimelineLite, gsap as default, wrap, wrapYoyo, distribute, random, snap, normalize, getUnit, clamp, splitColor, toArray, selector, mapRange, pipe, unitize, interpolate, shuffle }; //export some internal methods/orojects for use in CSSPlugin so that we can externalize that file and allow custom builds that exclude it.\n\nexport { _getProperty, _numExp, _numWithUnitExp, _isString, _isUndefined, _renderComplexString, _relExp, _setDefaults, _removeLinkedListItem, _forEachName, _sortPropTweensByPriority, _colorStringFilter, _replaceRandom, _checkPlugin, _plugins, _ticker, _config, _roundModifier, _round, _missingPlugin, _getSetter, _getCache, _colorExp, _parseRelative };","/*!\n * CSSPlugin 3.12.4\n * https://gsap.com\n *\n * Copyright 2008-2023, GreenSock. All rights reserved.\n * Subject to the terms at https://gsap.com/standard-license or for\n * Club GSAP members, the agreement issued with that membership.\n * @author: Jack Doyle, jack@greensock.com\n*/\n\n/* eslint-disable */\nimport { gsap, _getProperty, _numExp, _numWithUnitExp, getUnit, _isString, _isUndefined, _renderComplexString, _relExp, _forEachName, _sortPropTweensByPriority, _colorStringFilter, _checkPlugin, _replaceRandom, _plugins, GSCache, PropTween, _config, _ticker, _round, _missingPlugin, _getSetter, _getCache, _colorExp, _parseRelative, _setDefaults, _removeLinkedListItem //for the commented-out className feature.\n} from \"./gsap-core.js\";\n\nvar _win,\n _doc,\n _docElement,\n _pluginInitted,\n _tempDiv,\n _tempDivStyler,\n _recentSetterPlugin,\n _reverting,\n _windowExists = function _windowExists() {\n return typeof window !== \"undefined\";\n},\n _transformProps = {},\n _RAD2DEG = 180 / Math.PI,\n _DEG2RAD = Math.PI / 180,\n _atan2 = Math.atan2,\n _bigNum = 1e8,\n _capsExp = /([A-Z])/g,\n _horizontalExp = /(left|right|width|margin|padding|x)/i,\n _complexExp = /[\\s,\\(]\\S/,\n _propertyAliases = {\n autoAlpha: \"opacity,visibility\",\n scale: \"scaleX,scaleY\",\n alpha: \"opacity\"\n},\n _renderCSSProp = function _renderCSSProp(ratio, data) {\n return data.set(data.t, data.p, Math.round((data.s + data.c * ratio) * 10000) / 10000 + data.u, data);\n},\n _renderPropWithEnd = function _renderPropWithEnd(ratio, data) {\n return data.set(data.t, data.p, ratio === 1 ? data.e : Math.round((data.s + data.c * ratio) * 10000) / 10000 + data.u, data);\n},\n _renderCSSPropWithBeginning = function _renderCSSPropWithBeginning(ratio, data) {\n return data.set(data.t, data.p, ratio ? Math.round((data.s + data.c * ratio) * 10000) / 10000 + data.u : data.b, data);\n},\n //if units change, we need a way to render the original unit/value when the tween goes all the way back to the beginning (ratio:0)\n_renderRoundedCSSProp = function _renderRoundedCSSProp(ratio, data) {\n var value = data.s + data.c * ratio;\n data.set(data.t, data.p, ~~(value + (value < 0 ? -.5 : .5)) + data.u, data);\n},\n _renderNonTweeningValue = function _renderNonTweeningValue(ratio, data) {\n return data.set(data.t, data.p, ratio ? data.e : data.b, data);\n},\n _renderNonTweeningValueOnlyAtEnd = function _renderNonTweeningValueOnlyAtEnd(ratio, data) {\n return data.set(data.t, data.p, ratio !== 1 ? data.b : data.e, data);\n},\n _setterCSSStyle = function _setterCSSStyle(target, property, value) {\n return target.style[property] = value;\n},\n _setterCSSProp = function _setterCSSProp(target, property, value) {\n return target.style.setProperty(property, value);\n},\n _setterTransform = function _setterTransform(target, property, value) {\n return target._gsap[property] = value;\n},\n _setterScale = function _setterScale(target, property, value) {\n return target._gsap.scaleX = target._gsap.scaleY = value;\n},\n _setterScaleWithRender = function _setterScaleWithRender(target, property, value, data, ratio) {\n var cache = target._gsap;\n cache.scaleX = cache.scaleY = value;\n cache.renderTransform(ratio, cache);\n},\n _setterTransformWithRender = function _setterTransformWithRender(target, property, value, data, ratio) {\n var cache = target._gsap;\n cache[property] = value;\n cache.renderTransform(ratio, cache);\n},\n _transformProp = \"transform\",\n _transformOriginProp = _transformProp + \"Origin\",\n _saveStyle = function _saveStyle(property, isNotCSS) {\n var _this = this;\n\n var target = this.target,\n style = target.style,\n cache = target._gsap;\n\n if (property in _transformProps && style) {\n this.tfm = this.tfm || {};\n\n if (property !== \"transform\") {\n property = _propertyAliases[property] || property;\n ~property.indexOf(\",\") ? property.split(\",\").forEach(function (a) {\n return _this.tfm[a] = _get(target, a);\n }) : this.tfm[property] = cache.x ? cache[property] : _get(target, property); // note: scale would map to \"scaleX,scaleY\", thus we loop and apply them both.\n\n property === _transformOriginProp && (this.tfm.zOrigin = cache.zOrigin);\n } else {\n return _propertyAliases.transform.split(\",\").forEach(function (p) {\n return _saveStyle.call(_this, p, isNotCSS);\n });\n }\n\n if (this.props.indexOf(_transformProp) >= 0) {\n return;\n }\n\n if (cache.svg) {\n this.svgo = target.getAttribute(\"data-svg-origin\");\n this.props.push(_transformOriginProp, isNotCSS, \"\");\n }\n\n property = _transformProp;\n }\n\n (style || isNotCSS) && this.props.push(property, isNotCSS, style[property]);\n},\n _removeIndependentTransforms = function _removeIndependentTransforms(style) {\n if (style.translate) {\n style.removeProperty(\"translate\");\n style.removeProperty(\"scale\");\n style.removeProperty(\"rotate\");\n }\n},\n _revertStyle = function _revertStyle() {\n var props = this.props,\n target = this.target,\n style = target.style,\n cache = target._gsap,\n i,\n p;\n\n for (i = 0; i < props.length; i += 3) {\n // stored like this: property, isNotCSS, value\n props[i + 1] ? target[props[i]] = props[i + 2] : props[i + 2] ? style[props[i]] = props[i + 2] : style.removeProperty(props[i].substr(0, 2) === \"--\" ? props[i] : props[i].replace(_capsExp, \"-$1\").toLowerCase());\n }\n\n if (this.tfm) {\n for (p in this.tfm) {\n cache[p] = this.tfm[p];\n }\n\n if (cache.svg) {\n cache.renderTransform();\n target.setAttribute(\"data-svg-origin\", this.svgo || \"\");\n }\n\n i = _reverting();\n\n if ((!i || !i.isStart) && !style[_transformProp]) {\n _removeIndependentTransforms(style);\n\n if (cache.zOrigin && style[_transformOriginProp]) {\n style[_transformOriginProp] += \" \" + cache.zOrigin + \"px\"; // since we're uncaching, we must put the zOrigin back into the transformOrigin so that we can pull it out accurately when we parse again. Otherwise, we'd lose the z portion of the origin since we extract it to protect from Safari bugs.\n\n cache.zOrigin = 0;\n cache.renderTransform();\n }\n\n cache.uncache = 1; // if it's a startAt that's being reverted in the _initTween() of the core, we don't need to uncache transforms. This is purely a performance optimization.\n }\n }\n},\n _getStyleSaver = function _getStyleSaver(target, properties) {\n var saver = {\n target: target,\n props: [],\n revert: _revertStyle,\n save: _saveStyle\n };\n target._gsap || gsap.core.getCache(target); // just make sure there's a _gsap cache defined because we read from it in _saveStyle() and it's more efficient to just check it here once.\n\n properties && properties.split(\",\").forEach(function (p) {\n return saver.save(p);\n });\n return saver;\n},\n _supports3D,\n _createElement = function _createElement(type, ns) {\n var e = _doc.createElementNS ? _doc.createElementNS((ns || \"http://www.w3.org/1999/xhtml\").replace(/^https/, \"http\"), type) : _doc.createElement(type); //some servers swap in https for http in the namespace which can break things, making \"style\" inaccessible.\n\n return e && e.style ? e : _doc.createElement(type); //some environments won't allow access to the element's style when created with a namespace in which case we default to the standard createElement() to work around the issue. Also note that when GSAP is embedded directly inside an SVG file, createElement() won't allow access to the style object in Firefox (see https://gsap.com/forums/topic/20215-problem-using-tweenmax-in-standalone-self-containing-svg-file-err-cannot-set-property-csstext-of-undefined/).\n},\n _getComputedProperty = function _getComputedProperty(target, property, skipPrefixFallback) {\n var cs = getComputedStyle(target);\n return cs[property] || cs.getPropertyValue(property.replace(_capsExp, \"-$1\").toLowerCase()) || cs.getPropertyValue(property) || !skipPrefixFallback && _getComputedProperty(target, _checkPropPrefix(property) || property, 1) || \"\"; //css variables may not need caps swapped out for dashes and lowercase.\n},\n _prefixes = \"O,Moz,ms,Ms,Webkit\".split(\",\"),\n _checkPropPrefix = function _checkPropPrefix(property, element, preferPrefix) {\n var e = element || _tempDiv,\n s = e.style,\n i = 5;\n\n if (property in s && !preferPrefix) {\n return property;\n }\n\n property = property.charAt(0).toUpperCase() + property.substr(1);\n\n while (i-- && !(_prefixes[i] + property in s)) {}\n\n return i < 0 ? null : (i === 3 ? \"ms\" : i >= 0 ? _prefixes[i] : \"\") + property;\n},\n _initCore = function _initCore() {\n if (_windowExists() && window.document) {\n _win = window;\n _doc = _win.document;\n _docElement = _doc.documentElement;\n _tempDiv = _createElement(\"div\") || {\n style: {}\n };\n _tempDivStyler = _createElement(\"div\");\n _transformProp = _checkPropPrefix(_transformProp);\n _transformOriginProp = _transformProp + \"Origin\";\n _tempDiv.style.cssText = \"border-width:0;line-height:0;position:absolute;padding:0\"; //make sure to override certain properties that may contaminate measurements, in case the user has overreaching style sheets.\n\n _supports3D = !!_checkPropPrefix(\"perspective\");\n _reverting = gsap.core.reverting;\n _pluginInitted = 1;\n }\n},\n _getBBoxHack = function _getBBoxHack(swapIfPossible) {\n //works around issues in some browsers (like Firefox) that don't correctly report getBBox() on SVG elements inside a element and/or . We try creating an SVG, adding it to the documentElement and toss the element in there so that it's definitely part of the rendering tree, then grab the bbox and if it works, we actually swap out the original getBBox() method for our own that does these extra steps whenever getBBox is needed. This helps ensure that performance is optimal (only do all these extra steps when absolutely necessary...most elements don't need it).\n var svg = _createElement(\"svg\", this.ownerSVGElement && this.ownerSVGElement.getAttribute(\"xmlns\") || \"http://www.w3.org/2000/svg\"),\n oldParent = this.parentNode,\n oldSibling = this.nextSibling,\n oldCSS = this.style.cssText,\n bbox;\n\n _docElement.appendChild(svg);\n\n svg.appendChild(this);\n this.style.display = \"block\";\n\n if (swapIfPossible) {\n try {\n bbox = this.getBBox();\n this._gsapBBox = this.getBBox; //store the original\n\n this.getBBox = _getBBoxHack;\n } catch (e) {}\n } else if (this._gsapBBox) {\n bbox = this._gsapBBox();\n }\n\n if (oldParent) {\n if (oldSibling) {\n oldParent.insertBefore(this, oldSibling);\n } else {\n oldParent.appendChild(this);\n }\n }\n\n _docElement.removeChild(svg);\n\n this.style.cssText = oldCSS;\n return bbox;\n},\n _getAttributeFallbacks = function _getAttributeFallbacks(target, attributesArray) {\n var i = attributesArray.length;\n\n while (i--) {\n if (target.hasAttribute(attributesArray[i])) {\n return target.getAttribute(attributesArray[i]);\n }\n }\n},\n _getBBox = function _getBBox(target) {\n var bounds;\n\n try {\n bounds = target.getBBox(); //Firefox throws errors if you try calling getBBox() on an SVG element that's not rendered (like in a or ). https://bugzilla.mozilla.org/show_bug.cgi?id=612118\n } catch (error) {\n bounds = _getBBoxHack.call(target, true);\n }\n\n bounds && (bounds.width || bounds.height) || target.getBBox === _getBBoxHack || (bounds = _getBBoxHack.call(target, true)); //some browsers (like Firefox) misreport the bounds if the element has zero width and height (it just assumes it's at x:0, y:0), thus we need to manually grab the position in that case.\n\n return bounds && !bounds.width && !bounds.x && !bounds.y ? {\n x: +_getAttributeFallbacks(target, [\"x\", \"cx\", \"x1\"]) || 0,\n y: +_getAttributeFallbacks(target, [\"y\", \"cy\", \"y1\"]) || 0,\n width: 0,\n height: 0\n } : bounds;\n},\n _isSVG = function _isSVG(e) {\n return !!(e.getCTM && (!e.parentNode || e.ownerSVGElement) && _getBBox(e));\n},\n //reports if the element is an SVG on which getBBox() actually works\n_removeProperty = function _removeProperty(target, property) {\n if (property) {\n var style = target.style,\n first2Chars;\n\n if (property in _transformProps && property !== _transformOriginProp) {\n property = _transformProp;\n }\n\n if (style.removeProperty) {\n first2Chars = property.substr(0, 2);\n\n if (first2Chars === \"ms\" || property.substr(0, 6) === \"webkit\") {\n //Microsoft and some Webkit browsers don't conform to the standard of capitalizing the first prefix character, so we adjust so that when we prefix the caps with a dash, it's correct (otherwise it'd be \"ms-transform\" instead of \"-ms-transform\" for IE9, for example)\n property = \"-\" + property;\n }\n\n style.removeProperty(first2Chars === \"--\" ? property : property.replace(_capsExp, \"-$1\").toLowerCase());\n } else {\n //note: old versions of IE use \"removeAttribute()\" instead of \"removeProperty()\"\n style.removeAttribute(property);\n }\n }\n},\n _addNonTweeningPT = function _addNonTweeningPT(plugin, target, property, beginning, end, onlySetAtEnd) {\n var pt = new PropTween(plugin._pt, target, property, 0, 1, onlySetAtEnd ? _renderNonTweeningValueOnlyAtEnd : _renderNonTweeningValue);\n plugin._pt = pt;\n pt.b = beginning;\n pt.e = end;\n\n plugin._props.push(property);\n\n return pt;\n},\n _nonConvertibleUnits = {\n deg: 1,\n rad: 1,\n turn: 1\n},\n _nonStandardLayouts = {\n grid: 1,\n flex: 1\n},\n //takes a single value like 20px and converts it to the unit specified, like \"%\", returning only the numeric amount.\n_convertToUnit = function _convertToUnit(target, property, value, unit) {\n var curValue = parseFloat(value) || 0,\n curUnit = (value + \"\").trim().substr((curValue + \"\").length) || \"px\",\n // some browsers leave extra whitespace at the beginning of CSS variables, hence the need to trim()\n style = _tempDiv.style,\n horizontal = _horizontalExp.test(property),\n isRootSVG = target.tagName.toLowerCase() === \"svg\",\n measureProperty = (isRootSVG ? \"client\" : \"offset\") + (horizontal ? \"Width\" : \"Height\"),\n amount = 100,\n toPixels = unit === \"px\",\n toPercent = unit === \"%\",\n px,\n parent,\n cache,\n isSVG;\n\n if (unit === curUnit || !curValue || _nonConvertibleUnits[unit] || _nonConvertibleUnits[curUnit]) {\n return curValue;\n }\n\n curUnit !== \"px\" && !toPixels && (curValue = _convertToUnit(target, property, value, \"px\"));\n isSVG = target.getCTM && _isSVG(target);\n\n if ((toPercent || curUnit === \"%\") && (_transformProps[property] || ~property.indexOf(\"adius\"))) {\n px = isSVG ? target.getBBox()[horizontal ? \"width\" : \"height\"] : target[measureProperty];\n return _round(toPercent ? curValue / px * amount : curValue / 100 * px);\n }\n\n style[horizontal ? \"width\" : \"height\"] = amount + (toPixels ? curUnit : unit);\n parent = ~property.indexOf(\"adius\") || unit === \"em\" && target.appendChild && !isRootSVG ? target : target.parentNode;\n\n if (isSVG) {\n parent = (target.ownerSVGElement || {}).parentNode;\n }\n\n if (!parent || parent === _doc || !parent.appendChild) {\n parent = _doc.body;\n }\n\n cache = parent._gsap;\n\n if (cache && toPercent && cache.width && horizontal && cache.time === _ticker.time && !cache.uncache) {\n return _round(curValue / cache.width * amount);\n } else {\n if (toPercent && (property === \"height\" || property === \"width\")) {\n // if we're dealing with width/height that's inside a container with padding and/or it's a flexbox/grid container, we must apply it to the target itself rather than the _tempDiv in order to ensure complete accuracy, factoring in the parent's padding.\n var v = target.style[property];\n target.style[property] = amount + unit;\n px = target[measureProperty];\n v ? target.style[property] = v : _removeProperty(target, property);\n } else {\n (toPercent || curUnit === \"%\") && !_nonStandardLayouts[_getComputedProperty(parent, \"display\")] && (style.position = _getComputedProperty(target, \"position\"));\n parent === target && (style.position = \"static\"); // like for borderRadius, if it's a % we must have it relative to the target itself but that may not have position: relative or position: absolute in which case it'd go up the chain until it finds its offsetParent (bad). position: static protects against that.\n\n parent.appendChild(_tempDiv);\n px = _tempDiv[measureProperty];\n parent.removeChild(_tempDiv);\n style.position = \"absolute\";\n }\n\n if (horizontal && toPercent) {\n cache = _getCache(parent);\n cache.time = _ticker.time;\n cache.width = parent[measureProperty];\n }\n }\n\n return _round(toPixels ? px * curValue / amount : px && curValue ? amount / px * curValue : 0);\n},\n _get = function _get(target, property, unit, uncache) {\n var value;\n _pluginInitted || _initCore();\n\n if (property in _propertyAliases && property !== \"transform\") {\n property = _propertyAliases[property];\n\n if (~property.indexOf(\",\")) {\n property = property.split(\",\")[0];\n }\n }\n\n if (_transformProps[property] && property !== \"transform\") {\n value = _parseTransform(target, uncache);\n value = property !== \"transformOrigin\" ? value[property] : value.svg ? value.origin : _firstTwoOnly(_getComputedProperty(target, _transformOriginProp)) + \" \" + value.zOrigin + \"px\";\n } else {\n value = target.style[property];\n\n if (!value || value === \"auto\" || uncache || ~(value + \"\").indexOf(\"calc(\")) {\n value = _specialProps[property] && _specialProps[property](target, property, unit) || _getComputedProperty(target, property) || _getProperty(target, property) || (property === \"opacity\" ? 1 : 0); // note: some browsers, like Firefox, don't report borderRadius correctly! Instead, it only reports every corner like borderTopLeftRadius\n }\n }\n\n return unit && !~(value + \"\").trim().indexOf(\" \") ? _convertToUnit(target, property, value, unit) + unit : value;\n},\n _tweenComplexCSSString = function _tweenComplexCSSString(target, prop, start, end) {\n // note: we call _tweenComplexCSSString.call(pluginInstance...) to ensure that it's scoped properly. We may call it from within a plugin too, thus \"this\" would refer to the plugin.\n if (!start || start === \"none\") {\n // some browsers like Safari actually PREFER the prefixed property and mis-report the unprefixed value like clipPath (BUG). In other words, even though clipPath exists in the style (\"clipPath\" in target.style) and it's set in the CSS properly (along with -webkit-clip-path), Safari reports clipPath as \"none\" whereas WebkitClipPath reports accurately like \"ellipse(100% 0% at 50% 0%)\", so in this case we must SWITCH to using the prefixed property instead. See https://gsap.com/forums/topic/18310-clippath-doesnt-work-on-ios/\n var p = _checkPropPrefix(prop, target, 1),\n s = p && _getComputedProperty(target, p, 1);\n\n if (s && s !== start) {\n prop = p;\n start = s;\n } else if (prop === \"borderColor\") {\n start = _getComputedProperty(target, \"borderTopColor\"); // Firefox bug: always reports \"borderColor\" as \"\", so we must fall back to borderTopColor. See https://gsap.com/forums/topic/24583-how-to-return-colors-that-i-had-after-reverse/\n }\n }\n\n var pt = new PropTween(this._pt, target.style, prop, 0, 1, _renderComplexString),\n index = 0,\n matchIndex = 0,\n a,\n result,\n startValues,\n startNum,\n color,\n startValue,\n endValue,\n endNum,\n chunk,\n endUnit,\n startUnit,\n endValues;\n pt.b = start;\n pt.e = end;\n start += \"\"; // ensure values are strings\n\n end += \"\";\n\n if (end === \"auto\") {\n startValue = target.style[prop];\n target.style[prop] = end;\n end = _getComputedProperty(target, prop) || end;\n startValue ? target.style[prop] = startValue : _removeProperty(target, prop);\n }\n\n a = [start, end];\n\n _colorStringFilter(a); // pass an array with the starting and ending values and let the filter do whatever it needs to the values. If colors are found, it returns true and then we must match where the color shows up order-wise because for things like boxShadow, sometimes the browser provides the computed values with the color FIRST, but the user provides it with the color LAST, so flip them if necessary. Same for drop-shadow().\n\n\n start = a[0];\n end = a[1];\n startValues = start.match(_numWithUnitExp) || [];\n endValues = end.match(_numWithUnitExp) || [];\n\n if (endValues.length) {\n while (result = _numWithUnitExp.exec(end)) {\n endValue = result[0];\n chunk = end.substring(index, result.index);\n\n if (color) {\n color = (color + 1) % 5;\n } else if (chunk.substr(-5) === \"rgba(\" || chunk.substr(-5) === \"hsla(\") {\n color = 1;\n }\n\n if (endValue !== (startValue = startValues[matchIndex++] || \"\")) {\n startNum = parseFloat(startValue) || 0;\n startUnit = startValue.substr((startNum + \"\").length);\n endValue.charAt(1) === \"=\" && (endValue = _parseRelative(startNum, endValue) + startUnit);\n endNum = parseFloat(endValue);\n endUnit = endValue.substr((endNum + \"\").length);\n index = _numWithUnitExp.lastIndex - endUnit.length;\n\n if (!endUnit) {\n //if something like \"perspective:300\" is passed in and we must add a unit to the end\n endUnit = endUnit || _config.units[prop] || startUnit;\n\n if (index === end.length) {\n end += endUnit;\n pt.e += endUnit;\n }\n }\n\n if (startUnit !== endUnit) {\n startNum = _convertToUnit(target, prop, startValue, endUnit) || 0;\n } // these nested PropTweens are handled in a special way - we'll never actually call a render or setter method on them. We'll just loop through them in the parent complex string PropTween's render method.\n\n\n pt._pt = {\n _next: pt._pt,\n p: chunk || matchIndex === 1 ? chunk : \",\",\n //note: SVG spec allows omission of comma/space when a negative sign is wedged between two numbers, like 2.5-5.3 instead of 2.5,-5.3 but when tweening, the negative value may switch to positive, so we insert the comma just in case.\n s: startNum,\n c: endNum - startNum,\n m: color && color < 4 || prop === \"zIndex\" ? Math.round : 0\n };\n }\n }\n\n pt.c = index < end.length ? end.substring(index, end.length) : \"\"; //we use the \"c\" of the PropTween to store the final part of the string (after the last number)\n } else {\n pt.r = prop === \"display\" && end === \"none\" ? _renderNonTweeningValueOnlyAtEnd : _renderNonTweeningValue;\n }\n\n _relExp.test(end) && (pt.e = 0); //if the end string contains relative values or dynamic random(...) values, delete the end it so that on the final render we don't actually set it to the string with += or -= characters (forces it to use the calculated value).\n\n this._pt = pt; //start the linked list with this new PropTween. Remember, we call _tweenComplexCSSString.call(pluginInstance...) to ensure that it's scoped properly. We may call it from within another plugin too, thus \"this\" would refer to the plugin.\n\n return pt;\n},\n _keywordToPercent = {\n top: \"0%\",\n bottom: \"100%\",\n left: \"0%\",\n right: \"100%\",\n center: \"50%\"\n},\n _convertKeywordsToPercentages = function _convertKeywordsToPercentages(value) {\n var split = value.split(\" \"),\n x = split[0],\n y = split[1] || \"50%\";\n\n if (x === \"top\" || x === \"bottom\" || y === \"left\" || y === \"right\") {\n //the user provided them in the wrong order, so flip them\n value = x;\n x = y;\n y = value;\n }\n\n split[0] = _keywordToPercent[x] || x;\n split[1] = _keywordToPercent[y] || y;\n return split.join(\" \");\n},\n _renderClearProps = function _renderClearProps(ratio, data) {\n if (data.tween && data.tween._time === data.tween._dur) {\n var target = data.t,\n style = target.style,\n props = data.u,\n cache = target._gsap,\n prop,\n clearTransforms,\n i;\n\n if (props === \"all\" || props === true) {\n style.cssText = \"\";\n clearTransforms = 1;\n } else {\n props = props.split(\",\");\n i = props.length;\n\n while (--i > -1) {\n prop = props[i];\n\n if (_transformProps[prop]) {\n clearTransforms = 1;\n prop = prop === \"transformOrigin\" ? _transformOriginProp : _transformProp;\n }\n\n _removeProperty(target, prop);\n }\n }\n\n if (clearTransforms) {\n _removeProperty(target, _transformProp);\n\n if (cache) {\n cache.svg && target.removeAttribute(\"transform\");\n\n _parseTransform(target, 1); // force all the cached values back to \"normal\"/identity, otherwise if there's another tween that's already set to render transforms on this element, it could display the wrong values.\n\n\n cache.uncache = 1;\n\n _removeIndependentTransforms(style);\n }\n }\n }\n},\n // note: specialProps should return 1 if (and only if) they have a non-zero priority. It indicates we need to sort the linked list.\n_specialProps = {\n clearProps: function clearProps(plugin, target, property, endValue, tween) {\n if (tween.data !== \"isFromStart\") {\n var pt = plugin._pt = new PropTween(plugin._pt, target, property, 0, 0, _renderClearProps);\n pt.u = endValue;\n pt.pr = -10;\n pt.tween = tween;\n\n plugin._props.push(property);\n\n return 1;\n }\n }\n /* className feature (about 0.4kb gzipped).\n , className(plugin, target, property, endValue, tween) {\n \tlet _renderClassName = (ratio, data) => {\n \t\t\tdata.css.render(ratio, data.css);\n \t\t\tif (!ratio || ratio === 1) {\n \t\t\t\tlet inline = data.rmv,\n \t\t\t\t\ttarget = data.t,\n \t\t\t\t\tp;\n \t\t\t\ttarget.setAttribute(\"class\", ratio ? data.e : data.b);\n \t\t\t\tfor (p in inline) {\n \t\t\t\t\t_removeProperty(target, p);\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\t_getAllStyles = (target) => {\n \t\t\tlet styles = {},\n \t\t\t\tcomputed = getComputedStyle(target),\n \t\t\t\tp;\n \t\t\tfor (p in computed) {\n \t\t\t\tif (isNaN(p) && p !== \"cssText\" && p !== \"length\") {\n \t\t\t\t\tstyles[p] = computed[p];\n \t\t\t\t}\n \t\t\t}\n \t\t\t_setDefaults(styles, _parseTransform(target, 1));\n \t\t\treturn styles;\n \t\t},\n \t\tstartClassList = target.getAttribute(\"class\"),\n \t\tstyle = target.style,\n \t\tcssText = style.cssText,\n \t\tcache = target._gsap,\n \t\tclassPT = cache.classPT,\n \t\tinlineToRemoveAtEnd = {},\n \t\tdata = {t:target, plugin:plugin, rmv:inlineToRemoveAtEnd, b:startClassList, e:(endValue.charAt(1) !== \"=\") ? endValue : startClassList.replace(new RegExp(\"(?:\\\\s|^)\" + endValue.substr(2) + \"(?![\\\\w-])\"), \"\") + ((endValue.charAt(0) === \"+\") ? \" \" + endValue.substr(2) : \"\")},\n \t\tchangingVars = {},\n \t\tstartVars = _getAllStyles(target),\n \t\ttransformRelated = /(transform|perspective)/i,\n \t\tendVars, p;\n \tif (classPT) {\n \t\tclassPT.r(1, classPT.d);\n \t\t_removeLinkedListItem(classPT.d.plugin, classPT, \"_pt\");\n \t}\n \ttarget.setAttribute(\"class\", data.e);\n \tendVars = _getAllStyles(target, true);\n \ttarget.setAttribute(\"class\", startClassList);\n \tfor (p in endVars) {\n \t\tif (endVars[p] !== startVars[p] && !transformRelated.test(p)) {\n \t\t\tchangingVars[p] = endVars[p];\n \t\t\tif (!style[p] && style[p] !== \"0\") {\n \t\t\t\tinlineToRemoveAtEnd[p] = 1;\n \t\t\t}\n \t\t}\n \t}\n \tcache.classPT = plugin._pt = new PropTween(plugin._pt, target, \"className\", 0, 0, _renderClassName, data, 0, -11);\n \tif (style.cssText !== cssText) { //only apply if things change. Otherwise, in cases like a background-image that's pulled dynamically, it could cause a refresh. See https://gsap.com/forums/topic/20368-possible-gsap-bug-switching-classnames-in-chrome/.\n \t\tstyle.cssText = cssText; //we recorded cssText before we swapped classes and ran _getAllStyles() because in cases when a className tween is overwritten, we remove all the related tweening properties from that class change (otherwise class-specific stuff can't override properties we've directly set on the target's style object due to specificity).\n \t}\n \t_parseTransform(target, true); //to clear the caching of transforms\n \tdata.css = new gsap.plugins.css();\n \tdata.css.init(target, changingVars, tween);\n \tplugin._props.push(...data.css._props);\n \treturn 1;\n }\n */\n\n},\n\n/*\n * --------------------------------------------------------------------------------------\n * TRANSFORMS\n * --------------------------------------------------------------------------------------\n */\n_identity2DMatrix = [1, 0, 0, 1, 0, 0],\n _rotationalProperties = {},\n _isNullTransform = function _isNullTransform(value) {\n return value === \"matrix(1, 0, 0, 1, 0, 0)\" || value === \"none\" || !value;\n},\n _getComputedTransformMatrixAsArray = function _getComputedTransformMatrixAsArray(target) {\n var matrixString = _getComputedProperty(target, _transformProp);\n\n return _isNullTransform(matrixString) ? _identity2DMatrix : matrixString.substr(7).match(_numExp).map(_round);\n},\n _getMatrix = function _getMatrix(target, force2D) {\n var cache = target._gsap || _getCache(target),\n style = target.style,\n matrix = _getComputedTransformMatrixAsArray(target),\n parent,\n nextSibling,\n temp,\n addedToDOM;\n\n if (cache.svg && target.getAttribute(\"transform\")) {\n temp = target.transform.baseVal.consolidate().matrix; //ensures that even complex values like \"translate(50,60) rotate(135,0,0)\" are parsed because it mashes it into a matrix.\n\n matrix = [temp.a, temp.b, temp.c, temp.d, temp.e, temp.f];\n return matrix.join(\",\") === \"1,0,0,1,0,0\" ? _identity2DMatrix : matrix;\n } else if (matrix === _identity2DMatrix && !target.offsetParent && target !== _docElement && !cache.svg) {\n //note: if offsetParent is null, that means the element isn't in the normal document flow, like if it has display:none or one of its ancestors has display:none). Firefox returns null for getComputedStyle() if the element is in an iframe that has display:none. https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n //browsers don't report transforms accurately unless the element is in the DOM and has a display value that's not \"none\". Firefox and Microsoft browsers have a partial bug where they'll report transforms even if display:none BUT not any percentage-based values like translate(-50%, 8px) will be reported as if it's translate(0, 8px).\n temp = style.display;\n style.display = \"block\";\n parent = target.parentNode;\n\n if (!parent || !target.offsetParent) {\n // note: in 3.3.0 we switched target.offsetParent to _doc.body.contains(target) to avoid [sometimes unnecessary] MutationObserver calls but that wasn't adequate because there are edge cases where nested position: fixed elements need to get reparented to accurately sense transforms. See https://github.com/greensock/GSAP/issues/388 and https://github.com/greensock/GSAP/issues/375\n addedToDOM = 1; //flag\n\n nextSibling = target.nextElementSibling;\n\n _docElement.appendChild(target); //we must add it to the DOM in order to get values properly\n\n }\n\n matrix = _getComputedTransformMatrixAsArray(target);\n temp ? style.display = temp : _removeProperty(target, \"display\");\n\n if (addedToDOM) {\n nextSibling ? parent.insertBefore(target, nextSibling) : parent ? parent.appendChild(target) : _docElement.removeChild(target);\n }\n }\n\n return force2D && matrix.length > 6 ? [matrix[0], matrix[1], matrix[4], matrix[5], matrix[12], matrix[13]] : matrix;\n},\n _applySVGOrigin = function _applySVGOrigin(target, origin, originIsAbsolute, smooth, matrixArray, pluginToAddPropTweensTo) {\n var cache = target._gsap,\n matrix = matrixArray || _getMatrix(target, true),\n xOriginOld = cache.xOrigin || 0,\n yOriginOld = cache.yOrigin || 0,\n xOffsetOld = cache.xOffset || 0,\n yOffsetOld = cache.yOffset || 0,\n a = matrix[0],\n b = matrix[1],\n c = matrix[2],\n d = matrix[3],\n tx = matrix[4],\n ty = matrix[5],\n originSplit = origin.split(\" \"),\n xOrigin = parseFloat(originSplit[0]) || 0,\n yOrigin = parseFloat(originSplit[1]) || 0,\n bounds,\n determinant,\n x,\n y;\n\n if (!originIsAbsolute) {\n bounds = _getBBox(target);\n xOrigin = bounds.x + (~originSplit[0].indexOf(\"%\") ? xOrigin / 100 * bounds.width : xOrigin);\n yOrigin = bounds.y + (~(originSplit[1] || originSplit[0]).indexOf(\"%\") ? yOrigin / 100 * bounds.height : yOrigin); // if (!(\"xOrigin\" in cache) && (xOrigin || yOrigin)) { // added in 3.12.3, reverted in 3.12.4; requires more exploration\n // \txOrigin -= bounds.x;\n // \tyOrigin -= bounds.y;\n // }\n } else if (matrix !== _identity2DMatrix && (determinant = a * d - b * c)) {\n //if it's zero (like if scaleX and scaleY are zero), skip it to avoid errors with dividing by zero.\n x = xOrigin * (d / determinant) + yOrigin * (-c / determinant) + (c * ty - d * tx) / determinant;\n y = xOrigin * (-b / determinant) + yOrigin * (a / determinant) - (a * ty - b * tx) / determinant;\n xOrigin = x;\n yOrigin = y; // theory: we only had to do this for smoothing and it assumes that the previous one was not originIsAbsolute.\n }\n\n if (smooth || smooth !== false && cache.smooth) {\n tx = xOrigin - xOriginOld;\n ty = yOrigin - yOriginOld;\n cache.xOffset = xOffsetOld + (tx * a + ty * c) - tx;\n cache.yOffset = yOffsetOld + (tx * b + ty * d) - ty;\n } else {\n cache.xOffset = cache.yOffset = 0;\n }\n\n cache.xOrigin = xOrigin;\n cache.yOrigin = yOrigin;\n cache.smooth = !!smooth;\n cache.origin = origin;\n cache.originIsAbsolute = !!originIsAbsolute;\n target.style[_transformOriginProp] = \"0px 0px\"; //otherwise, if someone sets an origin via CSS, it will likely interfere with the SVG transform attribute ones (because remember, we're baking the origin into the matrix() value).\n\n if (pluginToAddPropTweensTo) {\n _addNonTweeningPT(pluginToAddPropTweensTo, cache, \"xOrigin\", xOriginOld, xOrigin);\n\n _addNonTweeningPT(pluginToAddPropTweensTo, cache, \"yOrigin\", yOriginOld, yOrigin);\n\n _addNonTweeningPT(pluginToAddPropTweensTo, cache, \"xOffset\", xOffsetOld, cache.xOffset);\n\n _addNonTweeningPT(pluginToAddPropTweensTo, cache, \"yOffset\", yOffsetOld, cache.yOffset);\n }\n\n target.setAttribute(\"data-svg-origin\", xOrigin + \" \" + yOrigin);\n},\n _parseTransform = function _parseTransform(target, uncache) {\n var cache = target._gsap || new GSCache(target);\n\n if (\"x\" in cache && !uncache && !cache.uncache) {\n return cache;\n }\n\n var style = target.style,\n invertedScaleX = cache.scaleX < 0,\n px = \"px\",\n deg = \"deg\",\n cs = getComputedStyle(target),\n origin = _getComputedProperty(target, _transformOriginProp) || \"0\",\n x,\n y,\n z,\n scaleX,\n scaleY,\n rotation,\n rotationX,\n rotationY,\n skewX,\n skewY,\n perspective,\n xOrigin,\n yOrigin,\n matrix,\n angle,\n cos,\n sin,\n a,\n b,\n c,\n d,\n a12,\n a22,\n t1,\n t2,\n t3,\n a13,\n a23,\n a33,\n a42,\n a43,\n a32;\n x = y = z = rotation = rotationX = rotationY = skewX = skewY = perspective = 0;\n scaleX = scaleY = 1;\n cache.svg = !!(target.getCTM && _isSVG(target));\n\n if (cs.translate) {\n // accommodate independent transforms by combining them into normal ones.\n if (cs.translate !== \"none\" || cs.scale !== \"none\" || cs.rotate !== \"none\") {\n style[_transformProp] = (cs.translate !== \"none\" ? \"translate3d(\" + (cs.translate + \" 0 0\").split(\" \").slice(0, 3).join(\", \") + \") \" : \"\") + (cs.rotate !== \"none\" ? \"rotate(\" + cs.rotate + \") \" : \"\") + (cs.scale !== \"none\" ? \"scale(\" + cs.scale.split(\" \").join(\",\") + \") \" : \"\") + (cs[_transformProp] !== \"none\" ? cs[_transformProp] : \"\");\n }\n\n style.scale = style.rotate = style.translate = \"none\";\n }\n\n matrix = _getMatrix(target, cache.svg);\n\n if (cache.svg) {\n if (cache.uncache) {\n // if cache.uncache is true (and maybe if origin is 0,0), we need to set element.style.transformOrigin = (cache.xOrigin - bbox.x) + \"px \" + (cache.yOrigin - bbox.y) + \"px\". Previously we let the data-svg-origin stay instead, but when introducing revert(), it complicated things.\n t2 = target.getBBox();\n origin = cache.xOrigin - t2.x + \"px \" + (cache.yOrigin - t2.y) + \"px\";\n t1 = \"\";\n } else {\n t1 = !uncache && target.getAttribute(\"data-svg-origin\"); // Remember, to work around browser inconsistencies we always force SVG elements' transformOrigin to 0,0 and offset the translation accordingly.\n }\n\n _applySVGOrigin(target, t1 || origin, !!t1 || cache.originIsAbsolute, cache.smooth !== false, matrix);\n }\n\n xOrigin = cache.xOrigin || 0;\n yOrigin = cache.yOrigin || 0;\n\n if (matrix !== _identity2DMatrix) {\n a = matrix[0]; //a11\n\n b = matrix[1]; //a21\n\n c = matrix[2]; //a31\n\n d = matrix[3]; //a41\n\n x = a12 = matrix[4];\n y = a22 = matrix[5]; //2D matrix\n\n if (matrix.length === 6) {\n scaleX = Math.sqrt(a * a + b * b);\n scaleY = Math.sqrt(d * d + c * c);\n rotation = a || b ? _atan2(b, a) * _RAD2DEG : 0; //note: if scaleX is 0, we cannot accurately measure rotation. Same for skewX with a scaleY of 0. Therefore, we default to the previously recorded value (or zero if that doesn't exist).\n\n skewX = c || d ? _atan2(c, d) * _RAD2DEG + rotation : 0;\n skewX && (scaleY *= Math.abs(Math.cos(skewX * _DEG2RAD)));\n\n if (cache.svg) {\n x -= xOrigin - (xOrigin * a + yOrigin * c);\n y -= yOrigin - (xOrigin * b + yOrigin * d);\n } //3D matrix\n\n } else {\n a32 = matrix[6];\n a42 = matrix[7];\n a13 = matrix[8];\n a23 = matrix[9];\n a33 = matrix[10];\n a43 = matrix[11];\n x = matrix[12];\n y = matrix[13];\n z = matrix[14];\n angle = _atan2(a32, a33);\n rotationX = angle * _RAD2DEG; //rotationX\n\n if (angle) {\n cos = Math.cos(-angle);\n sin = Math.sin(-angle);\n t1 = a12 * cos + a13 * sin;\n t2 = a22 * cos + a23 * sin;\n t3 = a32 * cos + a33 * sin;\n a13 = a12 * -sin + a13 * cos;\n a23 = a22 * -sin + a23 * cos;\n a33 = a32 * -sin + a33 * cos;\n a43 = a42 * -sin + a43 * cos;\n a12 = t1;\n a22 = t2;\n a32 = t3;\n } //rotationY\n\n\n angle = _atan2(-c, a33);\n rotationY = angle * _RAD2DEG;\n\n if (angle) {\n cos = Math.cos(-angle);\n sin = Math.sin(-angle);\n t1 = a * cos - a13 * sin;\n t2 = b * cos - a23 * sin;\n t3 = c * cos - a33 * sin;\n a43 = d * sin + a43 * cos;\n a = t1;\n b = t2;\n c = t3;\n } //rotationZ\n\n\n angle = _atan2(b, a);\n rotation = angle * _RAD2DEG;\n\n if (angle) {\n cos = Math.cos(angle);\n sin = Math.sin(angle);\n t1 = a * cos + b * sin;\n t2 = a12 * cos + a22 * sin;\n b = b * cos - a * sin;\n a22 = a22 * cos - a12 * sin;\n a = t1;\n a12 = t2;\n }\n\n if (rotationX && Math.abs(rotationX) + Math.abs(rotation) > 359.9) {\n //when rotationY is set, it will often be parsed as 180 degrees different than it should be, and rotationX and rotation both being 180 (it looks the same), so we adjust for that here.\n rotationX = rotation = 0;\n rotationY = 180 - rotationY;\n }\n\n scaleX = _round(Math.sqrt(a * a + b * b + c * c));\n scaleY = _round(Math.sqrt(a22 * a22 + a32 * a32));\n angle = _atan2(a12, a22);\n skewX = Math.abs(angle) > 0.0002 ? angle * _RAD2DEG : 0;\n perspective = a43 ? 1 / (a43 < 0 ? -a43 : a43) : 0;\n }\n\n if (cache.svg) {\n //sense if there are CSS transforms applied on an SVG element in which case we must overwrite them when rendering. The transform attribute is more reliable cross-browser, but we can't just remove the CSS ones because they may be applied in a CSS rule somewhere (not just inline).\n t1 = target.getAttribute(\"transform\");\n cache.forceCSS = target.setAttribute(\"transform\", \"\") || !_isNullTransform(_getComputedProperty(target, _transformProp));\n t1 && target.setAttribute(\"transform\", t1);\n }\n }\n\n if (Math.abs(skewX) > 90 && Math.abs(skewX) < 270) {\n if (invertedScaleX) {\n scaleX *= -1;\n skewX += rotation <= 0 ? 180 : -180;\n rotation += rotation <= 0 ? 180 : -180;\n } else {\n scaleY *= -1;\n skewX += skewX <= 0 ? 180 : -180;\n }\n }\n\n uncache = uncache || cache.uncache;\n cache.x = x - ((cache.xPercent = x && (!uncache && cache.xPercent || (Math.round(target.offsetWidth / 2) === Math.round(-x) ? -50 : 0))) ? target.offsetWidth * cache.xPercent / 100 : 0) + px;\n cache.y = y - ((cache.yPercent = y && (!uncache && cache.yPercent || (Math.round(target.offsetHeight / 2) === Math.round(-y) ? -50 : 0))) ? target.offsetHeight * cache.yPercent / 100 : 0) + px;\n cache.z = z + px;\n cache.scaleX = _round(scaleX);\n cache.scaleY = _round(scaleY);\n cache.rotation = _round(rotation) + deg;\n cache.rotationX = _round(rotationX) + deg;\n cache.rotationY = _round(rotationY) + deg;\n cache.skewX = skewX + deg;\n cache.skewY = skewY + deg;\n cache.transformPerspective = perspective + px;\n\n if (cache.zOrigin = parseFloat(origin.split(\" \")[2]) || !uncache && cache.zOrigin || 0) {\n style[_transformOriginProp] = _firstTwoOnly(origin);\n }\n\n cache.xOffset = cache.yOffset = 0;\n cache.force3D = _config.force3D;\n cache.renderTransform = cache.svg ? _renderSVGTransforms : _supports3D ? _renderCSSTransforms : _renderNon3DTransforms;\n cache.uncache = 0;\n return cache;\n},\n _firstTwoOnly = function _firstTwoOnly(value) {\n return (value = value.split(\" \"))[0] + \" \" + value[1];\n},\n //for handling transformOrigin values, stripping out the 3rd dimension\n_addPxTranslate = function _addPxTranslate(target, start, value) {\n var unit = getUnit(start);\n return _round(parseFloat(start) + parseFloat(_convertToUnit(target, \"x\", value + \"px\", unit))) + unit;\n},\n _renderNon3DTransforms = function _renderNon3DTransforms(ratio, cache) {\n cache.z = \"0px\";\n cache.rotationY = cache.rotationX = \"0deg\";\n cache.force3D = 0;\n\n _renderCSSTransforms(ratio, cache);\n},\n _zeroDeg = \"0deg\",\n _zeroPx = \"0px\",\n _endParenthesis = \") \",\n _renderCSSTransforms = function _renderCSSTransforms(ratio, cache) {\n var _ref = cache || this,\n xPercent = _ref.xPercent,\n yPercent = _ref.yPercent,\n x = _ref.x,\n y = _ref.y,\n z = _ref.z,\n rotation = _ref.rotation,\n rotationY = _ref.rotationY,\n rotationX = _ref.rotationX,\n skewX = _ref.skewX,\n skewY = _ref.skewY,\n scaleX = _ref.scaleX,\n scaleY = _ref.scaleY,\n transformPerspective = _ref.transformPerspective,\n force3D = _ref.force3D,\n target = _ref.target,\n zOrigin = _ref.zOrigin,\n transforms = \"\",\n use3D = force3D === \"auto\" && ratio && ratio !== 1 || force3D === true; // Safari has a bug that causes it not to render 3D transform-origin values properly, so we force the z origin to 0, record it in the cache, and then do the math here to offset the translate values accordingly (basically do the 3D transform-origin part manually)\n\n\n if (zOrigin && (rotationX !== _zeroDeg || rotationY !== _zeroDeg)) {\n var angle = parseFloat(rotationY) * _DEG2RAD,\n a13 = Math.sin(angle),\n a33 = Math.cos(angle),\n cos;\n\n angle = parseFloat(rotationX) * _DEG2RAD;\n cos = Math.cos(angle);\n x = _addPxTranslate(target, x, a13 * cos * -zOrigin);\n y = _addPxTranslate(target, y, -Math.sin(angle) * -zOrigin);\n z = _addPxTranslate(target, z, a33 * cos * -zOrigin + zOrigin);\n }\n\n if (transformPerspective !== _zeroPx) {\n transforms += \"perspective(\" + transformPerspective + _endParenthesis;\n }\n\n if (xPercent || yPercent) {\n transforms += \"translate(\" + xPercent + \"%, \" + yPercent + \"%) \";\n }\n\n if (use3D || x !== _zeroPx || y !== _zeroPx || z !== _zeroPx) {\n transforms += z !== _zeroPx || use3D ? \"translate3d(\" + x + \", \" + y + \", \" + z + \") \" : \"translate(\" + x + \", \" + y + _endParenthesis;\n }\n\n if (rotation !== _zeroDeg) {\n transforms += \"rotate(\" + rotation + _endParenthesis;\n }\n\n if (rotationY !== _zeroDeg) {\n transforms += \"rotateY(\" + rotationY + _endParenthesis;\n }\n\n if (rotationX !== _zeroDeg) {\n transforms += \"rotateX(\" + rotationX + _endParenthesis;\n }\n\n if (skewX !== _zeroDeg || skewY !== _zeroDeg) {\n transforms += \"skew(\" + skewX + \", \" + skewY + _endParenthesis;\n }\n\n if (scaleX !== 1 || scaleY !== 1) {\n transforms += \"scale(\" + scaleX + \", \" + scaleY + _endParenthesis;\n }\n\n target.style[_transformProp] = transforms || \"translate(0, 0)\";\n},\n _renderSVGTransforms = function _renderSVGTransforms(ratio, cache) {\n var _ref2 = cache || this,\n xPercent = _ref2.xPercent,\n yPercent = _ref2.yPercent,\n x = _ref2.x,\n y = _ref2.y,\n rotation = _ref2.rotation,\n skewX = _ref2.skewX,\n skewY = _ref2.skewY,\n scaleX = _ref2.scaleX,\n scaleY = _ref2.scaleY,\n target = _ref2.target,\n xOrigin = _ref2.xOrigin,\n yOrigin = _ref2.yOrigin,\n xOffset = _ref2.xOffset,\n yOffset = _ref2.yOffset,\n forceCSS = _ref2.forceCSS,\n tx = parseFloat(x),\n ty = parseFloat(y),\n a11,\n a21,\n a12,\n a22,\n temp;\n\n rotation = parseFloat(rotation);\n skewX = parseFloat(skewX);\n skewY = parseFloat(skewY);\n\n if (skewY) {\n //for performance reasons, we combine all skewing into the skewX and rotation values. Remember, a skewY of 10 degrees looks the same as a rotation of 10 degrees plus a skewX of 10 degrees.\n skewY = parseFloat(skewY);\n skewX += skewY;\n rotation += skewY;\n }\n\n if (rotation || skewX) {\n rotation *= _DEG2RAD;\n skewX *= _DEG2RAD;\n a11 = Math.cos(rotation) * scaleX;\n a21 = Math.sin(rotation) * scaleX;\n a12 = Math.sin(rotation - skewX) * -scaleY;\n a22 = Math.cos(rotation - skewX) * scaleY;\n\n if (skewX) {\n skewY *= _DEG2RAD;\n temp = Math.tan(skewX - skewY);\n temp = Math.sqrt(1 + temp * temp);\n a12 *= temp;\n a22 *= temp;\n\n if (skewY) {\n temp = Math.tan(skewY);\n temp = Math.sqrt(1 + temp * temp);\n a11 *= temp;\n a21 *= temp;\n }\n }\n\n a11 = _round(a11);\n a21 = _round(a21);\n a12 = _round(a12);\n a22 = _round(a22);\n } else {\n a11 = scaleX;\n a22 = scaleY;\n a21 = a12 = 0;\n }\n\n if (tx && !~(x + \"\").indexOf(\"px\") || ty && !~(y + \"\").indexOf(\"px\")) {\n tx = _convertToUnit(target, \"x\", x, \"px\");\n ty = _convertToUnit(target, \"y\", y, \"px\");\n }\n\n if (xOrigin || yOrigin || xOffset || yOffset) {\n tx = _round(tx + xOrigin - (xOrigin * a11 + yOrigin * a12) + xOffset);\n ty = _round(ty + yOrigin - (xOrigin * a21 + yOrigin * a22) + yOffset);\n }\n\n if (xPercent || yPercent) {\n //The SVG spec doesn't support percentage-based translation in the \"transform\" attribute, so we merge it into the translation to simulate it.\n temp = target.getBBox();\n tx = _round(tx + xPercent / 100 * temp.width);\n ty = _round(ty + yPercent / 100 * temp.height);\n }\n\n temp = \"matrix(\" + a11 + \",\" + a21 + \",\" + a12 + \",\" + a22 + \",\" + tx + \",\" + ty + \")\";\n target.setAttribute(\"transform\", temp);\n forceCSS && (target.style[_transformProp] = temp); //some browsers prioritize CSS transforms over the transform attribute. When we sense that the user has CSS transforms applied, we must overwrite them this way (otherwise some browser simply won't render the transform attribute changes!)\n},\n _addRotationalPropTween = function _addRotationalPropTween(plugin, target, property, startNum, endValue) {\n var cap = 360,\n isString = _isString(endValue),\n endNum = parseFloat(endValue) * (isString && ~endValue.indexOf(\"rad\") ? _RAD2DEG : 1),\n change = endNum - startNum,\n finalValue = startNum + change + \"deg\",\n direction,\n pt;\n\n if (isString) {\n direction = endValue.split(\"_\")[1];\n\n if (direction === \"short\") {\n change %= cap;\n\n if (change !== change % (cap / 2)) {\n change += change < 0 ? cap : -cap;\n }\n }\n\n if (direction === \"cw\" && change < 0) {\n change = (change + cap * _bigNum) % cap - ~~(change / cap) * cap;\n } else if (direction === \"ccw\" && change > 0) {\n change = (change - cap * _bigNum) % cap - ~~(change / cap) * cap;\n }\n }\n\n plugin._pt = pt = new PropTween(plugin._pt, target, property, startNum, change, _renderPropWithEnd);\n pt.e = finalValue;\n pt.u = \"deg\";\n\n plugin._props.push(property);\n\n return pt;\n},\n _assign = function _assign(target, source) {\n // Internet Explorer doesn't have Object.assign(), so we recreate it here.\n for (var p in source) {\n target[p] = source[p];\n }\n\n return target;\n},\n _addRawTransformPTs = function _addRawTransformPTs(plugin, transforms, target) {\n //for handling cases where someone passes in a whole transform string, like transform: \"scale(2, 3) rotate(20deg) translateY(30em)\"\n var startCache = _assign({}, target._gsap),\n exclude = \"perspective,force3D,transformOrigin,svgOrigin\",\n style = target.style,\n endCache,\n p,\n startValue,\n endValue,\n startNum,\n endNum,\n startUnit,\n endUnit;\n\n if (startCache.svg) {\n startValue = target.getAttribute(\"transform\");\n target.setAttribute(\"transform\", \"\");\n style[_transformProp] = transforms;\n endCache = _parseTransform(target, 1);\n\n _removeProperty(target, _transformProp);\n\n target.setAttribute(\"transform\", startValue);\n } else {\n startValue = getComputedStyle(target)[_transformProp];\n style[_transformProp] = transforms;\n endCache = _parseTransform(target, 1);\n style[_transformProp] = startValue;\n }\n\n for (p in _transformProps) {\n startValue = startCache[p];\n endValue = endCache[p];\n\n if (startValue !== endValue && exclude.indexOf(p) < 0) {\n //tweening to no perspective gives very unintuitive results - just keep the same perspective in that case.\n startUnit = getUnit(startValue);\n endUnit = getUnit(endValue);\n startNum = startUnit !== endUnit ? _convertToUnit(target, p, startValue, endUnit) : parseFloat(startValue);\n endNum = parseFloat(endValue);\n plugin._pt = new PropTween(plugin._pt, endCache, p, startNum, endNum - startNum, _renderCSSProp);\n plugin._pt.u = endUnit || 0;\n\n plugin._props.push(p);\n }\n }\n\n _assign(endCache, startCache);\n}; // handle splitting apart padding, margin, borderWidth, and borderRadius into their 4 components. Firefox, for example, won't report borderRadius correctly - it will only do borderTopLeftRadius and the other corners. We also want to handle paddingTop, marginLeft, borderRightWidth, etc.\n\n\n_forEachName(\"padding,margin,Width,Radius\", function (name, index) {\n var t = \"Top\",\n r = \"Right\",\n b = \"Bottom\",\n l = \"Left\",\n props = (index < 3 ? [t, r, b, l] : [t + l, t + r, b + r, b + l]).map(function (side) {\n return index < 2 ? name + side : \"border\" + side + name;\n });\n\n _specialProps[index > 1 ? \"border\" + name : name] = function (plugin, target, property, endValue, tween) {\n var a, vars;\n\n if (arguments.length < 4) {\n // getter, passed target, property, and unit (from _get())\n a = props.map(function (prop) {\n return _get(plugin, prop, property);\n });\n vars = a.join(\" \");\n return vars.split(a[0]).length === 5 ? a[0] : vars;\n }\n\n a = (endValue + \"\").split(\" \");\n vars = {};\n props.forEach(function (prop, i) {\n return vars[prop] = a[i] = a[i] || a[(i - 1) / 2 | 0];\n });\n plugin.init(target, vars, tween);\n };\n});\n\nexport var CSSPlugin = {\n name: \"css\",\n register: _initCore,\n targetTest: function targetTest(target) {\n return target.style && target.nodeType;\n },\n init: function init(target, vars, tween, index, targets) {\n var props = this._props,\n style = target.style,\n startAt = tween.vars.startAt,\n startValue,\n endValue,\n endNum,\n startNum,\n type,\n specialProp,\n p,\n startUnit,\n endUnit,\n relative,\n isTransformRelated,\n transformPropTween,\n cache,\n smooth,\n hasPriority,\n inlineProps;\n _pluginInitted || _initCore(); // we may call init() multiple times on the same plugin instance, like when adding special properties, so make sure we don't overwrite the revert data or inlineProps\n\n this.styles = this.styles || _getStyleSaver(target);\n inlineProps = this.styles.props;\n this.tween = tween;\n\n for (p in vars) {\n if (p === \"autoRound\") {\n continue;\n }\n\n endValue = vars[p];\n\n if (_plugins[p] && _checkPlugin(p, vars, tween, index, target, targets)) {\n // plugins\n continue;\n }\n\n type = typeof endValue;\n specialProp = _specialProps[p];\n\n if (type === \"function\") {\n endValue = endValue.call(tween, index, target, targets);\n type = typeof endValue;\n }\n\n if (type === \"string\" && ~endValue.indexOf(\"random(\")) {\n endValue = _replaceRandom(endValue);\n }\n\n if (specialProp) {\n specialProp(this, target, p, endValue, tween) && (hasPriority = 1);\n } else if (p.substr(0, 2) === \"--\") {\n //CSS variable\n startValue = (getComputedStyle(target).getPropertyValue(p) + \"\").trim();\n endValue += \"\";\n _colorExp.lastIndex = 0;\n\n if (!_colorExp.test(startValue)) {\n // colors don't have units\n startUnit = getUnit(startValue);\n endUnit = getUnit(endValue);\n }\n\n endUnit ? startUnit !== endUnit && (startValue = _convertToUnit(target, p, startValue, endUnit) + endUnit) : startUnit && (endValue += startUnit);\n this.add(style, \"setProperty\", startValue, endValue, index, targets, 0, 0, p);\n props.push(p);\n inlineProps.push(p, 0, style[p]);\n } else if (type !== \"undefined\") {\n if (startAt && p in startAt) {\n // in case someone hard-codes a complex value as the start, like top: \"calc(2vh / 2)\". Without this, it'd use the computed value (always in px)\n startValue = typeof startAt[p] === \"function\" ? startAt[p].call(tween, index, target, targets) : startAt[p];\n _isString(startValue) && ~startValue.indexOf(\"random(\") && (startValue = _replaceRandom(startValue));\n getUnit(startValue + \"\") || startValue === \"auto\" || (startValue += _config.units[p] || getUnit(_get(target, p)) || \"\"); // for cases when someone passes in a unitless value like {x: 100}; if we try setting translate(100, 0px) it won't work.\n\n (startValue + \"\").charAt(1) === \"=\" && (startValue = _get(target, p)); // can't work with relative values\n } else {\n startValue = _get(target, p);\n }\n\n startNum = parseFloat(startValue);\n relative = type === \"string\" && endValue.charAt(1) === \"=\" && endValue.substr(0, 2);\n relative && (endValue = endValue.substr(2));\n endNum = parseFloat(endValue);\n\n if (p in _propertyAliases) {\n if (p === \"autoAlpha\") {\n //special case where we control the visibility along with opacity. We still allow the opacity value to pass through and get tweened.\n if (startNum === 1 && _get(target, \"visibility\") === \"hidden\" && endNum) {\n //if visibility is initially set to \"hidden\", we should interpret that as intent to make opacity 0 (a convenience)\n startNum = 0;\n }\n\n inlineProps.push(\"visibility\", 0, style.visibility);\n\n _addNonTweeningPT(this, style, \"visibility\", startNum ? \"inherit\" : \"hidden\", endNum ? \"inherit\" : \"hidden\", !endNum);\n }\n\n if (p !== \"scale\" && p !== \"transform\") {\n p = _propertyAliases[p];\n ~p.indexOf(\",\") && (p = p.split(\",\")[0]);\n }\n }\n\n isTransformRelated = p in _transformProps; //--- TRANSFORM-RELATED ---\n\n if (isTransformRelated) {\n this.styles.save(p);\n\n if (!transformPropTween) {\n cache = target._gsap;\n cache.renderTransform && !vars.parseTransform || _parseTransform(target, vars.parseTransform); // if, for example, gsap.set(... {transform:\"translateX(50vw)\"}), the _get() call doesn't parse the transform, thus cache.renderTransform won't be set yet so force the parsing of the transform here.\n\n smooth = vars.smoothOrigin !== false && cache.smooth;\n transformPropTween = this._pt = new PropTween(this._pt, style, _transformProp, 0, 1, cache.renderTransform, cache, 0, -1); //the first time through, create the rendering PropTween so that it runs LAST (in the linked list, we keep adding to the beginning)\n\n transformPropTween.dep = 1; //flag it as dependent so that if things get killed/overwritten and this is the only PropTween left, we can safely kill the whole tween.\n }\n\n if (p === \"scale\") {\n this._pt = new PropTween(this._pt, cache, \"scaleY\", cache.scaleY, (relative ? _parseRelative(cache.scaleY, relative + endNum) : endNum) - cache.scaleY || 0, _renderCSSProp);\n this._pt.u = 0;\n props.push(\"scaleY\", p);\n p += \"X\";\n } else if (p === \"transformOrigin\") {\n inlineProps.push(_transformOriginProp, 0, style[_transformOriginProp]);\n endValue = _convertKeywordsToPercentages(endValue); //in case something like \"left top\" or \"bottom right\" is passed in. Convert to percentages.\n\n if (cache.svg) {\n _applySVGOrigin(target, endValue, 0, smooth, 0, this);\n } else {\n endUnit = parseFloat(endValue.split(\" \")[2]) || 0; //handle the zOrigin separately!\n\n endUnit !== cache.zOrigin && _addNonTweeningPT(this, cache, \"zOrigin\", cache.zOrigin, endUnit);\n\n _addNonTweeningPT(this, style, p, _firstTwoOnly(startValue), _firstTwoOnly(endValue));\n }\n\n continue;\n } else if (p === \"svgOrigin\") {\n _applySVGOrigin(target, endValue, 1, smooth, 0, this);\n\n continue;\n } else if (p in _rotationalProperties) {\n _addRotationalPropTween(this, cache, p, startNum, relative ? _parseRelative(startNum, relative + endValue) : endValue);\n\n continue;\n } else if (p === \"smoothOrigin\") {\n _addNonTweeningPT(this, cache, \"smooth\", cache.smooth, endValue);\n\n continue;\n } else if (p === \"force3D\") {\n cache[p] = endValue;\n continue;\n } else if (p === \"transform\") {\n _addRawTransformPTs(this, endValue, target);\n\n continue;\n }\n } else if (!(p in style)) {\n p = _checkPropPrefix(p) || p;\n }\n\n if (isTransformRelated || (endNum || endNum === 0) && (startNum || startNum === 0) && !_complexExp.test(endValue) && p in style) {\n startUnit = (startValue + \"\").substr((startNum + \"\").length);\n endNum || (endNum = 0); // protect against NaN\n\n endUnit = getUnit(endValue) || (p in _config.units ? _config.units[p] : startUnit);\n startUnit !== endUnit && (startNum = _convertToUnit(target, p, startValue, endUnit));\n this._pt = new PropTween(this._pt, isTransformRelated ? cache : style, p, startNum, (relative ? _parseRelative(startNum, relative + endNum) : endNum) - startNum, !isTransformRelated && (endUnit === \"px\" || p === \"zIndex\") && vars.autoRound !== false ? _renderRoundedCSSProp : _renderCSSProp);\n this._pt.u = endUnit || 0;\n\n if (startUnit !== endUnit && endUnit !== \"%\") {\n //when the tween goes all the way back to the beginning, we need to revert it to the OLD/ORIGINAL value (with those units). We record that as a \"b\" (beginning) property and point to a render method that handles that. (performance optimization)\n this._pt.b = startValue;\n this._pt.r = _renderCSSPropWithBeginning;\n }\n } else if (!(p in style)) {\n if (p in target) {\n //maybe it's not a style - it could be a property added directly to an element in which case we'll try to animate that.\n this.add(target, p, startValue || target[p], relative ? relative + endValue : endValue, index, targets);\n } else if (p !== \"parseTransform\") {\n _missingPlugin(p, endValue);\n\n continue;\n }\n } else {\n _tweenComplexCSSString.call(this, target, p, startValue, relative ? relative + endValue : endValue);\n }\n\n isTransformRelated || (p in style ? inlineProps.push(p, 0, style[p]) : inlineProps.push(p, 1, startValue || target[p]));\n props.push(p);\n }\n }\n\n hasPriority && _sortPropTweensByPriority(this);\n },\n render: function render(ratio, data) {\n if (data.tween._time || !_reverting()) {\n var pt = data._pt;\n\n while (pt) {\n pt.r(ratio, pt.d);\n pt = pt._next;\n }\n } else {\n data.styles.revert();\n }\n },\n get: _get,\n aliases: _propertyAliases,\n getSetter: function getSetter(target, property, plugin) {\n //returns a setter function that accepts target, property, value and applies it accordingly. Remember, properties like \"x\" aren't as simple as target.style.property = value because they've got to be applied to a proxy object and then merged into a transform string in a renderer.\n var p = _propertyAliases[property];\n p && p.indexOf(\",\") < 0 && (property = p);\n return property in _transformProps && property !== _transformOriginProp && (target._gsap.x || _get(target, \"x\")) ? plugin && _recentSetterPlugin === plugin ? property === \"scale\" ? _setterScale : _setterTransform : (_recentSetterPlugin = plugin || {}) && (property === \"scale\" ? _setterScaleWithRender : _setterTransformWithRender) : target.style && !_isUndefined(target.style[property]) ? _setterCSSStyle : ~property.indexOf(\"-\") ? _setterCSSProp : _getSetter(target, property);\n },\n core: {\n _removeProperty: _removeProperty,\n _getMatrix: _getMatrix\n }\n};\ngsap.utils.checkPrefix = _checkPropPrefix;\ngsap.core.getStyleSaver = _getStyleSaver;\n\n(function (positionAndScale, rotation, others, aliases) {\n var all = _forEachName(positionAndScale + \",\" + rotation + \",\" + others, function (name) {\n _transformProps[name] = 1;\n });\n\n _forEachName(rotation, function (name) {\n _config.units[name] = \"deg\";\n _rotationalProperties[name] = 1;\n });\n\n _propertyAliases[all[13]] = positionAndScale + \",\" + rotation;\n\n _forEachName(aliases, function (name) {\n var split = name.split(\":\");\n _propertyAliases[split[1]] = all[split[0]];\n });\n})(\"x,y,z,scale,scaleX,scaleY,xPercent,yPercent\", \"rotation,rotationX,rotationY,skewX,skewY\", \"transform,transformOrigin,svgOrigin,force3D,smoothOrigin,transformPerspective\", \"0:translateX,1:translateY,2:translateZ,8:rotate,8:rotationZ,8:rotateZ,9:rotateX,10:rotateY\");\n\n_forEachName(\"x,y,z,top,right,bottom,left,width,height,fontSize,padding,margin,perspective\", function (name) {\n _config.units[name] = \"px\";\n});\n\ngsap.registerPlugin(CSSPlugin);\nexport { CSSPlugin as default, _getBBox, _createElement, _checkPropPrefix as checkPrefix };","import { gsap, Power0, Power1, Power2, Power3, Power4, Linear, Quad, Cubic, Quart, Quint, Strong, Elastic, Back, SteppedEase, Bounce, Sine, Expo, Circ, TweenLite, TimelineLite, TimelineMax } from \"./gsap-core.js\";\nimport { CSSPlugin } from \"./CSSPlugin.js\";\nvar gsapWithCSS = gsap.registerPlugin(CSSPlugin) || gsap,\n // to protect from tree shaking\nTweenMaxWithCSS = gsapWithCSS.core.Tween;\nexport { gsapWithCSS as gsap, gsapWithCSS as default, CSSPlugin, TweenMaxWithCSS as TweenMax, TweenLite, TimelineMax, TimelineLite, Power0, Power1, Power2, Power3, Power4, Linear, Quad, Cubic, Quart, Quint, Strong, Elastic, Back, SteppedEase, Bounce, Sine, Expo, Circ };","'use strict'\r\n\r\n/**\r\n * Module qui gère l'animation des texts\r\n */\r\n\r\nimport gsap from 'gsap'\r\n\r\nfunction startMarqueeAnimation(selector) {\r\n const rows = document.querySelectorAll(selector)\r\n\r\n rows.forEach(function (e, i) {\r\n let row_width = e.getBoundingClientRect().width\r\n let row_item_width = e.children[0].getBoundingClientRect().width\r\n let initial_offset = ((2 * row_item_width) / row_width) * 100 * -1\r\n\r\n gsap.set(e, {\r\n xPercent: `${initial_offset}`\r\n })\r\n\r\n let duration = 100 * (i + 1)\r\n\r\n var tl = gsap.timeline()\r\n\r\n tl.to(e, {\r\n ease: 'none',\r\n duration: duration,\r\n xPercent: 0,\r\n repeat: -1\r\n })\r\n })\r\n}\r\n\r\nfunction init() {\r\n startMarqueeAnimation('.marquee-row')\r\n startMarqueeAnimation('.footer__anim-wrapper')\r\n}\r\n\r\nfunction initFooter() {\r\n startMarqueeAnimation('.footer__anim-wrapper')\r\n}\r\n\r\nexport default {\r\n init: init,\r\n initFooter: initFooter\r\n}\r\n","'use strict'\r\n\r\nimport master from 'Modules/master'\r\nimport rollingTexts from 'Modules/rollingTexts'\r\n\r\n// TODO\r\n// Refacto dans layout\r\nmaster.process()\r\nrollingTexts.init()\r\n"],"names":["_500","AJAXLOADERINTERNALERROR","ERREUR_INTERNE_RECUPERATION_VILLE","INVALIDEMAIL","INVALIDINTEGER","adBlockEnabled","useAdBlocker","initAdBlockerDetection","testAd","document","createElement","innerHTML","className","body","appendChild","window","setTimeout","offsetHeight","remove","J_LOCATION_PRINT","J_AJAX_LOADER_GIF","C_ERROR_CLASS","C_HIDDEN","loadAndPrintContent","paramsToSend","$location","$","action","data","$gif","removeClass","undefined","posting","ajax","type","url","done","content","addClass","empty","append","fail","loadAndExecuteCallBack","requestType","sucessCallback","failCallback","TagScripts","eval","error","console","existsValidators","formId","fieldName","validator","bv","options","field","fields","validators","existsField","validateField","fieldNameOrElement","initForm","classOfElementToInit","callback","callBackOnField","bootstrapValidator","message","value","$field","on","destroyForm","classOfElementToDestroy","initModalForm","classOfModal","setItemAsInvalid","setItemAsValid","disableValidator","enableValidator","isValidField","validate","classtoSearch","find","each","index","this","attr","factory","mustache","objectToString","Object","prototype","toString","isArray","Array","object","call","isFunction","escapeRegExp","string","replace","hasProperty","obj","propName","regExpTest","RegExp","test","nonSpaceRe","entityMap","whiteRe","spaceRe","equalsRe","curlyRe","tagRe","Scanner","tail","pos","Context","view","parentContext","cache","parent","Writer","eos","scan","re","match","substring","length","scanUntil","search","push","lookup","name","primitive","hasOwnProperty","intermediateValue","names","context","lookupHit","indexOf","split","clearCache","parse","template","tags","cacheKey","join","tokens","openingTagRe","closingTagRe","closingCurlyRe","lineHasNonSpace","sections","spaces","hasTag","nonSpace","indentation","tagIndex","stripSpace","pop","compileTags","tagsToCompile","Error","start","chr","token","openSection","scanner","i","valueLength","charAt","testRegExp","nestedTokens","collector","numTokens","nestTokens","lastToken","squashedTokens","squashTokens","parseTemplate","render","partials","renderTokens","originalTemplate","symbol","buffer","renderSection","renderInverted","renderPartial","unescapedValue","escapedValue","rawValue","self","j","slice","indentPartial","partial","filteredIndentation","partialByNl","indentedValue","escape","version","defaultWriter","TypeError","to_html","send","result","String","s","exports","nodeName","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","module","__webpack_modules__","n","getter","__esModule","d","a","definition","key","o","defineProperty","enumerable","get","prop","r","Symbol","toStringTag","cssClassSelector","classname","startsWith","hasClass","success","reponse","html","xhr","ajaxOptions","thrownError","modal","J_CLEANTEXTONFOCUS","J_DATA_DEFAULTVALUE","inputElement","event","focusedInput","defaultValue","currentTarget","J_LIST_CATEGORY","C_SELECTED","setSelectedCategory","showPanel","destination","setEvents","profiles","currentProfile","gender","selected","sizes","init","cookiesArray","cookie","trim","COOKIE_NAME","JSON","getCookie","property","saveCookie","now","Date","deleteObjectProperty","myDressingProfile","stringify","setTime","getTime","toGMTString","location","hostname","deleteCookie","getProfiles","getCurrentProfile","saveDataAsCookie","category","dataArray","dataFamily","family","item","lastupdated","toISOString","existProfil","existProfilByGender","getNbOfProfile","cpt","setSelected","getMaxNbOfProfile","tmpcpt","isNaN","parseInt","getProfileByGender","setEventDeleteProfileAndReloadPage","reload","position","label","option","placement","title","trigger","tooltip","AGE","BAS","CHAUSSURES","HAUT","POINTURES","TAILLES","TAILLES_DE","VEUILLEZ_SELECTIONNER_TAILLES","J_URL_HIDDEN","backBrowser","J_PAGINATION_METHOD","J_ACTION","J_ACTION_DEGRADATED","deleteParameter","sourceURL","rtn","paramsArr","queryString","splice","insertParams","params","mustAddPosition","newUrl","first","val","prefix","suffix","noParameters","end","keyParam","ct","ctr","history","pushState","deleteParams","getParameter","paramName","kvp","substr","param","encodeURI","getAllParameters","parameters","returnValue","kpv","onpopstate","state","np","go","goToPreviousPage","History","scrollTop","documentElement","State","getState","currentPage","element","J_PAGE","parseRedirectionParameter","setUrl","setUrl2","newUrlAvecTri","newUrlSansTri","J_PARAM_NAME","isValideEmail","email","successCallbackAjax","failCallbackAjax","failCheckFormatCallback","jForm","$formInputs","isFalseValue","integer","ajaxLoader","J_BUTTON_SUBMIT","J_URL","J_TYPE_MODULE_DATA","J_PROFILE_GENDER_DATA","J_PANEL_ITEM","C_BUTTON_STYLE_OFF","C_BUTTON_STYLE_ON","C_CLASS_PINK_BUTTON","J_FAMILY_DATA","J_MUST_LOAD_DATA","J_ACCORDION_3M","setEnableEvent","$form","closest","profile","profileCookie","CHAUSSURE","href","redirectToNewGengerProfilePage","C_ARROW","C_ARROW2ROTATE","setDisableEvent","form","div","button","tooltips","setOnClickTaille","parentUL","parents","labelTaille","siblings","getDataAndSaveProfileV2","isMobile","navigator","userAgent","mongenre","mustReload","selectedDataFamily","values","checkIfGoButtonIsAvailableAndShow","checkButtonForEachForm","selectedGender","J_BORDER_SELECTED","J_FORM_3MPLUS","setToolTip","$triggers","$element","classForShowing","classForHidding","off","ready","click","imgArray","querySelectorAll","img","getAttribute","src","removeAttribute","mouseup","genre","selectorPanel","hide","fadeIn","J_VALIDATION_BUTTON_3M","J_EMAIL_NAME","C_GREEN","C_RED","C_BLACK","manageStyleForNewsletterError","CssClass","eraseColorForNewsLetter","CallbackAccordeon","css","id","is","slideUp","animate","deg","duration","step","transform","slideDown","mousedown","idrange","iddatalist","opt","tableau","idDivContainerMulitselect","toUpperCase","validationForm","Message","show","msg","text","bind","urlAccordeon","origin","e","$clicked","target","timeOut","J_MINIPANIER_MODAL","J_MINIPANIER_HOVER_CLASS","isPanierCharger","showMiniPanier","hideMiniPanier","hover","clearTimeout","mouseenter","disableHideMinipanier","dataType","ARTICLE_WISHLIST","afficheWishlistCatalogue","listeArticle","localStorage","getItem","forEach","article","RefModele","CodeCouleur","Id","inputRecherche","formGroupRecherche","formGroupAutocomplete","afficherSaisieManuelAdresse","unbind","adresse","adresseAutoComplete","focus","$formGroupRecherche","$inputRecherche","$formGroupAutocomplete","keydown","recherche","parametres","maxSuggestions","countryCode","f","suggestions","rendered","magickey","outFields","magicKey","candidates","attributes","codepostal","Postal","StAddr","ville","City","pays","Country","address","codpaystri","codpays","itemPays","gererPays","cp","ListVilles","change","villetrouve","NomVille","failure","response","verifierCodepostalVille","infoAdresseAjax","blur","$password","J_CODE_POSTAL","J_CODE_POSTAL_NAME","J_VILLE_SELECTOR","J_CLASSICAL_VILLE_INPUT","J_DATA_VALUE_PAYS","J_AUTRES_PAYS_SELECT","J_LABEL_PAYS_TO_HIDE","J_TELEPHONE","J_OTHER_TELEPHONE","preventDefault","then","bootstrapValidationForm","default","select","selectElement","CodePays","NomVilleReel","$select","$telephone","validTelephonList","invalidTelephonList","cptInvalidField","icon","firstElement","shift","cityName","CallLast","LastCallurl","LastCalldata","LastSuccess","SaveLastCall","onSuccess","FORM_VALIDATION_EMAIL","FORM_VERIFICATION_PASSWORD","FORM_INSCRIPTION","FORM_CONNEXION","INPUT_EMAILLOGIN","INPUT_PASSWORD","INPUT_TELEPHONE","INPUT_USEADBLOCK","J_INSCRIPTION_ERROR","J_DATA_REFERER","J_DATA_RELOAD","J_MODAL","SUBMIT_INSCRITION_CONNEXION","J_DATE_JOUR","J_DATE_MOIS","J_DATE_ANNEE","J_DATE_NAISSANCE","validatorInscription","ProcessInscription","adresseForm","filter","keyup","telephone","pattern","updateStatus","ads","serialize","Result","closeOrReload","removeAttr","jour","mois","annee","datefinal","anneemajorite","getFullYear","eventname","referer","loginaction","relocateUrl","redirectionUrl","urlModule","decodeURIComponent","google_tag_manager","ga","create","dataLayer","event_action","event_label","ajaxManagement","jsReturnArgs","replaceWith","master","process","password","inscriptionConnexionCustomAction","inscriptionGoogleAPI","validatorEmail","isValid","EmailValid","EmailExist","IsInscription3M","validatorPassword","updateMessage","ProcessVerificationPassword","resetForm","validatorConnexion","Redirect","ProcessConnexion","setDataLinks","$els","len","setInterval","eq","fadeOut","_3MPlus","cleanTextOnFocus","miniPanier","force","removeItem","setItem","QuotaExceededError","InitialiserWishlistInLocalStorage","inscriptionModule","_assertThisInitialized","ReferenceError","_inheritsLoose","subClass","superClass","constructor","__proto__","_suppressOverwrites","_reverting","_context","_globalTimeline","_win","_coreInitted","_doc","_coreReady","_lastRenderedFrame","_quickTween","_tickerActive","c","n1","easeOut","_config","autoSleep","force3D","nullTargetWarn","units","lineHeight","_defaults","overwrite","delay","_bigNum","_tinyNum","_2PI","Math","PI","_HALF_PI","_gsID","_sqrt","sqrt","_cos","cos","_sin","sin","_isString","_isFunction","_isNumber","_isUndefined","_isObject","_isNotFalse","_windowExists","_isFuncOrString","_isTypedArray","ArrayBuffer","isView","_isArray","_strictNumExp","_numExp","_numWithUnitExp","_complexStringNumExp","_relExp","_delimitedValueExp","_unitExp","_globals","_installScope","_install","scope","_merge","gsap","_missingPlugin","warn","_warn","suppress","_addGlobal","_emptyFunc","_startAtRevertConfig","suppressEvents","isStart","kill","_revertConfigNoKill","_revertConfig","_reservedProps","_lazyTweens","_lazyLookup","_plugins","_effects","_nextGCFrame","_harnessPlugins","_callbackNames","_harness","targets","harnessPlugin","_gsap","harness","targetTest","GSCache","_getCache","toArray","_getProperty","v","_forEachName","func","_round","round","_roundPrecise","_parseRelative","operator","parseFloat","_arrayContainsAny","toSearch","toFind","l","_lazyRender","tween","_lazy","_lazySafeRender","animation","time","_initted","_startAt","_numericIfPossible","_passThrough","p","_setDefaults","defaults","base","toMerge","_mergeDeep","_copyExcluding","excluding","copy","_inheritDefaults","vars","excludeDuration","keyframes","inherit","_dp","_addLinkedListItem","child","firstProp","lastProp","sortBy","t","prev","_prev","_next","_removeLinkedListItem","next","_removeFromParent","onlyIfParentHasAutoRemove","autoRemoveChildren","_act","_uncache","_end","_dur","_start","_dirty","_rewindStartAt","totalTime","revert","immediateRender","autoRevert","_hasNoPausedAncestors","_ts","_elapsedCycleDuration","_repeat","_animationCycle","_tTime","_rDelay","tTime","cycleDuration","whole","floor","_parentToChildTotalTime","parentTime","totalDuration","_tDur","_setEnd","abs","_rts","_alignPlayhead","smoothChildTiming","_time","_postAddChecks","timeline","add","rawTime","_clamp","_zTime","_addToTimeline","skipChecks","_parsePosition","_delay","timeScale","_sort","_isFromOrFromStart","_recent","_scrollTrigger","ScrollTrigger","_attemptInitTween","_initTween","_pt","lazy","_ticker","frame","_parentPlayheadIsBeforeStart","_ref","_lock","_ref2","_setDuration","skipUncache","leavePlayhead","repeat","dur","totalProgress","_onUpdateTotalDuration","Timeline","_zeroPosition","endTime","percentAnimation","offset","isPercent","labels","recent","clippedDuration","_createTweenType","irVars","isLegacy","varsIndex","runBackwards","startAt","Tween","_conditionalReturn","min","max","getUnit","exec","_slice","_isArrayLike","nonEmpty","nodeType","leaveStrings","selector","_wake","ar","accumulator","_accumulator","apply","_flatten","el","current","nativeElement","shuffle","sort","random","distribute","ease","_parseEase","from","isDecimal","ratios","axis","ratioX","ratioY","center","edges","originX","originY","x","y","wrapAt","distances","grid","getBoundingClientRect","left","amount","b","u","_invertEase","_roundModifier","pow","raw","snap","snapTo","radius","is2D","increment","dx","dy","roundingIncrement","returnFunction","_wrapArray","wrapper","_replaceRandom","nums","mapRange","inMin","inMax","outMin","outMax","inRange","outRange","_getLabelInDirection","fromTime","backward","distance","_callback","executeLazyFirst","prevContext","_ctx","callbackScope","_interrupt","scrollTrigger","progress","_registerPluginQueue","_createPlugin","config","isFunc","Plugin","_props","instanceDefaults","_renderPropTweens","_addPropTween","_killPropTweensOf","modifier","_addPluginModifier","rawVars","statics","getSetter","_getSetter","aliases","register","PropTween","_255","_colorLookup","aqua","lime","silver","black","maroon","teal","blue","navy","white","olive","yellow","orange","gray","purple","green","red","pink","cyan","transparent","_hue","h","m1","m2","splitColor","toHSL","forceAlpha","g","wasHSL","map","Number","_colorOrderData","_colorExp","_formatColors","orderMatchData","shell","colors","color","_hslExp","_colorStringFilter","combined","lastIndex","_id","_req","_raf","_self","_delta","_i","_getTime","_lagThreshold","_adjustedLag","_startTime","_lastUpdate","_gap","_nextTime","_listeners","_tick","overlap","dispatch","elapsed","manual","tick","deltaRatio","fps","wake","gsapVersions","GreenSockGlobals","requestAnimationFrame","sleep","cancelAnimationFrame","lagSmoothing","threshold","adjustedLag","Infinity","_fps","once","prioritize","_easeMap","_customEaseExp","_quotesExp","_parseObjectInString","parsedVal","lastIndexOf","_propagateYoyoEase","isYoyo","_first","yoyoEase","_yoyo","_ease","_yEase","defaultEase","open","close","nested","_CE","_configEaseFromString","_insertEase","easeIn","easeInOut","lowercaseName","toLowerCase","_easeInOutFromOut","_configElastic","amplitude","period","p1","p2","p3","asin","_configBack","overshoot","power","Linear","easeNone","none","SteppedEase","steps","immediateStart","set","Animation","repeatDelay","yoyo","_proto","startTime","arguments","_totalTime","_ptLookup","_pTime","iteration","_ps","_recacheAncestors","paused","includeRepeats","wrapRepeats","prevIsReverting","globalTime","_sat","seek","restart","includeDelay","play","reversed","reverse","pause","atTime","resume","invalidate","isActive","eventCallback","_onUpdate","onFulfilled","Promise","resolve","_resolve","_then","_prom","ratio","_Animation","_this","sortChildren","_proto2","to","fromTo","fromVars","toVars","delayedCall","staggerTo","stagger","onCompleteAll","onCompleteAllParams","onComplete","onCompleteParams","staggerFrom","staggerFromTo","prevPaused","pauseTween","prevStart","prevIteration","prevTime","tDur","crossingStart","rewinding","doesWrap","repeatRefresh","onRepeat","_hasPause","_forcing","_last","_findNextPauseTween","onUpdate","adjustedTime","_this2","addLabel","getChildren","tweens","timelines","ignoreBeforeTime","getById","animations","removeLabel","killTweensOf","_totalTime2","addPause","removePause","props","onlyActive","getTweensOf","_overwritingTween","children","parsedTargets","isGlobalTime","_targets","tweenTo","initted","tl","_vars","_onStart","onStart","onStartParams","tweenFromTo","fromPosition","toPosition","nextLabel","afterTime","previousLabel","beforeTime","currentLabel","shiftChildren","adjustLabels","soft","clear","includeLabels","updateRoot","_forceAllPropTweens","_addComplexStringPropTween","setter","stringFilter","funcParam","startNums","endNum","chunk","startNum","hasRandom","pt","_renderComplexString","matchIndex","m","fp","optional","currentValue","parsedStart","_setterFuncWithParam","_setterFunc","_setterPlain","_renderBoolean","_renderPlain","_checkPlugin","plugin","ptLookup","_parseFuncOrString","style","_processVars","priority","cleanVars","hasPriority","gsData","harnessVars","overwritten","prevStartAt","fullTargets","autoOverwrite","_overwrite","_from","_ptCache","_op","_sortPropTweensByPriority","_onInit","_parseKeyframe","allProps","easeEach","_staggerTweenProps","_staggerPropsToSkip","_Animation2","skipInherit","_this3","curTarget","staggerFunc","staggerVarsToMerge","_this3$vars","kf","_proto3","isNegative","prevRatio","_renderZeroDurationTween","resetTo","startIsRelative","skipRecursion","rootPT","ptCache","_updatePropTweens","overwrittenProps","curLookup","curOverwriteProps","killingTargets","propTweenLookup","firstPT","a1","a2","_arraysMatch","propertyAliases","_addAliasesToVars","onReverseComplete","onReverseCompleteParams","_setterAttribute","setAttribute","hasNonDependentRemaining","op","dep","_setterWithModifier","mSet","mt","pt2","last","pr","renderer","TweenMax","TweenLite","TimelineLite","TimelineMax","_media","_emptyArray","_lastMediaTime","_contextID","_dispatch","_onMediaChange","matches","anyMatch","toggled","queries","conditions","matchMedia","onMatch","_r","isReverted","_proto5","prevSelector","ignore","getTweens","_this4","MatchMedia","contexts","_proto6","mq","active","cond","addListener","addEventListener","registerPlugin","_len2","args","_key2","getProperty","unit","uncache","format","quickSetter","setters","quickTo","_merge2","isTweening","registerEffect","_ref3","effect","plugins","extendTimeline","pluginName","registerEase","parseEase","exportRoot","includeDelayedCalls","matchMediaRefresh","found","removeEventListener","utils","wrap","range","wrapYoyo","total","normalize","clamp","pipe","_len","functions","_key","reduce","unitize","interpolate","mutate","interpolators","il","isString","install","effects","ticker","globalTimeline","core","globals","getCache","reverting","toAdd","suppressOverwrites","_getPluginPropTween","_buildModifierPlugin","temp","modifiers","_addModifiers","Power0","Power1","Power2","Power3","Power4","Quad","Cubic","Quart","Quint","Strong","Elastic","Back","Bounce","Sine","Expo","Circ","_docElement","_pluginInitted","_tempDiv","_recentSetterPlugin","_supports3D","_transformProps","_RAD2DEG","_DEG2RAD","_atan2","atan2","_capsExp","_horizontalExp","_complexExp","_propertyAliases","autoAlpha","scale","alpha","_renderCSSProp","_renderPropWithEnd","_renderCSSPropWithBeginning","_renderRoundedCSSProp","_renderNonTweeningValue","_renderNonTweeningValueOnlyAtEnd","_setterCSSStyle","_setterCSSProp","setProperty","_setterTransform","_setterScale","scaleX","scaleY","_setterScaleWithRender","renderTransform","_setterTransformWithRender","_transformProp","_transformOriginProp","_saveStyle","isNotCSS","tfm","_get","zOrigin","svg","svgo","_removeIndependentTransforms","translate","removeProperty","_revertStyle","_getStyleSaver","properties","saver","save","_createElement","ns","createElementNS","_getComputedProperty","skipPrefixFallback","cs","getComputedStyle","getPropertyValue","_checkPropPrefix","_prefixes","preferPrefix","_initCore","cssText","_getBBoxHack","swapIfPossible","bbox","ownerSVGElement","oldParent","parentNode","oldSibling","nextSibling","oldCSS","display","getBBox","_gsapBBox","insertBefore","removeChild","_getAttributeFallbacks","attributesArray","hasAttribute","_getBBox","bounds","width","height","_isSVG","getCTM","_removeProperty","first2Chars","_addNonTweeningPT","beginning","onlySetAtEnd","_nonConvertibleUnits","rad","turn","_nonStandardLayouts","flex","_convertToUnit","px","isSVG","curValue","curUnit","horizontal","isRootSVG","tagName","measureProperty","toPixels","toPercent","_parseTransform","_firstTwoOnly","_specialProps","_tweenComplexCSSString","startValues","startValue","endValue","endUnit","startUnit","_keywordToPercent","top","bottom","right","_renderClearProps","clearTransforms","clearProps","_identity2DMatrix","_rotationalProperties","_isNullTransform","_getComputedTransformMatrixAsArray","matrixString","_getMatrix","force2D","addedToDOM","matrix","baseVal","consolidate","offsetParent","nextElementSibling","_applySVGOrigin","originIsAbsolute","smooth","matrixArray","pluginToAddPropTweensTo","determinant","xOriginOld","xOrigin","yOriginOld","yOrigin","xOffsetOld","xOffset","yOffsetOld","yOffset","tx","ty","originSplit","z","rotation","rotationX","rotationY","skewX","skewY","perspective","angle","a12","a22","t1","t2","t3","a13","a23","a33","a42","a43","a32","invertedScaleX","rotate","forceCSS","xPercent","offsetWidth","yPercent","transformPerspective","_renderSVGTransforms","_renderCSSTransforms","_renderNon3DTransforms","_addPxTranslate","_zeroDeg","_zeroPx","_endParenthesis","transforms","use3D","a11","a21","tan","_addRotationalPropTween","direction","cap","finalValue","_assign","source","_addRawTransformPTs","endCache","startCache","side","all","CSSPlugin","specialProp","relative","isTransformRelated","transformPropTween","inlineProps","styles","visibility","parseTransform","smoothOrigin","autoRound","checkPrefix","getStyleSaver","positionAndScale","gsapWithCSS","startMarqueeAnimation","row_width","initial_offset","rollingTexts"],"sourceRoot":""}