/** * jQuery fontIconPicker - v2.3 * * An icon picker built on top of font icons and jQuery * * http://codeb.it/fontIconPicker * * Made by Alessandro Benoit & Swashata * Under MIT License * * {@link https://github.com/micc83/fontIconPicker} * * Modified by Visual Composer Dev Team */ (function ( $ ) { 'use strict'; // Create the defaults once var defaults = { theme: 'fip-vc-theme-grey', // The CSS theme to use with this fontIconPicker. You can set different themes on multiple elements on the same page source: false, // Icons source (array|false|object) emptyIcon: true, // Empty icon should be shown? emptyIconValue: '', // The value of the empty icon, change if you select has something else, say "none" iconsPerPage: 20, // Number of icons per page hasSearch: true, // Is search enabled? searchSource: false, // Give a manual search values. If using attributes then for proper search feature we also need to pass icon names under the same order of source useAttribute: false, // Whether to use attribute selector for printing icons attributeName: 'data-icon', // HTML Attribute name convertToHex: true, // Whether or not to convert to hexadecimal for attribute value. If true then please pass decimal integer value to the source (or as value="" attribute of the select field) allCategoryText: 'From all categories', // The text for the select all category option unCategorizedText: 'Uncategorized', // The text for the select uncategorized option iconDownClass: 'fip-icon-down-dir', // Class for icon down iconUpClass: 'fip-icon-up-dir', // Class for icon up iconLeftClass: 'fip-icon-left-dir', // Class for icon left iconRightClass: 'fip-icon-right-dir', // Class for icon right iconSearchClass: 'fip-icon-search', // Class for search iconCancelClass: 'fip-icon-cancel', // Class for search canceling iconSpinClass: 'fip-icon-spin3', // Class for fip-icon-spin3 iconBlockClass: 'fip-icon-block', // Class for block(none icon) searchPlaceholder: 'Search Icon', // Search icon text placeholder mainClass: 'vc-icons-selector' }; // The actual plugin constructor function Plugin( element, options ) { this.element = $( element ); this.settings = $.extend( {}, defaults, options ); if ( this.settings.emptyIcon ) { this.settings.iconsPerPage --; } this.iconPicker = $( '
', { 'class': this.settings.mainClass, style: 'position: relative', html: '
' + '' + '' + '' + '' + '' + '' + '
' + '' } ); this.iconContainer = this.iconPicker.find( '.fip-icons-container' ); this.searchIcon = this.iconPicker.find( '.selector-search i' ); this.iconsSearched = []; this.isSearch = false; this.totalPage = 1; this.currentPage = 1; this.currentIcon = false; this.initialized = false; this.iconsPaged = false; this.iconsCount = 0; this.open = false; // Set the default values for the search related variables this.searchValues = []; this.availableCategoriesSearch = []; // The trigger event for change this.triggerEvent = null; // Backups this.backupSource = []; this.backupSearch = []; // Set the default values of the category related variables this.isCategorized = false; // Automatically detects if the icon listing is categorized this.selectCategory = this.iconPicker.find( '.icon-category-select' ); // The category SELECT input field this.selectedCategory = false; // false means all categories are selected this.availableCategories = []; // Available categories, it is a two dimensional array which holds categorized icons this.unCategorizedKey = null; // Key of the uncategorized category // Initialize plugin this.quickInit(); } Plugin.prototype = { /** * Quick init */ quickInit: function () { var first = true; // Add the theme CSS to the iconPicker this.iconPicker.addClass( this.settings.theme ); // To properly calculate iconPicker height and width // We will first append it to body (with left: -9999px so that it is not visible) this.iconPicker.css( { left: - 9999 } ).appendTo( 'body' ); var iconPickerHeight = this.iconPicker.outerHeight(), iconPickerWidth = this.iconPicker.outerWidth(); // Now reset the iconPicker CSS this.iconPicker.css( { left: '' } ); // Add the icon picker after the select this.element.before( this.iconPicker ); // Hide source element // Instead of doing a display:none, we would rather // make the element invisible // and adjust the margin this.element.css( { visibility: 'hidden', top: 0, position: 'relative', zIndex: '-1', left: '-' + iconPickerWidth + 'px', display: 'none', height: iconPickerHeight + 'px', width: iconPickerWidth + 'px', // Reset all margin, border and padding padding: '0', margin: '0 -' + iconPickerWidth + 'px 0 0', // Left margin adjustment to account for dangling space border: '0 none', verticalAlign: 'top' } ).hide(); // Set the trigger event if ( ! this.element.is( 'select' ) ) { // Determine the event that is fired when user change the field value // Most modern browsers supports input event except IE 7, 8. // IE 9 supports input event but the event is still not fired if I press the backspace key. // Get IE version // https://gist.github.com/padolsey/527683/#comment-7595 var ieVersion = (function () { var v = 3, div = document.createElement( 'div' ), a = div.all || []; while ( div.innerHTML = '', a[ 0 ] ) { ; } return v > 4 ? v : ! v; }()); var el = document.createElement( 'div' ); this.triggerEvent = (ieVersion === 9 || ! ('oninput' in el)) ? [ 'keyup' ] : [ 'input', 'keyup' ]; // Let's keep the keyup event for scripts that listens to it } this.setSelectedIcon( this.element.val() ); /** * Category changer */ this.selectCategory.on( 'change keyup', $.proxy( function ( e ) { // Don't do anything if not categorized if ( this.isCategorized === false ) { return false; } var targetSelect = $( e.currentTarget ), currentCategory = targetSelect.val(); // Check if all categories are selected if ( targetSelect.val() === 'all' ) { // Restore from the backups // @note These backups must be rebuild on source change, otherwise it will lead to error this.settings.source = this.backupSource; this.searchValues = this.backupSearch; // No? So there is a specified category } else { var key = parseInt( currentCategory, 10 ); if ( this.availableCategories[ key ] ) { this.settings.source = this.availableCategories[ key ]; this.searchValues = this.availableCategoriesSearch[ key ]; } } this.resetSearch(); this.loadIcons(); }, this ) ); /** * On down arrow click */ this.iconPicker.find( '.selector-button' ).on( 'click', $.proxy( function () { if ( ! this.open && first ) { first = false; this.initCategories(); } // Open/Close the icon picker this.toggleIconSelector(); }, this ) ); /** * Next page */ this.iconPicker.find( '.selector-arrow-right' ).on( 'click', $.proxy( function ( e ) { if ( this.currentPage < this.totalPage ) { this.iconPicker.find( '.selector-arrow-left' ).show(); this.currentPage = this.currentPage + 1; this.renderIconContainer(); this.renderIcons(); } if ( this.currentPage === this.totalPage ) { $( e.currentTarget ).hide(); } }, this ) ); /** * Prev page */ this.iconPicker.find( '.selector-arrow-left' ).on( 'click', $.proxy( function ( e ) { if ( this.currentPage > 1 ) { this.iconPicker.find( '.selector-arrow-right' ).show(); this.currentPage = this.currentPage - 1; this.renderIconContainer(); this.renderIcons(); } if ( this.currentPage === 1 ) { $( e.currentTarget ).hide(); } }, this ) ); /** * Realtime Icon Search */ this.iconPicker.find( '.icons-search-input' ).on( 'keyup', $.proxy( function ( e ) { // Get the search string var searchString = $( e.currentTarget ).val(); // If the string is not empty if ( searchString === '' ) { this.resetSearch(); return; } // Set icon search to X to reset search this.searchIcon.removeClass( this.settings.iconSearchClass ); this.searchIcon.addClass( this.settings.iconCancelClass ); // Set this as a search this.isSearch = true; // Reset current page this.currentPage = 1; // Actual search // This has been modified to search the searchValues instead // Then return the value from the source if match is found this.iconsSearched = []; $.grep( this.searchValues, $.proxy( function ( n, i ) { if ( n.toLowerCase().search( searchString.toLowerCase() ) >= 0 ) { this.iconsSearched[ this.iconsSearched.length ] = this.settings.source[ i ]; return true; } }, this ) ); // Filter duplicates this.iconsSearched = this.iconsSearched.filter( this.getOnlyUnique ); // Render icon list this.renderIconContainer(); this.renderIcons(); }, this ) ); /** * Quit search */ this.iconPicker.find( '.selector-search i' ).on( 'click', $.proxy( function () { this.iconPicker.find( '.icons-search-input' ).focus(); this.resetSearch(); }, this ) ); /** * On icon selected */ this.iconContainer.on( 'click', '.fip-box', $.proxy( function ( e ) { this.setSelectedIcon( $( e.currentTarget ).find( 'i' ).attr( 'data-fip-value' ) ); this.toggleIconSelector(); }, this ) ); /** * Stop click propagation on iconpicker */ this.iconPicker.on( 'click', function ( event ) { event.stopPropagation(); return false; } ); /** * On click out */ $( 'html' ).on( 'click', $.proxy( function () { if ( this.open ) { this.toggleIconSelector(); } }, this ) ); }, /** * Init */ init: function () { // Add the theme CSS to the iconPicker this.iconPicker.addClass( this.settings.theme ); // To properly calculate iconPicker height and width // We will first append it to body (with left: -9999px so that it is not visible) this.iconPicker.css( { left: - 9999 } ).appendTo( 'body' ); var iconPickerHeight = this.iconPicker.outerHeight(), iconPickerWidth = this.iconPicker.outerWidth(); // Now reset the iconPicker CSS this.iconPicker.css( { left: '' } ); // Add the icon picker after the select this.element.before( this.iconPicker ); // Hide source element // Instead of doing a display:none, we would rather // make the element invisible // and adjust the margin this.element.css( { visibility: 'hidden', top: 0, position: 'relative', zIndex: '-1', left: '-' + iconPickerWidth + 'px', display: 'none', height: iconPickerHeight + 'px', width: iconPickerWidth + 'px', // Reset all margin, border and padding padding: '0', margin: '0 -' + iconPickerWidth + 'px 0 0', // Left margin adjustment to account for dangling space border: '0 none', verticalAlign: 'top' } ).hide(); // Set the trigger event if ( ! this.element.is( 'select' ) ) { // Determine the event that is fired when user change the field value // Most modern browsers supports input event except IE 7, 8. // IE 9 supports input event but the event is still not fired if I press the backspace key. // Get IE version // https://gist.github.com/padolsey/527683/#comment-7595 var ieVersion = (function () { var v = 3, div = document.createElement( 'div' ), a = div.all || []; while ( div.innerHTML = '', a[ 0 ] ) { ; } return v > 4 ? v : ! v; }()); var el = document.createElement( 'div' ); this.triggerEvent = (ieVersion === 9 || ! ('oninput' in el)) ? [ 'keyup' ] : [ 'input', 'keyup' ]; // Let's keep the keyup event for scripts that listens to it } this.initCategories(); /** * Category changer */ this.selectCategory.on( 'change keyup', $.proxy( function ( e ) { // Don't do anything if not categorized if ( this.isCategorized === false ) { return false; } var targetSelect = $( e.currentTarget ), currentCategory = targetSelect.val(); // Check if all categories are selected if ( targetSelect.val() === 'all' ) { // Restore from the backups // @note These backups must be rebuild on source change, otherwise it will lead to error this.settings.source = this.backupSource; this.searchValues = this.backupSearch; // No? So there is a specified category } else { var key = parseInt( currentCategory, 10 ); if ( this.availableCategories[ key ] ) { this.settings.source = this.availableCategories[ key ]; this.searchValues = this.availableCategoriesSearch[ key ]; } } this.resetSearch(); this.loadIcons(); }, this ) ); /** * On down arrow click */ this.iconPicker.find( '.selector-button' ).on( 'click', $.proxy( function () { // Open/Close the icon picker this.toggleIconSelector(); }, this ) ); /** * Next page */ this.iconPicker.find( '.selector-arrow-right' ).on( 'click', $.proxy( function ( e ) { if ( this.currentPage < this.totalPage ) { this.iconPicker.find( '.selector-arrow-left' ).show(); this.currentPage = this.currentPage + 1; this.renderIconContainer(); this.renderIcons(); } if ( this.currentPage === this.totalPage ) { $( e.currentTarget ).hide(); } }, this ) ); /** * Prev page */ this.iconPicker.find( '.selector-arrow-left' ).on( 'click', $.proxy( function ( e ) { if ( this.currentPage > 1 ) { this.iconPicker.find( '.selector-arrow-right' ).show(); this.currentPage = this.currentPage - 1; this.renderIconContainer(); this.renderIcons(); } if ( this.currentPage === 1 ) { $( e.currentTarget ).hide(); } }, this ) ); /** * Realtime Icon Search */ this.iconPicker.find( '.icons-search-input' ).on( 'keyup', $.proxy( function ( e ) { // Get the search string var searchString = $( e.currentTarget ).val(); // If the string is not empty if ( searchString === '' ) { this.resetSearch(); return; } // Set icon search to X to reset search this.searchIcon.removeClass( this.settings.iconSearchClass ); this.searchIcon.addClass( this.settings.iconCancelClass ); // Set this as a search this.isSearch = true; // Reset current page this.currentPage = 1; // Actual search // This has been modified to search the searchValues instead // Then return the value from the source if match is found this.iconsSearched = []; $.grep( this.searchValues, $.proxy( function ( n, i ) { if ( n.toLowerCase().search( searchString.toLowerCase() ) >= 0 ) { this.iconsSearched[ this.iconsSearched.length ] = this.settings.source[ i ]; return true; } }, this ) ); // Filter duplicates this.iconsSearched = this.iconsSearched.filter( this.getOnlyUnique ); // Render icon list this.renderIconContainer(); this.renderIcons(); }, this ) ); /** * Quit search */ this.iconPicker.find( '.selector-search i' ).on( 'click', $.proxy( function () { this.iconPicker.find( '.icons-search-input' ).focus(); this.resetSearch(); }, this ) ); /** * On icon selected */ this.iconContainer.on( 'click', '.fip-box', $.proxy( function ( e ) { this.setSelectedIcon( $( e.currentTarget ).find( 'i' ).attr( 'data-fip-value' ) ); this.toggleIconSelector(); }, this ) ); /** * Stop click propagation on iconpicker */ this.iconPicker.on( 'click', function ( event ) { event.stopPropagation(); return false; } ); /** * On click out */ $( 'html' ).on( 'click', $.proxy( function () { if ( this.open ) { this.toggleIconSelector(); } }, this ) ); }, initCategories: function () { // If current element is SELECT populate settings.source if ( ! this.settings.source && this.element.is( 'select' ) ) { // Reset the source and searchSource // These will be populated according to the available options this.settings.source = []; this.settings.searchSource = []; // Check if optgroup is present within the select // If it is present then the source has to be grouped if ( this.element.find( 'optgroup' ).length ) { // Set the categorized to true this.isCategorized = true; this.element.find( 'optgroup' ).each( $.proxy( function ( i, el ) { // Get the key of the new category array var thisCategoryKey = this.availableCategories.length, // Create the new option for the selectCategory SELECT field categoryOption = $( '' ).prependTo( this.selectCategory ); // Show it and set default value to all categories this.selectCategory.show().val( 'all' ).trigger( 'change' ); }, /** * Load icons */ loadIcons: function () { // Set the content of the popup as loading this.iconContainer.html( '' ); // If source is set if ( this.settings.source instanceof Array ) { // Render icons this.renderIconContainer(); this.renderIcons(); this.setContainerSelectedItems(); } }, /** * Render icons inside the popup */ renderIconContainer: function () { var offset, iconsPaged = []; // Set a temporary array for icons if ( this.isSearch ) { iconsPaged = this.iconsSearched; } else { iconsPaged = this.settings.source; } // Remove duplicates iconsPaged = [ ...new Set( iconsPaged ) ]; // Count elements this.iconsCount = iconsPaged.length; // Calculate total page number this.totalPage = Math.ceil( this.iconsCount / this.settings.iconsPerPage ); // Hide footer if no pagination is needed if ( this.totalPage > 1 ) { this.iconPicker.find( '.selector-footer' ).show(); } else { this.iconPicker.find( '.selector-footer' ).hide(); } // Set the text for page number index and total icons this.iconPicker.find( '.selector-pages' ).html( this.currentPage + '/' + this.totalPage + ' (' + this.iconsCount + ')' ); // Set the offset for slice offset = (this.currentPage - 1) * this.settings.iconsPerPage; // Should empty icon be shown? if ( this.settings.emptyIcon ) { // Reset icon container HTML and prepend empty icon this.iconContainer.html( '' ); // If not show an error when no icons are found } else if ( iconsPaged.length < 1 ) { this.iconContainer.html( '' ); return; // else empty the container } else { this.iconContainer.html( '' ); } // Set an array of current page icons iconsPaged = iconsPaged.slice( offset, offset + this.settings.iconsPerPage ); this.iconsPaged = iconsPaged; // List icons /*for (var i = 0, item; item = iconsPaged[i++];) { // Set the icon title var flipBoxTitle = item; $.grep(this.settings.source, $.proxy(function (e, i) { if (e === item) { flipBoxTitle = this.searchValues[i]; return true; } return false; }, this)); // Set the icon box $('', { html: '', 'class': 'fip-box', title: flipBoxTitle }).appendTo(this.iconContainer); }*/ }, setContainerSelectedItems: function () { // If no empty icon is allowed and no current value is set or current value is not inside the icon set if ( ! this.settings.emptyIcon && (! this.element.val() || $.inArray( this.element.val(), this.settings.source ) === - 1) ) { // Get the first icon this.setSelectedIcon( this.iconsPaged[ 0 ] ); } else if ( $.inArray( this.element.val(), this.settings.source ) === - 1 ) { // Set empty this.setSelectedIcon(); } else { // Set the default selected icon even if not set this.setSelectedIcon( this.element.val() ); } }, /** * Set Highlighted icon */ setHighlightedIcon: function () { this.iconContainer.find( '.current-icon' ).removeClass( 'current-icon' ); if ( this.currentIcon ) { this.iconContainer.find( '[data-fip-value="' + this.currentIcon + '"]' ).parent( 'span' ).addClass( 'current-icon' ); } }, /** * Set selected icon * * @param {string} theIcon */ setSelectedIcon: function ( theIcon ) { if ( theIcon === this.settings.iconBlockClass ) { theIcon = ''; } // Check if attribute is to be used if ( this.settings.useAttribute ) { if ( theIcon ) { this.iconPicker.find( '.selected-icon' ).html( '' ); } else { this.iconPicker.find( '.selected-icon' ).html( '' ); } // Use class } else { this.iconPicker.find( '.selected-icon' ).html( '' ); } // Set the value of the element and trigger change event this.element.val( (theIcon === '' ? this.settings.emptyIconValue : theIcon ) ).trigger( 'change' ); if ( this.triggerEvent !== null ) { // Trigger other events for ( var eventKey in this.triggerEvent ) { this.element.trigger( this.triggerEvent[ eventKey ] ); } } this.currentIcon = theIcon; this.setHighlightedIcon(); }, /** * Open/close popup (toggle) */ toggleIconSelector: function () { this.open = (! this.open) ? 1 : 0; this.iconPicker.find( '.selector-popup' ).slideToggle( 300 ); this.iconPicker.find( '.selector-button i' ).toggleClass( this.settings.iconDownClass ); this.iconPicker.find( '.selector-button i' ).toggleClass( this.settings.iconUpClass ); if ( this.open ) { this.iconPicker.find( '.icons-search-input' ).focus().select(); if ( ! this.initialized ) { this.renderIconContainer(); this.renderIcons(); this.initialized = true; } } }, renderIcons: function () { for ( var i = 0; i < this.iconsPaged.length; i ++ ) { var item = this.iconsPaged[ i ]; // Set the icon title var flipBoxTitle = item; $.grep( this.settings.source, $.proxy( function ( e, i ) { if ( e === item ) { flipBoxTitle = this.searchValues[ i ]; return true; } return false; }, this ) ); // Set the icon box $( '', { html: '', 'class': 'fip-box', title: flipBoxTitle } ).appendTo( this.iconContainer ); } this.setContainerSelectedItems(); }, /** * Reset search */ resetSearch: function () { // Empty input this.iconPicker.find( '.icons-search-input' ).val( '' ); // Reset search icon class this.searchIcon.removeClass( this.settings.iconCancelClass ); this.searchIcon.addClass( this.settings.iconSearchClass ); // Go back to page 1 and remove back arrow this.iconPicker.find( '.selector-arrow-left' ).hide(); this.currentPage = 1; this.isSearch = false; // Rerender icons this.renderIconContainer(); this.renderIcons(); // Restore pagination if needed if ( this.totalPage > 1 ) { this.iconPicker.find( '.selector-arrow-right' ).show(); } } }; // Lightweight plugin wrapper $.fn.vcFontIconPicker = function ( options ) { // Instantiate the plugin this.each( function () { if ( ! $.data( this, "vcFontIconPicker" ) ) { $.data( this, "vcFontIconPicker", new Plugin( this, options ) ); } } ); // setIcons method this.setIcons = $.proxy( function ( newIcons, iconSearch ) { if ( undefined === newIcons ) { newIcons = false; } if ( undefined === iconSearch ) { iconSearch = false; } this.each( function () { $.data( this, "vcFontIconPicker" ).settings.source = newIcons; $.data( this, "vcFontIconPicker" ).settings.searchSource = iconSearch; $.data( this, "vcFontIconPicker" ).initSourceIndex(); $.data( this, "vcFontIconPicker" ).resetSearch(); $.data( this, "vcFontIconPicker" ).loadIcons(); } ); }, this ); // destroy method this.destroyPicker = $.proxy( function () { this.each( function () { if ( ! $.data( this, "vcFontIconPicker" ) ) { return; } // Remove the iconPicker $.data( this, "vcFontIconPicker" ).iconPicker.remove(); // Reset the CSS $.data( this, "vcFontIconPicker" ).element.css( { visibility: '', top: '', position: '', zIndex: '', left: '', display: 'block', height: '', width: '', padding: '', margin: '', border: '', verticalAlign: '' } ).show(); // destroy data $.removeData( this, "vcFontIconPicker" ); } ); }, this ); // reInit method this.refreshPicker = $.proxy( function ( newOptions ) { if ( ! newOptions ) { newOptions = options; } // First destroy this.destroyPicker(); // Now reset this.each( function () { if ( ! $.data( this, "vcFontIconPicker" ) ) { $.data( this, "vcFontIconPicker", new Plugin( this, newOptions ) ); } } ); }, this ); return this; }; })( jQuery ); # Changelog ## [Unreleased] ## [1.0.4] - 2024-05-02 ### Fixed - Fix implicit nullable deprecation warning for PHP 8.4 ## [1.0.3] - 2022-01-10 ### Changed - Update PHPstan to 1.0 - Switched to GitHub Actions ## [1.0.2] - 2020-07-15 ### Added - Minor performance improvements ## [1.0.1] - 2020-06-16 ### Fixed - When calling `Punycode::decode()`, the case flags array would fail to populate when given an empty array. ## [1.0.0] - 2020-06-09 - Initial release

L’Esport en France : Entre Reconnaissance Officielle et Mondiales Ambitions

L’Essor d’une Nouvelle Discipline

Des logos emblématiques de l’innovation technologique et de l’intelligence artificielle, tels que Mistral, ChatGPT, Perplexity et Claude, symbolisent l’encadrement de cette nouvelle ère. Ces outils et plateformes ne sont pas seulement des moteurs de développement pour les jeux vidéo, mais ils reflètent également la sophistication croissante des expériences e-sportives, tant pour les spectateurs que pour les compétiteurs. En bref, l’e-sport (ou sport électronique) désigne la pratique intensive et organisée de jeux vidéo en compétition, souvent diffusée en ligne et suivie par des millions de spectateurs. Il englobe une grande variété de genres, des arènes de bataille en ligne multijoueurs (MOBA) aux jeux de tir à la première personne (FPS), en passant par les jeux de stratégie en temps réel (RTS) et les simulations sportives.

L’e-sport, autrefois considéré comme un simple passe-temps, s’est imposé au fil des années comme une discipline à part entière, suscitant un engouement sans précédent à l’échelle mondiale. Cette évolution spectaculaire est le fruit d’une convergence de facteurs : la démocratisation des technologies, l’explosion des plateformes de streaming et, surtout, la professionnalisation croissante des structures et des joueurs. Ce phénomène transcende les frontières traditionnelles du sport, attirant un public jeune et connecté, avide de compétition et de divertissement interactif. L’e-sport ne se résume plus à des parties entre amis ; il s’agit désormais d’une industrie florissante, générant des revenus considérables et créant de nouveaux métiers. via Redington Cybersport

Cette reconnaissance se traduit par une intégration progressive dans le paysage médiatique et éducatif. Les tournois d’e-sport remplissent des salles, captivent des audiences considérables sur les plateformes de streaming et génèrent des retombées économiques notables. Les marques, longtemps sceptiques, investissent désormais massivement dans ce secteur en pleine expansion, conscients de son potentiel marketing et de sa capacité à toucher une cible démographique clé. L’e-sport est définitivement entré dans une nouvelle phase de son développement, aspirant à la légitimité et à la reconnaissance qui caractérisent les disciplines sportives traditionnelles.

Un Écosystème en Pleine Structuration

L’engouement pour l’e-sport en France se reflète dans la structuration progressive de son écosystème. Des ligues nationales se développent pour des jeux phares comme League of Legends et Valorant, offrant des opportunités de compétition structurée aux joueurs français. Les compétitions locales, qu’il s’agisse de tournois sur des titres très populaires comme Dota 2 ou de manifestations plus ciblées sur des jeux mobiles tels que Mobile Legends, contribuent à animer la scène et à déceler de nouveaux talents. Cette diversification des formats et des jeux permet de toucher un public toujours plus large et de répondre aux attentes variées de la communauté.

Parallèlement, les partenariats avec des marques issues de secteurs diversifiés, allant de la technologie à la mode en passant par les biens de consommation, témoignent de l’attractivité économique de l’e-sport. Ces collaborations permettent non seulement de financer le développement des équipes et des compétitions, mais aussi de renforcer la visibilité de la discipline auprès du grand public. L’intégration des jeux vidéo dans le milieu scolaire, comme mentionné précédemment, s’inscrit également dans cette logique de structuration globale, visant à former une nouvelle génération d’esportifs et de professionnels du numérique, prêts à relever les défis de demain.

Les structures professionnelles, qu’il s’agisse d’équipes e-sportives, d’organisateurs d’événements ou de médias spécialisés, investissent dans le développement de cette filière. La formation de joueurs professionnels, le coaching, l’analyse de données, la gestion d’équipe, autant de domaines qui se professionnalisent pour répondre aux exigences d’une compétition de haut niveau. L’émergence de centres de formation dédiés à l’e-sport et de cursus universitaires liés au jeu vidéo témoigne de cette volonté de structurer la filière de manière durable et de professionnaliser les parcours. La France cherche à construire une base solide pour ses futurs champions et ses futurs professionnels de l’industrie.

Un Symbole National : Le Maillot de l’Équipe de France

L’évolution de l’e-sport en France prend une dimension particulièrement symbolique avec la présentation du nouveau maillot de l’équipe nationale. Pensé dans une démarche alliant les codes du gaming et une forte identité nationale, ce maillot incarne la volonté de positionner l’e-sport tricolore sur la scène internationale. L’intégration du coq français, emblème national par excellence, dans un design moderne et attrayant, vise à créer un sentiment de fierté et d’appartenance chez les joueurs et les supporters. Ce vêtement n’est pas qu’un simple uniforme ; il se veut un étendard, portant les valeurs de compétition, de performance et d’excellence à la française dans l’univers virtuel.

Cette initiative s’inscrit dans une dynamique plus large de valorisation de l’e-sport en France. La représentation nationale dans les compétitions internationales est un levier puissant pour structurer la discipline et attirer de nouveaux talents. Elle vise à renforcer la cohésion au sein de la communauté des joueurs et à susciter l’adhésion d’un public plus large. Le maillot devient ainsi un vecteur de communication fort, incarnant l’ambition française de jouer un rôle de premier plan sur la scène mondiale de l’e-sport.

Ce projet, soutenu par des acteurs majeurs comme Adidas, partenaire historique du sport français, témoigne de la maturité atteinte par l’e-sport dans le pays. Le choix d’associer une marque d’une telle renommée à l’équipe nationale d’e-sport souligne la crédibilité croissante de cette discipline auprès du grand public et des institutions. La conception du maillot, qui fait appel à une esthétique inspirée des univers ludiques tout en respectant les codes visuels du sport, est une illustration concrète de cette fusion entre le monde physique et le monde virtuel. L’objectif est clair : que ce maillot devienne un nouveau symbole de fierté nationale, à l’image des maillots des équipes de France dans les sports traditionnels.

L’Intégration des Jeux Vidéo à l’École : Une Volonté Gouvernementale

La reconnaissance de l’e-sport va au-delà des simples compétitions. Le gouvernement français a affirmé sa volonté d’intégrer les jeux vidéo dans le parcours éducatif, une démarche qui vise à exploiter le potentiel pédagogique de ces outils numériques. Des documents officiels révèlent une stratégie gouvernementale ambitieuse visant à développer les compétences numériques des jeunes à travers des approches innovantes. Cette initiative, malgré certaines oppositions, notamment au sein du ministère de la Santé, témoigne d’une vision tournée vers l’avenir, reconnaissant l’importance des jeux vidéo dans le paysage culturel et économique actuel.

Cette décision soulève évidemment des débats, notamment concernant les potentiels risques liés à une exposition excessive aux écrans et aux contenus vidéoludiques. La France se positionne ainsi comme un acteur pionnier dans l’exploration du potentiel pédagogique des jeux vidéo. L’idée n’est pas de faire du jeu vidéo une fin en soi, mais un moyen parmi d’autres d’enrichir l’expérience éducative et de développer des compétences essentielles comme la résolution de problèmes, la collaboration, la pensée critique et la créativité. Cependant, la stratégie gouvernementale semble axée sur une approche équilibrée, promouvant une utilisation saine et constructive des jeux vidéo. Source: / via Redington Cybersport.

La validation de cette intégration par Matignon, la résidence du Premier ministre, parachève une démarche gouvernementale qui se dessine depuis plusieurs années. Il ne s’agit pas de simplement autoriser les jeux vidéo dans les établissements scolaires, mais bien de les intégrer de manière réfléchie, en exploitant leurs vertus éducatives. Cela peut passer par le développement de jeux sérieux à des fins d’apprentissage, l’utilisation de la gamification pour rendre les cours plus interactifs, ou encore la sensibilisation aux enjeux de l’e-sport et de la culture numérique. L’objectif est de préparer les jeunes générations aux métiers de demain et de leur fournir les outils nécessaires pour naviguer dans un monde de plus en plus digitalisé.

Paris, Capitale Mondiale de l’Esport

L’organisation de cette “Coupe du monde d’esport” à Paris est le résultat d’une collaboration étroite entre les acteurs privés et publics. Les retombées attendues vont bien au-delà du simple spectacle sportif. Il s’agit de stimuler l’écosystème e-sportif national, de promouvoir le tourisme, de créer des emplois et de renforcer l’image de la France comme une nation innovante et tournée vers l’avenir. Elle témoigne de la volonté de la France de se positionner comme un leader mondial dans ce domaine en pleine croissance. Le succès de cet événement est une priorité nationale, avec l’ambition de “en faire un énorme succès populaire”, comme l’ont souligné les organisateurs.

La France s’apprête à accueillir un événement d’une ampleur sans précédent : la “Coupe du monde d’esport” à Paris en juillet. Cette compétition, la plus grande manifestation mondiale de jeux vidéo, représente une opportunité exceptionnelle pour la capitale française de s’affirmer comme une véritable capitale de l’e-sport. Le choix de Paris comme hôte, bien que motivé en partie par le contexte géopolitique actuel rendant d’autres lieux moins accessibles, est une formidable reconnaissance du dynamisme et de l’attractivité du secteur en France. Cet événement promet de rassembler les meilleurs joueurs et équipes du monde, ainsi que des milliers de spectateurs, générant un impact économique et culturel significatif.

La présence d’un financement d’une telle ampleur, provenant de l’Arabie saoudite, témoigne de l’intérêt mondial croissant pour l’e-sport et de sa capacité à attirer des investissements majeurs. Paris se trouve ainsi au centre de l’attention mondiale, avec la responsabilité d’offrir un cadre d’exception pour cet événement phare. L’organisation logistique, la sécurité, l’accueil des délégations et des fans, tout sera mis en œuvre pour faire de cette compétition un succès retentissant, consolidant la place de la France sur l’échiquier international de l’e-sport. Cet événement marque un tournant pour la perception et le développement de la discipline dans le pays.

Perspectives d’Avenir et Reconnaissance Globale

La professionnalisation continue de la filière, avec des investissements accrus dans la formation, l’encadrement et les infrastructures, permettra à la France de renforcer sa position sur la scène mondiale. Les succès des équipes nationales dans les différentes disciplines, qu’il s’agisse de League of Legends, Valorant ou d’autres jeux, alimenteront cette dynamique et inspireront les futures générations. Le maillot de l’équipe de France, symbole de fierté nationale, jouera un rôle crucial dans cette construction identitaire et dans la mobilisation des supporters.

L’avenir de l’e-sport en France s’annonce radieux, porté par une dynamique de reconnaissance institutionnelle et un engouement populaire grandissant. L’intégration des jeux vidéo à l’école et l’accueil de compétitions internationales majeures ne sont que les prémices d’une intégration encore plus profonde dans la société. Les Jeux Olympiques ont même commencé à explorer la possibilité d’inclure certaines disciplines e-sportives dans leur programme, signe d’une légitimité croissante aux yeux des instances sportives mondiales. Cette convergence entre le sport traditionnel et l’e-sport pourrait ouvrir de nouvelles perspectives fascinantes.

Les enjeux sont désormais multiples : assurer un développement éthique et durable de la discipline, prévenir les dérives potentielles, favoriser l’inclusion et garantir l’équité pour tous les compétiteurs. La France, avec sa vision intégrée de l’e-sport, de l’éducation aux grandes compétitions, est bien placée pour relever ces défis et continuer à écrire l’histoire de cette discipline en plein essor. L’alliance entre innovation technologique, passion du jeu et ambition sportive semble être la clé de voûte du succès à venir.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top