getSlideNumber()

in js/controllers/slidenumber.js [55:97]


	getSlideNumber( slide = this.Reveal.getCurrentSlide() ) {

		let config = this.Reveal.getConfig();
		let value;
		let format = 'h.v';

		if ( typeof config.slideNumber === 'function' ) {
			value = config.slideNumber( slide );
		} else {
			// Check if a custom number format is available
			if( typeof config.slideNumber === 'string' ) {
				format = config.slideNumber;
			}

			// If there are ONLY vertical slides in this deck, always use
			// a flattened slide number
			if( !/c/.test( format ) && this.Reveal.getHorizontalSlides().length === 1 ) {
				format = 'c';
			}

			// Offset the current slide number by 1 to make it 1-indexed
			let horizontalOffset = slide && slide.dataset.visibility === 'uncounted' ? 0 : 1;

			value = [];
			switch( format ) {
				case 'c':
					value.push( this.Reveal.getSlidePastCount( slide ) + horizontalOffset );
					break;
				case 'c/t':
					value.push( this.Reveal.getSlidePastCount( slide ) + horizontalOffset, '/', this.Reveal.getTotalSlides() );
					break;
				default:
					let indices = this.Reveal.getIndices( slide );
					value.push( indices.h + horizontalOffset );
					let sep = format === 'h/v' ? '/' : '.';
					if( this.Reveal.isVerticalSlide( slide ) ) value.push( sep, indices.v + 1 );
			}
		}

		let url = '#' + this.Reveal.location.getHash( slide );
		return this.formatNumber( value[0], value[1], value[2], url );

	}