Mediawiki:common.js

Вернуться

Строка 1764: Строка 1764:
    loaded: false,
    loaded: false,
    loading: false,
    loading: false,
    callbacks: [],
     
     
    init: function() {
    init: function() {
Строка 1790: Строка 1791:
            'transition: all 0.3s;';
            'transition: all 0.3s;';
         
         
        var self = this;
        button.addEventListener('mouseenter', function() {
        button.addEventListener('mouseenter', function() {
            this.style.transform = 'scale(1.05)';
            this.style.transform = 'scale(1.05)';
Строка 1801: Строка 1803:
         
         
        button.addEventListener('click', function() {
        button.addEventListener('click', function() {
            FireworksModule.toggleFireworks();
            self.toggleFireworks();
        });
        });
         
         
Строка 1808: Строка 1810:
     
     
    loadFireworks: function(callback) {
    loadFireworks: function(callback) {
        if (this.loaded && window.Fireworks) {
        // Проверяем разные варианты экспорта библиотеки
        if (this.loaded && (window.Fireworks || (window.Fireworks && window.Fireworks.default))) {
            if (callback) callback();
            if (callback) callback();
            return;
            return;
Строка 1814: Строка 1817:
         
         
        if (callback) {
        if (callback) {
            if (!this.callbacks) this.callbacks = [];
            this.callbacks.push(callback);
            this.callbacks.push(callback);
        }
        }
Строка 1823: Строка 1825:
        var self = this;
        var self = this;
         
         
        // Загружаем библиотеку fireworks.js
        // Загружаем библиотеку fireworks.js через UMD версию
        var script = document.createElement('script');
        var script = document.createElement('script');
        script.type = 'module';
        script.src = 'https://unpkg.com/fireworks-js@2/dist/index.umd.js';
        script.src = 'https://cdn.jsdelivr.net/npm/fireworks-js@2/dist/index.umd.js';
        script.onload = function() {
        script.onload = function() {
            self.loaded = true;
            self.loaded = true;
            self.loading = false;
            self.loading = false;
             
             
            if (self.callbacks) {
            // Вызываем все колбэки
                self.callbacks.forEach(function(cb) { cb(); });
            self.callbacks.forEach(function(cb) { cb(); });
                self.callbacks = [];
            self.callbacks = [];
            }
           
            if (callback) callback();
        };
        };
        script.onerror = function() {
        script.onerror = function() {
            console.error('Ошибка загрузки fireworks.js');
            console.error('Ошибка загрузки fireworks.js');
            self.loading = false;
            self.loading = false;
            self.callbacks = [];
        };
        };
         
         
Строка 1883: Строка 1882:
            }
            }
        }
        }
    },
   
    getFireworksConstructor: function() {
        // Пробуем разные варианты доступа к конструктору
        if (window.Fireworks && typeof window.Fireworks === 'function') {
            return window.Fireworks;
        }
        if (window.Fireworks && window.Fireworks.default && typeof window.Fireworks.default === 'function') {
            return window.Fireworks.default;
        }
        if (window.fireworks && typeof window.fireworks === 'function') {
            return window.fireworks;
        }
        // Если библиотека экспортируется по-другому
        if (typeof Fireworks !== 'undefined' && typeof Fireworks === 'function') {
            return Fireworks;
        }
        return null;
    },
    },
     
     
Строка 1903: Строка 1920:
            }
            }
             
             
            if (!self.fireworks && window.Fireworks) {
            var FireworksConstructor = self.getFireworksConstructor();
                self.fireworks = new window.Fireworks(self.container, {
           
                    autoresize: true,
            if (!FireworksConstructor) {
                    opacity: 0.5,
                console.error('Не удалось найти конструктор Fireworks. Проверьте загрузку библиотеки.');
                    acceleration: 1.05,
                console.log('Доступные объекты:', {
                    friction: 0.97,
                    'window.Fireworks': window.Fireworks,
                    gravity: 1.5,
                    'window.Fireworks.default': window.Fireworks && window.Fireworks.default,
                    particles: 50,
                    'window.fireworks': window.fireworks
                    traceLength: 3,
                    traceSpeed: 10,
                    explosion: 5,
                    intensity: 30,
                    flickering: 50,
                    lineStyle: 'round',
                    hue: { min: 0, max: 360 },
                    delay: { min: 15, max: 30 },
                    rocketsPoint: { min: 50, max: 50 },
                    lineWidth: { explosion: { min: 1, max: 3 }, trace: { min: 1, max: 2 } },
                    brightness: { min: 50, max: 80 },
                    decay: { min: 0.015, max: 0.03 },
                    mouse: { click: false, move: false, max: 1 }
                });
                });
                return;
            }
           
            if (!self.fireworks) {
                try {
                    self.fireworks = new FireworksConstructor(self.container, {
                        autoresize: true,
                        opacity: 0.5,
                        acceleration: 1.05,
                        friction: 0.97,
                        gravity: 1.5,
                        particles: 50,
                        traceLength: 3,
                        traceSpeed: 10,
                        explosion: 5,
                        intensity: 30,
                        flickering: 50,
                        lineStyle: 'round',
                        hue: { min: 0, max: 360 },
                        delay: { min: 15, max: 30 },
                        rocketsPoint: { min: 50, max: 50 },
                        lineWidth: {
                            explosion: { min: 1, max: 3 },
                            trace: { min: 1, max: 2 }
                        },
                        brightness: { min: 50, max: 80 },
                        decay: { min: 0.015, max: 0.03 },
                        mouse: { click: false, move: false, max: 1 }
                    });
                } catch (e) {
                    console.error('Ошибка создания экземпляра Fireworks:', e);
                    return;
                }
            }
            }