codevise/pageflow

View on GitHub
entry_types/paged/packages/pageflow-paged/src/frontend/boot.js

Summary

Maintainability
A
1 hr
Test Coverage
import $ from 'jquery';
import {Audio, events, browser, consent} from 'pageflow/frontend';
import {links} from './links';
import {nativeScrolling} from './nativeScrolling';
import {delayedStart} from './delayedStart';
import {widgetTypes} from './widgetTypes';
import {phoneLandscapeFullscreen} from './phoneLandscapeFullscreen';
import {state} from './state';
import {SeedEntryData} from './SeedEntryData';
import {FocusOutline} from './FocusOutline';
import {Slideshow} from './Slideshow';
import {readyDeferred} from './ready';
import {Visited} from './Visited';
import {pageType} from './pageType';

var pagePreloaded = new $.Deferred(function(pagePreloadedDeferred) {
  $(document).one('pagepreloaded', pagePreloadedDeferred.resolve);
}).promise();

window.onload = function() {
  browser.detectFeatures().then(function() {
    var slideshow = $('[data-role=slideshow]');
    var body = $('body');

    Visited.setup();

    pagePreloaded.then(function() {
      readyDeferred.resolve();
      events.trigger('ready');
    });

    slideshow.each(function() {
      events.trigger('seed:loaded');

      state.entryData = new SeedEntryData(
        state.seed
      );

      Audio.setup({
        audioFiles: state.audioFiles
      });

      Slideshow.setup({
        element: $(this),
        pages: state.pages,
        enabledFeatureNames: state.enabledFeatureNames,

        beforeFirstUpdate: function() {
          $('.header').header({slideshow: state.slides});
          $('.overview').overview();
          $('.multimedia_alert').multimediaAlert();

          pageType.invokeInitializers(state.pages);
          widgetTypes.enhance(body);
          delayedStart.perform();
          phoneLandscapeFullscreen();
        }
      });

      consent.closeVendorRegistration();
    });

    links.setup();
    FocusOutline.setup(body);
    nativeScrolling.preventScrollingOnEmbed(slideshow);
  });
};