audiofield-8.x-1.x-dev/js/wavesurfer.builder.js

js/wavesurfer.builder.js
/**
* DO NOT EDIT THIS FILE.
* See the following change record for more information,
* https://www.drupal.org/node/2815083
* @preserve
**/

(function ($, Drupal, once) {
  'use strict';

  Drupal.AudiofieldWavesurfer = {};

  Drupal.AudiofieldWavesurfer.generate = function (context, file, settings) {
    var elements = once('generate-waveform', '#' + file.id, context);
    $.each(elements, function (index, wavecontainer) {
      var wavesurfer = WaveSurfer.create({
        container: '#' + $(wavecontainer).attr('id') + ' .waveform',
        backend: settings.backend,
        audioRate: settings.audioRate,
        autoCenter: settings.autoCenter,
        barGap: settings.barGap,
        barHeight: settings.barHeight,
        barWidth: settings.barWidth,
        cursorColor: settings.cursorColor,
        cursorWidth: settings.cursorWidth,
        forceDecode: settings.forceDecode,
        normalize: settings.normalize,
        progressColor: settings.progressColor,
        responsive: settings.responsive,
        waveColor: settings.waveColor
      });

      if (typeof file.peakpath !== 'undefined') {
        fetch(file.peakpath)
          .then(response => {
            if (!response.ok) {
              throw new Error("HTTP error " + response.status);
            }
            return response.json();
          })
          .then(peaks => {
            Drupal.AudiofieldWavesurfer.normalizePeaks(peaks);

            wavesurfer.load(file.path, peaks.data);
            $(wavecontainer).find('.player-button.playpause').html('Play');
          })
          .catch((e) => {
            wavesurfer.load(file.path);
            console.error('error', e);
          });
      }
      else {
        wavesurfer.load(file.path);
      }

      wavesurfer.setVolume(settings.volume);

      $(wavecontainer).find('.player-button.playpause').on('click', function (event) {
        Drupal.AudiofieldWavesurfer.PlayPause(wavecontainer, wavesurfer);
      });

      $(wavecontainer).find('.volume').on('change', function (event) {
        wavesurfer.setVolume($(event.currentTarget).val() / 10);
      });

      if (!!settings.autoplay) {
        wavesurfer.on('ready', wavesurfer.play.bind(wavesurfer));
      }
      Drupal.AudiofieldWavesurfer.instance = wavesurfer;
    });
  };

  Drupal.AudiofieldWavesurfer.normalizePeaks = function (peaks) {
    var max = peaks.data[0], min = peaks.data[0];
    var X, scale;
    for (X = 1; X < peaks.data.length; X++) {
      if (max < peaks.data[X]) {
        max = peaks.data[X];
      }
      if (min > peaks.data[X]) {
        min = peaks.data[X];
      }
    }
    scale = 1.0 / Math.max(Math.abs(min), Math.abs(max));
    for (X = 0; X < peaks.data.length; X++) {
      peaks.data[X] *= scale;
    }
  }

  Drupal.AudiofieldWavesurfer.generatePlaylist = function (context, settings) {
    var elements = once('generate-waveform', '#wavesurfer_playlist-' + settings.unique_id, context);
    $.each(elements, function (index, wavecontainer) {
      var wavesurfer = WaveSurfer.create({
        container: '#' + $(wavecontainer).attr('id') + ' .waveform',
        audioRate: settings.audioRate,
        autoCenter: settings.autoCenter,
        barGap: settings.barGap,
        barHeight: settings.barHeight,
        barWidth: settings.barWidth,
        cursorColor: settings.cursorColor,
        cursorWidth: settings.cursorWidth,
        forceDecode: settings.forceDecode,
        normalize: settings.normalize,
        progressColor: settings.progressColor,
        responsive: settings.responsive,
        waveColor: settings.waveColor
      });

      wavesurfer.setVolume(settings.volume);

      var first = $(wavecontainer).find('.playlist .track').first();

      var label = $(wavecontainer).find('label').first();
      label.html('Playing: ' + first.html());

      Drupal.AudiofieldWavesurfer.Load(wavecontainer, wavesurfer, first, false);

      $(wavecontainer).find('.player-button.playpause').on('click', function (event) {
        Drupal.AudiofieldWavesurfer.PlayPause(wavecontainer, wavesurfer);
      });

      $(wavecontainer).find('.player-button.next').on('click', function (event) {
        Drupal.AudiofieldWavesurfer.Next(wavecontainer, wavesurfer);
      });
      $(wavecontainer).find('.player-button.previous').on('click', function (event) {
        Drupal.AudiofieldWavesurfer.Previous(wavecontainer, wavesurfer);
      });

      $(wavecontainer).find('.playlist .track').on('click', function (event) {
        if ($(this).hasClass('playing')) {
          Drupal.AudiofieldWavesurfer.PlayPause(wavecontainer, wavesurfer);
        }
        else {
          Drupal.AudiofieldWavesurfer.Load(wavecontainer, wavesurfer, $(event.currentTarget));
        }
      });

      $(wavecontainer).find('.volume').on('change', function (event) {
        wavesurfer.setVolume($(event.currentTarget).val() / 10);
      });

      if (!!settings.autoplay) {
        wavesurfer.on('ready', wavesurfer.play.bind(wavesurfer));
      }

      if (settings.autoplayNextTrack) {
        wavesurfer.on('finish', function (event) {
          Drupal.AudiofieldWavesurfer.Next(wavecontainer, wavesurfer);
        });
      }

      Drupal.AudiofieldWavesurfer.instance = wavesurfer;
    });
  };

  Drupal.AudiofieldWavesurfer.PlayPause = function (wavecontainer, wavesurfer) {
    wavesurfer.playPause();
    var button = $(wavecontainer).find('.player-button.playpause');
    if (wavesurfer.isPlaying()) {
      $(wavecontainer).addClass('playing');
      button.html('Pause');
    } else {
      $(wavecontainer).removeClass('playing');
      button.html('Play');
    }
  };

  Drupal.AudiofieldWavesurfer.Load = function (wavecontainer, wavesurfer, track, playonload = true) {

    var peakpath = track.attr('data-peakpath');
    if (peakpath !== '') {
      fetch(peakpath)
        .then(response => {
          if (!response.ok) {
            throw new Error("HTTP error " + response.status);
          }
          return response.json();
        })
        .then(peaks => {
          Drupal.AudiofieldWavesurfer.normalizePeaks(peaks);

          wavesurfer.load(track.attr('data-src'), peaks.data);
        })
        .catch((e) => {
          wavesurfer.load(track.attr('data-src'));
          console.error('error', e);
        });
    }
    else {
      wavesurfer.load(track.attr('data-src'));
    }

    wavesurfer.on('ready', function (event) {
      if (playonload) {
        $(wavecontainer).removeClass('playing');
        $(wavecontainer).addClass('playing');
        $(wavecontainer).find('.player-button.playpause').html('Pause');
        wavesurfer.play();
      }
    });

    $(wavecontainer).find('.track').removeClass('playing');

    track.addClass('playing');

    $(wavecontainer).find('label').first().html('Playing: ' + track.html());
  };

  Drupal.AudiofieldWavesurfer.Next = function (wavecontainer, wavesurfer) {
    if (wavesurfer.isPlaying()) {
      Drupal.AudiofieldWavesurfer.PlayPause(wavecontainer, wavesurfer);
    }

    var track = $(wavecontainer).find('.track.playing').next();
    if (typeof track.attr('data-src') === 'undefined') {
      track = $(wavecontainer).find('.track').first();
    }

    Drupal.AudiofieldWavesurfer.Load(wavecontainer, wavesurfer, track);
  };

  Drupal.AudiofieldWavesurfer.Previous = function (wavecontainer, wavesurfer) {
    if (wavesurfer.isPlaying()) {
      Drupal.AudiofieldWavesurfer.PlayPause(wavecontainer, wavesurfer);
    }

    var track = $(wavecontainer).find('.track.playing').prev();
    if (typeof track.attr('data-src') === 'undefined') {
      track = $(wavecontainer).find('.track').last();
    }

    Drupal.AudiofieldWavesurfer.Load(wavecontainer, wavesurfer, track);
  };

  Drupal.behaviors.audiofieldwavesurfer = {
    attach: function attach(context, settings) {
      $.each(settings.audiofieldwavesurfer, function (key, settingEntry) {
        if (settingEntry.playertype === 'default') {
          $.each(settingEntry.files, function (key2, file) {
            Drupal.AudiofieldWavesurfer.generate(context, file, settingEntry);
          });
        } else if (settingEntry.playertype === 'playlist') {
          Drupal.AudiofieldWavesurfer.generatePlaylist(context, settingEntry);
        }
      });
    }
  };
})(jQuery, Drupal, once);

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc