123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- import { enterFullscreen } from '../utils/util.js'
- /**
- * Handles all reveal.js keyboard interactions.
- */
- export default class Location {
- constructor( Reveal ) {
- this.Reveal = Reveal;
- }
- /**
- * Return a hash URL that will resolve to the given slide location.
- *
- * @param {HTMLElement} [slide=currentSlide] The slide to link to
- */
- getHash( slide = this.Reveal.getCurrentSlide() ) {
- let url = '/';
- // Attempt to create a named link based on the slide's ID
- let id = slide ? slide.getAttribute( 'id' ) : null;
- if( id ) {
- id = encodeURIComponent( id );
- }
- let index = this.Reveal.getIndices( slide );
- if( !this.Reveal.getConfig().fragmentInURL ) {
- index.f = undefined;
- }
- // If the current slide has an ID, use that as a named link,
- // but we don't support named links with a fragment index
- if( typeof id === 'string' && id.length && index.f === undefined ) {
- url = '/' + id;
- }
- // Otherwise use the /h/v index
- else {
- let hashIndexBase = this.Reveal.getConfig().hashOneBasedIndex ? 1 : 0;
- if( index.h > 0 || index.v > 0 || index.f !== undefined ) url += index.h + hashIndexBase;
- if( index.v > 0 || index.f !== undefined ) url += '/' + (index.v + hashIndexBase );
- if( index.f !== undefined ) url += '/' + index.f;
- }
- return url;
- }
- }
|