Skip to content
VistaView v2

Lifecycle Functions

Lifecycle functions allow you to override VistaView’s default behavior at key stages.

Lifecycle Function Types: See Types for:

import { vistaView, init } from 'vistaview';

vistaView({
  elements: '#gallery > a',
  initFunction: (vistaView) => {
    // Call default initialization
    init(vistaView);

    // Add custom initialization
    console.log('Custom initialization');
    console.log('Total images:', vistaView.state.elmLength);
  },
});
import { vistaView, imageSetup } from 'vistaview';

vistaView({
  elements: '#gallery > a',
  imageSetupFunction: (data, vistaView) => {
    // Call default setup
    imageSetup(data, vistaView);

    // Custom setup logic
    console.log('Setting up image:', data.index.to);
  },
});
import { vistaView, transition } from 'vistaview';

vistaView({
  elements: '#gallery > a',
  transitionFunction: (data, abortSignal, vistaView) => {
    // Use default transition
    return transition(data, abortSignal, vistaView);
  },
});

Custom fade transition:

vistaView({
  elements: '#gallery > a',
  transitionFunction: (data, abortSignal, vistaView) => {
    const elements = data.htmlElements;

    if (elements.from && elements.to) {
      const fromElms = elements.from;
      const toElms = elements.to;

      // Fade out old images
      fromElms.forEach((elm) => {
        elm.style.transition = 'opacity 300ms ease';
        elm.style.opacity = '0';
      });

      // Fade in new images
      toElms.forEach((elm) => {
        elm.style.opacity = '0';
        elm.style.transition = 'opacity 300ms ease';
        setTimeout(() => (elm.style.opacity = '1'), 50);
      });

      const transitionEnded = new Promise<void>((resolve) => {
        setTimeout(resolve, 350);
      });

      return {
        cleanup: () => {},
        transitionEnded,
      };
    }
  },
});
import { vistaView, close } from 'vistaview';

vistaView({
  elements: '#gallery > a',
  closeFunction: (vistaView) => {
    console.log('Custom close logic');

    // Call default close
    close(vistaView);
  },
});

These functions implement the default behavior and can be imported for use in custom function overrides:

Default initialization function.

import { init } from 'vistaview';

vistaView({
  elements: '#gallery > a',
  initFunction: (vistaView) => {
    init(vistaView);
    // Add custom logic after default init
  },
});

Default open function.

import { open } from 'vistaview';

Default close function.

import { close } from 'vistaview';

vistaView({
  elements: '#gallery > a',
  closeFunction: (vistaView) => {
    // Custom logic before close
    console.log('Closing lightbox');

    // Call default close
    close(vistaView);
  },
});

Default transition animation function.

import { transition } from 'vistaview';

vistaView({
  elements: '#gallery > a',
  transitionFunction: (data, abortSignal, vistaView) => {
    return transition(data, abortSignal, vistaView);
  },
});

Default image setup function.

import { imageSetup } from 'vistaview';

vistaView({
  elements: '#gallery > a',
  imageSetupFunction: (data, vistaView) => {
    imageSetup(data, vistaView);
    // Add custom setup logic
  },
});

Default configuration options object. See VistaOpt for all configuration options.

import { DefaultOptions } from 'vistaview';

const DefaultOptions: VistaOpt = {
  animationDurationBase: 333,
  maxZoomLevel: 2,
  preloads: 1,
  keyboardListeners: true,
  arrowOnSmallScreens: false,
  rapidLimit: 222,
  controls: {
    topLeft: ['indexDisplay'],
    topRight: ['zoomIn', 'zoomOut', 'close'],
    bottomLeft: ['description'],
  },
};
GitHubnpmllms.txtContext7

© 2026 • MIT License