Full Code of alvarotrigo/fullPage.js for AI

master 49f15effa7b1 cached
265 files
2.2 MB
596.3k tokens
1250 symbols
1 requests
Download .txt
Showing preview only (2,381K chars total). Download the full file or copy to clipboard to get everything.
Repository: alvarotrigo/fullPage.js
Branch: master
Commit: 49f15effa7b1
Files: 265
Total size: 2.2 MB

Directory structure:
gitextract_6w1ryxzd/

├── . jshintrc
├── .gitattributes
├── .github/
│   ├── ISSUE_TEMPLATE.md
│   └── PULL_REQUEST_TEMPLATE.md
├── .gitignore
├── BACKERS.md
├── CONTRIBUTING.md
├── FUNDING.yml
├── LICENSE
├── README.md
├── SECURITY.md
├── bower.json
├── dist/
│   ├── fullpage.css
│   └── fullpage.js
├── examples/
│   ├── active-slide.html
│   ├── angular-fullpage.html
│   ├── auto-height.html
│   ├── autoplay-video-and-audio.html
│   ├── background-video.html
│   ├── backgrounds-fixed.html
│   ├── backgrounds.html
│   ├── callbacks.html
│   ├── cards.html
│   ├── cinematic.html
│   ├── continuous-horizontal.html
│   ├── continuous-vertical.html
│   ├── css3.html
│   ├── custom-arrows.html
│   ├── drag-and-move.html
│   ├── drop-effect.html
│   ├── easing-css3.html
│   ├── easing-js.html
│   ├── effects.html
│   ├── examples.css
│   ├── examples.js
│   ├── fading-effect.html
│   ├── fixed-headers.html
│   ├── gradient-backgrounds.html
│   ├── hide-sections.html
│   ├── imgs/
│   │   ├── copyright.txt
│   │   ├── flowers.webm
│   │   └── horse.ogg
│   ├── interlocked-slides.html
│   ├── jquery-adapter.html
│   ├── lazy-load.html
│   ├── looping.html
│   ├── methods.html
│   ├── module_loaders/
│   │   ├── browserify-example/
│   │   │   ├── README.md
│   │   │   ├── dist/
│   │   │   │   ├── index.html
│   │   │   │   └── main.js
│   │   │   ├── package.json
│   │   │   └── src/
│   │   │       └── index.js
│   │   ├── requirejs-example/
│   │   │   ├── README.md
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   └── src/
│   │   │       ├── main.js
│   │   │       └── require.config.js
│   │   └── webpack-example/
│   │       ├── .babelrc
│   │       ├── README.md
│   │       ├── dist/
│   │       │   ├── index.html
│   │       │   └── main.js
│   │       ├── package.json
│   │       ├── src/
│   │       │   └── index.js
│   │       └── webpack.config.js
│   ├── navigation-horizontal.html
│   ├── navigation-tooltips.html
│   ├── navigation-vertical.html
│   ├── no-anchor.html
│   ├── normal-scroll.html
│   ├── normalScrollElements.html
│   ├── observer.html
│   ├── offset-sections.html
│   ├── one-section.html
│   ├── parallax.html
│   ├── react-fullpage.html
│   ├── reset-sliders.html
│   ├── responsive-auto-height.html
│   ├── responsive-height.html
│   ├── responsive-slides.html
│   ├── responsive-width.html
│   ├── rtl.html
│   ├── scroll-after-fullpage.html
│   ├── scroll-horizontally.html
│   ├── scrollBar.html
│   ├── scrollOverflow-reset.html
│   ├── scrollOverflow.html
│   ├── scrolling-speed.html
│   ├── simple.html
│   ├── skipIntermediateItems.html
│   ├── trigger-animations.html
│   ├── vue-fullpage.html
│   └── water-effect.html
├── gulp/
│   └── build.js
├── gulpfile.js
├── lang/
│   ├── brazilian-portuguese/
│   │   ├── README.md
│   │   ├── how-to-activate-fullpage-extension.md
│   │   └── parallax-extension.md
│   ├── chinese/
│   │   ├── README.md
│   │   ├── how-to-activate-fullpage-extension.md
│   │   └── parallax-extensionmd.md
│   ├── french/
│   │   ├── README.md
│   │   ├── how-to-activate-fullpage-extension.md
│   │   └── parallax-extension.md
│   ├── japanese/
│   │   ├── README.md
│   │   ├── how-to-activate-fullpage-extension.md
│   │   └── parallax-extension.md
│   ├── korean/
│   │   ├── README.md
│   │   ├── how-to-activate-fullpage-extension.md
│   │   └── parallax-extension.md
│   ├── russian/
│   │   ├── README.md
│   │   ├── how-to-activate-fullpage-extension.md
│   │   └── parallax-extension.md
│   ├── spanish/
│   │   ├── README.md
│   │   ├── how-to-activate-fullpage-extension.md
│   │   └── parallax-extension.md
│   └── website/
│       ├── br.yml
│       ├── en.yml
│       ├── es.yml
│       ├── fr.yml
│       ├── ja.yml
│       ├── ko.yml
│       ├── ru.yml
│       └── zh.yml
├── package.json
├── rollup.config.js
├── src/
│   ├── css/
│   │   └── fullpage.css
│   ├── js/
│   │   ├── anchors/
│   │   │   ├── getAnchorsURL.js
│   │   │   ├── index.js
│   │   │   ├── setPageStatus.js
│   │   │   └── setRecordHistory.js
│   │   ├── app.js
│   │   ├── arrows.js
│   │   ├── autoScrolling.js
│   │   ├── beyondFullpage/
│   │   │   ├── beyondFullPageHandler.js
│   │   │   ├── index.js
│   │   │   ├── scrollBeyondFullPage.js
│   │   │   └── wheelDataHandler.js
│   │   ├── bindings.js
│   │   ├── callbacks/
│   │   │   ├── fireCallback.js
│   │   │   ├── fireCallbacksOncePerScroll.js
│   │   │   ├── nullOrSection.js
│   │   │   └── nullOrSlide.js
│   │   ├── common/
│   │   │   ├── addTableClass.js
│   │   │   ├── cache.js
│   │   │   ├── constants.js
│   │   │   ├── eventEmitter.js
│   │   │   ├── events.js
│   │   │   ├── getSectionByAnchor.js
│   │   │   ├── isScrollAllowed.js
│   │   │   ├── item.js
│   │   │   ├── options.js
│   │   │   ├── scrollTo.js
│   │   │   ├── selectors.js
│   │   │   ├── silentScroll.js
│   │   │   ├── state.js
│   │   │   ├── supportsPassive.js
│   │   │   ├── tick.js
│   │   │   ├── transformContainer.js
│   │   │   ├── utils.js
│   │   │   └── utilsFP.js
│   │   ├── console.js
│   │   ├── dom/
│   │   │   ├── addInternalSelectors.js
│   │   │   ├── afterRenderActions.js
│   │   │   ├── destroyStructure.js
│   │   │   └── prepareDom.js
│   │   ├── dynamic.js
│   │   ├── easing.js
│   │   ├── fitToSection.js
│   │   ├── fullpage.js
│   │   ├── infiniteScroll/
│   │   │   ├── createInfiniteSections.js
│   │   │   ├── fixPosition.js
│   │   │   └── getPositions.js
│   │   ├── instance.js
│   │   ├── jquery-adaptor.js
│   │   ├── keyboard/
│   │   │   ├── index.js
│   │   │   └── setKeyboardScrolling.js
│   │   ├── lazyLoad/
│   │   │   ├── lazyLoad.js
│   │   │   └── lazyLoadOthers.js
│   │   ├── media.js
│   │   ├── menu/
│   │   │   ├── activateMenuAndNav.js
│   │   │   ├── index.js
│   │   │   └── styleMenu.js
│   │   ├── mixed/
│   │   │   ├── warnings.js
│   │   │   └── waterMark.js
│   │   ├── mouse/
│   │   │   ├── move.js
│   │   │   └── wheel.js
│   │   ├── nav/
│   │   │   ├── getBulletLinkName.js
│   │   │   ├── index.js
│   │   │   ├── sections.js
│   │   │   └── slides.js
│   │   ├── normalScrollElements.js
│   │   ├── optionsDefault.js
│   │   ├── polyfills/
│   │   │   ├── array.find.js
│   │   │   ├── array.foreach.js
│   │   │   ├── array.from.js
│   │   │   ├── index.js
│   │   │   ├── object.assign.js
│   │   │   └── string.padStart.js
│   │   ├── resize.js
│   │   ├── responsive.js
│   │   ├── scroll/
│   │   │   ├── index.js
│   │   │   ├── moveSectionDown.js
│   │   │   ├── moveSectionUp.js
│   │   │   ├── moveTo.js
│   │   │   ├── scrollHandler.js
│   │   │   ├── scrollPage.js
│   │   │   ├── scrollPageAndSlide.js
│   │   │   ├── scrollToAnchor.js
│   │   │   ├── scrolling.js
│   │   │   ├── setAllowScrolling.js
│   │   │   ├── silentMove.js
│   │   │   └── skipIntermediateItems.js
│   │   ├── scrolloverflow.js
│   │   ├── sections.js
│   │   ├── slides/
│   │   │   ├── index.js
│   │   │   ├── landscapeScroll.js
│   │   │   ├── moveSlide.js
│   │   │   ├── scrollSlider.js
│   │   │   ├── silentLandscapeScroll.js
│   │   │   └── styleSlides.js
│   │   ├── speed.js
│   │   ├── stateClasses.js
│   │   ├── stateUpdates.js
│   │   └── touch.js
│   └── jsconfig.json
├── tests/
│   ├── index.html
│   ├── unit/
│   │   ├── arrows.js
│   │   ├── bigSectionsDestination.js
│   │   ├── callbacks.js
│   │   ├── callbacksV3.js
│   │   ├── continuousVertical.js
│   │   ├── destroy.js
│   │   ├── displayWarnings.js
│   │   ├── easingcss3.js
│   │   ├── fitToSection.js
│   │   ├── fixedElements.js
│   │   ├── keyboardScrolling.js
│   │   ├── lazyload.js
│   │   ├── lockAnchors.js
│   │   ├── loopBottom.js
│   │   ├── loopTop.js
│   │   ├── menu.js
│   │   ├── moveSectionDown.js
│   │   ├── moveSectionUp.js
│   │   ├── moveSlideLeft.js
│   │   ├── moveSlideRight.js
│   │   ├── moveTo.js
│   │   ├── nav.js
│   │   ├── normalScrollElements.js
│   │   ├── paddings.js
│   │   ├── recordHistory.js
│   │   ├── responsiveHeight.js
│   │   ├── responsiveWidth.js
│   │   ├── scrollBar.js
│   │   ├── scrollingSpeed.js
│   │   ├── sectionsColor.js
│   │   ├── selectors.js
│   │   ├── setAllowScrolling.js
│   │   ├── setAutoScrolling.js
│   │   ├── silentMoveTo.js
│   │   ├── slidesNavigation.js
│   │   └── verticalCentered.js
│   └── utils.js
├── types/
│   └── index.d.ts
└── vendors/
    └── easings.js

================================================
FILE CONTENTS
================================================

================================================
FILE: . jshintrc
================================================
{
    "esversion": 6,
}

================================================
FILE: .gitattributes
================================================
examples/* linguist-vendored

================================================
FILE: .github/ISSUE_TEMPLATE.md
================================================
### Description

### Link to isolated reproduction with no external CSS / JS
[Ideally in jsfiddle.net (https://jsfiddle.net/alvarotrigo/ea17skjr) or codepen.io (https://codepen.io/alvarotrigo/pen/qqabrp), links to personal websites won't be reviewed unless isolated. Reported issues without a reproduction might get closed.]

### Steps to reproduce it
1. [First step]
2. [Second step]
3. [and so on...]

### Versions 
[Browser, operating system, device, ...]


================================================
FILE: .github/PULL_REQUEST_TEMPLATE.md
================================================
1. Make sure to commit it to the `dev` branch!
2. Read https://github.com/alvarotrigo/fullPage.js/wiki/Contributing-to-fullpage.js


================================================
FILE: .gitignore
================================================
.DS_Store
.idea
.ignore/
.vscode/*
.history/
bower_components/
node_modules/
**/node_modules/
package-lock.json
src/fullpage.extensions.js
src/js-extensions/**
src/js-limited/**
src/css-limited/**
src/js/mixed/index.js
dist/fullpage.extensions.js
dist/fullpage.limited.js
dist/fullpage.limited.min.js
dist/fullpage.limited.min.css
examples/bug**
gulp/secret.js
build/**
local/**
rollup.ext.config.js
rollup.limited.config.js

================================================
FILE: BACKERS.md
================================================
# Sponsors & Backers

fullPage.js is being developed and maintained by [Alvaro Trigo](https://twitter.com/imac2).
Any help you can provide for its development and maintenance over time will be appreciated!

Here's the list of the persons/companies which are currently contributing to fullPage.js.
Thanks for it!

Want to be in the list? [Contact me](https://alvarotrigo.com/#contact) | [Become a patreon](https://www.patreon.com/fullpagejs)

## Bronze Sponsor ($30+ / month)

### Companies
<!-- bronce start-->
<table>
  <tbody>
    <tr>
      <td align="center" valign="middle">
        <a href="https://codeless.co" target="_blank">
          <img src="http://wallpapers-for-ipad.com/fullpage/imgs3/logos/codeless.png" alt="Codeless" title="Codeless" aria-label="Codeless">
        </a>
      </td>
      <td align="center" valign="middle">
        <a href="https://www.stackpath.com/" target="_blank" rel="nofollow">
          <img src="http://wallpapers-for-ipad.com/fullpage/imgs3/logos/stackpath3.png">
        </a>
      </td>
      <td align="center" valign="middle">
        <a href="http://www.browserstack.com/" target="_blank" rel="nofollow">
          <img src="http://wallpapers-for-ipad.com/fullpage/imgs3/logos/browserstack3.png">
        </a>
      </td>
      <td align="center" valign="middle">
        <a href="https://codepen.com" target="_blank" rel="nofollow">
          <img src="http://wallpapers-for-ipad.com/fullpage/imgs3/logos/codepen3.png">
        </a>
      </td>
    </tr>
  </tbody>
</table>
<!-- bronce end-->

================================================
FILE: CONTRIBUTING.md
================================================
## Contributing to fullpage.js

Your contributions to the project are very welcome. If you would like to fix a bug or propose a new feature, you can submit a Pull Request.

Please make sure you follow these points:

- Use the `dev` branch to commit your pull requests. 
- Do not edit files in `dist/` directory
- If the pull request is related with an issue, please name the issue number in the comments (eg: #16)
- Please prefer clarity over brevity in all cases (variable names, conditions, functions...)
- Describe the problem in the Pull Request description (of course you would do it, why do I mention that?)

Thank you for your commitment!

================================================
FILE: FUNDING.yml
================================================
github: alvarotrigo

================================================
FILE: LICENSE
================================================
                    GNU GENERAL PUBLIC LICENSE
                       Version 3, 29 June 2007

 Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

                            Preamble

  The GNU General Public License is a free, copyleft license for
software and other kinds of works.

  The licenses for most software and other practical works are designed
to take away your freedom to share and change the works.  By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users.  We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors.  You can apply it to
your programs, too.

  When we speak of free software, we are referring to freedom, not
price.  Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.

  To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights.  Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.

  For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received.  You must make sure that they, too, receive
or can get the source code.  And you must show them these terms so they
know their rights.

  Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.

  For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software.  For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.

  Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so.  This is fundamentally incompatible with the aim of
protecting users' freedom to change the software.  The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable.  Therefore, we
have designed this version of the GPL to prohibit the practice for those
products.  If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.

  Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary.  To prevent this, the GPL assures that
patents cannot be used to render the program non-free.

  The precise terms and conditions for copying, distribution and
modification follow.

                       TERMS AND CONDITIONS

  0. Definitions.

  "This License" refers to version 3 of the GNU General Public License.

  "Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.

  "The Program" refers to any copyrightable work licensed under this
License.  Each licensee is addressed as "you".  "Licensees" and
"recipients" may be individuals or organizations.

  To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy.  The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.

  A "covered work" means either the unmodified Program or a work based
on the Program.

  To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy.  Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.

  To "convey" a work means any kind of propagation that enables other
parties to make or receive copies.  Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.

  An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License.  If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.

  1. Source Code.

  The "source code" for a work means the preferred form of the work
for making modifications to it.  "Object code" means any non-source
form of a work.

  A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.

  The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form.  A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.

  The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities.  However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work.  For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.

  The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.

  The Corresponding Source for a work in source code form is that
same work.

  2. Basic Permissions.

  All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met.  This License explicitly affirms your unlimited
permission to run the unmodified Program.  The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work.  This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.

  You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force.  You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright.  Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.

  Conveying under any other circumstances is permitted solely under
the conditions stated below.  Sublicensing is not allowed; section 10
makes it unnecessary.

  3. Protecting Users' Legal Rights From Anti-Circumvention Law.

  No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.

  When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.

  4. Conveying Verbatim Copies.

  You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.

  You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.

  5. Conveying Modified Source Versions.

  You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:

    a) The work must carry prominent notices stating that you modified
    it, and giving a relevant date.

    b) The work must carry prominent notices stating that it is
    released under this License and any conditions added under section
    7.  This requirement modifies the requirement in section 4 to
    "keep intact all notices".

    c) You must license the entire work, as a whole, under this
    License to anyone who comes into possession of a copy.  This
    License will therefore apply, along with any applicable section 7
    additional terms, to the whole of the work, and all its parts,
    regardless of how they are packaged.  This License gives no
    permission to license the work in any other way, but it does not
    invalidate such permission if you have separately received it.

    d) If the work has interactive user interfaces, each must display
    Appropriate Legal Notices; however, if the Program has interactive
    interfaces that do not display Appropriate Legal Notices, your
    work need not make them do so.

  A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit.  Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.

  6. Conveying Non-Source Forms.

  You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:

    a) Convey the object code in, or embodied in, a physical product
    (including a physical distribution medium), accompanied by the
    Corresponding Source fixed on a durable physical medium
    customarily used for software interchange.

    b) Convey the object code in, or embodied in, a physical product
    (including a physical distribution medium), accompanied by a
    written offer, valid for at least three years and valid for as
    long as you offer spare parts or customer support for that product
    model, to give anyone who possesses the object code either (1) a
    copy of the Corresponding Source for all the software in the
    product that is covered by this License, on a durable physical
    medium customarily used for software interchange, for a price no
    more than your reasonable cost of physically performing this
    conveying of source, or (2) access to copy the
    Corresponding Source from a network server at no charge.

    c) Convey individual copies of the object code with a copy of the
    written offer to provide the Corresponding Source.  This
    alternative is allowed only occasionally and noncommercially, and
    only if you received the object code with such an offer, in accord
    with subsection 6b.

    d) Convey the object code by offering access from a designated
    place (gratis or for a charge), and offer equivalent access to the
    Corresponding Source in the same way through the same place at no
    further charge.  You need not require recipients to copy the
    Corresponding Source along with the object code.  If the place to
    copy the object code is a network server, the Corresponding Source
    may be on a different server (operated by you or a third party)
    that supports equivalent copying facilities, provided you maintain
    clear directions next to the object code saying where to find the
    Corresponding Source.  Regardless of what server hosts the
    Corresponding Source, you remain obligated to ensure that it is
    available for as long as needed to satisfy these requirements.

    e) Convey the object code using peer-to-peer transmission, provided
    you inform other peers where the object code and Corresponding
    Source of the work are being offered to the general public at no
    charge under subsection 6d.

  A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.

  A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling.  In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage.  For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product.  A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.

  "Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source.  The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.

  If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information.  But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).

  The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed.  Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.

  Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.

  7. Additional Terms.

  "Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law.  If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.

  When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it.  (Additional permissions may be written to require their own
removal in certain cases when you modify the work.)  You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.

  Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:

    a) Disclaiming warranty or limiting liability differently from the
    terms of sections 15 and 16 of this License; or

    b) Requiring preservation of specified reasonable legal notices or
    author attributions in that material or in the Appropriate Legal
    Notices displayed by works containing it; or

    c) Prohibiting misrepresentation of the origin of that material, or
    requiring that modified versions of such material be marked in
    reasonable ways as different from the original version; or

    d) Limiting the use for publicity purposes of names of licensors or
    authors of the material; or

    e) Declining to grant rights under trademark law for use of some
    trade names, trademarks, or service marks; or

    f) Requiring indemnification of licensors and authors of that
    material by anyone who conveys the material (or modified versions of
    it) with contractual assumptions of liability to the recipient, for
    any liability that these contractual assumptions directly impose on
    those licensors and authors.

  All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10.  If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term.  If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.

  If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.

  Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.

  8. Termination.

  You may not propagate or modify a covered work except as expressly
provided under this License.  Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).

  However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.

  Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.

  Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License.  If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.

  9. Acceptance Not Required for Having Copies.

  You are not required to accept this License in order to receive or
run a copy of the Program.  Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance.  However,
nothing other than this License grants you permission to propagate or
modify any covered work.  These actions infringe copyright if you do
not accept this License.  Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.

  10. Automatic Licensing of Downstream Recipients.

  Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License.  You are not responsible
for enforcing compliance by third parties with this License.

  An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations.  If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.

  You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License.  For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.

  11. Patents.

  A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based.  The
work thus licensed is called the contributor's "contributor version".

  A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version.  For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.

  Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.

  In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement).  To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.

  If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients.  "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.

  If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.

  A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License.  You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.

  Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.

  12. No Surrender of Others' Freedom.

  If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all.  For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.

  13. Use with the GNU Affero General Public License.

  Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work.  The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.

  14. Revised Versions of this License.

  The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time.  Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.

  Each version is given a distinguishing version number.  If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation.  If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.

  If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.

  Later license versions may give you additional or different
permissions.  However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.

  15. Disclaimer of Warranty.

  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

  16. Limitation of Liability.

  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.

  17. Interpretation of Sections 15 and 16.

  If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.

                     END OF TERMS AND CONDITIONS

            How to Apply These Terms to Your New Programs

  If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.

  To do so, attach the following notices to the program.  It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.

    <one line to give the program's name and a brief idea of what it does.>
    Copyright (C) <year>  <name of author>

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>.

Also add information on how to contact you by electronic and paper mail.

  If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:

    <program>  Copyright (C) <year>  <name of author>
    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
    This is free software, and you are welcome to redistribute it
    under certain conditions; type `show c' for details.

The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License.  Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".

  You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<https://www.gnu.org/licenses/>.

  The GNU General Public License does not permit incorporating your program
into proprietary programs.  If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library.  If this is what you want to do, use the GNU Lesser General
Public License instead of this License.  But first, please read
<https://www.gnu.org/licenses/why-not-lgpl.html>.

================================================
FILE: README.md
================================================
# fullPage.js
![preview](https://raw.github.com/alvarotrigo/fullPage.js/master/examples/imgs/intro.png)
![compatibility](https://raw.github.com/alvarotrigo/fullPage.js/master/examples/imgs/compatible.png)

<p align="center">
  <span>English</span> |
  <a href="https://github.com/alvarotrigo/fullPage.js/tree/master/lang/spanish#fullpagejs">Español</a> |
  <a href="https://github.com/alvarotrigo/fullPage.js/tree/master/lang/french#fullpagejs">Français</a> |
  <a href="https://github.com/alvarotrigo/fullPage.js/tree/master/lang/russian#fullpagejs">Pусский</a> |
  <a href="https://github.com/alvarotrigo/fullPage.js/tree/master/lang/chinese#fullpagejs">中文</a> |
  <a href="https://github.com/alvarotrigo/fullPage.js/tree/master/lang/korean#fullpagejs">한국어</a> | 
  <a href="https://github.com/alvarotrigo/fullPage.js/tree/master/lang/japanese#fullpagejs"> 日本語</a> | 
  <a href="https://github.com/alvarotrigo/fullPage.js/tree/master/lang/brazilian-portuguese#fullpagejs">Português Brasileiro</a>
</p>

<p align="center">
	Available for <a href="https://github.com/alvarotrigo/vue-fullpage.js">Vue</a>, <a href="https://github.com/alvarotrigo/react-fullpage">React</a> and <a href="https://github.com/alvarotrigo/angular-fullpage">Angular</a>.
</p>

---

![fullPage.js version](https://img.shields.io/badge/fullPage.js-v4.0.41-brightgreen.svg)
[![License](https://img.shields.io/badge/License-GPL-blue.svg)](https://www.gnu.org/licenses/gpl-3.0.html)
[![jsDelivr Hits](https://data.jsdelivr.com/v1/package/npm/fullpage.js/badge?style=rounded)](https://www.jsdelivr.com/package/npm/fullpage.js)
[![Minzipped Size](https://img.shields.io/bundlephobia/minzip/fullpage.js)](https://bundlephobia.com/package/fullpage.js)
&nbsp;&nbsp;**|**&nbsp;&nbsp; *Created by [@imac2](https://twitter.com/imac2)*

- [Demo online](https://alvarotrigo.com/fullPage/) | [Codepen](https://codepen.io/alvarotrigo/pen/qqabrp)
- [Wordpress plugin for Gutenberg](https://alvarotrigo.com/fullPage/wordpress-plugin-gutenberg/) and [WordPress plugin for Elementor](https://alvarotrigo.com/fullPage/wordpress-plugin-elementor/)
- [Wordpress theme](https://alvarotrigo.com/fullPage/utils/wordpress.html)
- [fullpage.js Extensions](https://alvarotrigo.com/fullPage/extensions/)
- [Frequently Answered Questions](https://github.com/alvarotrigo/fullPage.js/wiki/FAQ---Frequently-Answered-Questions)
- [[Migration from fullPage v3 to fullpage v4]](https://alvarotrigo.com/fullPage/help/migration-from-fullpage-3/)
---

A simple and easy to use library that creates fullscreen scrolling websites (also known as single page websites or onepage sites) and adds landscape sliders inside the sections of the site.

- [Introduction](https://github.com/alvarotrigo/fullPage.js#introduction)
- [Compatibility](https://github.com/alvarotrigo/fullPage.js#compatibility)
- [License](https://github.com/alvarotrigo/fullPage.js#license)
- [Usage](https://github.com/alvarotrigo/fullPage.js#usage)
  - [Creating links to sections or slides](https://github.com/alvarotrigo/fullPage.js#creating-links-to-sections-or-slides)
  - [Creating smaller or bigger sections](https://github.com/alvarotrigo/fullPage.js#creating-smaller-or-bigger-sections)
  - [State classes added by fullpage.js](https://github.com/alvarotrigo/fullPage.js#state-classes-added-by-fullpagejs)
  - [Lazy loading](https://github.com/alvarotrigo/fullPage.js#lazy-loading)
  - [Auto play/pause embedded media](https://github.com/alvarotrigo/fullPage.js#auto-playpause-embedded-media)
  - [Use extensions](https://github.com/alvarotrigo/fullPage.js#use-extensions)
- [Options](https://github.com/alvarotrigo/fullPage.js#options)
- [Methods](https://github.com/alvarotrigo/fullPage.js#methods)
- [Callbacks](https://github.com/alvarotrigo/fullPage.js#callbacks)
- [Reporting issues](https://github.com/alvarotrigo/fullPage.js#reporting-issues)
- [Contributing to fullpage.js](https://github.com/alvarotrigo/fullPage.js#contributing-to-fullpagejs)
- [Changelog](https://github.com/alvarotrigo/fullPage.js#changelog)
- [Build tasks](https://github.com/alvarotrigo/fullPage.js#build-tasks)
- [Resources](https://github.com/alvarotrigo/fullPage.js#resources)
- [Who is using fullpage.js](https://github.com/alvarotrigo/fullPage.js#who-is-using-fullpagejs)
- [Donations](https://github.com/alvarotrigo/fullPage.js#donations)
- [Sponsors](https://github.com/alvarotrigo/fullPage.js#sponsors)

## Introduction
Suggestion are more than welcome, not only for feature requests but also for coding style improvements.
Let's make this a great library to make people's lives easier!

## Compatibility
fullPage.js is fully functional on all modern browsers and with IE 11. If you need to support IE < 11 consider using [fullPage.js v3](https://github.com/alvarotrigo/fullPage.js/tree/3.1.2).
It also provides touch support for mobile phones, tablets and touch screen computers.

Special thanks to [Browserstack](https://www.browserstack.com/) for supporting fullpage.js.

## License

### Commercial license
If you want to use fullPage to develop non open sourced sites, themes, projects, and applications, the Commercial license is the appropriate license. With this option, your source code is kept proprietary. Which means, you won't have to change your whole application source code to an open source license. [[Purchase a Fullpage Commercial License]](https://alvarotrigo.com/fullPage/pricing/)

### Open source license
If you are creating an open source application under a license compatible with the [GNU GPL license v3](https://www.gnu.org/licenses/gpl-3.0.html), you may use fullPage under the terms of the GPLv3.

**You will have to provide a prominent notice that fullPage.js is in use. The credit comments in the JavaScript and CSS files should be kept intact** (even after combination or minification).

[Read more about fullPage's license](https://alvarotrigo.com/fullPage/pricing/).

## Usage
As you can see in the example files, you will need to include:
 - The JavaScript file `fullpage.js` (or its minified version `fullpage.min.js`)
 - The css file `fullpage.css`

 **Optionally**, when using `css3:false`, you can add the [easings file](https://github.com/alvarotrigo/fullPage.js/tree/master/vendors/easings.min.js) in case you want to use other easing effects apart from the one included in the library (`easeInOutCubic`).

### Install using bower or npm
**Optionally**, you can install fullPage.js with bower or npm if you prefer:

Terminal:
```shell
// With bower
bower install fullpage.js

// With npm
npm install fullpage.js
```

### Including files
```html
<link rel="stylesheet" type="text/css" href="fullpage.css" />

<!-- This following line is optional. Only necessary if you use the option css3:false and you want to use other easing effects rather than "easeInOutCubic". -->
<script src="vendors/easings.min.js"></script>

<script type="text/javascript" src="fullpage.js"></script>
```

Using Webpack, Browserify or Require.js? Check [how to use fullPage.js with module loaders](https://github.com/alvarotrigo/fullPage.js/wiki/Use-module-loaders-for-fullPage.js).

### Optional use of CDN
If you prefer to use a CDN to load the needed files, fullPage.js is in, [JSDelivr](https://www.jsdelivr.com/package/npm/fullpage.js), [UNPKG](https://unpkg.com/browse/fullpage.js/dist/), [CDNJS](https://cdnjs.com/libraries/fullPage.js) and others.

### Required HTML structure
Start your HTML document with the compulsory [HTML DOCTYPE declaration](https://www.corelangs.com/html/introduction/doctype.html) on the 1st line of your HTML code. You might have troubles with sections heights otherwise. The examples provided use HTML 5 doctype `<!DOCTYPE html>`.

Each section will be defined with an element containing the `section` class.
The active section by default will be the first section, which is taken as the home page.

Sections should be placed inside a wrapper (`<div id="fullpage">` in this case). The wrapper can not be the `body` element.

```html
<div id="fullpage">
	<div class="section">Some section</div>
	<div class="section">Some section</div>
	<div class="section">Some section</div>
	<div class="section">Some section</div>
</div>
```

If you want to define a different starting point rather than the first section or the first slide of a section, just add the class `active` to the section and slide you want to load first.

```html
<div class="section active">Some section</div>
```

In order to create a landscape slider within a section, each slide will be defined by default with an element containing the `slide` class:

```html
<div class="section">
	<div class="slide"> Slide 1 </div>
	<div class="slide"> Slide 2 </div>
	<div class="slide"> Slide 3 </div>
	<div class="slide"> Slide 4 </div>
</div>
```

You can see a fully working example of the HTML structure in the [`simple.html` file](https://github.com/alvarotrigo/fullPage.js/blob/master/examples/simple.html).

### Initialization

#### Initialization with Vanilla Javascript
All you need to do is call fullPage.js before the closing `</body>` tag.

```javascript
new fullpage('#fullpage', {
	//options here
	autoScrolling:true,
	scrollHorizontally: true
});
```

#### Initialization with jQuery
You can use fullpage.js as a jQuery plugin if you want to!

```javascript
$(document).ready(function() {
	$('#fullpage').fullpage({
		//options here
		autoScrolling:true,
		scrollHorizontally: true
	});

	// Example of how to use fullpage.js methods
	$.fn.fullpage.setAllowScrolling(false);
});
```

#### Vanilla JS example with all options
A more complex initialization with all options set could look like this:
```javascript

var myFullpage = new fullpage('#fullpage', {
	// Navigation
	menu: '#menu',
	lockAnchors: false,
	anchors:['firstPage', 'secondPage'],
	navigation: false,
	navigationPosition: 'right',
	navigationTooltips: ['firstSlide', 'secondSlide'],
	showActiveTooltip: false,
	slidesNavigation: false,
	slidesNavPosition: 'bottom',

	// Scrolling
	css3: true,
	scrollingSpeed: 700,
	autoScrolling: true,
	fitToSection: true,
	fitToSectionDelay: 600,
	scrollBar: false,
	easing: 'easeInOutCubic',
	easingcss3: 'ease',
	loopBottom: false,
	loopTop: false,
	loopHorizontal: true,
	continuousVertical: false,
	continuousHorizontal: false,
	scrollHorizontally: false,
	interlockedSlides: false,
	dragAndMove: false,
	offsetSections: false,
	resetSliders: false,
	fadingEffect: false,
	normalScrollElements: '#element1, .element2',
	scrollOverflow: true,
	scrollOverflowMacStyle: false,
	scrollOverflowReset: false,
	skipIntermediateItems: false,
	touchSensitivity: 15,
	bigSectionsDestination: null,
	adjustOnNavChange: true,

	// Accessibility
	keyboardScrolling: true,
	animateAnchor: true,
	recordHistory: true,

	// Design
	controlArrows: true,
	controlArrowsHTML: [
		'<div class="fp-arrow"></div>', 
		'<div class="fp-arrow"></div>'
	],
	verticalCentered: true,
	sectionsColor : ['#ccc', '#fff'],
	paddingTop: '3em',
	paddingBottom: '10px',
	fixedElements: '#header, .footer',
	responsiveWidth: 0,
	responsiveHeight: 0,
	responsiveSlides: false,
	effects: false,
	effectsOptions: [Object],
	cinematic: false,
	cinematicOptions: [Object],
	parallax: false,
	parallaxOptions: {type: 'reveal', percentage: 62, property: 'translate'},
	dropEffect: false,
	dropEffectOptions: { speed: 2300, color: '#F82F4D', zIndex: 9999},
	waterEffect: false,
	waterEffectOptions: { animateContent: true, animateOnMouseMove: true},
	cards: false,
	cardsOptions: {perspective: 100, fadeContent: true, fadeBackground: true},

	// Custom selectors
	sectionSelector: '.section',
	slideSelector: '.slide',

	lazyLoading: true,
	lazyLoadThreshold: 0,
	observer: true,
	credits: { enabled: true, label: 'Made with fullPage.js', position: 'right'},

	// Events
	beforeLeave: function(origin, destination, direction, trigger){},
	onLeave: function(origin, destination, direction, trigger){},
	afterLoad: function(origin, destination, direction, trigger){},
	afterRender: function(){},
	afterResize: function(width, height){},
	afterReBuild: function(){},
	afterResponsive: function(isResponsive){},
	afterSlideLoad: function(section, origin, destination, direction, trigger){},
	onSlideLeave: function(section, origin, destination, direction, trigger){},
	onScrollOverflow: function(section, slide, position, direction){}
});
```

### Creating links to sections or slides
If you are using fullPage.js with anchor links for the sections (using the `anchors` option or the attribute `data-anchor` in each section), then you will be able to use anchor links also to navigate directly to a certain slide inside a section.

This would be an example of a link with an anchor: https://alvarotrigo.com/fullPage/#secondPage/2 (which is the URL you will see once you access to that section/slide manually)
Notice the last part of the URL ends in `#secondPage/2`.

Having the following initialization:

```javascript
new fullpage('#fullpage', {
	anchors:['firstPage', 'secondPage', 'thirdPage']
});
```

The anchor at the end of the URL `#secondPage/2` defines the section and slide of destination respectively. In the previous URL, the section of destination will be the one defined with the anchor `secondPage` and the slide will be the 2nd slide, as we are using the index `2` for it. (the fist slide of a section has index 0, as technically it is a section).

We could have used a custom anchor for the slide instead of its index if we would have used the attribute `data-anchor` on the HTML markup like so:

```html
<div class="section">
	<div class="slide" data-anchor="slide1"> Slide 1 </div>
	<div class="slide" data-anchor="slide2"> Slide 2 </div>
	<div class="slide" data-anchor="slide3"> Slide 3 </div>
	<div class="slide" data-anchor="slide4"> Slide 4 </div>
</div>
```
In this last case, the URL we would use would be `#secondPage/slide3`, which is the equivalent to our previous `#secondPage/2`.

Note that section anchors can also be defined in the same way, by using the `data-anchor` attribute, if no `anchors` array is provided.

**Be careful!** `data-anchor` tags can not have the same value as any ID element on the site (or NAME element for IE).

### Creating smaller or bigger sections
[Demo](https://codepen.io/alvarotrigo/pen/BKjRYm) fullPage.js provides a way to remove the full height restriction from its sections and slides. It is possible to create sections which height is smaller or bigger than the viewport. This is ideal for footers.
It is important to realise that it doesn't make sense to have all of your sections using this feature. If there is more than one section in the initial load of the site, fullPage.js won't scroll at all to see the next one as it will be already in the viewport.

To create smaller sections just use the class `fp-auto-height` in the section you want to apply it. It will then take the height defined by your section/slide content.

```html
<div class="section">Whole viewport</div>
<div class="section fp-auto-height">Auto height</div>
```

#### Responsive auto height sections
[Demo](https://codepen.io/alvarotrigo/pen/MzByMa) A responsive auto height can be applied by using the class `fp-auto-height-responsive`. This way sections will be fullscreen until the responsive mode gets fired. Then they'll take the size required by their content, which could be bigger or smaller than the viewport.

### State classes added by fullpage.js
Fullpage.js adds multiple classes in different elements to keep a record of the status of the site:

- `active` is added the current visible section and slide.
- `active` is added to the current menu element (if using the `menu` option).
- `fp-loaded` is added to the section or slide that triggers lazy loading of media content.
- A class of the form `fp-viewing-SECTION-SLIDE` is added to the `body` element of the site. (eg: [`fp-viewing-secondPage-0`](https://alvarotrigo.com/fullPage/#secondPage)) The `SECTION` and `SLIDE` parts will be the anchors (or indexes if no anchor is provided) of the current section and slide.
- `fp-responsive` is added to the `body` element when the entering in the responsive mode
- `fp-enabled` is added to the `html` element when fullpage.js is enabled. (and removed when destroyed).
- `fp-destroyed` is added to the fullpage.js container when fullPage.js is destroyed.

### Lazy Loading
[Demo](https://codepen.io/alvarotrigo/pen/eNLBXo) fullPage.js provides a way to lazy load images, videos and audio elements so they won't slow down the loading of your site or unnecessarily waste data transfer.
When using lazy loading, all these elements will only get loaded when entering in the viewport.
To enable lazy loading all you need to do is change your `src` attribute to `data-src` as shown below:

```html
<img data-src="image.png">
<video>
	<source data-src="video.webm" type="video/webm" />
	<source data-src="video.mp4" type="video/mp4" />
</video>
 ```

If you already use another lazy load solution which uses `data-src` as well, you can disable the fullPage.js lazy loading by setting the option `lazyLoading: false`.

### Auto play/pause embedded media

[Demo](https://codepen.io/alvarotrigo/pen/pXEaaK) **Note**: the autoplay feature might not work on some mobile devices depending on the OS and browser (i.e. [Safari on iOS](https://webkit.org/blog/6784/new-video-policies-for-ios/) version < 10.0).

#### Play on section/slide load:
Using the attribute `autoplay` for videos or audio, or the param `autoplay=1` for youtube iframes will result in the media element playing on page load.
In order to play it on section/slide load use instead the attribute `data-autoplay`. For example:

```html
<audio data-autoplay>
	<source src="https://www.w3schools.com/html/horse.ogg" type="audio/ogg">
</audio>
```

#### Pause on leave
Embedded HTML5 `<video>` / `<audio>`  and Youtube iframes are automatically paused when you navigate away from a section or slide. This can be disabled by using the attribute `data-keepplaying`. For example:
```html
<audio data-keepplaying>
	<source src="https://www.w3schools.com/html/horse.ogg" type="audio/ogg">
</audio>
```

### Use extensions
fullpage.js [provides a set of extensions](https://alvarotrigo.com/fullPage/extensions/) you can use to enhance its default features. All of them are listed as [fullpage.js options](https://github.com/alvarotrigo/fullPage.js#options).

Extensions requires you to use the minified file [`fullpage.extensions.min.js`](https://github.com/alvarotrigo/fullPage.js/blob/master/dist/fullpage.extensions.min.js) that is inside the [`dist` folder](https://github.com/alvarotrigo/fullPage.js/tree/master/dist) instead of the usual fullPage.js file (`fullpage.js` or `fullpage.min.js`).

Once you acquire the extension file, you will need to add it before fullPage. For example, if I want to use the Continuous Horizontal extension, I would have include the extension file and then the extensions version of the fullPage file.

```html
<script type="text/javascript" src="fullpage.continuousHorizontal.min.js"></script>
<script type="text/javascript" src="fullpage/fullpage.extensions.min.js"></script>
```

An activation key and a license key will be required for each extension. [See more details about it here](https://github.com/alvarotrigo/fullPage.js/wiki/How-to-activate-a-fullPage.js-extension).

Then you will be able to use and configure them as explained in [options](https://github.com/alvarotrigo/fullPage.js#options).

## Options

### licenseKey
 
(default `null`). **This option is compulsory.** If you use fullPage in a non open source project, then you should use the license key provided on the purchase of the fullPage Commercial License. If your project is open source and it is compatible with the GPLv3 license you can [request a license key](https://alvarotrigo.com/fullPage/extensions/requestKey.html). Please read more about licenses [here](https://github.com/alvarotrigo/fullPage.js#license) and [on the website](https://alvarotrigo.com/fullPage/pricing/). Example of usage:

```javascript
new fullpage('#fullpage', {
	licenseKey: 'YOUR_KEY_HERE'
});
```

### controlArrows

(default `true`) Determines whether to use control arrows for the slides to move right or left.

### controlArrowsHTML

(default `['<div class="fp-arrow"></div>', '<div class="fp-arrow"></div>'],`).
Provides a way to define the HTML structure and the classes that you want to apply to the control arrows for sections with horizontal slides. The array contains the structure for both arrows. The first item is the left arrow and the second, the right one.

### verticalCentered

(default `true`) Vertically centering of the content using flexbox. You might want to wrap your content in a `div` to avoid potential issues. (Uses `flex-direction: column; display: flex; justify-content: center;`)

### scrollingSpeed

(default `700`) Speed in milliseconds for the scrolling transitions.

### sectionsColor

(default `none`) Define the CSS `background-color` property for each section.
Example:

```javascript
new fullpage('#fullpage', {
	sectionsColor: ['#f2f2f2', '#4BBFC3', '#7BAABE', 'whitesmoke', '#000'],
});
```

### anchors

(default `[]`) Defines the anchor links (#example) to be shown on the URL for each section. Anchors value should be unique. The position of the anchors in the array will define to which sections the anchor is applied. (second position for second section and so on). Using anchors forward and backward navigation will also be possible through the browser. This option also allows users to bookmark a specific section or slide. **Be careful!** anchors can not have the same value as any ID element on the site (or NAME element for IE).
Anchors can be defined directly in the HTML structure by using the attribute `data-anchor` as explained [here](#creating-links-to-sections-or-slides).

### lockAnchors

(default `false`) Determines whether anchors in the URL will have any effect at all in the library. You can still using anchors internally for your own functions and callbacks, but they won't have any effect in the scrolling of the site. Useful if you want to combine fullPage.js with other plugins using anchor in the URL.

### easing

(default `easeInOutCubic`) Defines the transition effect to use for the vertical and horizontal scrolling.
It requires the file `vendors/easings.min.js` or [jQuery UI](https://jqueryui.com/) for using some of [its transitions](https://api.jqueryui.com/easings/). Other libraries could be used instead.

### easingcss3

(default `ease`) Defines the transition effect to use in case of using `css3:true`. You can use the [pre-defined ones](https://www.w3schools.com/cssref/css3_pr_transition-timing-function.asp) (such as `linear`, `ease-out`...) or create your own ones using the `cubic-bezier` function. You might want to use [Matthew Lein CSS Easing Animation Tool](https://matthewlein.com/ceaser/) for it.

### loopTop

(default `false`) Defines whether scrolling up in the first section should scroll to the last one or not.

### loopBottom

(default `false`) Defines whether scrolling down in the last section should scroll to the first one or not.

### loopHorizontal

(default `true`) Defines whether horizontal sliders will loop after reaching the last or previous slide or not.

### css3

(default `true`) Defines whether to use JavaScript or CSS3 transforms to scroll within sections and slides. Useful to speed up the movement in tablet and mobile devices with browsers supporting CSS3. If this option is set to `true` and the browser doesn't support CSS3, a fallback will be used instead.

### autoScrolling

(default `true`) Defines whether to use the "automatic" scrolling or the "normal" one. It also has affects the way the sections fit in the browser/device window in tablets and mobile phones.

### fitToSection

(default `true`) Determines whether or not to fit sections to the viewport or not. When set to `true` the current active section will always fill the whole viewport. Otherwise the user will be free to stop in the middle of a section.

### fitToSectionDelay

(default 1000) If `fitToSection` is set to true, this delays the fitting by the configured milliseconds.

### scrollBar

(default `false`) Determines whether to use scroll bar for the **vertical sections** on site or not. In case of using scroll bar, the `autoScrolling` functionality will still work as expected. The user will also be free to scroll the site with the scroll bar and fullPage.js will fit the section in the screen when scrolling finishes.

### paddingTop

(default `0`) Defines the top padding for each section with a numerical value and its measure (paddingTop: '10px', paddingTop: '10em'...) Useful in case of using a fixed header.

### paddingBottom

(default `0`) Defines the bottom padding for each section with a numerical value and its measure (paddingBottom: '10px', paddingBottom: '10em'...). Useful in case of using a fixed footer.

### fixedElements

(default `null`) Defines which elements will be taken off the scrolling structure of the plugin which is necessary when using the `css3` option to keep them fixed. It requires a string with the Javascript selectors for those elements. (For example: `fixedElements: '#element1, .element2'`)

### normalScrollElements

(default `null`) [Demo](https://codepen.io/alvarotrigo/pen/RmVazM) If you want to avoid the auto scroll when scrolling over some elements, this is the option you need to use. (useful for maps, scrolling divs etc.) It requires a string with the Javascript selectors for those elements. (For example: `normalScrollElements: '#element1, .element2'`). This option should not be applied to any section/slide element itself.

### bigSectionsDestination

(default `null`) [Demo](https://codepen.io/alvarotrigo/pen/vYLdMrx) Defines how to scroll to a section which height is bigger than the viewport and when not using `scrollOverflow:true`. (Read [how to create smaller or bigger sections](https://github.com/alvarotrigo/fullPage.js#creating-smaller-or-bigger-sections)). By default fullPage.js scrolls to the top if you come from a section above the destination one and to the bottom if you come from a section below the destination one. Possible values are `top`, `bottom`, `null`.

### adjustOnNavChange
(default `true`)
Defines whether fullPage.js adjusts the height of sections when the mobile navigation or address bar changes size or toggles visibility. If set to `false`, sections will not appear as full-height when the navigation bar shrinks or hides.


### keyboardScrolling

(default `true`) Defines if the content can be navigated using the keyboard.

### touchSensitivity

(default `5`) Defines a percentage of the browsers window width/height, and how far a swipe must measure for navigating to the next section / slide

### skipIntermediateItems

(default `false`). Determines whether to skip the scroll animation when navigating between non-consecutive vertical sections or horizontal slides. The possible values are `true`, `false`, `sections`, and `slides`, allowing you to apply this behavior vertically, horizontally, or in both directions.

### continuousVertical

(default `false`) Defines whether scrolling down in the last section should scroll down to the first one and if scrolling1 up in the first section should scroll up to the last one. Not compatible with `loopTop`, `loopBottom` or any scroll bar present in the site (`scrollBar:true` or `autoScrolling:false`).

### continuousHorizontal

(default `false`) [Extension of fullpage.js](https://alvarotrigo.com/fullPage/extensions/). Defines whether sliding right in the last slide should slide right to the first one or not, and if scrolling left in the first slide should slide left to the last one or not. Not compatible with `loopHorizontal`. Requires fullpage.js >= 3.0.1.

### scrollHorizontally

(default `false`) [Extension of fullpage.js](https://alvarotrigo.com/fullPage/extensions/). Defines whether to slide horizontally within sliders by using the mouse wheel or trackpad. It can only be used when using: `autoScrolling:true`. Ideal for story telling. Requires fullpage.js >= 3.0.1.

### interlockedSlides

(default `false`) [Extension of fullpage.js](https://alvarotrigo.com/fullPage/extensions/). Determines whether moving one horizontal slider will force the sliding of sliders in other section in the same direction. Possible values are `true`, `false` or an array with the interlocked sections. For example `[1,3,5]` starting by 1. Requires fullpage.js >= 3.0.1.

### dragAndMove

(default `false`) [Extension of fullpage.js](https://alvarotrigo.com/fullPage/extensions/). Enables or disables the dragging and flicking of sections and slides by using mouse or fingers. Requires fullpage.js >= 3.0.1. Possible values are:
  - `true`: enables the feature.
  - `false`: disables the feature.
  - `vertical`: enables the feature only vertically.
  - `horizontal`: enables the feature only horizontally.
  - `fingersonly`: enables the feature for touch devices only.
  - `mouseonly`: enables the feature for desktop devices only (mouse and trackpad).

### offsetSections

(default `false`) [Extension of fullpage.js](https://alvarotrigo.com/fullPage/extensions/). Provides a way to use non full screen sections based on percentage. Ideal to show visitors there's more content in the site by showing part of the next or previous section. Requires fullPage.js >= 3.0.1.
To define the percentage of each section the attribute `data-percentage` must be used. The centering of the section in the viewport can be determined by using a boolean value in the attribute `data-centered` (default to `true` if not specified). For example:
``` html
<div class="section" data-percentage="80" data-centered="true">
```

### resetSliders

(default `false`) [Extension of fullpage.js](https://alvarotrigo.com/fullPage/extensions/). Defines whether or not to reset every slider after leaving its section. Requires fullpage.js >= 3.0.1.

### fadingEffect

(default `false`) [Extension of fullpage.js](https://alvarotrigo.com/fullPage/extensions/). Defines whether to use a fading effect or not instead of the default scrolling one. Possible values are `true`, `false`, `sections`, `slides`. It can therefore be applied just vertically or horizontally, or to both at the time. It can only be used when using: `autoScrolling:true`. Requires fullpage.js >= 3.0.1.

### animateAnchor

(default `true`) Defines whether the load of the site when given an anchor (#) will scroll with animation to its destination or will directly load on the given section.

### recordHistory

(default `true`) Defines whether to push the state of the site to the browser's history. When set to `true` each section/slide of the site will act as a new page and the back and forward buttons of the browser will scroll the sections/slides to reach the previous or next state of the site. When set to `false`, the URL will keep changing but will have no effect on the browser's history. This option is automatically turned off when using `autoScrolling:false`.

### menu

(default `false`) A selector can be used to specify the menu to link with the sections. This way the scrolling of the sections will activate the corresponding element in the menu using the class `active`.
This won't generate a menu but will just add the `active` class to the element in the given menu with the corresponding anchor links.
In order to link the elements of the menu with the sections, an HTML 5 data-tag (`data-menuanchor`) will be needed to use with the same anchor links as used within the sections. Example:
```html
<ul id="myMenu">
	<li data-menuanchor="firstPage" class="active"><a href="#firstPage">First section</a></li>
	<li data-menuanchor="secondPage"><a href="#secondPage">Second section</a></li>
	<li data-menuanchor="thirdPage"><a href="#thirdPage">Third section</a></li>
	<li data-menuanchor="fourthPage"><a href="#fourthPage">Fourth section</a></li>
</ul>
```
```javascript
new fullpage('#fullpage', {
	anchors: ['firstPage', 'secondPage', 'thirdPage', 'fourthPage', 'lastPage'],
	menu: '#myMenu'
});
```

**Note:** the menu element should be placed outside the fullpage wrapper in order to avoid problem when using `css3:true`. Otherwise it will be appended to the `body` by the plugin itself.

### navigation

(default `false`) If set to `true`, it will show a navigation bar made up of small circles.

### navigationPosition

(default `none`) It can be set to `left` or `right` and defines which position the navigation bar will be shown (if using one).

### navigationTooltips

(default []) Defines the tooltips to show for the navigation circles in case they are being used. Example: `navigationTooltips: ['firstSlide', 'secondSlide']`. You can also define them by using the attribute `data-tooltip` in each section if you prefer.

### showActiveTooltip

(default `false`) Shows a persistent tooltip for the actively viewed section in the vertical navigation.

### slidesNavigation

(default `false`) If set to `true` it will show a navigation bar made up of small circles for each landscape slider on the site.

### slidesNavPosition

(default `bottom`) Defines the position for the landscape navigation bar for sliders. Admits `top` and `bottom` as values. You may want to modify the CSS styles to determine the distance from the top or bottom as well as any other style such as color.

### scrollOverflow

(default `true`) defines whether or not to create a scroll for the section/slide in case its content is bigger than the height of it. It requires the default value `scrollBar: false`. In order to prevent fullpage.js from creating the scrollbar in certain sections or slides use the class `fp-noscroll`. For example: `<div class="section fp-noscroll">` You can also prevent scrolloverflow from getting applied on responsive mode when using `fp-auto-height-responsive` in the section element.

### scrollOverflowReset

(default `false`) [Extension of fullpage.js](https://alvarotrigo.com/fullPage/extensions/). Possible values are `true`, `false`, `sections`, `slides`. When set to `true` it scrolls up the content of the section/slide with a scroll bar when leaving to another section/slide. This way the section/slide will always show the start of its content even when scrolling from a section underneath it. Adding the class `fp-no-scrollOverflowReset` on the section or slide will disable this feature for that specific panel.

### scrollOverflowMacStyle

(default `false`) When active, this option will use a "mac style" for the scrollbar instead of the default one, which will look quite different in Windows computers.

### sectionSelector

(default `.section`) Defines the Javascript selector used for the plugin sections. It might need to be changed sometimes to avoid problem with other plugins using the same selectors as fullpage.js.

### slideSelector

(default `.slide`) Defines the Javascript selector used for the plugin slides.  It might need to be changed sometimes to avoid problem with other plugins using the same selectors as fullpage.js.

### responsiveWidth

(default `0`) A normal scroll (`autoScrolling:false`) will be used under the defined width in pixels. A class `fp-responsive` is added to the body tag in case the user wants to use it for their own responsive CSS. For example, if set to 900, whenever the browser's width is less than 900 the plugin will scroll like a normal site.

### responsiveHeight

(default `0`) A normal scroll (`autoScrolling:false`) will be used under the defined height in pixels. A class `fp-responsive` is added to the body tag in case the user wants to use it for their own responsive CSS. For example, if set to 900, whenever the browser's height is less than 900 the plugin will scroll like a normal site.

### responsiveSlides

(default `false`) [Extension of fullpage.js](https://alvarotrigo.com/fullPage/extensions/). When set to `true` slides will be turned into vertical sections when responsive mode is fired. (by using the `responsiveWidth` or `responsiveHeight` options detailed above). Requires fullpage.js >= 3.0.1.

### cinematic

(default `false`) [Extension of fullpage.js](https://alvarotrigo.com/fullPage/extensions/cinematic.html). Enables or disables the slider effects on sections. Requires fullpage.js >= 4.0.41

### cinematicOptions

(default: `{Object}` Allows to configure the parameters for the animation of the content when using the option `cinematic:true`. [Read more](https://github.com/alvarotrigo/fullPage.js/wiki/Extension-Cinematic-Effects#cinematicoptions).

### effects

(default `false`) [Extension of fullpage.js](https://alvarotrigo.com/fullPage/extensions/slider-effects.html). Enables or disables the slider effects on sections. Requires fullpage.js >= 4.0.35

### effectsOptions

(default: `{Object}` config for the ["focus" preset](https://github.com/alvarotrigo/fullPage.js/wiki/Extension-Slide-Effects#20-available-presets)).
Allows to configure the parameters for the effects when using the option `effects:true`. [Read more about how to apply the effects option](https://github.com/alvarotrigo/fullPage.js/wiki/Extension-Slide-Effects#effects-options-documentation).

### parallax

(default `false`) [Extension of fullpage.js](https://alvarotrigo.com/fullPage/extensions/parallax.html). Defines whether or not to use the parallax backgrounds effects on sections / slides. Not compatible with `fp-auto-height` sections, `offsetSerctions` and `dragAndMove`.op [Read more about how to apply the parallax option](https://github.com/alvarotrigo/fullPage.js/wiki/Extension---Parallax).

### parallaxOptions

(default: `{ type: 'reveal', percentage: 62, property: 'translate'}`).

Allows to configure the parameters for the parallax backgrounds effect when using the option `parallax:true`. [Read more about how to apply the parallax option](https://github.com/alvarotrigo/fullPage.js/wiki/Extension---Parallax).

### dropEffect

(default `false`) [Extension of fullpage.js](https://alvarotrigo.com/fullPage/extensions/). Defines whether or not to use the drop effect on sections / slides. [Read more about how to apply the drop effect option](https://github.com/alvarotrigo/fullPage.js/wiki/Extension-Drop-Effect).

### dropEffectOptions

(default: `{ speed: 2300, color: '#F82F4D', zIndex: 9999}`). 

Allows to configure the parameters for the drop effect when using the option `dropEffect:true`.[Read more about how to apply the drop effect option](https://github.com/alvarotrigo/fullPage.js/wiki/Extension-Drop-Effect).

### waterEffect

(default `false`) [Extension of fullpage.js](https://alvarotrigo.com/fullPage/extensions/). Defines whether or not to use the water effect on sections / slides. [Read more about how to apply the water effect option](https://github.com/alvarotrigo/fullPage.js/wiki/Extension-Water-Effect).

### waterEffectOptions

(default: `{ animateContent: true, animateOnMouseMove: true}`). 

Allows to configure the parameters for the water effect when using the option `waterEffect:true`.[Read more about how to apply the water effect option](https://github.com/alvarotrigo/fullPage.js/wiki/Extension-Water-Effect).

### cards

(default `false`) [Extension of fullpage.js](https://alvarotrigo.com/fullPage/extensions/). Defines whether or not to use the cards effect on sections/slides. [Read more about how to apply the cards option](https://github.com/alvarotrigo/fullPage.js/wiki/Extension-Cards).

### cardsOptions

(default: `{ perspective: 100, fadeContent: true, fadeBackground: true}`).

Allows you to configure the parameters for the cards effect when using the option `cards:true`. [Read more about how to apply the cards option](https://github.com/alvarotrigo/fullPage.js/wiki/Extension-Cards).

### lazyLoading

(default `true`) Lazy loading is active by default which means it will lazy load any media element containing the attribute `data-src` as detailed in the [Lazy Loading docs](https://github.com/alvarotrigo/fullPage.js#lazy-loading) . If you want to use any other lazy loading library you can disable this fullpage.js feature.

### lazyLoadThreshold
(default `0`) Specifies the number of adjacent vertical sections and horizontal slides whose media elements should be lazy-loaded relative to the current one. Use a number to specify how many previous and next sections or slides should be preloaded.

### observer

(default `true`) Defines whether or not to observe changes in the HTML structure of the page. When enabled, fullPage.js will automatically react to those changes and update itself accordingly. Ideal when adding, removing or hidding sections or slides.

### credits

(default `{enabled: true, label: 'Made with fullpage.js', position: 'right'}`). 
Defines whether to use fullPage.js credits. As per clause 0, 4, 5 and 7 of the GPLv3 licecense, those using fullPage. js under the GPLv3 are required to give prominent notice that fullPage.js is in use. We recommend including attribution by keeping this option enabled. **Note:** This option requires a valid value `licenseKey` value.

## Methods
You can see them in action [here](https://alvarotrigo.com/fullPage/examples/methods.html)

### getActiveSection()
[Demo](https://codepen.io/alvarotrigo/pen/VdpzRN/) Gets an Object (type [Section](https://github.com/alvarotrigo/fullPage.js#callbacks)) containing the active section and its properties.

```javascript
fullpage_api.getActiveSection();
```

### getActiveSlide()
[Demo](https://codepen.io/alvarotrigo/pen/VdpzRN/) Gets an Object (type [Slide](https://github.com/alvarotrigo/fullPage.js#callbacks)) containing the active slide and its properties.

```javascript
fullpage_api.getActiveSlide();
```

### getScrollY() & getScrollX
[Demo](https://codepen.io/alvarotrigo/pen/GRyGqro) `getScrollY` Gets the Y position of the fullPage wrapper. `getScrollX` gets the X position of the active horizontal slide.

```javascript
fullpage_api.getScrollY();
fullpage_api.getScrollX();
```

### moveSectionUp()
[Demo](https://codepen.io/alvarotrigo/pen/GJXNMN) Scrolls one section up:
```javascript
fullpage_api.moveSectionUp();
```
---
### moveSectionDown()
[Demo](https://codepen.io/alvarotrigo/pen/jPvVZx) Scrolls one section down:
```javascript
fullpage_api.moveSectionDown();
```
---
### moveTo(section, slide)
[Demo](https://codepen.io/alvarotrigo/pen/doqOmY) Scrolls the page to the given section and slide. The first section will have the index 1 whilst the first slide, the visible one by default, will have index 0.
```javascript
/*Scrolling to the section with the anchor link `firstSlide` and to the 2nd Slide */
fullpage_api.moveTo('firstSlide', 2);

```

```javascript
//Scrolling to the 3rd section (with index 3) in the site
fullpage_api.moveTo(3, 0);

//Which is the same as
fullpage_api.moveTo(3);
```
---
### silentMoveTo(section, slide)
[Demo](https://codepen.io/alvarotrigo/pen/doqOeY)
Exactly the same as [`moveTo`](https://github.com/alvarotrigo/fullPage.js#movetosection-slide) but in this case it performs the scroll without animation. A direct jump to the destination.
```javascript
/*Scrolling to the section with the anchor link `firstSlide` and to the 2nd Slide */
fullpage_api.silentMoveTo('firstSlide', 2);
```
---
### moveSlideRight()
[Demo](https://codepen.io/alvarotrigo/pen/Wvgoyz)
Scrolls the horizontal slider of the current section to the next slide:
```javascript
fullpage_api.moveSlideRight();
```
---
### moveSlideLeft()
[Demo](https://codepen.io/alvarotrigo/pen/gpdLjW)
Scrolls the horizontal slider of the current section to the previous slide:
```javascript
fullpage_api.moveSlideLeft();
```
---
### setAutoScrolling(boolean)
[Demo](https://codepen.io/alvarotrigo/pen/rVZWrR) Sets the scrolling configuration in real time.
Defines the way the page scrolling behaves. If it is set to `true`, it will use the "automatic" scrolling, otherwise, it will use the "manual" or "normal" scrolling of the site.

```javascript
fullpage_api.setAutoScrolling(false);
```
---
### setFitToSection(boolean)
[Demo](https://codepen.io/alvarotrigo/pen/GJXNYm)
Sets the value for the option `fitToSection` determining whether to fit the section in the screen or not.

```javascript
fullpage_api.setFitToSection(false);
```
---
### fitToSection()
[Demo](https://codepen.io/alvarotrigo/pen/JWWagj)
Scrolls to the nearest active section fitting it in the viewport.

```javascript
fullpage_api.fitToSection();
```
---
### setLockAnchors(boolean)
[Demo](https://codepen.io/alvarotrigo/pen/yNxVRQ)
Sets the value for the option `lockAnchors` determining whether anchors will have any effect in the URL or not.

```javascript
fullpage_api.setLockAnchors(false);
```
---
### setAllowScrolling(boolean, [directions])
[Demo](https://codepen.io/alvarotrigo/pen/EjeNdq) Adds or remove the possibility of scrolling through sections/slides by using the mouse wheel/trackpad or touch gestures (which is active by default). Note this won't disable the keyboard scrolling. You
would need to use `setKeyboardScrolling` for it.

- `directions`: (optional parameter) Admitted values: `all`, `up`, `down`, `left`, `right` or a combination of them separated by commas like `down, right`. It defines the direction for which the scrolling will be enabled or disabled.

```javascript

//disabling scrolling
fullpage_api.setAllowScrolling(false);

//disabling scrolling down
fullpage_api.setAllowScrolling(false, 'down');

//disabling scrolling down and right
fullpage_api.setAllowScrolling(false, 'down, right');
```
---
### setKeyboardScrolling(boolean, [directions])
[Demo](https://codepen.io/alvarotrigo/pen/GJXNwm) Adds or remove the possibility of scrolling through sections by using the keyboard (which is active by default).

- `directions`: (optional parameter) Admitted values: `all`, `up`, `down`, `left`, `right` or a combination of them separated by commas like `down, right`. It defines the direction for which the scrolling will be enabled or disabled.

```javascript
//disabling all keyboard scrolling
fullpage_api.setKeyboardScrolling(false);

//disabling keyboard scrolling down
fullpage_api.setKeyboardScrolling(false, 'down');

//disabling keyboard scrolling down and right
fullpage_api.setKeyboardScrolling(false, 'down, right');
```
---
### setRecordHistory(boolean)
[Demo](https://codepen.io/alvarotrigo/pen/rVZWQb) Defines whether to record the history for each hash change in the URL.

```javascript
fullpage_api.setRecordHistory(false);
```
---
### setScrollingSpeed(milliseconds)
[Demo](https://codepen.io/alvarotrigo/pen/NqLbeY) Defines the scrolling speed in milliseconds.

```javascript
fullpage_api.setScrollingSpeed(700);
```
---
### destroy(type)
[Demo](https://codepen.io/alvarotrigo/pen/bdxBzv) Destroys the plugin events and optionally its HTML markup and styles.
Ideal to use when using AJAX to load content.

- `type`: (optional parameter) can be empty or `all`. If `all` is passed, the HTML markup and styles used by fullpage.js will be removed. This way the original HTML markup, the one used before any plugin modification is made, will be maintained.

```javascript
//destroying all Javascript events created by fullPage.js (scrolls, hashchange in the URL...)
fullpage_api.destroy();

//destroying all Javascript events and any modification done by fullPage.js over your original HTML markup.
fullpage_api.destroy('all');
```
---
### reBuild()
Updates the DOM structure to fit the new window size or its contents.
 Ideal to use in combination with AJAX calls or external changes in the DOM structure of the site, specially when using `scrollOverflow:true`.

```javascript
fullpage_api.reBuild();
```
---
### setResponsive(boolean)
[Demo](https://codepen.io/alvarotrigo/pen/WxOyLA) Sets the responsive mode of the page. When set to `true` the autoScrolling will be turned off and the result will be exactly the same one as when the `responsiveWidth` or `responsiveHeight` options  get fired.
```javascript
fullpage_api.setResponsive(true);
```
---
### responsiveSlides.toSections()
[Extension of fullpage.js](https://alvarotrigo.com/fullPage/extensions/). Requires fullpage.js >= 3.0.1.
Turns horizontal slides into vertical sections.

```javascript
fullpage_api.responsiveSlides.toSections();
```
---
### responsiveSlides.toSlides()
[Extension of fullpage.js](https://alvarotrigo.com/fullPage/extensions/). Requires fullpage.js >= 3.0.1.
Turns back the original slides (now converted into vertical sections) into horizontal slides again.

```javascript
fullpage_api.responsiveSlides.toSlides();
```

## Callbacks
[Demo](https://codepen.io/alvarotrigo/pen/XbPNQv) You can see them in action [here](https://alvarotrigo.com/fullPage/examples/callbacks.html).

Some callbacks, such as `onLeave` will contain Object type of parameters containing the following properties:

- `anchor`: *(String)* item's anchor.
- `index`: *(Number)* item's index.
- `item`: *(DOM element)* item element.
- `isFirst`: *(Boolean)* determines if the item is the first child.
- `isLast`: *(Boolean)* determines if the item is the last child.

### afterLoad (`origin`, `destination`, `direction`, `trigger`)
[Demo](https://codepen.io/alvarotrigo/pen/XbPNQv) Callback fired once the sections have been loaded, after the scrolling has ended.
Parameters:

- `origin`: *(Object)* section of origin.
- `destination`: *(Object)* destination section.
- `direction`: *(String)* it will take the values `up` or `down` depending on the scrolling direction.
- `trigger`: *(String)* indicates what triggered the scroll. It can be: "wheel", "keydown", "menu", "slideArrow", "verticalNav", "horizontalNav".

Example:

```javascript
new fullpage('#fullpage', {
	anchors: ['firstPage', 'secondPage', 'thirdPage', 'fourthPage', 'lastPage'],

	afterLoad: function(origin, destination, direction, trigger){
		var origin = this;

		//using index
		if(origin.index == 2){
			alert("Section 3 ended loading");
		}

		//using anchorLink
		if(origin.anchor == 'secondSlide'){
			alert("Section 2 ended loading");
		}
	}
});
```

---
### onLeave (`origin`, `destination`, `direction`, `trigger`)
[Demo](https://codepen.io/alvarotrigo/pen/XbPNQv) This callback is fired once the user leaves a section, in the transition to the new section.
Returning `false` will cancel the move before it takes place.

Parameters:

- `origin`:  *(Object)* section of origin.
- `destination`: *(Object)* destination section.
- `direction`: *(String)* it will take the values `up` or `down` depending on the scrolling direction.
- `trigger`: *(String)* indicates what triggered the scroll. It can be: "wheel", "keydown", "menu", "slideArrow", "verticalNav", "horizontalNav".

Example:

```javascript
new fullpage('#fullpage', {
	onLeave: function(origin, destination, direction, trigger){
		var leavingSection = this;

		//after leaving section 2
		if(origin.index == 1 && direction =='down'){
			alert("Going to section 3!");
		}

		else if(origin.index == 1 && direction == 'up'){
			alert("Going to section 1!");
		}
	}
});
```


---
### beforeLeave (`origin`, `destination`, `direction`, `trigger`)
[Demo](https://codepen.io/alvarotrigo/pen/XbPNQv) This callback is fired right **before** leaving the section, just before the transition takes place.

You can use this callback to prevent and cancel the scroll before it takes place by returning `false`.

Parameters:

- `origin`:  *(Object)* section of origin.
- `destination`: *(Object)* destination section.
- `direction`: *(String)* it will take the values `up` or `down` depending on the scrolling direction.
- `trigger`: *(String)* indicates what triggered the scroll. It can be: "wheel", "keydown", "menu", "slideArrow", "verticalNav", "horizontalNav".

Example:

```javascript

var cont = 0;
new fullpage('#fullpage', {
	beforeLeave: function(origin, destination, direction, trigger){

		// prevents scroll until we scroll 4 times
		cont++;
		return cont === 4;
	}
});
```

---
### afterRender()
[Demo](https://codepen.io/alvarotrigo/pen/XbPNQv) This callback is fired just after the structure of the page is generated. This is the callback you want to use to initialize other plugins or fire any code which requires the document to be ready (as this plugin modifies the DOM to create the resulting structure). See [FAQs](https://github.com/alvarotrigo/fullPage.js/wiki/FAQ---Frequently-Answered-Questions) for more info.

Example:

```javascript
new fullpage('#fullpage', {
	afterRender: function(){
		var pluginContainer = this;
		alert("The resulting DOM structure is ready");
	}
});
```
---
### afterResize(`width`, `height`)
[Demo](https://codepen.io/alvarotrigo/pen/XbPNQv) This callback is fired after resizing the browser's window. Just after the sections are resized.

Parameters:

- `width`:  *(Number)* window's width.
- `height`: *(Number)* window's height.

Example:

```javascript
new fullpage('#fullpage', {
	afterResize: function(width, height){
		var fullpageContainer = this;
		alert("The sections have finished resizing");
	}
});
```
---
### afterReBuild()
[Demo](https://codepen.io/alvarotrigo/pen/XbPNQv) This callback is fired after manually re-building fullpage.js by calling `fullpage_api.reBuild()`.

Example:

```javascript
new fullpage('#fullpage', {
	afterReBuild: function(){
		console.log("fullPage.js has manually being re-builded");
	}
});
```
---
### afterResponsive(`isResponsive`)
[Demo](https://codepen.io/alvarotrigo/pen/XbPNQv) This callback is fired after fullpage.js changes from normal to responsive mode or from responsive mode to normal mode.

Parameters:

- `isResponsive`: *(Boolean)* determines if it enters into responsive mode (`true`) or goes back to normal mode (`false`).

Example:

```javascript
new fullpage('#fullpage', {
	afterResponsive: function(isResponsive){
		alert("Is responsive: " + isResponsive);
	}
});
```
---
### afterSlideLoad (`section`, `origin`, `destination`, `direction`, `trigger`)
[Demo](https://codepen.io/alvarotrigo/pen/XbPNQv) Callback fired once the slide of a section have been loaded, after the scrolling has ended.

Parameters:

- `section`: *(Object)* active vertical section.
- `origin`: *(Object)* horizontal slide of origin.
- `destination`: *(Object)* destination horizontal slide.
- `direction`: *(String)* `right` or `left` depending on the scrolling direction.
- `trigger`: *(String)* indicates what triggered the scroll. It can be: "wheel", "keydown", "menu", "slideArrow", "verticalNav", "horizontalNav".

Example:

```javascript
new fullpage('#fullpage', {
	anchors: ['firstPage', 'secondPage', 'thirdPage', 'fourthPage', 'lastPage'],

	afterSlideLoad: function( section, origin, destination, direction, trigger){
		var loadedSlide = this;

		//first slide of the second section
		if(section.anchor == 'secondPage' && destination.index == 1){
			alert("First slide loaded");
		}

		//second slide of the second section (supposing #secondSlide is the
		//anchor for the second slide)
		if(section.index == 1 && destination.anchor == 'secondSlide'){
			alert("Second slide loaded");
		}
	}
});
```


---
### onSlideLeave (`section`, `origin`, `destination`, `direction`, `trigger`)
[Demo](https://codepen.io/alvarotrigo/pen/XbPNQv) This callback is fired once the user leaves an slide to go to another, in the transition to the new slide.
Returning `false` will cancel the move before it takes place.

Parameters:

- `section`: *(Object)* active vertical section.
- `origin`: *(Object)* horizontal slide of origin.
- `destination`: *(Object)* destination horizontal slide.
- `direction`: *(String)* `right` or `left` depending on the scrolling direction.
- `trigger`: *(String)* indicates what triggered the scroll. It can be: "wheel", "keydown", "menu", "slideArrow", "verticalNav", "horizontalNav".

Example:

```javascript
new fullpage('#fullpage', {
	onSlideLeave: function( section, origin, destination, direction, trigger){
		var leavingSlide = this;

		//leaving the first slide of the 2nd Section to the right
		if(section.index == 1 && origin.index == 0 && direction == 'right'){
			alert("Leaving the fist slide!!");
		}

		//leaving the 3rd slide of the 2nd Section to the left
		if(section.index == 1 && origin.index == 2 && direction == 'left'){
			alert("Going to slide 2! ");
		}
	}
});
```

#### Cancelling a move before it takes place
You can cancel a move by returning `false` on the `onSlideLeave` callback. [Same as when canceling a movement with `onLeave`](https://github.com/alvarotrigo/fullPage.js#cancelling-the-scroll-before-it-takes-place).


---
### onScrollOverflow (`section`, `slide`, `position`, `direction`)
[Demo](https://codepen.io/alvarotrigo/pen/XbPNQv) This callback gets fired when a scrolling inside a scrollable section when using the fullPage.js option `scrollOverflow: true`.

Parameters:

- `section`: *(Object)* active vertical section.
- `slide`: *(Object)* horizontal slide of origin.
- `position`: *(Integer)* scrolled amount within the section/slide. Starts on 0.
- `direction`: *(String)* `up` or `down`

Example:

```javascript
new fullpage('#fullpage', {
	onScrollOverflow: function( section, slide, position, direction){
		console.log(section);
		console.log("position: " + position);
	}
});
```

# Reporting issues
1. Please, look for your issue before asking using the github issues search.
2. Make sure you use the latest fullpage.js version. No support is provided for older versions.
3. Use the [the Github Issues forum](https://github.com/alvarotrigo/fullPage.js/issues) to create issues.
4. **An isolated reproduction of the issue will be required.** Make use of [jsfiddle](https://jsfiddle.net/alvarotrigo/ea17skjr/) or [codepen](https://codepen.io/alvarotrigo/pen/qqabrp) for it if possible.

# Contributing to fullpage.js
Please see [Contributing to fullpage.js](https://github.com/alvarotrigo/fullPage.js/wiki/Contributing-to-fullpage.js)

# Changelog
To see the list of recent changes, see [Releases section](https://github.com/alvarotrigo/fullPage.js/releases).

# Build tasks
Want to build fullpage.js distribution files? Please see [Build Tasks](https://github.com/alvarotrigo/fullPage.js/wiki/Build-tasks)

# Resources
- Wordpress Plugin [for Gutenberg](https://alvarotrigo.com/fullPage/wordpress-plugin-gutenberg/) and [for Elementor](https://alvarotrigo.com/fullPage/wordpress-plugin-elementor/).
- [Wordpress theme](https://alvarotrigo.com/fullPage/utils/wordpress.html)
- [Official Vue.js wrapper component](https://github.com/alvarotrigo/vue-fullpage.js)
- [Official React.js wrapper component](https://github.com/alvarotrigo/react-fullpage)
- [Official Angular wrapper component](https://github.com/alvarotrigo/angular-fullpage)
- [CSS Easing Animation Tool - Matthew Lein](https://matthewlein.com/ceaser/) (useful to define the `easingcss3` value)
- [fullPage.js jsDelivr CDN](https://www.jsdelivr.com/package/npm/fullpage.js)
- [fullPage.js plugin for October CMS](https://github.com/freestream/oc-parallax-plugin)
- [fullPage.js Angular2 directive](https://github.com/meiblorn/ng2-fullpage)
- [fullPage.js angular directive](https://github.com/hellsan631/angular-fullpage.js)
- [fullPage.js ember-cli addon](https://www.npmjs.com/package/ember-cli-fullpagejs)
- [fullPage.js Rails Ruby Gem](https://rubygems.org/gems/fullpagejs-rails)
- [Angular fullPage.js - Adaptation for Angular.js v1.x](https://github.com/mmautomatizacion/angular-fullpage.js)
- [Integrating fullPage.js with Wordpress (Tutorial)](https://premium.wpmudev.org/blog/build-apple-inspired-full-page-scrolling-pages-for-your-wordpress-site/)
- [Wordpress Plugin for Divi](https://alvarotrigo.com/fullPage/wordpress-plugin-divi/)
- [Wordpress Plugin for Elementor](https://alvarotrigo.com/fullPage/wordpress-plugin-elementor/)

## Who is using fullPage.js

![Who is using fullPage.js](https://cdn.jsdelivr.net/gh/alvarotrigo/fullpage-assets/imgs/using-fullpage.png)

- http://www.bbc.co.uk/news/resources/idt-d88680d1-26f2-4863-be95-83298fd01e02
- http://medoff.ua/en/
- http://promo.prestigio.com/grace1/
- http://torchbrowser.com/
- http://www.boxreload.com/
- http://boxx.hk/
- http://www.villareginateodolinda.it

## Sponsors
Become a sponsor and get your logo on our README on Github with a link to your site. [[Contact Us](https://alvarotrigo.com/#contact)] | [[Become a Patreon]](https://www.patreon.com/fullpagejs) | [Become a GitHub Sponsor](https://github.com/sponsors/alvarotrigo)

[![Warp](https://cdn.jsdelivr.net/gh/alvarotrigo/fullpage-assets/imgs/sponsors/warp.png)](http://go.warp.dev/fullPage)
[![Crawlbase](https://cdn.jsdelivr.net/gh/alvarotrigo/fullpage-assets/imgs/sponsors/crawlbase.png)](https://crawlbase.com/?utm_source=github&utm_medium=sponsor&utm_campaign=fullpagejs)
[![TestMu](https://cdn.jsdelivr.net/gh/alvarotrigo/fullpage-assets/imgs/sponsors/testmu-ai.png)](https://www.testmu.com/?utm_source=fullpagejs&utm_medium=sponsor)
[![Codeless](https://cdn.jsdelivr.net/gh/alvarotrigo/fullpage-assets/imgs/sponsors/codeless.png)](https://codeless.co)
[![Stackpath](https://cdn.jsdelivr.net/gh/alvarotrigo/fullpage-assets/imgs/sponsors/stackpath3.png)](https://www.stackpath.com/)
[![Browserstack](https://cdn.jsdelivr.net/gh/alvarotrigo/fullpage-assets/imgs/sponsors/browserstack3.png)](http://www.browserstack.com/)
[![CodePen](https://cdn.jsdelivr.net/gh/alvarotrigo/fullpage-assets/imgs/sponsors/codepen3.png)](https://codepen.com)

### People
<a href="https://github.com/donsalvadori" target="_blank" rel="nofollow">
	<img src="http://wallpapers-for-ipad.com/fullpage/imgs3/avatars/donsalvadori.jpg">
</a>

## Contributors

<a href="https://github.com/alvarotrigo/fullPage.js/graphs/contributors">
  <img src="https://contrib.rocks/image?repo=alvarotrigo/fullPage.js&max=400&columns=25&anon=1&v=2" />
</a>


================================================
FILE: SECURITY.md
================================================
You can privately report issues at help@alvarotrigo.com

================================================
FILE: bower.json
================================================
{
  "name": "fullpage.js",
  "homepage": "http://alvarotrigo.com/fullPage/",
  "authors": [
    "Alvaro Trigo https://github.com/alvarotrigo"
  ],
  "description": "Create  beautiful fullscreen scrolling websites",
  "main": [
    "dist/fullpage.js",
    "dist/fullpage.css"
  ],
  "keywords": [
    "jquery",
    "scrolling",
    "single_page",
    "one_page",
    "sliding",
    "snap",
    "scroll",
    "sections",
    "slides",
    "swipe",
    "mousewheel",
    "onepage",
    "slidehow"
  ],
  "license": "GPL-3.0",
  "ignore": [
    "**/.*",
    "node_modules",
    "bower_components",
    "test",
    "tests",
    "examples"
  ]
}


================================================
FILE: dist/fullpage.css
================================================
/*!
 * fullPage 4.0.41
 * https://github.com/alvarotrigo/fullPage.js
 *
 * @license GPLv3 for open source use only
 * or Fullpage Commercial License for commercial use
 * http://alvarotrigo.com/fullPage/pricing/
 *
 * Copyright (C) 2021 http://alvarotrigo.com/fullPage - A project by Alvaro Trigo
 */
html.fp-enabled,
.fp-enabled body {
    margin: 0;
    padding: 0;
    overflow:hidden;

    /*Avoid flicker on slides transitions for mobile phones #336 */
    -webkit-tap-highlight-color: rgba(0,0,0,0);
}
.fp-section {
    position: relative;
    -webkit-box-sizing: border-box; /* Safari<=5 Android<=3 */
    -moz-box-sizing: border-box; /* <=28 */
    box-sizing: border-box;
    height: 100%;
    display: block;
}
.fp-slide {
    float: left;
}
.fp-slide, .fp-slidesContainer {
    height: 100%;
    display: block;
}
.fp-slides {
    z-index:1;
    height: 100%;
    overflow: hidden;
    position: relative;
    -webkit-transition: all 0.3s ease-out; /* Safari<=6 Android<=4.3 */
    transition: all 0.3s ease-out;
}
.fp-table{
    display: flex;
    flex-direction: column;
    justify-content: center;
    width: 100%;
}
.fp-slidesContainer {
    float: left;
    position: relative;
}
.fp-controlArrow {
    -webkit-user-select: none; /* webkit (safari, chrome) browsers */
    -moz-user-select: none; /* mozilla browsers */
    -khtml-user-select: none; /* webkit (konqueror) browsers */
    -ms-user-select: none; /* IE10+ */
    position: absolute;
    z-index: 4;
    top: 50%;
    cursor: pointer;
    margin-top: -38px;
    -webkit-transform: translate3d(0,0,0);
    -ms-transform: translate3d(0,0,0);
    transform: translate3d(0,0,0);
}
.fp-prev{
    left: 15px;
}
.fp-next{
    right: 15px;
}
.fp-arrow{
    width: 0;
    height: 0;
    border-style: solid;
}
.fp-arrow.fp-prev {
    border-width: 38.5px 34px 38.5px 0;
    border-color: transparent #fff transparent transparent;
}
.fp-arrow.fp-next {
    border-width: 38.5px 0 38.5px 34px;
    border-color: transparent transparent transparent #fff;
}
.fp-notransition {
    -webkit-transition: none !important;
    transition: none !important;
}
#fp-nav {
    position: fixed;
    z-index: 100;
    top: 50%;
    opacity: 1;
    transform: translateY(-50%);
    -ms-transform: translateY(-50%);
    -webkit-transform: translate3d(0,-50%,0);
    pointer-events: none;
}
#fp-nav.fp-right {
    right: 17px;
}
#fp-nav.fp-left {
    left: 17px;
}
.fp-slidesNav{
    position: absolute;
    z-index: 4;
    opacity: 1;
    -webkit-transform: translate3d(0,0,0);
    -ms-transform: translate3d(0,0,0);
    transform: translate3d(0,0,0);
    left: 0 !important;
    right: 0;
    margin: 0 auto !important;
    pointer-events: none;
}
.fp-slidesNav.fp-bottom {
    bottom: 17px;
}
.fp-slidesNav.fp-top {
    top: 17px;
}
#fp-nav ul,
.fp-slidesNav ul {
  margin: 0;
  padding: 0;
}
#fp-nav ul li,
.fp-slidesNav ul li {
    display: block;
    width: 14px;
    height: 13px;
    margin: 7px;
    position:relative;
}
.fp-slidesNav ul li {
    display: inline-block;
}
#fp-nav ul li a,
.fp-slidesNav ul li a {
    display: block;
    position: relative;
    z-index: 1;
    width: 100%;
    height: 100%;
    cursor: pointer;
    text-decoration: none;
    pointer-events: all;
}
#fp-nav ul li a.active span,
.fp-slidesNav ul li a.active span,
#fp-nav ul li:hover a.active span,
.fp-slidesNav ul li:hover a.active span{
    height: 12px;
    width: 12px;
    margin: -6px 0 0 -6px;
    border-radius: 100%;
 }
#fp-nav ul li a span,
.fp-slidesNav ul li a span {
    border-radius: 50%;
    position: absolute;
    z-index: 1;
    height: 4px;
    width: 4px;
    border: 0;
    background: #333;
    left: 50%;
    top: 50%;
    margin: -2px 0 0 -2px;
    -webkit-transition: all 0.1s ease-in-out;
    -moz-transition: all 0.1s ease-in-out;
    -o-transition: all 0.1s ease-in-out;
    transition: all 0.1s ease-in-out;
}
#fp-nav ul li:hover a span,
.fp-slidesNav ul li:hover a span{
    width: 10px;
    height: 10px;
    margin: -5px 0px 0px -5px;
}
#fp-nav ul li .fp-tooltip {
    position: absolute;
    top: -2px;
    color: #fff;
    font-size: 14px;
    font-family: arial, helvetica, sans-serif;
    white-space: nowrap;
    max-width: 220px;
    overflow: hidden;
    display: block;
    opacity: 0;
    width: 0;
    cursor: pointer;
}
#fp-nav ul li:hover .fp-tooltip,
#fp-nav.fp-show-active a.active + .fp-tooltip {
    -webkit-transition: opacity 0.2s ease-in;
    transition: opacity 0.2s ease-in;
    width: auto;
    opacity: 1;
}
#fp-nav ul li .fp-tooltip.fp-right {
    right: 20px;
}
#fp-nav ul li .fp-tooltip.fp-left {
    left: 20px;
}
.fp-auto-height.fp-section,
.fp-auto-height .fp-slide{
    height: auto !important;
}

.fp-responsive .fp-is-overflow.fp-section{
    height: auto !important;
}

/* Tries to prevent overwrites #4657 */
.fp-enabled .fp-scrollable{
    overflow: visible;
    height: initial;
}

/* Used with autoScrolling: false */ 
.fp-scrollable.fp-responsive .fp-is-overflow.fp-section,
.fp-scrollable .fp-section,
.fp-scrollable .fp-slide{
   /* Fallback for browsers that do not support Custom Properties */
   height: 100vh;
   height: calc(var(--vh, 1vh) * 100);
}

.fp-scrollable.fp-responsive .fp-is-overflow.fp-section:not(.fp-auto-height):not([data-percentage]),
.fp-scrollable .fp-section:not(.fp-auto-height):not([data-percentage]),
.fp-scrollable .fp-slide:not(.fp-auto-height):not([data-percentage]){
    /* Fallback for browsers that do not support Custom Properties */
    min-height: 100vh;
    min-height: calc(var(--vh, 1vh) * 100);
}

/* Disabling vertical centering on scrollable elements */
.fp-overflow{
    justify-content: flex-start;
    width: 100%; /* In case its necessary #4717 */
}

body:not(.fp-responsive) .fp-overflow{
    max-height: 100vh;
    max-height: 100dvh; /* fix for new browsers */
}

/* No scrollable when using auto-height */
.fp-scrollable .fp-auto-height .fp-overflow{
    max-height: none;
}

.fp-is-overflow .fp-overflow.fp-auto-height-responsive,
.fp-is-overflow .fp-overflow.fp-auto-height,
.fp-is-overflow .fp-overflow{
    overflow-y: auto;
}
.fp-overflow{
    outline:none;
}

.fp-overflow.fp-table{
    display: block;
}

.fp-responsive .fp-auto-height-responsive.fp-section,
.fp-responsive .fp-auto-height-responsive .fp-slide,
.fp-responsive .fp-auto-height-responsive .fp-overflow{
    height: auto !important;
    min-height: auto !important;
}

/*Only display content to screen readers*/
.fp-sr-only{
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

/* Customize website's scrollbar like Mac OS
Not supports in Firefox and IE */
.fp-scroll-mac .fp-overflow::-webkit-scrollbar {
    background-color: transparent;
    width: 9px;
}
.fp-scroll-mac .fp-overflow::-webkit-scrollbar-track {
    background-color: transparent;
}
.fp-scroll-mac .fp-overflow::-webkit-scrollbar-thumb {
    background-color: rgba(0,0,0,.4);
    border-radius: 16px;
    border: 4px solid transparent;
}
.fp-warning,
.fp-watermark{
    z-index: 9999999;
    position: absolute;
    bottom: 0;
}
.fp-warning,
.fp-watermark a{
    text-decoration: none;
    color: #000;
    background: rgba(255,255,255,0.6);
    padding: 5px 8px;
    font-size: 14px;
    font-family: arial;
    color: black;
    display: inline-block;
    border-radius: 3px;
    margin: 12px;
}
.fp-noscroll .fp-overflow{
    overflow: hidden;
}

================================================
FILE: dist/fullpage.js
================================================
/*!
* fullPage 4.0.41
* https://github.com/alvarotrigo/fullPage.js
*
* @license GPLv3 for open source use only
* or Fullpage Commercial License for commercial use
* http://alvarotrigo.com/fullPage/pricing/
*
* Copyright (C) 2018 http://alvarotrigo.com/fullPage - A project by Alvaro Trigo
*/

(function (global, factory) {
    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
    typeof define === 'function' && define.amd ? define(factory) :
    (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.fullpage = factory());
})(this, (function () { 'use strict';

    // https://tc39.github.io/ecma262/#sec-array.prototype.find
    if (!Array.prototype.find) {
      Object.defineProperty(Array.prototype, 'find', {
        value: function value(predicate) {
          // 1. Let O be ? ToObject(this value).
          if (this == null) {
            throw new TypeError('"this" is null or not defined');
          }

          var o = Object(this); // 2. Let len be ? ToLength(? Get(O, "length")).

          var len = o.length >>> 0; // 3. If IsCallable(predicate) is false, throw a TypeError exception.

          if (typeof predicate !== 'function') {
            throw new TypeError('predicate must be a function');
          } // 4. If thisArg was supplied, let T be thisArg; else let T be undefined.


          var thisArg = arguments[1]; // 5. Let k be 0.

          var k = 0; // 6. Repeat, while k < len

          while (k < len) {
            // a. Let Pk be ! ToString(k).
            // b. Let kValue be ? Get(O, Pk).
            // c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)).
            // d. If testResult is true, return kValue.
            var kValue = o[k];

            if (predicate.call(thisArg, kValue, k, o)) {
              return kValue;
            } // e. Increase k by 1.


            k++;
          } // 7. Return undefined.


          return undefined;
        }
      });
    }

    // Production steps of ECMA-262, Edition 6, 22.1.2.1
    if (!Array.from) {
      Array.from = function () {
        var toStr = Object.prototype.toString;

        var isCallable = function isCallable(fn) {
          return typeof fn === 'function' || toStr.call(fn) === '[object Function]';
        };

        var toInteger = function toInteger(value) {
          var number = Number(value);

          if (isNaN(number)) {
            return 0;
          }

          if (number === 0 || !isFinite(number)) {
            return number;
          }

          return (number > 0 ? 1 : -1) * Math.floor(Math.abs(number));
        };

        var maxSafeInteger = Math.pow(2, 53) - 1;

        var toLength = function toLength(value) {
          var len = toInteger(value);
          return Math.min(Math.max(len, 0), maxSafeInteger);
        }; // The length property of the from method is 1.


        return function from(arrayLike
        /*, mapFn, thisArg */
        ) {
          // 1. Let C be the this value.
          var C = this; // 2. Let items be ToObject(arrayLike).

          var items = Object(arrayLike); // 3. ReturnIfAbrupt(items).

          if (arrayLike == null) {
            throw new TypeError('Array.from requires an array-like object - not null or undefined');
          } // 4. If mapfn is undefined, then let mapping be false.


          var mapFn = arguments.length > 1 ? arguments[1] : void undefined;
          var T;

          if (typeof mapFn !== 'undefined') {
            // 5. else
            // 5. a If IsCallable(mapfn) is false, throw a TypeError exception.
            if (!isCallable(mapFn)) {
              throw new TypeError('Array.from: when provided, the second argument must be a function');
            } // 5. b. If thisArg was supplied, let T be thisArg; else let T be undefined.


            if (arguments.length > 2) {
              T = arguments[2];
            }
          } // 10. Let lenValue be Get(items, "length").
          // 11. Let len be ToLength(lenValue).


          var len = toLength(items.length); // 13. If IsConstructor(C) is true, then
          // 13. a. Let A be the result of calling the [[Construct]] internal method
          // of C with an argument list containing the single item len.
          // 14. a. Else, Let A be ArrayCreate(len).

          var A = isCallable(C) ? Object(new C(len)) : new Array(len); // 16. Let k be 0.

          var k = 0; // 17. Repeat, while k < len… (also steps a - h)

          var kValue;

          while (k < len) {
            kValue = items[k];

            if (mapFn) {
              A[k] = typeof T === 'undefined' ? mapFn(kValue, k) : mapFn.call(T, kValue, k);
            } else {
              A[k] = kValue;
            }

            k += 1;
          } // 18. Let putStatus be Put(A, "length", len, true).


          A.length = len; // 20. Return A.

          return A;
        };
      }();
    }

    var win = window;
    var doc = document;
    var isTouchDevice = navigator.userAgent.match(/(iPhone|iPod|iPad|Android|playbook|silk|BlackBerry|BB10|Windows Phone|Tizen|Bada|webOS|IEMobile|Opera Mini)/) || navigator.userAgent.includes("Mac") && "ontouchend" in document; // iPad on iOS 13 detection

    var isMacDevice = /(Mac|iPhone|iPod|iPad)/i.test(win.navigator.userAgent); // @ts-ignore

    var isTouch = 'ontouchstart' in win || navigator.msMaxTouchPoints > 0 || navigator.maxTouchPoints;
    var isIE11 = !!window.MSInputMethodContext && !!document.documentMode; // taken from https://github.com/udacity/ud891/blob/gh-pages/lesson2-focus/07-modals-and-keyboard-traps/solution/modal.js

    var focusableElementsString = 'a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, [tabindex="0"], summary:not([disabled]), [contenteditable]'; // cache common elements

    var FP = {
      test: {},
      shared: {}
    };
    var extensions = ['parallax', 'scrollOverflowReset', 'dragAndMove', 'offsetSections', 'fadingEffect', 'responsiveSlides', 'continuousHorizontal', 'interlockedSlides', 'scrollHorizontally', 'resetSliders', 'cards', 'dropEffect', 'waterEffect'];
    var isInsideIframe = function () {
      var inIframe = window.self !== window.top;
      return function () {
        return inIframe;
      };
    }();

    /**
    * forEach polyfill for IE
    * https://developer.mozilla.org/en-US/docs/Web/API/NodeList/forEach#Browser_Compatibility
    */

    if (win.NodeList && !NodeList.prototype.forEach) {
      NodeList.prototype.forEach = function (callback, thisArg) {
        thisArg = thisArg || window;

        for (var i = 0; i < this.length; i++) {
          callback.call(thisArg, this[i], i, this);
        }
      };
    }

    if (typeof Object.assign != 'function') {
      // Must be writable: true, enumerable: false, configurable: true
      Object.defineProperty(Object, 'assign', {
        value: function assign(target, varArgs) {

          if (target == null) {
            // TypeError if undefined or null
            throw new TypeError('Cannot convert undefined or null to object');
          }

          var to = Object(target);

          for (var index = 1; index < arguments.length; index++) {
            var nextSource = arguments[index];

            if (nextSource != null) {
              // Skip over if undefined or null
              for (var nextKey in nextSource) {
                // Avoid bugs when hasOwnProperty is shadowed
                if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {
                  to[nextKey] = nextSource[nextKey];
                }
              }
            }
          }

          return to;
        },
        writable: true,
        configurable: true
      });
    }

    // https://stackoverflow.com/questions/51719553/padstart-not-working-in-ie11
    // https://github.com/behnammodi/polyfill/blob/master/string.polyfill.js
    // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padStart
    if (!String.prototype.padStart) {
      String.prototype.padStart = function padStart(targetLength, padString) {
        targetLength = targetLength >> 0; //truncate if number or convert non-number to 0;

        padString = String(typeof padString !== 'undefined' ? padString : ' ');

        if (this.length > targetLength) {
          return String(this);
        } else {
          targetLength = targetLength - this.length;

          if (targetLength > padString.length) {
            padString += Array.apply(null, Array(targetLength)).map(function () {
              return padString;
            }).join("");
          }

          return padString.slice(0, targetLength) + String(this);
        }
      };
    }

    //utils
    /**
    * Shows a message in the console of the given type.
    */

    function showError(type, text) {
      win.console && win.console[type] && win.console[type]('fullPage: ' + text);
    }
    function isVisible(el) {
      var style = win.getComputedStyle(el);
      return style.display !== 'none';
    }
    function getVisible(elements) {
      return Array.from(elements).filter(function (e) {
        return isVisible(e);
      });
    }
    /**
    * Equivalent of jQuery function $().
    */

    function $(selector, context) {
      context = arguments.length > 1 ? context : document;
      return context ? context.querySelectorAll(selector) : null;
    }
    /**
    * Extends a given Object properties and its childs.
    */

    function deepExtend(out) {
      out = out || {};

      for (var i = 1, len = arguments.length; i < len; ++i) {
        var obj = arguments[i];

        if (!obj) {
          continue;
        }

        for (var key in obj) {
          if (!obj.hasOwnProperty(key) || key == '__proto__' || key == 'constructor') {
            continue;
          } // based on https://javascriptweblog.wordpress.com/2011/08/08/fixing-the-javascript-typeof-operator/


          if (Object.prototype.toString.call(obj[key]) === '[object Object]') {
            out[key] = deepExtend(out[key], obj[key]);
            continue;
          }

          out[key] = obj[key];
        }
      }

      return out;
    }
    /**
    * Checks if the passed element contains the passed class.
    */

    function hasClass(el, className) {
      if (el == null) {
        return false;
      }

      return el.classList.contains(className);
    }
    /**
    * Gets the window height. Crossbrowser.
    */

    function getWindowHeight() {
      return 'innerHeight' in win ? win.innerHeight : doc.documentElement.offsetHeight;
    }
    /**
    * Gets the window width.
    */

    function getWindowWidth() {
      return win.innerWidth;
    }
    /**
    * Set's the CSS properties for the passed item/s.
    * @param {NodeList|HTMLElement|Object} items
    * @param {Object} props css properties and values.
    */

    function css(items, props) {
      items = getList(items);
      var key;

      for (key in props) {
        if (props.hasOwnProperty(key)) {
          if (key !== null) {
            for (var i = 0; i < items.length; i++) {
              var item = items[i];
              item.style[key] = props[key];
            }
          }
        }
      }

      return items;
    }
    /**
    * Gets the previous element to the passed element.
    */

    function prev(item) {
      return item.previousElementSibling;
    }
    /**
    * Gets the next element to the passed element.
    */

    function next(item) {
      return item.nextElementSibling;
    }
    /**
    * Gets the last element from the passed list of elements.
    */

    function last(item) {
      return item[item.length - 1];
    }
    /**
    * Gets index from the passed element.
    * @param {String} selector is optional.
    */

    function index(item, selector) {
      item = isArrayOrList(item) ? item[0] : item;
      var children = selector != null ? $(selector, item.parentNode) : item.parentNode.childNodes;
      var num = 0;

      for (var i = 0; i < children.length; i++) {
        if (children[i] == item) return num;
        if (children[i].nodeType == 1) num++;
      }

      return -1;
    }
    /**
    * Gets an iterable element for the passed element/s
    */

    function getList(item) {
      return !isArrayOrList(item) ? [item] : item;
    }
    /**
    * Adds the display=none property for the passed element/s
    */

    function hide(el) {
      el = getList(el);

      for (var i = 0; i < el.length; i++) {
        el[i].style.display = 'none';
      }

      return el;
    }
    /**
    * Adds the display=block property for the passed element/s
    */

    function show(el) {
      el = getList(el);

      for (var i = 0; i < el.length; i++) {
        el[i].style.display = 'block';
      }

      return el;
    }
    /**
    * Checks if the passed element is an iterable element or not
    */

    function isArrayOrList(el) {
      return Object.prototype.toString.call(el) === '[object Array]' || Object.prototype.toString.call(el) === '[object NodeList]';
    }
    /**
    * Adds the passed class to the passed element/s
    */

    function addClass(el, className) {
      el = getList(el);

      for (var i = 0; i < el.length; i++) {
        var item = el[i];
        item.classList.add(className);
      }

      return el;
    }
    /**
    * Removes the passed class to the passed element/s
    * @param {String} `className` can be multiple classnames separated by whitespace
    */

    function removeClass(el, className) {
      el = getList(el);
      var classNames = className.split(' ');

      for (var a = 0; a < classNames.length; a++) {
        className = classNames[a];

        for (var i = 0; i < el.length; i++) {
          var item = el[i];
          item.classList.remove(className);
        }
      }

      return el;
    }
    /**
    * Appends the given element ot the given parent.
    */

    function appendTo(el, parent) {
      parent.appendChild(el);
    }
    /**
    Usage:

    var wrapper = document.createElement('div');
    wrapper.className = 'fp-slides';
    wrap($('.slide'), wrapper);

    https://jsfiddle.net/qwzc7oy3/15/ (vanilla)
    https://jsfiddle.net/oya6ndka/1/ (jquery equivalent)
    */

    function wrap(toWrap, wrapper, isWrapAll) {
      var newParent;
      wrapper = wrapper || doc.createElement('div');

      for (var i = 0; i < toWrap.length; i++) {
        var item = toWrap[i];

        if (isWrapAll && !i || !isWrapAll) {
          newParent = wrapper.cloneNode(true);
          item.parentNode.insertBefore(newParent, item);
        }

        newParent.appendChild(item);
      }

      return toWrap;
    }
    /**
    Usage:
    var wrapper = document.createElement('div');
    wrapper.className = 'fp-slides';
    wrap($('.slide'), wrapper);

    https://jsfiddle.net/qwzc7oy3/27/ (vanilla)
    https://jsfiddle.net/oya6ndka/4/ (jquery equivalent)
    */

    function wrapAll(toWrap, wrapper) {
      wrap(toWrap, wrapper, true);
    }
    /**
    * Usage:
    * wrapInner(document.querySelector('#pepe'), '<div class="test">afdas</div>');
    * wrapInner(document.querySelector('#pepe'), element);
    *
    * https://jsfiddle.net/zexxz0tw/6/
    *
    * https://stackoverflow.com/a/21817590/1081396
    */

    function wrapInner(parent, wrapper) {
      parent.appendChild(wrapper);

      while (parent.firstChild !== wrapper) {
        wrapper.appendChild(parent.firstChild);
      }
    }
    /**
    * Usage:
    * unwrap(document.querySelector('#pepe'));
    * unwrap(element);
    *
    * https://jsfiddle.net/szjt0hxq/1/
    *
    */

    function unwrap(wrapper) {
      var wrapperContent = doc.createDocumentFragment();

      while (wrapper.firstChild) {
        wrapperContent.appendChild(wrapper.firstChild);
      }

      wrapper.parentNode.replaceChild(wrapperContent, wrapper);
    }
    /**
    * http://stackoverflow.com/questions/22100853/dom-pure-javascript-solution-to-jquery-closest-implementation
    * Returns the element or `false` if there's none
    */

    function closest(el, selector) {
      if (el && el.nodeType === 1) {
        if (matches(el, selector)) {
          return el;
        }

        return closest(el.parentNode, selector);
      }

      return null;
    }
    /**
    * Places one element (rel) after another one or group of them (reference).
    * @param {HTMLElement} reference
    * @param {HTMLElement|NodeList|String|Array} el
    * https://jsfiddle.net/9s97hhzv/1/
    */

    function after(reference, el) {
      insertBefore(reference, reference.nextSibling, el);
    }
    /**
    * Places one element (rel) before another one or group of them (reference).
    * @param {HTMLElement} reference
    * @param {HTMLElement|NodeList|String|Array} el
    * https://jsfiddle.net/9s97hhzv/1/
    */

    function before(reference, el) {
      insertBefore(reference, reference, el);
    }
    /**
    * Based in https://stackoverflow.com/a/19316024/1081396
    * and https://stackoverflow.com/a/4793630/1081396
    */

    function insertBefore(reference, beforeElement, el) {
      if (!isArrayOrList(el)) {
        if (typeof el == 'string') {
          el = createElementFromHTML(el);
        }

        el = [el];
      }

      for (var i = 0; i < el.length; i++) {
        reference.parentNode.insertBefore(el[i], beforeElement);
      }
    } //http://stackoverflow.com/questions/3464876/javascript-get-window-x-y-position-for-scroll

    function getScrollTop() {
      var docElement = doc.documentElement;
      return (win.pageYOffset || docElement.scrollTop) - (docElement.clientTop || 0);
    }
    /**
    * Gets the siblings of the passed element
    */

    function siblings(el) {
      return Array.prototype.filter.call(el.parentNode.children, function (child) {
        return child !== el;
      });
    }
    function preventDefault(event) {
      event.preventDefault();
    }
    function getAttr(el, attr) {
      return el.getAttribute(attr);
    }
    function docAddEvent(event, callback, options) {
      doc.addEventListener(event, callback, options === 'undefined' ? null : options);
    }
    function windowAddEvent(event, callback, options) {
      win.addEventListener(event, callback, options === 'undefined' ? null : options);
    }
    function docRemoveEvent(event, callback, options) {
      doc.removeEventListener(event, callback, options === 'undefined' ? null : options);
    }
    function windowRemoveEvent(event, callback, options) {
      win.removeEventListener(event, callback, options === 'undefined' ? null : options);
    }
    /**
    * Determines whether the passed item is of function type.
    */

    function isFunction(item) {
      if (typeof item === 'function') {
        return true;
      }

      var type = Object.prototype.toString.call(item);
      return type === '[object Function]' || type === '[object GeneratorFunction]';
    }
    /**
    * Trigger custom events
    */

    function trigger(el, eventName, data) {
      var event;
      data = typeof data === 'undefined' ? {} : data; // Native

      if (typeof win.CustomEvent === "function") {
        event = new CustomEvent(eventName, {
          detail: data
        });
      } else {
        event = doc.createEvent('CustomEvent');
        event.initCustomEvent(eventName, true, true, data);
      }

      el.dispatchEvent(event);
    }
    /**
    * Polyfill of .matches()
    */

    function matches(el, selector) {
      return (el.matches || el.matchesSelector || el.msMatchesSelector || el.mozMatchesSelector || el.webkitMatchesSelector || el.oMatchesSelector).call(el, selector);
    }
    /**
    * Toggles the visibility of the passed element el.
    */

    function toggle(el, value) {
      if (typeof value === "boolean") {
        for (var i = 0; i < el.length; i++) {
          el[i].style.display = value ? 'block' : 'none';
        }
      } //we don't use it in other way, so no else :)


      return el;
    }
    /**
    * Creates a HTMLElement from the passed HTML string.
    * https://stackoverflow.com/a/494348/1081396
    */

    function createElementFromHTML(htmlString) {
      var div = doc.createElement('div');
      div.innerHTML = htmlString.trim(); // Change this to div.childNodes to support multiple top-level nodes

      return div.firstChild;
    }
    /**
    * Removes the passed item/s from the DOM.
    */

    function remove(items) {
      items = getList(items);

      for (var i = 0; i < items.length; i++) {
        var item = items[i];

        if (item && item.parentElement) {
          item.parentNode.removeChild(item);
        }
      }
    } //https://jsfiddle.net/w1rktecz/

    function untilAll(item, selector, fn) {
      var sibling = item[fn];
      var siblings = [];

      while (sibling) {
        if (matches(sibling, selector) || selector == null) {
          siblings.push(sibling);
        }

        sibling = sibling[fn];
      }

      return siblings;
    }
    /**
    * Gets all next elements matching the passed selector.
    */

    function nextAll(item, selector) {
      return untilAll(item, selector, 'nextElementSibling');
    }
    /**
    * Gets all previous elements matching the passed selector.
    */

    function prevAll(item, selector) {
      return untilAll(item, selector, 'previousElementSibling');
    }
    /**
    * Converts an object to an array.
    */

    function toArray(objectData) {
      return Object.keys(objectData).map(function (key) {
        return objectData[key];
      });
    }
    function getLast(items) {
      return items[items.length - 1];
    }
    /**
    * Gets the average of the last `number` elements of the given array.
    */

    function getAverage(elements, number) {
      var sum = 0; //taking `number` elements from the end to make the average, if there are not enought, 1

      var lastElements = elements.slice(Math.max(elements.length - number, 1));

      for (var i = 0; i < lastElements.length; i++) {
        sum = sum + lastElements[i];
      }

      return Math.ceil(sum / number);
    }
    /**
    * Sets the value for the given attribute from the `data-` attribute with the same suffix
    * ie: data-srcset ==> srcset  |  data-src ==> src
    */

    function setSrc(element, attribute) {
      element.setAttribute(attribute, getAttr(element, 'data-' + attribute));
      element.removeAttribute('data-' + attribute);
    }
    function getParentsUntil(item, topParentSelector) {
      var parents = [item];

      do {
        item = item.parentNode;
        parents.push(item);
      } while (!matches(item, topParentSelector));

      return parents;
    }
    function isInsideInput() {
      var activeElement = doc.activeElement;
      return matches(activeElement, 'textarea') || matches(activeElement, 'input') || matches(activeElement, 'select') || getAttr(activeElement, 'contentEditable') == "true" || getAttr(activeElement, 'contentEditable') == '';
    } //utils are public, so we can use it wherever we want
    // @ts-ignore

    window["fp_utils"] = {
      "$": $,
      "deepExtend": deepExtend,
      "hasClass": hasClass,
      "getWindowHeight": getWindowHeight,
      "css": css,
      "prev": prev,
      "next": next,
      "last": last,
      "index": index,
      "getList": getList,
      "hide": hide,
      "show": show,
      "isArrayOrList": isArrayOrList,
      "addClass": addClass,
      "removeClass": removeClass,
      "appendTo": appendTo,
      "wrap": wrap,
      "wrapAll": wrapAll,
      "unwrap": unwrap,
      "closest": closest,
      "after": after,
      "before": before,
      "insertBefore": insertBefore,
      "getScrollTop": getScrollTop,
      "siblings": siblings,
      "preventDefault": preventDefault,
      "isFunction": isFunction,
      "trigger": trigger,
      "matches": matches,
      "toggle": toggle,
      "createElementFromHTML": createElementFromHTML,
      "remove": remove,
      // "filter": filter,
      "untilAll": untilAll,
      "nextAll": nextAll,
      "prevAll": prevAll,
      "showError": showError
    };

    var utils = /*#__PURE__*/Object.freeze({
        __proto__: null,
        showError: showError,
        isVisible: isVisible,
        getVisible: getVisible,
        $: $,
        deepExtend: deepExtend,
        hasClass: hasClass,
        getWindowHeight: getWindowHeight,
        getWindowWidth: getWindowWidth,
        css: css,
        prev: prev,
        next: next,
        last: last,
        index: index,
        getList: getList,
        hide: hide,
        show: show,
        isArrayOrList: isArrayOrList,
        addClass: addClass,
        removeClass: removeClass,
        appendTo: appendTo,
        wrap: wrap,
        wrapAll: wrapAll,
        wrapInner: wrapInner,
        unwrap: unwrap,
        closest: closest,
        after: after,
        before: before,
        insertBefore: insertBefore,
        getScrollTop: getScrollTop,
        siblings: siblings,
        preventDefault: preventDefault,
        getAttr: getAttr,
        docAddEvent: docAddEvent,
        windowAddEvent: windowAddEvent,
        docRemoveEvent: docRemoveEvent,
        windowRemoveEvent: windowRemoveEvent,
        isFunction: isFunction,
        trigger: trigger,
        matches: matches,
        toggle: toggle,
        createElementFromHTML: createElementFromHTML,
        remove: remove,
        untilAll: untilAll,
        nextAll: nextAll,
        prevAll: prevAll,
        toArray: toArray,
        getLast: getLast,
        getAverage: getAverage,
        setSrc: setSrc,
        getParentsUntil: getParentsUntil,
        isInsideInput: isInsideInput
    });

    function _typeof(obj) {
      "@babel/helpers - typeof";

      if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
        _typeof = function (obj) {
          return typeof obj;
        };
      } else {
        _typeof = function (obj) {
          return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
        };
      }

      return _typeof(obj);
    }

    var EventEmitter = {
      events: {},
      on: function on(event, listener) {
        var _this = this;

        if (_typeof(this.events[event]) !== 'object') {
          this.events[event] = [];
        }

        this.events[event].push(listener);
        return function () {
          return _this.removeListener(event, listener);
        };
      },
      removeListener: function removeListener(event, listener) {
        if (_typeof(this.events[event]) === 'object') {
          var idx = this.events[event].indexOf(listener);

          if (idx > -1) {
            this.events[event].splice(idx, 1);
          }
        }
      },
      emit: function emit(event) {
        var _this2 = this;

        for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
          args[_key - 1] = arguments[_key];
        }

        if (_typeof(this.events[event]) === 'object') {
          this.events[event].forEach(function (listener) {
            return listener.apply(_this2, args);
          });
        }
      },
      once: function once(event, listener) {
        var _this3 = this;

        var remove = this.on(event, function () {
          remove();

          for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
            args[_key2] = arguments[_key2];
          }

          listener.apply(_this3, args);
        });
      }
    };

    var defaultState = {
      numSections: 0,
      numSlides: 0,
      slides: [],
      sections: [],
      activeSection: null,
      scrollTrigger: null,
      isBeyondFullpage: false,
      aboutToScrollToFullPage: false,
      slideMoving: false,
      isResizing: false,
      isScrolling: false,
      lastScrolledDestiny: undefined,
      lastScrolledSlide: undefined,
      activeAnimation: false,
      canScroll: true,
      touchDirection: 'none',
      wheelDirection: 'none',
      isGrabbing: false,
      isUsingWheel: false,
      isWindowFocused: true,
      previousDestTop: 0,
      windowsHeight: getWindowHeight(),
      isDoingContinousVertical: false,
      timeouts: {},
      scrollY: 0,
      scrollX: 0,
      isFullpageInitDone: false
    };
    var state = Object.assign({}, defaultState); // @ts-ignore

    win.state = state;
    function setState(props) {
      Object.assign(state, props);
    }
    function getState() {
      return state;
    }
    function getActivePanel() {
      return state.activeSection && state.activeSection.activeSlide ? state.activeSection.activeSlide : state.activeSection;
    }
    function resetState() {
      setState(defaultState);
    }

    var events = {
      onAfterRenderNoAnchor: 'onAfterRenderNoAnchor',
      onClickOrTouch: 'onClickOrTouch',
      moveSlideLeft: 'moveSlideLeft',
      moveSlideRight: 'moveSlideRight',
      onInitialise: 'onInitialise',
      beforeInit: 'beforeInit',
      bindEvents: 'bindEvents',
      onDestroy: 'onDestroy',
      onDestroyAll: 'onDestroyAll',
      contentChanged: 'contentChanged',
      onScrollOverflowScrolled: 'onScrollOverflowScrolled',
      onScrollPageAndSlide: 'onScrollPageAndSlide',
      onKeyDown: 'onKeyDown',
      onMenuClick: 'onMenuClick',
      scrollPage: 'scrollPage',
      landscapeScroll: 'landscapeScroll',
      scrollBeyondFullpage: 'scrollBeyondFullpage',
      onPerformMovement: 'onPerformMovement',
      onSlideLeave: 'onSlideLeave',
      onLeave: 'onLeave',
      afterSectionLoads: 'afterSectionLoads',
      afterSlideLoads: 'afterSlideLoads'
    };

    EventEmitter.on(events.bindEvents, bindEvents$c);

    function bindEvents$c() {
      //Scrolls to the section when clicking the navigation bullet
      //simulating the jQuery .on('click') event using delegation
      ['click', 'touchstart'].forEach(function (eventName) {
        docAddEvent(eventName, delegatedEvents);
      });
      windowAddEvent('focus', focusHandler);
      internalEvents();
    }

    function internalEvents() {
      EventEmitter.on(events.onDestroy, onDestroy$9);
    }

    function delegatedEvents(e) {
      EventEmitter.emit(events.onClickOrTouch, {
        e: e,
        target: e.target
      });
    }

    function onDestroy$9() {
      ['click', 'touchstart'].forEach(function (eventName) {
        docRemoveEvent(eventName, delegatedEvents);
      });
    } // changing isWindowFocused to true on focus event


    function focusHandler() {
      setState({
        isWindowFocused: true
      });
    }

    // keeping central set of classnames and selectors
    var WRAPPER = 'fullpage-wrapper';
    var WRAPPER_SEL = '.' + WRAPPER; // slimscroll

    var SCROLLABLE = 'fp-scrollable';

    var RESPONSIVE = 'fp-responsive';
    var NO_TRANSITION = 'fp-notransition';
    var DESTROYED = 'fp-destroyed';
    var ENABLED = 'fp-enabled';
    var VIEWING_PREFIX = 'fp-viewing';
    var ACTIVE = 'active';
    var ACTIVE_SEL = '.' + ACTIVE;
    var COMPLETELY = 'fp-completely';
    var COMPLETELY_SEL = '.' + COMPLETELY;
    var LOADED = 'fp-loaded';

    var SECTION_DEFAULT_SEL = '.section';
    var SECTION = 'fp-section';
    var SECTION_SEL = '.' + SECTION;
    var SECTION_ACTIVE_SEL = SECTION_SEL + ACTIVE_SEL;
    var TABLE_CELL = 'fp-tableCell';
    var TABLE_CELL_SEL = '.' + TABLE_CELL;
    var AUTO_HEIGHT = 'fp-auto-height';
    var AUTO_HEIGHT_SEL = '.' + AUTO_HEIGHT;
    var AUTO_HEIGHT_RESPONSIVE = 'fp-auto-height-responsive';
    var AUTO_HEIGHT_RESPONSIVE_SEL = '.' + AUTO_HEIGHT_RESPONSIVE;
    var NORMAL_SCROLL = 'fp-normal-scroll';

    var SECTION_NAV = 'fp-nav';
    var SECTION_NAV_SEL = '#' + SECTION_NAV;
    var SECTION_NAV_TOOLTIP = 'fp-tooltip';
    var SECTION_NAV_TOOLTIP_SEL = '.' + SECTION_NAV_TOOLTIP;
    var SHOW_ACTIVE_TOOLTIP = 'fp-show-active'; // slide

    var SLIDE_DEFAULT_SEL = '.slide';
    var SLIDE = 'fp-slide';
    var SLIDE_SEL = '.' + SLIDE;
    var SLIDE_ACTIVE_SEL = SLIDE_SEL + ACTIVE_SEL;
    var SLIDES_WRAPPER = 'fp-slides';
    var SLIDES_WRAPPER_SEL = '.' + SLIDES_WRAPPER;
    var SLIDES_CONTAINER = 'fp-slidesContainer';
    var SLIDES_CONTAINER_SEL = '.' + SLIDES_CONTAINER;
    var TABLE = 'fp-table';
    var OVERFLOW = 'fp-overflow';
    var OVERFLOW_SEL = '.' + OVERFLOW;
    var IS_OVERFLOW = 'fp-is-overflow'; // slide nav

    var SLIDES_NAV = 'fp-slidesNav';
    var SLIDES_NAV_SEL = '.' + SLIDES_NAV;
    var SLIDES_NAV_LINK_SEL = SLIDES_NAV_SEL + ' a';
    var SLIDES_STYLED_ARROW = 'fp-arrow';
    var SLIDES_ARROW = 'fp-controlArrow';
    var SLIDES_ARROW_SEL = '.' + SLIDES_ARROW;
    var SLIDES_PREV = 'fp-prev';
    var SLIDES_PREV_SEL = '.' + SLIDES_PREV;
    var SLIDES_ARROW_PREV_SEL = SLIDES_ARROW_SEL + SLIDES_PREV_SEL;
    var SLIDES_NEXT = 'fp-next';
    var SLIDES_NEXT_SEL = '.' + SLIDES_NEXT;
    var SLIDES_ARROW_NEXT_SEL = SLIDES_ARROW_SEL + SLIDES_NEXT_SEL; // Watermark

    var WATERMARK = 'fp-watermark';
    var WATERMARK_SEL = '.' + WATERMARK;

    var defaultOptions = {
      //navigation
      menu: false,
      anchors: [],
      lockAnchors: false,
      navigation: false,
      navigationPosition: 'right',
      navigationTooltips: [],
      showActiveTooltip: false,
      slidesNavigation: false,
      slidesNavPosition: 'bottom',
      scrollBar: false,
      hybrid: false,
      licenseKey: '',
      credits: {
        "enabled": true,
        "label": 'Made with fullPage.js',
        "position": 'right'
      },
      //scrolling
      css3: true,
      scrollingSpeed: 700,
      autoScrolling: true,
      fitToSection: true,
      fitToSectionDelay: 600,
      easing: 'easeInOutCubic',
      easingcss3: 'ease',
      loopBottom: false,
      loopTop: false,
      loopHorizontal: true,
      continuousVertical: false,
      continuousHorizontal: false,
      scrollHorizontally: false,
      interlockedSlides: false,
      dragAndMove: false,
      offsetSections: false,
      resetSliders: false,
      fadingEffect: false,
      normalScrollElements: null,
      scrollOverflow: true,
      scrollOverflowReset: false,
      skipIntermediateItems: false,
      touchSensitivity: 5,
      touchWrapper: null,
      bigSectionsDestination: null,
      adjustOnNavChange: true,
      //Accessibility
      keyboardScrolling: true,
      animateAnchor: true,
      recordHistory: true,
      allowCorrectDirection: false,
      //design
      scrollOverflowMacStyle: true,
      controlArrows: true,
      controlArrowsHTML: ['<div class="' + SLIDES_STYLED_ARROW + '"></div>', '<div class="' + SLIDES_STYLED_ARROW + '"></div>'],
      controlArrowColor: '#fff',
      verticalCentered: true,
      sectionsColor: [],
      paddingTop: 0,
      paddingBottom: 0,
      fixedElements: null,
      responsive: 0,
      //backwards compabitility with responsiveWiddth
      responsiveWidth: 0,
      responsiveHeight: 0,
      responsiveSlides: false,
      parallax: false,
      parallaxOptions: {
        type: 'reveal',
        percentage: 62,
        property: 'translate'
      },
      cards: false,
      cardsOptions: {
        perspective: 100,
        fadeContent: true,
        fadeBackground: true
      },
      //Custom selectors
      sectionSelector: SECTION_DEFAULT_SEL,
      slideSelector: SLIDE_DEFAULT_SEL,
      //events
      afterLoad: null,
      beforeLeave: null,
      onLeave: null,
      afterRender: null,
      afterResize: null,
      afterReBuild: null,
      afterSlideLoad: null,
      onSlideLeave: null,
      afterResponsive: null,
      onScrollOverflow: null,
      lazyLoading: true,
      lazyLoadThreshold: 0,
      observer: true,
      scrollBeyondFullpage: true,
      rtl: false
    };

    var container = null;
    var g_initialAnchorsInDom = false;
    var originals = deepExtend({}, defaultOptions); //deep copy

    var g_options = null;
    function getInitialAnchorsInDom() {
      return g_initialAnchorsInDom;
    }
    function setContainer(value) {
      container = value;
    }
    function getContainer(value) {
      return container;
    }
    function getOptions() {
      return g_options || defaultOptions;
    }
    function setOptions(options) {
      g_options = deepExtend({}, defaultOptions, options);
      originals = Object.assign({}, g_options);
    }
    function getOriginals() {
      return originals;
    }
    function setOption(name, value) {
      defaultOptions[name] = value;
    }
    /*
    * Sets the state for a variable with multiple states (original, and temporal)
    * Some variables such as `autoScrolling` or `recordHistory` might change automatically its state when using `responsive` or `autoScrolling:false`.
    * This function is used to keep track of both states, the original and the temporal one.
    * If type is not 'internal', then we assume the user is globally changing the variable.
    */

    function setVariableState(variable, value, type) {
      g_options[variable] = value;

      if (type !== 'internal') {
        originals[variable] = value;
      }
    }
    /**
    * Setting options from DOM elements if they are not provided.
    */

    function setOptionsFromDOM() {
      //no anchors option? Checking for them in the DOM attributes
      if (!getOptions().anchors.length) {
        var anchorsAttribute = '[data-anchor]';
        var anchors = $(getOptions().sectionSelector.split(',').join(anchorsAttribute + ',') + anchorsAttribute, container);

        if (anchors.length && anchors.length === $(getOptions().sectionSelector, container).length) {
          g_initialAnchorsInDom = true;
          anchors.forEach(function (item) {
            getOptions().anchors.push(getAttr(item, 'data-anchor').toString());
          });
        }
      } //no tooltips option? Checking for them in the DOM attributes


      if (!getOptions().navigationTooltips.length) {
        var tooltipsAttribute = '[data-tooltip]';
        var tooltips = $(getOptions().sectionSelector.split(',').join(tooltipsAttribute + ',') + tooltipsAttribute, container);

        if (tooltips.length) {
          tooltips.forEach(function (item) {
            getOptions().navigationTooltips.push(getAttr(item, 'data-tooltip').toString());
          });
        }
      }
    }

    var plainItem = function plainItem(panel) {
      this.anchor = panel.anchor;
      this.item = panel.item;
      this.index = panel.index();
      this.isLast = this.index === panel.item.parentElement.querySelectorAll(panel.selector).length - 1;
      this.isFirst = !this.index;
      this.isActive = panel.isActive;
    };
    /**
    * Item. Slide or Section objects share the same properties.
    */

    var Item = function Item(el, selector) {
      this.parent = this.parent || null;
      this.selector = selector;
      this.anchor = getAttr(el, 'data-anchor') || getOptions().anchors[index(el, getOptions().sectionSelector)];
      this.item = el;
      this.isVisible = isVisible(el);
      this.isActive = hasClass(el, ACTIVE);
      this.hasScroll = hasClass(el, OVERFLOW) || $(OVERFLOW_SEL, el)[0] != null;
      this.isSection = selector === getOptions().sectionSelector;
      this.container = closest(el, SLIDES_CONTAINER_SEL) || closest(el, WRAPPER_SEL);

      this.index = function () {
        return this.siblings().indexOf(this);
      };
    };

    Item.prototype.siblings = function () {
      if (this.isSection) {
        if (this.isVisible) {
          return state.sections;
        } else {
          return state.sectionsIncludingHidden;
        }
      }

      return this.parent ? this.parent.slides : 0;
    };

    Item.prototype.prev = function () {
      var siblings = this.siblings();
      var currentIndex = this.isSection ? siblings.indexOf(this) : this.parent.slides.indexOf(this);
      var prevIndex = currentIndex - 1;

      if (prevIndex >= 0) {
        return siblings[prevIndex];
      }

      return null;
    };

    Item.prototype.next = function () {
      var siblings = this.siblings();
      var currentIndex = this.isSection ? siblings.indexOf(this) : this.parent.slides.indexOf(this);
      var nextIndex = currentIndex + 1;

      if (nextIndex < siblings.length) {
        return siblings[nextIndex];
      }

      return null;
    };

    Item.prototype["prevPanel"] = function () {
      return this.prev() || (this.parent ? this.parent.prev() : null);
    };

    Item.prototype["nextPanel"] = function () {
      return this.next() || (this.parent ? this.parent.next() : null);
    };

    Item.prototype.getSiblings = function () {
      if (this.isSection) {
        return state.sections;
      }

      return state.panels;
    };

    function getNodes(panels) {
      return panels.map(function (panel) {
        return panel.item;
      });
    }
    function getPanelByElement(panels, el) {
      return panels.find(function (panel) {
        return panel.item === el;
      });
    }
    var Section = function Section(el) {
      plainItem.call(this, el);
    };
    var Slide = function Slide(el) {
      plainItem.call(this, el);
    };

    /**
    * Gets the active slide (or section) for the given section
    */

    function getSlideOrSection(destiny) {
      var slide = $(SLIDE_ACTIVE_SEL, destiny);

      if (slide.length) {
        destiny = slide[0];
      }

      return destiny;
    }
    function getSlideOrSectionPanel(panel) {
      if (!panel) {
        return null;
      }

      return panel.activeSlide ? panel.activeSlide : panel;
    }
    function isFullPageAbove() {
      return getContainer().getBoundingClientRect().bottom >= 0;
    }
    /**
    * Gets the scrolling settings depending on the plugin autoScrolling option
    */

    function getScrollSettings(top) {
      var options = getOptions();
      var position;
      var element; //top property animation

      if (options.autoScrolling && !options.scrollBar) {
        position = -top;
        element = $(WRAPPER_SEL)[0];
      } //window real scrolling
      else {
        position = top;
        element = window;
      }

      return {
        options: position,
        element: element
      };
    }
    /**
    * Scrolls the page / slider the given number of pixels.
    * It will do it one or another way dependiong on the library's config.
    */

    function setScrolling(element, val) {
      if (!getOptions().autoScrolling || getOptions().scrollBar || element.self != window && hasClass(element, SLIDES_WRAPPER)) {
        //scrolling horizontally through the slides?
        if (element.self != window && hasClass(element, SLIDES_WRAPPER)) {
          element.scrollLeft = val;
        } //vertical scroll
        else {
          element.scrollTo(0, val);
        }
      } else {
        element.style.top = val + 'px';
      }
    }
    /**
    * Adds transition animations for the given element
    */

    function addAnimation(element) {
      var transition = 'transform ' + getOptions().scrollingSpeed + 'ms ' + getOptions().easingcss3;
      removeClass(element, NO_TRANSITION);
      return css(element, {
        '-webkit-transition': transition,
        'transition': transition
      });
    }
    /**
    * Retuns `up` or `down` depending on the scrolling movement to reach its destination
    * from the current section.
    */

    function getYmovement(activeSection, destiny) {
      var fromIndex = activeSection.index();
      var toIndex = index(destiny, SECTION_SEL);

      if (fromIndex == toIndex) {
        return 'none';
      }

      if (fromIndex > toIndex) {
        return 'up';
      }

      return 'down';
    }
    /**
    * Remove transition animations for the given element
    */

    function removeAnimation(element) {
      return addClass(element, NO_TRANSITION);
    }
    /**
    * Returns the cross-browser transform string.
    */

    function getTransforms(translate3d) {
      return {
        '-webkit-transform': translate3d,
        '-moz-transform': translate3d,
        '-ms-transform': translate3d,
        'transform': translate3d
      };
    }

    var silentScrollId;
    /**
    * Adds a css3 transform property to the container class with or without animation depending on the animated param.
    */

    function transformContainer(translate3d, animated) {
      if (animated) {
        addAnimation(getContainer());
      } else {
        removeAnimation(getContainer());
      }

      clearTimeout(silentScrollId);
      css(getContainer(), getTransforms(translate3d));
      FP.test.translate3d = translate3d; //syncronously removing the class after the animation has been applied.

      silentScrollId = setTimeout(function () {
        removeClass(getContainer(), NO_TRANSITION);
      }, 10);
    }

    /**
    * Scrolls silently (with no animation) the page to the given Y position.
    */

    function silentScroll(top) {
      // The first section can have a negative value in iOS 10. Not quite sure why: -0.0142822265625
      // that's why we round it to 0.
      var roundedTop = Math.round(top);

      if (getOptions().css3 && getOptions().autoScrolling && !getOptions().scrollBar) {
        var translate3d = 'translate3d(0px, -' + roundedTop + 'px, 0px)';
        transformContainer(translate3d, false);
      } else if (getOptions().autoScrolling && !getOptions().scrollBar) {
        css(getContainer(), {
          'top': -roundedTop + 'px'
        });
        FP.test.top = -roundedTop + 'px';
      } else {
        var scrollSettings = getScrollSettings(roundedTop);
        setScrolling(scrollSettings.element, scrollSettings.options);
      }
    }

    FP.setScrollingSpeed = setScrollingSpeed;
    /**
    * Defines the scrolling speed
    */

    function setScrollingSpeed(value, type) {
      setVariableState('scrollingSpeed', value, type);
    }

    var $body = null;
    var $html = null;
    var $htmlBody = null; // caching common elements

    function setCache() {
      $body = $('body')[0];
      $html = $('html')[0];
      $htmlBody = $('html, body');
    }

    //@ts-check

    var _g_animateScroll;
    /**
    * Simulates the animated scrollTop of jQuery. Used when css3:false or scrollBar:true or autoScrolling:false
    * http://stackoverflow.com/a/16136789/1081396
    */


    function scrollTo(element, to, duration, callback) {
      var start = getScrolledPosition(element);
      var change = to - start;
      var isCallbackFired = false;
      var startTime;
      var wasAnimationActive = state.activeAnimation;
      setState({
        activeAnimation: true
      }); // Cancelling any possible previous animations (io: clicking on nav dots very fast)

      if (_g_animateScroll) {
        window.cancelAnimationFrame(_g_animateScroll);
      }

      _g_animateScroll = function g_animateScroll(timestamp) {
        if (!startTime) {
          startTime = timestamp;
        }

        var currentTime = Math.floor(timestamp - startTime);

        if (state.activeAnimation) {
          //in order to stope it from other function whenever we want
          var val = to;

          if (duration) {
            // @ts-ignore
            val = win.fp_easings[getOptions().easing](currentTime, start, change, duration);
          }

          if (currentTime <= duration) {
            setScrolling(element, val);
          }

          if (currentTime < duration) {
            window.requestAnimationFrame(_g_animateScroll);
          } else if (typeof callback !== 'undefined' && !isCallbackFired) {
            setScrolling(element, to);
            callback();
            setState({
              activeAnimation: false
            });
            isCallbackFired = true;
          }
        } else if (!isCallbackFired && !wasAnimationActive) {
          callback();
          setState({
            activeAnimation: false
          });
          isCallbackFired = true;
        }
      };

      window.requestAnimationFrame(_g_animateScroll);
    }
    /**
    * Getting the position of the element to scroll when using jQuery animations
    */

    function getScrolledPosition(element) {
      var position; //is not the window element and is a slide?

      if (element.self != win && hasClass(element, SLIDES_WRAPPER)) {
        position = element.scrollLeft;
      } else if (!getOptions().autoScrolling || getOptions().scrollBar) {
        position = getScrollTop();
      } else {
        position = element.offsetTop;
      } //gets the top property of the wrapper


      return position;
    }

    /**
    * Makes sure to only create a Panel object if the element exist
    */

    function nullOrSection(el) {
      if (el && !el.item) {
        return new Section(new SectionPanel(el));
      }

      return el ? new Section(el) : null;
    }

    function nullOrSlide(el) {
      return el ? new Slide(el) : null;
    }

    /**
    * Dispatch events & callbacks
    */

    function fireCallback(eventName, v) {
      var eventData = getEventData(eventName, v);
      trigger(getContainer(), eventName, eventData);

      if (getOptions()[eventName].apply(eventData[Object.keys(eventData)[0]], toArray(eventData)) === false) {
        return false;
      }

      return true;
    }
    /**
    * Gets the event's data for the given event on the right format.
    */

    function getEventData(eventName, v) {
      //using functions to run only the necessary bits within the object
      var paramsPerEvent = {
        afterRender: function afterRender() {
          return {
            section: nullOrSection(getState().activeSection),
            slide: nullOrSlide(getState().activeSection.activeSlide)
          };
        },
        onLeave: function onLeave() {
          return {
            origin: nullOrSection(v.items.origin),
            destination: nullOrSection(v.items.destination),
            direction: v.direction,
            trigger: getState().scrollTrigger
          };
        },
        afterLoad: function afterLoad() {
          return paramsPerEvent.onLeave();
        },
        afterSlideLoad: function afterSlideLoad() {
          return {
            section: nullOrSection(v.items.section),
            origin: nullOrSection(v.items.origin),
            destination: nullOrSection(v.items.destination),
            direction: v.direction,
            trigger: getState().scrollTrigger
          };
        },
        onSlideLeave: function onSlideLeave() {
          return paramsPerEvent.afterSlideLoad();
        },
        beforeLeave: function beforeLeave() {
          return paramsPerEvent.onLeave();
        },
        onScrollOverflow: function onScrollOverflow() {
          return {
            section: nullOrSection(getState().activeSection),
            slide: nullOrSlide(getState().activeSection.activeSlide),
            position: v.position,
            direction: v.direction
          };
        }
      };
      return paramsPerEvent[eventName]();
    }

    function hasAutoPlay(item) {
      return item.hasAttribute('data-autoplay') || item.hasAttribute('autoplay');
    }
    /**
    * Plays video and audio elements.
    */


    function playMedia(destiny) {
      var panel = getSlideOrSection(destiny); //playing HTML5 media elements

      $('video, audio', panel).forEach(function (element) {
        if (hasAutoPlay(element) && typeof element.play === 'function') {
          element.play();
        }
      }); //youtube videos

      $('iframe[src*="youtube.com/embed/"]', panel).forEach(function (element) {
        if (hasAutoPlay(element)) {
          playYoutube(element);
        } //in case the URL was not loaded yet. On page load we need time for the new URL (with the API string) to load.


        element.onload = function () {
          if (hasAutoPlay(element)) {
            playYoutube(element);
          }
        };
      });
    }
    /**
    * Plays a youtube video
    */

    function playYoutube(element) {
      element.contentWindow.postMessage('{"event":"command","func":"playVideo","args":""}', '*');
    }
    /**
    * Stops video and audio elements.
    */


    function stopMedia(destiny) {
      var panel = getSlideOrSection(destiny); //stopping HTML5 media elements

      $('video, audio', panel).forEach(function (element) {
        if (!element.hasAttribute('data-keepplaying') && typeof element.pause === 'function') {
          element.pause();
        }
      }); //youtube videos

      $('iframe[src*="youtube.com/embed/"]', panel).forEach(function (element) {
        if (/youtube\.com\/embed\//.test(getAttr(element, 'src')) && !element.hasAttribute('data-keepplaying')) {
          element.contentWindow.postMessage('{"event":"command","func":"pauseVideo","args":""}', '*');
        }
      });
    }
    /*
    * Enables the Youtube videos API so we can control their flow if necessary.
    */

    function enableYoutubeAPI() {
      $('iframe[src*="youtube.com/embed/"]', getContainer()).forEach(function (item) {
        addURLParam(item, 'enablejsapi=1');
      });
    }
    /**
    * Adds a new parameter and its value to the `src` of a given element
    */

    function addURLParam(element, newParam) {
      var originalSrc = getAttr(element, 'src');
      element.setAttribute('src', originalSrc + getUrlParamSign(originalSrc) + newParam);
    }
    /*
    * Returns the prefix sign to use for a new parameter in an existen URL.
    *
    * @return {String}  ? | &
    */


    function getUrlParamSign(url) {
      return !/\?/.test(url) ? '?' : '&';
    }

    /**
    * Lazy loads image, video and audio elements.
    */

    function lazyLoad(destiny) {
      if (!getOptions().lazyLoading) {
        return;
      }

      var panel = getSlideOrSection(destiny);
      $('img[data-src], img[data-srcset], source[data-src], source[data-srcset], video[data-src], audio[data-src], iframe[data-src]', panel).forEach(function (element) {
        ['src', 'srcset'].forEach(function (type) {
          var attribute = getAttr(element, 'data-' + type);

          if (attribute != null && attribute) {
            setSrc(element, type);
            element.addEventListener('load', function () {
            });
          }
        });

        if (matches(element, 'source')) {
          var elementToPlay = closest(element, 'video, audio');

          if (elementToPlay) {
            elementToPlay.load();

            elementToPlay.onloadeddata = function () {
            };
          }
        }
      }); // Add fp-loaded class to the panel after lazy loading

      addClass(panel, LOADED);
    }
    function lazyLoadPanels(panel) {
      var lazyLoadThresold = getOptions().lazyLoadThreshold;
      lazyLoad(panel.item);

      if (lazyLoadThresold) {
        lazyLoadDirection(panel, 'prev', lazyLoadThresold);
        lazyLoadDirection(panel, 'next', lazyLoadThresold);
      }
    } // Lazy load "count" number of panels in a specific direction

    function lazyLoadDirection(startPanel, direction, count) {
      var currentPanel = startPanel;

      for (var i = 0; i < count && (currentPanel = currentPanel[direction]()); i++) {
        lazyLoad(currentPanel.item);
      }
    }

    /**
    * Sets a class for the body of the page depending on the active section / slide
    */

    function setBodyClass() {
      var section = getState().activeSection.item;
      var slide = getState().activeSection.activeSlide;
      var sectionAnchor = getAnchor(section);
      var text = String(sectionAnchor);

      if (slide) {
        var slideAnchor = getAnchor(slide.item);
        text = text + '-' + slideAnchor;
      } //changing slash for dash to make it a valid CSS style


      text = text.replace('/', '-').replace('#', '').replace(/\s/g, ''); //removing previous anchor classes

      var classRe = new RegExp('\\b\\s?' + VIEWING_PREFIX + '-[^\\s]+\\b', "g");
      $body.className = $body.className.replace(classRe, ''); //adding the current anchor

      addClass($body, VIEWING_PREFIX + '-' + text);
    }
    /**
    * Gets the anchor for the given slide / section. Its index will be used if there's none.
    */

    function getAnchor(element) {
      if (!element) {
        return null;
      }

      var anchor = getAttr(element, 'data-anchor');
      var elementIndex = index(element); //Slide without anchor link? We take the index instead.

      if (anchor == null) {
        anchor = elementIndex;
      }

      return anchor;
    }

    EventEmitter.on(events.onDestroyAll, onDestroyAll$1);

    function onDestroyAll$1() {
      // removing hash + # symbol from the URL
      win.history.replaceState(null, '', win.location.pathname + window.location.search);
    }
    /**
    * Sets the state of the website depending on the active section/slide.
    * It changes the URL hash when needed and updates the body class.
    */


    function setPageStatus(slideIndex, slideAnchor, anchorLink) {
      var sectionHash = '';

      if (getOptions().anchors.length && !getOptions().lockAnchors) {
        //isn't it the first slide?
        if (slideIndex) {
          if (anchorLink != null) {
            sectionHash = anchorLink;
          } //slide without anchor link? We take the index instead.


          if (slideAnchor == null) {
            slideAnchor = slideIndex;
          }

          setState({
            lastScrolledSlide: slideAnchor
          });
          setUrlHash(sectionHash + '/' + slideAnchor); //first slide won't have slide anchor, just the section one
        } else if (slideIndex != null) {
          setState({
            lastScrolledSlide: slideAnchor
          });
          setUrlHash(anchorLink);
        } //section without slides
        else {
          setUrlHash(anchorLink);
        }
      }

      setBodyClass();
    }
    /**
    * Sets the URL hash.
    */

    function setUrlHash(url) {
      if (getOptions().recordHistory) {
        location.hash = url;
      } else {
        win.history.replaceState(undefined, undefined, '#' + url);
      }
    }

    /**
    * Gets the name for screen readers for a section/slide navigation bullet.
    */

    function getBulletLinkName(i, defaultName, item) {
      var anchor = defaultName === 'Section' ? getOptions().anchors[i] : getAttr(item, 'data-anchor');
      return encodeURI(getOptions().navigationTooltips[i] || anchor || defaultName + ' ' + (i + 1));
    }

    function slideBulletHandler(e) {
      // not all events are cancellable 
      // https://www.uriports.com/blog/easy-fix-for-intervention-ignored-attempt-to-cancel-a-touchmove-event-with-cancelable-false/
      if (e.cancelable) {
        preventDefault(e);
      }

      setState({
        scrollTrigger: 'horizontalNav'
      });
      /*jshint validthis:true */

      var sectionElem = closest(this, SECTION_SEL);
      var slides = $(SLIDES_WRAPPER_SEL, closest(this, SECTION_SEL))[0];
      var section = getPanelByElement(getState().sections, sectionElem);
      var destiny = section.slides[index(closest(this, 'li'))];
      EventEmitter.emit(events.landscapeScroll, {
        slides: slides,
        destination: destiny.item
      });
    }
    /**
    * Sets the state for the horizontal bullet navigations.
    */

    function activeSlidesNavigation(slidesNav, slideIndex) {
      if (getOptions().slidesNavigation && slidesNav != null) {
        removeClass($(ACTIVE_SEL, slidesNav), ACTIVE);
        addClass($('a', $('li', slidesNav)[slideIndex]), ACTIVE);
      }
    }
    /**
    * Creates a landscape navigation bar with dots for horizontal sliders.
    */

    function addSlidesNavigation(section) {
      var sectionElem = section.item;
      var numSlides = section.slides.length;
      appendTo(createElementFromHTML('<div class="' + SLIDES_NAV + '"><ul></ul></div>'), sectionElem);
      var nav = $(SLIDES_NAV_SEL, sectionElem)[0]; //top or bottom

      addClass(nav, 'fp-' + getOptions().slidesNavPosition);

      for (var i = 0; i < numSlides; i++) {
        var slide = $(SLIDE_SEL, sectionElem)[i];
        appendTo(createElementFromHTML('<li><a href="#"><span class="fp-sr-only">' + getBulletLinkName(i, 'Slide', slide) + '</span><span></span></a></li>'), $('ul', nav)[0]);
      } //centering it


      css(nav, {
        'margin-left': '-' + nav.innerWidth / 2 + 'px'
      });
      var activeSlideIndex = section.activeSlide ? section.activeSlide.index() : 0;
      addClass($('a', $('li', nav)[activeSlideIndex]), ACTIVE);
    }

    var isScrollAllowed = {};
    isScrollAllowed.m = {
      'up': true,
      'down': true,
      'left': true,
      'right': true
    };
    isScrollAllowed.k = deepExtend({}, isScrollAllowed.m);
    /**
    * Allowing or disallowing the mouse/swipe scroll in a given direction. (not for keyboard)
    * @param type m (mouse) or k (keyboard)
    */

    function setIsScrollAllowed(value, direction, type) {
      //up, down, left, right
      if (direction !== 'all') {
        isScrollAllowed[type][direction] = value;
      } //all directions?
      else {
        Object.keys(isScrollAllowed[type]).forEach(function (key) {
          isScrollAllowed[type][key] = value;
        });
      }
    }
    function getIsScrollAllowed() {
      return isScrollAllowed;
    }

    EventEmitter.on(events.onClickOrTouch, onClickOrTouch$2);

    function onClickOrTouch$2(params) {
      var target = params.target;

      if (matches(target, SLIDES_ARROW_SEL) || closest(target, SLIDES_ARROW_SEL)) {
        slideArrowHandler.call(target, params);
      }
    } //Scrolling horizontally when clicking on the slider controls.


    function slideArrowHandler() {
      /*jshint validthis:true */
      var section = closest(this, SECTION_SEL);
      var isPrevArrow = hasClass(this, SLIDES_PREV) || closest(this, SLIDES_PREV_SEL);
      /*jshint validthis:true */

      if (isPrevArrow) {
        if (getIsScrollAllowed().m.left) {
          setState({
            scrollTrigger: 'slideArrow'
          });
          EventEmitter.emit(events.moveSlideLeft, {
            section: section
          });
        }
      } else {
        if (getIsScrollAllowed().m.right) {
          setState({
            scrollTrigger: 'slideArrow'
          });
          EventEmitter.emit(events.moveSlideRight, {
            section: section
          });
        }
      }
    }
    /**
    * Creates the control arrows for the given section
    */


    function createSlideArrows(section) {
      var sectionElem = section.item;
      var arrows = [createElementFromHTML(getOptions().controlArrowsHTML[0]), createElementFromHTML(getOptions().controlArrowsHTML[1])];
      after($(SLIDES_WRAPPER_SEL, sectionElem)[0], arrows);
      addClass(arrows, SLIDES_ARROW);
      addClass(arrows[0], SLIDES_PREV);
      addClass(arrows[1], SLIDES_NEXT);

      if (getOptions().controlArrowColor !== '#fff') {
        css($(SLIDES_ARROW_NEXT_SEL, sectionElem), {
          'border-color': 'transparent transparent transparent ' + getOptions().controlArrowColor
        });
        css($(SLIDES_ARROW_PREV_SEL, sectionElem), {
          'border-color': 'transparent ' + getOptions().controlArrowColor + ' transparent transparent'
        });
      }

      if (!getOptions().loopHorizontal) {
        hide($(SLIDES_ARROW_PREV_SEL, sectionElem));
      }
    }
    function toggleControlArrows(v) {
      if (!getOptions().loopHorizontal && getOptions().controlArrows) {
        //hidding it for the fist slide, showing for the rest
        toggle($(SLIDES_ARROW_PREV_SEL, v.section), v.slideIndex !== 0); //hidding it for the last slide, showing for the rest

        toggle($(SLIDES_ARROW_NEXT_SEL, v.section), next(v.destiny) != null);
      }
    }

    FP.setRecordHistory = setRecordHistory;
    /**
    * Defines wheter to record the history for each hash change in the URL.
    */

    function setRecordHistory(value, type) {
      setVariableState('recordHistory', value, type);
    }

    FP.setAutoScrolling = setAutoScrolling;
    FP.test.setAutoScrolling = setAutoScrolling;
    /**
    * Sets the autoScroll option.
    * It changes the scroll bar visibility and the history of the site as a result.
    */

    function setAutoScrolling(value, type) {
      //removing the transformation
      if (!value) {
        silentScroll(0);
      }

      setVariableState('autoScrolling', value, type);
      var element = getState().activeSection.item;

      if (getOptions().autoScrolling && !getOptions().scrollBar) {
        css($htmlBody, {
          'overflow': 'hidden',
          'height': '100%'
        });
        removeClass($body, SCROLLABLE);
        setRecordHistory(getOriginals().recordHistory, 'internal'); //for IE touch devices

        css(getContainer(), {
          '-ms-touch-action': 'none',
          'touch-action': 'none'
        });

        if (element != null) {
          //moving the container up
          silentScroll(element.offsetTop);
        }
      } else {
        css($htmlBody, {
          'overflow': 'visible',
          'height': 'initial'
        });
        addClass($body, SCROLLABLE);
        var recordHistory = !getOptions().autoScrolling ? false : getOriginals().recordHistory;
        setRecordHistory(recordHistory, 'internal'); //for IE touch devices

        css(getContainer(), {
          '-ms-touch-action': '',
          'touch-action': ''
        }); //scrolling the page to the section with no animation

        if (element != null) {
          var scrollSettings = getScrollSettings(element.offsetTop);
          scrollSettings.element.scrollTo(0, scrollSettings.options);
        }
      }
    }

    function getTmpPosition(v) {
      return hasClass(getState().activeSection.item, AUTO_HEIGHT) ? getDestinationPosition(getState().activeSection.item) : getState().activeSection.item.offsetTop;
    }
    function getDestinationPosForInfiniteScroll(v) {
      // forcing the scroll to the bottom of the fp-auto-height section when scrolling up
      if (v.isMovementUp && hasClass(v.element, AUTO_HEIGHT)) {
        return getDestinationPosition(v.element) - getWindowHeight() + v.element.offsetHeight;
      }

      return v.element.offsetTop;
    }

    //@ts-check
    /**
    * Adds sections before or after the current one to create the infinite effect.
    */

    function createInfiniteSections(v) {
      setState({
        isDoingContinousVertical: true
      });
      var activeSectionItem = getState().activeSection.item; // Scrolling down

      if (!v.isMovementUp) {
        // Move all previous sections to after the active section
        var prevSectionsReversed = prevAll(activeSectionItem, SECTION_SEL).reverse();
        after(activeSectionItem, prevSectionsReversed[0]);
      } else {
        // Scrolling up
        // Move all next sections to before the active section
        before(activeSectionItem, nextAll(activeSectionItem, SECTION_SEL));
      } // Maintain the displayed position (now that we changed the element order)


      silentScroll(getTmpPosition()); // Maintain the active slides visible in the viewport

      keepSlidesPosition$1(); // save for later the elements that still need to be reordered

      v.wrapAroundElements = activeSectionItem; // Recalculate animation variables

      v.dtop = getDestinationPosForInfiniteScroll(v);
      v.yMovement = getYmovement(getState().activeSection, v.element);
      return v;
    }
    /**
    * Maintains the active slides in the viewport
    * (Because the `scroll` animation might get lost with some actions, such as when using continuousVertical)
    */

    function keepSlidesPosition$1() {
      var activeSlides = $(SLIDE_ACTIVE_SEL);

      for (var i = 0; i < activeSlides.length; i++) {
        silentLandscapeScroll(activeSlides[i], 'internal');
      }
    }

    //@ts-check
    /**
    * Maintains the active slides in the viewport
    * (Because the `scroll` animation might get lost with some actions, such as when using continuousVertical)
    */

    function keepSlidesPosition() {
      var activeSlides = $(SLIDE_ACTIVE_SEL);

      for (var i = 0; i < activeSlides.length; i++) {
        silentLandscapeScroll(activeSlides[i], 'internal');
      }
    }
    /**
    * Fix section order after continuousVertical changes have been animated
    */


    function continuousVerticalFixSectionOrder(v) {
      // If continuousVertical is in effect (and autoScrolling would also be in effect then),
      // finish moving the elements around so the direct navigation will function more simply
      if (v.wrapAroundElements == null) {
        return;
      }

      if (v.isMovementUp) {
        before($(SECTION_SEL)[0], v.wrapAroundElements);
      } else {
        after($(SECTION_SEL)[getState().sections.length - 1], prevAll(v.element, SECTION_SEL).reverse());
      }

      silentScroll(getTmpPosition()); // Maintain the active slides visible in the viewport

      keepSlidesPosition();
      setState({
        isDoingContinousVertical: false
      });
    }

    /**
    * Makes sure lazyload is done for other sections in the viewport that are not the
    * active one. 
    */

    function lazyLoadOthers() {
      var hasAutoHeightSections = $(AUTO_HEIGHT_SEL)[0] || isResponsiveMode() && $(AUTO_HEIGHT_RESPONSIVE_SEL)[0]; //quitting when it doesn't apply

      if (!getOptions().lazyLoading || !hasAutoHeightSections) {
        return;
      } //making sure to lazy load auto-height sections that are in the viewport


      $(SECTION_SEL + ':not(' + ACTIVE_SEL + ')').forEach(function (section) {
        if (isSectionInViewport(section)) {
          lazyLoadPanels(getPanelByElement(getState().sections, section));
        }
      });
    }
    /**
    * Determines whether a section is in the viewport or not.
    */

    function isSectionInViewport(el) {
      var rect = el.getBoundingClientRect();
      var top = rect.top;
      var bottom = rect.bottom; //sometimes there's a 1px offset on the bottom of the screen even when the 
      //section's height is the window.innerHeight one. I guess because pixels won't allow decimals.
      //using this prevents from lazyLoading the section that is not yet visible 
      //(only 1 pixel offset is)

      var pixelOffset = 2;
      var isTopInView = top + pixelOffset < state.windowsHeight && top > 0;
      var isBottomInView = bottom > pixelOffset && bottom < state.windowsHeight;
      return isTopInView || isBottomInView;
    }

    function tooltipTextHandler() {
      /*jshint validthis:true */
      trigger(prev(this), 'click');
    }
    /**
    * Activating the vertical navigation bullets according to the given slide name.
    */

    function activateNavDots(name, sectionIndex) {
      var nav = $(SECTION_NAV_SEL)[0];

      if (getOptions().navigation && nav != null && nav.style.display !== 'none') {
        removeClass($(ACTIVE_SEL, nav), ACTIVE);

        if (name) {
          addClass($('a[href="#' + name + '"]', nav), ACTIVE);
        } else {
          addClass($('a', $('li', nav)[sectionIndex]), ACTIVE);
        }
      }
    }
    /**
    * Creates a vertical navigation bar.
    */

    function addVerticalNavigation() {
      remove($(SECTION_NAV_SEL));
      var navigation = doc.createElement('div');
      navigation.setAttribute('id', SECTION_NAV);
      var divUl = doc.createElement('ul');
      navigation.appendChild(divUl);
      appendTo(navigation, $body);
      var nav = $(SECTION_NAV_SEL)[0];
      addClass(nav, 'fp-' + getOptions().navigationPosition);

      if (getOptions().showActiveTooltip) {
        addClass(nav, SHOW_ACTIVE_TOOLTIP);
      }

      var li = '';

      for (var i = 0; i < getState().sections.length; i++) {
        var section = getState().sections[i];
        var link = '';

        if (getOptions().anchors.length) {
          link = section.anchor;
        }

        li += '<li><a href="#' + encodeURI(link) + '"><span class="fp-sr-only">' + getBulletLinkName(section.index(), 'Section') + '</span><span></span></a>'; // Only add tooltip if needed (defined by user)

        var tooltip = getOptions().navigationTooltips[section.index()];

        if (typeof tooltip !== 'undefined' && tooltip !== '') {
          li += '<div class="' + SECTION_NAV_TOOLTIP + ' fp-' + getOptions().navigationPosition + '">' + tooltip + '</div>';
        }

        li += '</li>';
      }

      $('ul', nav)[0].innerHTML = li; //activating the current active section

      var bullet = $('li', $(SECTION_NAV_SEL)[0])[getState().activeSection.index()];
      addClass($('a', bullet), ACTIVE);
    } //Scrolls to the section when clicking the navigation bullet

    function sectionBulletHandler(e) {
      if (e.preventDefault) {
        preventDefault(e);
      }

      setState({
        scrollTrigger: 'verticalNav'
      });
      /*jshint validthis:true */
      // @ts-ignore

      var indexBullet = index(closest(this, SECTION_NAV_SEL + ' li'));
      EventEmitter.emit(events.scrollPage, {
        destination: getState().sections[indexBullet]
      });
    }

    /**
    * Sets to active the current menu and vertical nav items.
    */

    function activateMenuAndNav(anchor, index) {
      activateMenuElement(anchor);
      activateNavDots(anchor, index);
    }
    /**
    * Activating the website main menu elements according to the given slide name.
    */

    function activateMenuElement(name) {
      if (getOptions().menu && getOptions().menu.length) {
        $(getOptions().menu).forEach(function (menu) {
          if (menu != null) {
            removeClass($(ACTIVE_SEL, menu), ACTIVE);
            addClass($('[data-menuanchor="' + name + '"]', menu), ACTIVE);
          }
        });
      }
    }

    new Date().getTime();
    /**
     * Triggers the callback once per scroll wheel action.
     * Based on scrolling speed delay.
     */

    var oncePerScroll = function () {
      var canTriggerEvent = true;
      var prevWheelTime = new Date().getTime();
      var result;
      var isScrollingOnInit = !win.fullpage_api;
      return function (scrollTrigger, callback) {
        var currentTime = new Date().getTime();
        var timeThreshold = scrollTrigger === 'wheel' ? getOptions().scrollingSpeed : 100;
        canTriggerEvent = isScrollingOnInit || currentTime - prevWheelTime >= timeThreshold;
        isScrollingOnInit = !win.fullpage_api;

        if (canTriggerEvent) {
          result = callback();
          prevWheelTime = currentTime;
        }

        return typeof result !== 'undefined' ? result : true;
      };
    }();

    /**
    * Fires the wheel event once per mouse wheel trigger.
    */

    function fireCallbackOncePerScroll(callbackName, params) {
      if (!isFunction(getOptions().beforeLeave)) {
        return;
      }

      var result = oncePerScroll(getState().scrollTrigger, function () {
        return fireCallback(callbackName, params);
      });
      return result;
    }

    FP.moveTo = moveTo;

    FP.getScrollY = function () {
      return state.scrollY;
    };

    var g_afterSectionLoadsId;
    var g_transitionLapseId;
    EventEmitter.on(events.onDestroy, onDestroy$8);
    /**
    * Scrolls the site to the given element and scrolls to the slide if a callback is given.
    */

    function scrollPage(section, callback, isMovementUp) {
      var element = section.item;

      if (element == null) {
        return;
      } //there's no element to scroll, leaving the function


      var dtop = getDestinationPosition(element);
      var slideAnchorLink;
      var slideIndex; //local variables

      var v = {
        "element": element,
        "callback": callback,
        "isMovementUp": isMovementUp,
        "dtop": dtop,
        "yMovement": getYmovement(getState().activeSection, element),
        "anchorLink": section.anchor,
        "sectionIndex": section.index(),
        "activeSlide": section.activeSlide ? section.activeSlide.item : null,
        "leavingSection": getState().activeSection.index() + 1,
        //caching the value of isResizing at the momment the function is called
        //because it will be checked later inside a setTimeout and the value might change
        "localIsResizing": state.isResizing,
        "items": {
          "origin": getState().activeSection,
          "destination": section
        },
        "direction": null
      }; //quiting when destination scroll is the same as the current one

      if (getState().activeSection.item == element && !state.isResizing || getOptions().scrollBar && getScrollTop() === v.dtop && !hasClass(element, AUTO_HEIGHT)) {
        return;
      }

      if (v.activeSlide != null) {
        slideAnchorLink = getAttr(v.activeSlide, 'data-anchor');
        slideIndex = index(v.activeSlide, null);
      } //callback (onLeave) if the site is not just resizing and readjusting the slides


      if (!v.localIsResizing) {
        var direction = v.yMovement; //required for continousVertical

        if (typeof isMovementUp !== 'undefined') {
          direction = isMovementUp ? 'up' : 'down';
        } //for the callback


        v.direction = direction;

        if (isFunction(getOptions().beforeLeave)) {
          if (fireCallbackOncePerScroll('beforeLeave', v) === false) {
            return;
          }
        }

        if (isFunction(getOptions().onLeave)) {
          if (!fireCallback('onLeave', v)) {
            return;
          }
        }
      } // If continuousVertical && we need to wrap around


      if (getOptions().autoScrolling && getOptions().continuousVertical && typeof v.isMovementUp !== "undefined" && (!v.isMovementUp && v.yMovement == 'up' || // Intending to scroll down but about to go up or
      v.isMovementUp && v.yMovement == 'down')) {
        // intending to scroll up but about to go down
        v = createInfiniteSections(v);
      } //pausing media of the leaving section (if we are not just resizing, as destinatino will be the same one)


      if (!v.localIsResizing) {
        stopMedia(getState().activeSection.item);
      }

      addClass(element, ACTIVE);
      removeClass(siblings(element), ACTIVE);
      updateState();
      lazyLoadPanels(section); //preventing from activating the MouseWheelHandler event
      //more than once if the page is scrolling

      setState({
        canScroll: FP.test.isTesting
      });
      setPageStatus(slideIndex, slideAnchorLink, v.anchorLink);
      EventEmitter.emit(events.onLeave, v);
      performMovement(v); //flag to avoid callingn `scrollPage()` twice in case of using anchor links

      setState({
        lastScrolledDestiny: v.anchorLink
      }); //avoid firing it twice (as it does also on scroll)

      activateMenuAndNav(v.anchorLink, v.sectionIndex);
    }

    function onDestroy$8() {
      clearTimeout(g_afterSectionLoadsId);
      clearTimeout(g_transitionLapseId);
    }
    /**
    * Returns the destination Y position based on the scrolling direction and
    * the height of the section.
    */


    function getDestinationPosition(element) {
      var elementHeight = element.offsetHeight;
      var elementTop = element.offsetTop; //top of the desination will be at the top of the viewport

      var position = elementTop;
      var isScrollingDown = elementTop > state.previousDestTop;
      var sectionBottom = position - getWindowHeight() + elementHeight;
      var bigSectionsDestination = getOptions().bigSectionsDestination; //is the destination element bigger than the viewport?

      if (elementHeight > getWindowHeight()) {
        //scrolling up?
        if (!isScrollingDown && !bigSectionsDestination || bigSectionsDestination === 'bottom') {
          position = sectionBottom;
        }
      } //sections equal or smaller than the viewport height && scrolling down? ||  is resizing and its in the last section
      else if (isScrollingDown || state.isResizing && next(element) == null) {
        //The bottom of the destination will be at the bottom of the viewport
        position = sectionBottom;
      }
      /*
      Keeping record of the last scrolled position to determine the scrolling direction.
      No conventional methods can be used as the scroll bar might not be present
      AND the section might not be active if it is auto-height and didnt reach the middle
      of the viewport.
      */


      setState({
        previousDestTop: position
      });
      return position;
    }
    /**
    * Performs the vertical movement (by CSS3 or by jQuery)
    */

    function performMovement(v) {
      setState({
        touchDirection: 'none',
        scrollY: Math.round(v.dtop)
      });
      EventEmitter.emit(events.onPerformMovement, v);
      var isFastSpeed = getOptions().scrollingSpeed < 700;
      var transitionLapse = isFastSpeed ? 700 : getOptions().scrollingSpeed; // using CSS3 translate functionality

      if (getOptions().css3 && getOptions().autoScrolling && !getOptions().scrollBar) {
        // The first section can have a negative value in iOS 10. Not quite sure why: -0.0142822265625
        // that's why we round it to 0.
        var translate3d = 'translate3d(0px, -' + Math.round(v.dtop) + 'px, 0px)';
        transformContainer(translate3d, true); //even when the scrollingSpeed is 0 there's a little delay, which might cause the
        //scrollingSpeed to change in case of using silentMoveTo();ç

        if (getOptions().scrollingSpeed) {
          clearTimeout(g_afterSectionLoadsId);
          g_afterSectionLoadsId = setTimeout(function () {
            afterSectionLoads$1(v); //disabling canScroll when using fastSpeed

            setState({
              canScroll: !isFastSpeed || FP.test.isTesting
            });
          }, getOptions().scrollingSpeed);
        } else {
          afterSectionLoads$1(v);
        }
      } // using JS to animate
      else {
        var scrollSettings = getScrollSettings(v.dtop);
        FP.test.top = -v.dtop + 'px';
        clearTimeout(g_afterSectionLoadsId);
        scrollTo(scrollSettings.element, scrollSettings.options, getOptions().scrollingSpeed, function () {
          if (getOptions().scrollBar) {
            /* Hack!
            The timeout prevents setting the most dominant section in the viewport as "active" when the user
            scrolled to a smaller section by using the mousewheel (auto scrolling) rather than draging the scroll bar.
             When using scrollBar:true It seems like the scroll events still getting propagated even after the scrolling animation has finished.
            */
            g_afterSectionLoadsId = setTimeout(function () {
              afterSectionLoads$1(v);
            }, 30);
          } else {
            afterSectionLoads$1(v); //disabling canScroll when using fastSpeed

            setState({
              canScroll: !isFastSpeed || FP.test.isTesting
            });
          }
        });
      } // enabling canScroll after the minimum transition laps


      if (isFastSpeed) {
        clearTimeout(g_transitionLapseId);
        g_transitionLapseId = setTimeout(function () {
          setState({
            canScroll: true
          });
        }, transitionLapse);
      }
    }
    /**
    * Actions to do once the section is loaded.
    */


    function afterSectionLoads$1(v) {
      setState({
        isBeyondFullpage: false
      });
      continuousVerticalFixSectionOrder(v); //callback (afterLoad) if the site is not just resizing and readjusting the slides

      if (isFunction(getOptions().afterLoad) && !v.localIsResizing) {
        fireCallback('afterLoad', v);
      }

      updateState();

      if (!v.localIsResizing) {
        playMedia(v.element);
      }

      addClass(v.element, COMPLETELY);
      removeClass(siblings(v.element), COMPLETELY);
      lazyLoadOthers();
      setState({
        canScroll: true
      });
      EventEmitter.emit(events.afterSectionLoads, v);

      if (isFunction(v.callback)) {
        v.callback();
      }
    }

    FP.setFitToSection = setFitToSection;
    FP.fitToSection = fitToSection;
    /**
    * Sets fitToSection
    */

    function setFitToSection(value, type) {
      setVariableState('fitToSection', value, type);
    }
    /**
    * Fits the site to the nearest active section
    */

    function fitToSection() {
      //checking fitToSection again in case it was set to false before the timeout delay
      if (state.canScroll && getOptions().fitToSection) {
        //allows to scroll to an active section and
        //if the section is already active, we prevent firing callbacks
        setState({
          isResizing: true
        });
        scrollPage(state.activeSection);
        setState({
          isResizing: false
        });
      }
    }

    FP.setResponsive = setResponsive;
    /**
    * Checks if the site needs to get responsive and disables autoScrolling if so.
    * A class `fp-responsive` is added to the plugin's container in case the user wants to use it for his own responsive CSS.
    */

    function responsive() {
      var widthLimit = getOptions().responsive || getOptions().responsiveWidth; //backwards compatiblity

      var heightLimit = getOptions().responsiveHeight; //only calculating what we need. Remember its called on the resize event.

      var isBreakingPointWidth = widthLimit && win.innerWidth < widthLimit;
      var isBreakingPointHeight = heightLimit && win.innerHeight < heightLimit;

      if (widthLimit && heightLimit) {
        setResponsive(isBreakingPointWidth || isBreakingPointHeight);
      } else if (widthLimit) {
        setResponsive(isBreakingPointWidth);
      } else if (heightLimit) {
        setResponsive(isBreakingPointHeight);
      }
    }
    /**
    * Turns fullPage.js to normal scrolling mode when the viewport `width` or `height`
    * are smaller than the set limit values.
    */

    function setResponsive(active) {
      var isResponsive = isResponsiveMode();

      if (active) {
        if (!isResponsive) {
          setAutoScrolling(false, 'internal');
          setFitToSection(false, 'internal');
          hide($(SECTION_NAV_SEL));
          addClass($body, RESPONSIVE);

          if (isFunction(getOptions().afterResponsive)) {
            getOptions().afterResponsive.call(getContainer(), active);
          }
        }
      } else if (isResponsive) {
        setAutoScrolling(getOriginals().autoScrolling, 'internal');
        setFitToSection(getOriginals().autoScrolling, 'internal');
        show($(SECTION_NAV_SEL));
        removeClass($body, RESPONSIVE);

        if (isFunction(getOptions().afterResponsive)) {
          getOptions().afterResponsive.call(getContainer(), active);
        }
      }
    }
    /**
    * Determines whether fullpage.js is in responsive mode or not.
    */


    function isResponsiveMode() {
      return hasClass($body, RESPONSIVE);
    }

    function addTableClass(element) {
      if (!getOptions().verticalCentered) {
        return;
      } // Overflowing sections when scrollOverflow is disabled will be autoHeight
      // and won't require vertical aligment


      if (!getOptions().scrollOverflow && scrollOverflowHandler.shouldBeScrollable(element.item)) {
        return;
      }

      if (!scrollOverflowHandler.isScrollable(element)) {
        //In case we are styling for the 2nd time as in with reponsiveSlides
        if (!hasClass(element.item, TABLE)) {
          addClass(element.item, TABLE);
        }
      }
    }

    var startingSection = null;
    FP.getActiveSection = getActiveSection;
    function getStartingSection() {
      return startingSection;
    }
    /**
    * Styling vertical sections
    */

    function styleSection(section) {
      
Download .txt
gitextract_6w1ryxzd/

├── . jshintrc
├── .gitattributes
├── .github/
│   ├── ISSUE_TEMPLATE.md
│   └── PULL_REQUEST_TEMPLATE.md
├── .gitignore
├── BACKERS.md
├── CONTRIBUTING.md
├── FUNDING.yml
├── LICENSE
├── README.md
├── SECURITY.md
├── bower.json
├── dist/
│   ├── fullpage.css
│   └── fullpage.js
├── examples/
│   ├── active-slide.html
│   ├── angular-fullpage.html
│   ├── auto-height.html
│   ├── autoplay-video-and-audio.html
│   ├── background-video.html
│   ├── backgrounds-fixed.html
│   ├── backgrounds.html
│   ├── callbacks.html
│   ├── cards.html
│   ├── cinematic.html
│   ├── continuous-horizontal.html
│   ├── continuous-vertical.html
│   ├── css3.html
│   ├── custom-arrows.html
│   ├── drag-and-move.html
│   ├── drop-effect.html
│   ├── easing-css3.html
│   ├── easing-js.html
│   ├── effects.html
│   ├── examples.css
│   ├── examples.js
│   ├── fading-effect.html
│   ├── fixed-headers.html
│   ├── gradient-backgrounds.html
│   ├── hide-sections.html
│   ├── imgs/
│   │   ├── copyright.txt
│   │   ├── flowers.webm
│   │   └── horse.ogg
│   ├── interlocked-slides.html
│   ├── jquery-adapter.html
│   ├── lazy-load.html
│   ├── looping.html
│   ├── methods.html
│   ├── module_loaders/
│   │   ├── browserify-example/
│   │   │   ├── README.md
│   │   │   ├── dist/
│   │   │   │   ├── index.html
│   │   │   │   └── main.js
│   │   │   ├── package.json
│   │   │   └── src/
│   │   │       └── index.js
│   │   ├── requirejs-example/
│   │   │   ├── README.md
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   └── src/
│   │   │       ├── main.js
│   │   │       └── require.config.js
│   │   └── webpack-example/
│   │       ├── .babelrc
│   │       ├── README.md
│   │       ├── dist/
│   │       │   ├── index.html
│   │       │   └── main.js
│   │       ├── package.json
│   │       ├── src/
│   │       │   └── index.js
│   │       └── webpack.config.js
│   ├── navigation-horizontal.html
│   ├── navigation-tooltips.html
│   ├── navigation-vertical.html
│   ├── no-anchor.html
│   ├── normal-scroll.html
│   ├── normalScrollElements.html
│   ├── observer.html
│   ├── offset-sections.html
│   ├── one-section.html
│   ├── parallax.html
│   ├── react-fullpage.html
│   ├── reset-sliders.html
│   ├── responsive-auto-height.html
│   ├── responsive-height.html
│   ├── responsive-slides.html
│   ├── responsive-width.html
│   ├── rtl.html
│   ├── scroll-after-fullpage.html
│   ├── scroll-horizontally.html
│   ├── scrollBar.html
│   ├── scrollOverflow-reset.html
│   ├── scrollOverflow.html
│   ├── scrolling-speed.html
│   ├── simple.html
│   ├── skipIntermediateItems.html
│   ├── trigger-animations.html
│   ├── vue-fullpage.html
│   └── water-effect.html
├── gulp/
│   └── build.js
├── gulpfile.js
├── lang/
│   ├── brazilian-portuguese/
│   │   ├── README.md
│   │   ├── how-to-activate-fullpage-extension.md
│   │   └── parallax-extension.md
│   ├── chinese/
│   │   ├── README.md
│   │   ├── how-to-activate-fullpage-extension.md
│   │   └── parallax-extensionmd.md
│   ├── french/
│   │   ├── README.md
│   │   ├── how-to-activate-fullpage-extension.md
│   │   └── parallax-extension.md
│   ├── japanese/
│   │   ├── README.md
│   │   ├── how-to-activate-fullpage-extension.md
│   │   └── parallax-extension.md
│   ├── korean/
│   │   ├── README.md
│   │   ├── how-to-activate-fullpage-extension.md
│   │   └── parallax-extension.md
│   ├── russian/
│   │   ├── README.md
│   │   ├── how-to-activate-fullpage-extension.md
│   │   └── parallax-extension.md
│   ├── spanish/
│   │   ├── README.md
│   │   ├── how-to-activate-fullpage-extension.md
│   │   └── parallax-extension.md
│   └── website/
│       ├── br.yml
│       ├── en.yml
│       ├── es.yml
│       ├── fr.yml
│       ├── ja.yml
│       ├── ko.yml
│       ├── ru.yml
│       └── zh.yml
├── package.json
├── rollup.config.js
├── src/
│   ├── css/
│   │   └── fullpage.css
│   ├── js/
│   │   ├── anchors/
│   │   │   ├── getAnchorsURL.js
│   │   │   ├── index.js
│   │   │   ├── setPageStatus.js
│   │   │   └── setRecordHistory.js
│   │   ├── app.js
│   │   ├── arrows.js
│   │   ├── autoScrolling.js
│   │   ├── beyondFullpage/
│   │   │   ├── beyondFullPageHandler.js
│   │   │   ├── index.js
│   │   │   ├── scrollBeyondFullPage.js
│   │   │   └── wheelDataHandler.js
│   │   ├── bindings.js
│   │   ├── callbacks/
│   │   │   ├── fireCallback.js
│   │   │   ├── fireCallbacksOncePerScroll.js
│   │   │   ├── nullOrSection.js
│   │   │   └── nullOrSlide.js
│   │   ├── common/
│   │   │   ├── addTableClass.js
│   │   │   ├── cache.js
│   │   │   ├── constants.js
│   │   │   ├── eventEmitter.js
│   │   │   ├── events.js
│   │   │   ├── getSectionByAnchor.js
│   │   │   ├── isScrollAllowed.js
│   │   │   ├── item.js
│   │   │   ├── options.js
│   │   │   ├── scrollTo.js
│   │   │   ├── selectors.js
│   │   │   ├── silentScroll.js
│   │   │   ├── state.js
│   │   │   ├── supportsPassive.js
│   │   │   ├── tick.js
│   │   │   ├── transformContainer.js
│   │   │   ├── utils.js
│   │   │   └── utilsFP.js
│   │   ├── console.js
│   │   ├── dom/
│   │   │   ├── addInternalSelectors.js
│   │   │   ├── afterRenderActions.js
│   │   │   ├── destroyStructure.js
│   │   │   └── prepareDom.js
│   │   ├── dynamic.js
│   │   ├── easing.js
│   │   ├── fitToSection.js
│   │   ├── fullpage.js
│   │   ├── infiniteScroll/
│   │   │   ├── createInfiniteSections.js
│   │   │   ├── fixPosition.js
│   │   │   └── getPositions.js
│   │   ├── instance.js
│   │   ├── jquery-adaptor.js
│   │   ├── keyboard/
│   │   │   ├── index.js
│   │   │   └── setKeyboardScrolling.js
│   │   ├── lazyLoad/
│   │   │   ├── lazyLoad.js
│   │   │   └── lazyLoadOthers.js
│   │   ├── media.js
│   │   ├── menu/
│   │   │   ├── activateMenuAndNav.js
│   │   │   ├── index.js
│   │   │   └── styleMenu.js
│   │   ├── mixed/
│   │   │   ├── warnings.js
│   │   │   └── waterMark.js
│   │   ├── mouse/
│   │   │   ├── move.js
│   │   │   └── wheel.js
│   │   ├── nav/
│   │   │   ├── getBulletLinkName.js
│   │   │   ├── index.js
│   │   │   ├── sections.js
│   │   │   └── slides.js
│   │   ├── normalScrollElements.js
│   │   ├── optionsDefault.js
│   │   ├── polyfills/
│   │   │   ├── array.find.js
│   │   │   ├── array.foreach.js
│   │   │   ├── array.from.js
│   │   │   ├── index.js
│   │   │   ├── object.assign.js
│   │   │   └── string.padStart.js
│   │   ├── resize.js
│   │   ├── responsive.js
│   │   ├── scroll/
│   │   │   ├── index.js
│   │   │   ├── moveSectionDown.js
│   │   │   ├── moveSectionUp.js
│   │   │   ├── moveTo.js
│   │   │   ├── scrollHandler.js
│   │   │   ├── scrollPage.js
│   │   │   ├── scrollPageAndSlide.js
│   │   │   ├── scrollToAnchor.js
│   │   │   ├── scrolling.js
│   │   │   ├── setAllowScrolling.js
│   │   │   ├── silentMove.js
│   │   │   └── skipIntermediateItems.js
│   │   ├── scrolloverflow.js
│   │   ├── sections.js
│   │   ├── slides/
│   │   │   ├── index.js
│   │   │   ├── landscapeScroll.js
│   │   │   ├── moveSlide.js
│   │   │   ├── scrollSlider.js
│   │   │   ├── silentLandscapeScroll.js
│   │   │   └── styleSlides.js
│   │   ├── speed.js
│   │   ├── stateClasses.js
│   │   ├── stateUpdates.js
│   │   └── touch.js
│   └── jsconfig.json
├── tests/
│   ├── index.html
│   ├── unit/
│   │   ├── arrows.js
│   │   ├── bigSectionsDestination.js
│   │   ├── callbacks.js
│   │   ├── callbacksV3.js
│   │   ├── continuousVertical.js
│   │   ├── destroy.js
│   │   ├── displayWarnings.js
│   │   ├── easingcss3.js
│   │   ├── fitToSection.js
│   │   ├── fixedElements.js
│   │   ├── keyboardScrolling.js
│   │   ├── lazyload.js
│   │   ├── lockAnchors.js
│   │   ├── loopBottom.js
│   │   ├── loopTop.js
│   │   ├── menu.js
│   │   ├── moveSectionDown.js
│   │   ├── moveSectionUp.js
│   │   ├── moveSlideLeft.js
│   │   ├── moveSlideRight.js
│   │   ├── moveTo.js
│   │   ├── nav.js
│   │   ├── normalScrollElements.js
│   │   ├── paddings.js
│   │   ├── recordHistory.js
│   │   ├── responsiveHeight.js
│   │   ├── responsiveWidth.js
│   │   ├── scrollBar.js
│   │   ├── scrollingSpeed.js
│   │   ├── sectionsColor.js
│   │   ├── selectors.js
│   │   ├── setAllowScrolling.js
│   │   ├── setAutoScrolling.js
│   │   ├── silentMoveTo.js
│   │   ├── slidesNavigation.js
│   │   └── verticalCentered.js
│   └── utils.js
├── types/
│   └── index.d.ts
└── vendors/
    └── easings.js
Download .txt
SYMBOL INDEX (1250 symbols across 102 files)

FILE: dist/fullpage.js
  function showError (line 255) | function showError(type, text) {
  function isVisible (line 258) | function isVisible(el) {
  function getVisible (line 262) | function getVisible(elements) {
  function $ (line 271) | function $(selector, context) {
  function deepExtend (line 279) | function deepExtend(out) {
  function hasClass (line 310) | function hasClass(el, className) {
  function getWindowHeight (line 321) | function getWindowHeight() {
  function getWindowWidth (line 328) | function getWindowWidth() {
  function css (line 337) | function css(items, props) {
  function prev (line 358) | function prev(item) {
  function next (line 365) | function next(item) {
  function last (line 372) | function last(item) {
  function index (line 380) | function index(item, selector) {
  function getList (line 396) | function getList(item) {
  function hide (line 403) | function hide(el) {
  function show (line 416) | function show(el) {
  function isArrayOrList (line 429) | function isArrayOrList(el) {
  function addClass (line 436) | function addClass(el, className) {
  function removeClass (line 451) | function removeClass(el, className) {
  function appendTo (line 470) | function appendTo(el, parent) {
  function wrap (line 484) | function wrap(toWrap, wrapper, isWrapAll) {
  function wrapAll (line 511) | function wrapAll(toWrap, wrapper) {
  function wrapInner (line 524) | function wrapInner(parent, wrapper) {
  function unwrap (line 540) | function unwrap(wrapper) {
  function closest (line 554) | function closest(el, selector) {
  function after (line 572) | function after(reference, el) {
  function before (line 582) | function before(reference, el) {
  function insertBefore (line 590) | function insertBefore(reference, beforeElement, el) {
  function getScrollTop (line 604) | function getScrollTop() {
  function siblings (line 612) | function siblings(el) {
  function preventDefault (line 617) | function preventDefault(event) {
  function getAttr (line 620) | function getAttr(el, attr) {
  function docAddEvent (line 623) | function docAddEvent(event, callback, options) {
  function windowAddEvent (line 626) | function windowAddEvent(event, callback, options) {
  function docRemoveEvent (line 629) | function docRemoveEvent(event, callback, options) {
  function windowRemoveEvent (line 632) | function windowRemoveEvent(event, callback, options) {
  function isFunction (line 639) | function isFunction(item) {
  function trigger (line 651) | function trigger(el, eventName, data) {
  function matches (line 670) | function matches(el, selector) {
  function toggle (line 677) | function toggle(el, value) {
  function createElementFromHTML (line 692) | function createElementFromHTML(htmlString) {
  function remove (line 702) | function remove(items) {
  function untilAll (line 714) | function untilAll(item, selector, fn) {
  function nextAll (line 732) | function nextAll(item, selector) {
  function prevAll (line 739) | function prevAll(item, selector) {
  function toArray (line 746) | function toArray(objectData) {
  function getLast (line 751) | function getLast(items) {
  function getAverage (line 758) | function getAverage(elements, number) {
  function setSrc (line 774) | function setSrc(element, attribute) {
  function getParentsUntil (line 778) | function getParentsUntil(item, topParentSelector) {
  function isInsideInput (line 788) | function isInsideInput() {
  function _typeof (line 889) | function _typeof(obj) {
  function setState (line 988) | function setState(props) {
  function getState (line 991) | function getState() {
  function getActivePanel (line 994) | function getActivePanel() {
  function resetState (line 997) | function resetState() {
  function bindEvents$c (line 1028) | function bindEvents$c() {
  function internalEvents (line 1038) | function internalEvents() {
  function delegatedEvents (line 1042) | function delegatedEvents(e) {
  function onDestroy$9 (line 1049) | function onDestroy$9() {
  function focusHandler (line 1056) | function focusHandler() {
  function getInitialAnchorsInDom (line 1230) | function getInitialAnchorsInDom() {
  function setContainer (line 1233) | function setContainer(value) {
  function getContainer (line 1236) | function getContainer(value) {
  function getOptions (line 1239) | function getOptions() {
  function setOptions (line 1242) | function setOptions(options) {
  function getOriginals (line 1246) | function getOriginals() {
  function setOption (line 1249) | function setOption(name, value) {
  function setVariableState (line 1259) | function setVariableState(variable, value, type) {
  function setOptionsFromDOM (line 1270) | function setOptionsFromDOM() {
  function getNodes (line 1377) | function getNodes(panels) {
  function getPanelByElement (line 1382) | function getPanelByElement(panels, el) {
  function getSlideOrSection (line 1398) | function getSlideOrSection(destiny) {
  function getSlideOrSectionPanel (line 1407) | function getSlideOrSectionPanel(panel) {
  function isFullPageAbove (line 1414) | function isFullPageAbove() {
  function getScrollSettings (line 1421) | function getScrollSettings(top) {
  function setScrolling (line 1445) | function setScrolling(element, val) {
  function addAnimation (line 1462) | function addAnimation(element) {
  function getYmovement (line 1475) | function getYmovement(activeSection, destiny) {
  function removeAnimation (line 1493) | function removeAnimation(element) {
  function getTransforms (line 1500) | function getTransforms(translate3d) {
  function transformContainer (line 1514) | function transformContainer(translate3d, animated) {
  function silentScroll (line 1534) | function silentScroll(top) {
  function setScrollingSpeed (line 1558) | function setScrollingSpeed(value, type) {
  function setCache (line 1566) | function setCache() {
  function scrollTo (line 1581) | function scrollTo(element, to, duration, callback) {
  function getScrolledPosition (line 1640) | function getScrolledPosition(element) {
  function nullOrSection (line 1659) | function nullOrSection(el) {
  function nullOrSlide (line 1667) | function nullOrSlide(el) {
  function fireCallback (line 1675) | function fireCallback(eventName, v) {
  function getEventData (line 1689) | function getEventData(eventName, v) {
  function hasAutoPlay (line 1736) | function hasAutoPlay(item) {
  function playMedia (line 1744) | function playMedia(destiny) {
  function playYoutube (line 1770) | function playYoutube(element) {
  function stopMedia (line 1778) | function stopMedia(destiny) {
  function enableYoutubeAPI (line 1797) | function enableYoutubeAPI() {
  function addURLParam (line 1806) | function addURLParam(element, newParam) {
  function getUrlParamSign (line 1817) | function getUrlParamSign(url) {
  function lazyLoad (line 1825) | function lazyLoad(destiny) {
  function lazyLoadPanels (line 1856) | function lazyLoadPanels(panel) {
  function lazyLoadDirection (line 1866) | function lazyLoadDirection(startPanel, direction, count) {
  function setBodyClass (line 1878) | function setBodyClass() {
  function getAnchor (line 1901) | function getAnchor(element) {
  function onDestroyAll$1 (line 1918) | function onDestroyAll$1() {
  function setPageStatus (line 1928) | function setPageStatus(slideIndex, slideAnchor, anchorLink) {
  function setUrlHash (line 1964) | function setUrlHash(url) {
  function getBulletLinkName (line 1976) | function getBulletLinkName(i, defaultName, item) {
  function slideBulletHandler (line 1981) | function slideBulletHandler(e) {
  function activeSlidesNavigation (line 2006) | function activeSlidesNavigation(slidesNav, slideIndex) {
  function addSlidesNavigation (line 2016) | function addSlidesNavigation(section) {
  function setIsScrollAllowed (line 2050) | function setIsScrollAllowed(value, direction, type) {
  function getIsScrollAllowed (line 2061) | function getIsScrollAllowed() {
  function onClickOrTouch$2 (line 2067) | function onClickOrTouch$2(params) {
  function slideArrowHandler (line 2076) | function slideArrowHandler() {
  function createSlideArrows (line 2107) | function createSlideArrows(section) {
  function toggleControlArrows (line 2128) | function toggleControlArrows(v) {
  function setRecordHistory (line 2142) | function setRecordHistory(value, type) {
  function setAutoScrolling (line 2153) | function setAutoScrolling(value, type) {
  function getTmpPosition (line 2200) | function getTmpPosition(v) {
  function getDestinationPosForInfiniteScroll (line 2203) | function getDestinationPosForInfiniteScroll(v) {
  function createInfiniteSections (line 2217) | function createInfiniteSections(v) {
  function keepSlidesPosition$1 (line 2249) | function keepSlidesPosition$1() {
  function keepSlidesPosition (line 2263) | function keepSlidesPosition() {
  function continuousVerticalFixSectionOrder (line 2275) | function continuousVerticalFixSectionOrder(v) {
  function lazyLoadOthers (line 2301) | function lazyLoadOthers() {
  function isSectionInViewport (line 2319) | function isSectionInViewport(el) {
  function tooltipTextHandler (line 2333) | function tooltipTextHandler() {
  function activateNavDots (line 2341) | function activateNavDots(name, sectionIndex) {
  function addVerticalNavigation (line 2358) | function addVerticalNavigation() {
  function sectionBulletHandler (line 2399) | function sectionBulletHandler(e) {
  function activateMenuAndNav (line 2420) | function activateMenuAndNav(anchor, index) {
  function activateMenuElement (line 2428) | function activateMenuElement(name) {
  function fireCallbackOncePerScroll (line 2469) | function fireCallbackOncePerScroll(callbackName, params) {
  function scrollPage (line 2493) | function scrollPage(section, callback, isMovementUp) {
  function onDestroy$8 (line 2590) | function onDestroy$8() {
  function getDestinationPosition (line 2600) | function getDestinationPosition(element) {
  function performMovement (line 2636) | function performMovement(v) {
  function afterSectionLoads$1 (line 2704) | function afterSectionLoads$1(v) {
  function setFitToSection (line 2739) | function setFitToSection(value, type) {
  function fitToSection (line 2746) | function fitToSection() {
  function responsive (line 2767) | function responsive() {
  function setResponsive (line 2788) | function setResponsive(active) {
  function isResponsiveMode (line 2818) | function isResponsiveMode() {
  function addTableClass (line 2822) | function addTableClass(element) {
  function getStartingSection (line 2843) | function getStartingSection() {
  function styleSection (line 2850) | function styleSection(section) {
  function getActiveSection (line 2894) | function getActiveSection() {
  function getSectionFromPanel (line 2898) | function getSectionFromPanel(panel) {
  function bindEvents$b (line 2905) | function bindEvents$b() {
  function afterRender (line 2917) | function afterRender() {
  function onDestroy$7 (line 2924) | function onDestroy$7() {
  function bindEvents$a (line 3180) | function bindEvents$a() {
  function onPerformMovement (line 3184) | function onPerformMovement() {
  function landscapeScroll (line 3195) | function landscapeScroll(slides, destiny, direction) {
  function performHorizontalMove (line 3275) | function performHorizontalMove(slides, v, fireCallback) {
  function getXmovement (line 3307) | function getXmovement(fromIndex, toIndex) {
  function onDestroy$6 (line 3319) | function onDestroy$6() {
  function afterSlideLoads (line 3323) | function afterSlideLoads(v) {
  function silentLandscapeScroll (line 3350) | function silentLandscapeScroll(activeSlide, noCallbacks) {
  function onDestroyAll (line 3375) | function onDestroyAll() {
  function updateState (line 3384) | function updateState() {
  function updateStructuralState (line 3422) | function updateStructuralState() {
  function getPrevActivePanelIndex (line 3447) | function getPrevActivePanelIndex(activePanel) {
  function scrollToNewActivePanel (line 3469) | function scrollToNewActivePanel() {
  function getNewActivePanel (line 3503) | function getNewActivePanel(prevActivePanelIndex, siblings) {
  function addInternalSelectors (line 3567) | function addInternalSelectors() {
  function styleSlides (line 3576) | function styleSlides(section) {
  function bindEvents$9 (line 3640) | function bindEvents$9() {
  function unbindEvents (line 3648) | function unbindEvents() {
  function createObserver (line 3659) | function createObserver(target, callback, config) {
  function didSlidesChange (line 3665) | function didSlidesChange() {
  function didSectionsChange (line 3669) | function didSectionsChange() {
  function didSectionsOrSlidesChange (line 3673) | function didSectionsOrSlidesChange() {
  function onContentChange (line 3682) | function onContentChange(mutations) {
  function getPassiveOptionsIfPossible (line 3748) | function getPassiveOptionsIfPossible() {
  function scrollBeyondFullPage (line 3799) | function scrollBeyondFullPage() {
  function onKeyDown (line 3817) | function onKeyDown() {
  function scrollUpToFullpage (line 3824) | function scrollUpToFullpage() {
  function getDestinationOffset (line 3842) | function getDestinationOffset() {
  function beyondFullPageHandler (line 3850) | function beyondFullPageHandler(container, e) {
  function moveSectionDown (line 3924) | function moveSectionDown() {
  function hasContentBeyondFullPage (line 3938) | function hasContentBeyondFullPage() {
  function moveSectionUp (line 3947) | function moveSectionUp() {
  function mouseMoveHandler (line 3965) | function mouseMoveHandler(e) {
  function setOldPageY (line 3982) | function setOldPageY(value) {
  function scrolling (line 3991) | function scrolling(type) {
  function addTouchHandler (line 4021) | function addTouchHandler() {
  function removeTouchHandler (line 4051) | function removeTouchHandler() {
  function touchMoveHandler (line 4081) | function touchMoveHandler(e) {
  function isReallyTouch (line 4143) | function isReallyTouch(e) {
  function touchStartHandler (line 4152) | function touchStartHandler(e) {
  function touchEndHandler (line 4173) | function touchEndHandler() {
  function getEventsPage (line 4185) | function getEventsPage(e) {
  function getMSPointer (line 4203) | function getMSPointer() {
  function preventBouncing (line 4220) | function preventBouncing(e) {
  function moveSlide (line 4236) | function moveSlide(direction, section) {
  function moveSlideLeft (line 4264) | function moveSlideLeft(section) {
  function moveSlideRight (line 4272) | function moveSlideRight(section) {
  function getSectionByAnchor (line 4280) | function getSectionByAnchor(sectionAnchor) {
  function scrollSlider (line 4297) | function scrollSlider(slideElem) {
  function scrollPageAndSlide (line 4307) | function scrollPageAndSlide(sectionAnchor, slideAnchor) {
  function getSlideByAnchor (line 4326) | function getSlideByAnchor(slideAnchor, section) {
  function moveTo$1 (line 4345) | function moveTo$1(sectionAnchor, slideAnchor) {
  function bindEvents$8 (line 4361) | function bindEvents$8() {
  function onDestroy$5 (line 4373) | function onDestroy$5() {
  function keydownHandler (line 4380) | function keydownHandler(e) {
  function onkeydown (line 4400) | function onkeydown(e) {
  function keyUpHandler (line 4511) | function keyUpHandler(e) {
  function blurHandler (line 4519) | function blurHandler() {
  function onTab (line 4533) | function onTab(e) {
  function onAfterSlideLoads (line 4588) | function onAfterSlideLoads(v) {
  function afterSectionLoads (line 4592) | function afterSectionLoads(v) {
  function focusItem (line 4598) | function focusItem() {
  function getPanelWithFocusable (line 4610) | function getPanelWithFocusable(isPrevItem) {
  function getFocusables (line 4636) | function getFocusables(el) {
  function isFocusOutside (line 4647) | function isFocusOutside(e) {
  function shouldCancelKeyboardNavigation (line 4657) | function shouldCancelKeyboardNavigation(e) {
  function cancelDirectionKeyEvents (line 4669) | function cancelDirectionKeyEvents(e) {
  function getControlPressed (line 4675) | function getControlPressed() {
  function setMouseWheelScrolling (line 4688) | function setMouseWheelScrolling(value) {
  function addMouseWheelHandler (line 4704) | function addMouseWheelHandler() {
  function addMiddleWheelHandler (line 4736) | function addMiddleWheelHandler() {
  function removeMouseWheelHandler (line 4746) | function removeMouseWheelHandler() {
  function removeMiddleWheelHandler (line 4763) | function removeMiddleWheelHandler() {
  function isAccelerating (line 4774) | function isAccelerating(scrollings) {
  function MouseWheelHandler (line 4787) | function MouseWheelHandler(e) {
  function mouseDownHandler (line 4933) | function mouseDownHandler(e) {
  function mouseUpHandler (line 4942) | function mouseUpHandler(e) {
  function setMouseHijack (line 4953) | function setMouseHijack(value) {
  function bindEvents$7 (line 4966) | function bindEvents$7() {
  function onDestroy$4 (line 4983) | function onDestroy$4() {
  function forMouseLeaveOrTouch (line 4989) | function forMouseLeaveOrTouch(eventName, allowScrolling) {
  function onMouseEnterOrLeave (line 4995) | function onMouseEnterOrLeave(e) {
  function silentMoveTo (line 5049) | function silentMoveTo(sectionAnchor, slideAnchor) {
  function bindEvents$6 (line 5063) | function bindEvents$6() {
  function onDestroy$3 (line 5071) | function onDestroy$3() {
  function resizeHandler (line 5081) | function resizeHandler() {
  function fitToActiveSection (line 5108) | function fitToActiveSection() {
  function shouldSetVhUnits (line 5138) | function shouldSetVhUnits() {
  function resizeActions (line 5146) | function resizeActions() {
  function reBuild (line 5188) | function reBuild(resizing) {
  function adjustToNewViewport (line 5245) | function adjustToNewViewport() {
  function setSectionsHeight (line 5258) | function setSectionsHeight(value) {
  function setVhUnits (line 5273) | function setVhUnits() {
  function getAnchorsURL (line 5280) | function getAnchorsURL() {
  function bindEvents$5 (line 5307) | function bindEvents$5() {
  function onDestroy$2 (line 5316) | function onDestroy$2() {
  function setLockAnchors (line 5325) | function setLockAnchors(value) {
  function hashChangeHandler (line 5334) | function hashChangeHandler() {
  function anchorLinkClickHandler (line 5363) | function anchorLinkClickHandler(e) {
  function bindEvents$4 (line 5406) | function bindEvents$4() {
  function bindEvents$3 (line 5414) | function bindEvents$3() {
  function onClickOrTouch$1 (line 5418) | function onClickOrTouch$1(params) {
  function menuItemsHandler (line 5427) | function menuItemsHandler(e) {
  function bindEvents$2 (line 5445) | function bindEvents$2() {
  function onClickOrTouch (line 5449) | function onClickOrTouch(params) {
  function scrollHandler (line 5466) | function scrollHandler(e) {
  function isFormElementFocused (line 5611) | function isFormElementFocused() {
  function onDestroy$1 (line 5618) | function onDestroy$1() {
  function getScrollDirection (line 5627) | function getScrollDirection(currentScroll) {
  function isCompletelyInViewPort (line 5641) | function isCompletelyInViewPort(movement) {
  function onDestroy (line 5655) | function onDestroy() {
  function bindEvents$1 (line 5659) | function bindEvents$1() {
  function bindEvents (line 5685) | function bindEvents() {
  function updateScrollX (line 5699) | function updateScrollX(params) {
  function getActiveSlide (line 5711) | function getActiveSlide() {
  function init$1 (line 5717) | function init$1() {
  function i (line 5791) | function i() {
  function o (line 5795) | function o(t) {
  function s (line 5799) | function s(t) {
  function onSlideOrScroll (line 5810) | function onSlideOrScroll(params) {
  function afterPanelLoad (line 5821) | function afterPanelLoad(params) {
  function beforeInit (line 5831) | function beforeInit() {
  function setKeyboardScrolling (line 5839) | function setKeyboardScrolling(value, directions) {
  function styleMenu (line 5855) | function styleMenu(section) {
  function prepareDom (line 5877) | function prepareDom() {
  function afterRenderActions (line 5936) | function afterRenderActions() {
  function isDestinyTheStartingSection (line 5967) | function isDestinyTheStartingSection() {
  function setAllowScrolling (line 5981) | function setAllowScrolling(value, directions) {
  function scrollToAnchor (line 5996) | function scrollToAnchor() {
  function destroyStructure (line 6017) | function destroyStructure() {
  function init (line 6105) | function init() {
  function destroy (line 6133) | function destroy(all) {
  function displayWarnings (line 6154) | function displayWarnings() {
  function fullpage (line 6217) | function fullpage(containerSelector, options) {
  function setAPI (line 6246) | function setAPI() {

FILE: examples/module_loaders/browserify-example/dist/main.js
  function r (line 1) | function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==...
  function showError (line 249) | function showError(type, text) {
  function isVisible (line 252) | function isVisible(el) {
  function getVisible (line 256) | function getVisible(elements) {
  function $ (line 265) | function $(selector, context) {
  function deepExtend (line 273) | function deepExtend(out) {
  function hasClass (line 304) | function hasClass(el, className) {
  function getWindowHeight (line 315) | function getWindowHeight() {
  function getWindowWidth (line 322) | function getWindowWidth() {
  function css (line 331) | function css(items, props) {
  function prev (line 352) | function prev(item) {
  function next (line 359) | function next(item) {
  function last (line 366) | function last(item) {
  function index (line 374) | function index(item, selector) {
  function getList (line 390) | function getList(item) {
  function hide (line 397) | function hide(el) {
  function show (line 410) | function show(el) {
  function isArrayOrList (line 423) | function isArrayOrList(el) {
  function addClass (line 430) | function addClass(el, className) {
  function removeClass (line 445) | function removeClass(el, className) {
  function appendTo (line 464) | function appendTo(el, parent) {
  function wrap (line 478) | function wrap(toWrap, wrapper, isWrapAll) {
  function wrapAll (line 505) | function wrapAll(toWrap, wrapper) {
  function wrapInner (line 518) | function wrapInner(parent, wrapper) {
  function unwrap (line 534) | function unwrap(wrapper) {
  function closest (line 548) | function closest(el, selector) {
  function after (line 566) | function after(reference, el) {
  function before (line 576) | function before(reference, el) {
  function insertBefore (line 584) | function insertBefore(reference, beforeElement, el) {
  function getScrollTop (line 598) | function getScrollTop() {
  function siblings (line 606) | function siblings(el) {
  function preventDefault (line 611) | function preventDefault(event) {
  function getAttr (line 614) | function getAttr(el, attr) {
  function docAddEvent (line 617) | function docAddEvent(event, callback, options) {
  function windowAddEvent (line 620) | function windowAddEvent(event, callback, options) {
  function docRemoveEvent (line 623) | function docRemoveEvent(event, callback, options) {
  function windowRemoveEvent (line 626) | function windowRemoveEvent(event, callback, options) {
  function isFunction (line 633) | function isFunction(item) {
  function trigger (line 645) | function trigger(el, eventName, data) {
  function matches (line 664) | function matches(el, selector) {
  function toggle (line 671) | function toggle(el, value) {
  function createElementFromHTML (line 686) | function createElementFromHTML(htmlString) {
  function remove (line 696) | function remove(items) {
  function untilAll (line 708) | function untilAll(item, selector, fn) {
  function nextAll (line 726) | function nextAll(item, selector) {
  function prevAll (line 733) | function prevAll(item, selector) {
  function toArray (line 740) | function toArray(objectData) {
  function getLast (line 745) | function getLast(items) {
  function getAverage (line 752) | function getAverage(elements, number) {
  function setSrc (line 768) | function setSrc(element, attribute) {
  function getParentsUntil (line 772) | function getParentsUntil(item, topParentSelector) {
  function isInsideInput (line 782) | function isInsideInput() {
  function _typeof (line 883) | function _typeof(obj) {
  function setState (line 980) | function setState(props) {
  function getState (line 983) | function getState() {
  function getActivePanel (line 986) | function getActivePanel() {
  function bindEvents$c (line 1016) | function bindEvents$c() {
  function internalEvents (line 1026) | function internalEvents() {
  function delegatedEvents (line 1030) | function delegatedEvents(e) {
  function onDestroy$9 (line 1037) | function onDestroy$9() {
  function focusHandler (line 1044) | function focusHandler() {
  function getInitialAnchorsInDom (line 1210) | function getInitialAnchorsInDom() {
  function setContainer (line 1213) | function setContainer(value) {
  function getContainer (line 1216) | function getContainer(value) {
  function getOptions (line 1219) | function getOptions() {
  function setOptions (line 1222) | function setOptions(options) {
  function getOriginals (line 1226) | function getOriginals() {
  function setOption (line 1229) | function setOption(name, value) {
  function setVariableState (line 1239) | function setVariableState(variable, value, type) {
  function setOptionsFromDOM (line 1250) | function setOptionsFromDOM() {
  function getNodes (line 1357) | function getNodes(panels) {
  function getPanelByElement (line 1362) | function getPanelByElement(panels, el) {
  function getSlideOrSection (line 1378) | function getSlideOrSection(destiny) {
  function getSlideOrSectionPanel (line 1387) | function getSlideOrSectionPanel(panel) {
  function isFullPageAbove (line 1394) | function isFullPageAbove() {
  function getScrollSettings (line 1401) | function getScrollSettings(top) {
  function setScrolling (line 1425) | function setScrolling(element, val) {
  function addAnimation (line 1442) | function addAnimation(element) {
  function getYmovement (line 1455) | function getYmovement(activeSection, destiny) {
  function removeAnimation (line 1473) | function removeAnimation(element) {
  function getTransforms (line 1480) | function getTransforms(translate3d) {
  function transformContainer (line 1494) | function transformContainer(translate3d, animated) {
  function silentScroll (line 1514) | function silentScroll(top) {
  function setScrollingSpeed (line 1538) | function setScrollingSpeed(value, type) {
  function setCache (line 1546) | function setCache() {
  function scrollTo (line 1561) | function scrollTo(element, to, duration, callback) {
  function getScrolledPosition (line 1619) | function getScrolledPosition(element) {
  function nullOrSection (line 1638) | function nullOrSection(el) {
  function nullOrSlide (line 1646) | function nullOrSlide(el) {
  function fireCallback (line 1654) | function fireCallback(eventName, v) {
  function getEventData (line 1668) | function getEventData(eventName, v) {
  function playMedia (line 1719) | function playMedia(destiny) {
  function playYoutube (line 1745) | function playYoutube(element) {
  function stopMedia (line 1753) | function stopMedia(destiny) {
  function enableYoutubeAPI (line 1772) | function enableYoutubeAPI() {
  function addURLParam (line 1781) | function addURLParam(element, newParam) {
  function getUrlParamSign (line 1792) | function getUrlParamSign(url) {
  function lazyLoad (line 1800) | function lazyLoad(destiny) {
  function setBodyClass (line 1834) | function setBodyClass() {
  function getAnchor (line 1857) | function getAnchor(element) {
  function setPageStatus (line 1877) | function setPageStatus(slideIndex, slideAnchor, anchorLink) {
  function setUrlHash (line 1913) | function setUrlHash(url) {
  function getBulletLinkName (line 1931) | function getBulletLinkName(i, defaultName, item) {
  function slideBulletHandler (line 1936) | function slideBulletHandler(e) {
  function activeSlidesNavigation (line 1961) | function activeSlidesNavigation(slidesNav, slideIndex) {
  function addSlidesNavigation (line 1971) | function addSlidesNavigation(section) {
  function setIsScrollAllowed (line 2005) | function setIsScrollAllowed(value, direction, type) {
  function getIsScrollAllowed (line 2016) | function getIsScrollAllowed() {
  function onClickOrTouch$2 (line 2022) | function onClickOrTouch$2(params) {
  function slideArrowHandler (line 2031) | function slideArrowHandler() {
  function createSlideArrows (line 2061) | function createSlideArrows(section) {
  function toggleControlArrows (line 2082) | function toggleControlArrows(v) {
  function setRecordHistory (line 2096) | function setRecordHistory(value, type) {
  function setAutoScrolling (line 2107) | function setAutoScrolling(value, type) {
  function createInfiniteSections (line 2159) | function createInfiniteSections(v) {
  function keepSlidesPosition$1 (line 2190) | function keepSlidesPosition$1() {
  function keepSlidesPosition (line 2204) | function keepSlidesPosition() {
  function continuousVerticalFixSectionOrder (line 2216) | function continuousVerticalFixSectionOrder(v) {
  function lazyLoadOthers (line 2242) | function lazyLoadOthers() {
  function isSectionInViewport (line 2260) | function isSectionInViewport(el) {
  function tooltipTextHandler (line 2274) | function tooltipTextHandler() {
  function activateNavDots (line 2282) | function activateNavDots(name, sectionIndex) {
  function addVerticalNavigation (line 2299) | function addVerticalNavigation() {
  function sectionBulletHandler (line 2340) | function sectionBulletHandler(e) {
  function activateMenuAndNav (line 2361) | function activateMenuAndNav(anchor, index) {
  function activateMenuElement (line 2369) | function activateMenuElement(name) {
  function fireCallbackOncePerScroll (line 2410) | function fireCallbackOncePerScroll(callbackName, params) {
  function scrollPage (line 2434) | function scrollPage(section, callback, isMovementUp) {
  function onDestroy$8 (line 2531) | function onDestroy$8() {
  function getDestinationPosition (line 2541) | function getDestinationPosition(element) {
  function performMovement (line 2578) | function performMovement(v) {
  function afterSectionLoads$1 (line 2646) | function afterSectionLoads$1(v) {
  function setFitToSection (line 2681) | function setFitToSection(value, type) {
  function fitToSection (line 2688) | function fitToSection() {
  function responsive (line 2709) | function responsive() {
  function setResponsive (line 2730) | function setResponsive(active) {
  function isResponsiveMode (line 2760) | function isResponsiveMode() {
  function addTableClass (line 2764) | function addTableClass(element) {
  function getStartingSection (line 2785) | function getStartingSection() {
  function styleSection (line 2792) | function styleSection(section) {
  function getActiveSection (line 2833) | function getActiveSection() {
  function getSectionFromPanel (line 2837) | function getSectionFromPanel(panel) {
  function bindEvents$b (line 2844) | function bindEvents$b() {
  function afterRender (line 2856) | function afterRender() {
  function onDestroy$7 (line 2863) | function onDestroy$7() {
  function bindEvents$a (line 3085) | function bindEvents$a() {
  function onPerformMovement (line 3089) | function onPerformMovement() {
  function landscapeScroll (line 3100) | function landscapeScroll(slides, destiny, direction) {
  function performHorizontalMove (line 3180) | function performHorizontalMove(slides, v, fireCallback) {
  function getXmovement (line 3212) | function getXmovement(fromIndex, toIndex) {
  function onDestroy$6 (line 3224) | function onDestroy$6() {
  function afterSlideLoads (line 3228) | function afterSlideLoads(v) {
  function silentLandscapeScroll (line 3255) | function silentLandscapeScroll(activeSlide, noCallbacks) {
  function updateState (line 3282) | function updateState() {
  function updateStructuralState (line 3308) | function updateStructuralState() {
  function getPrevActivePanelIndex (line 3333) | function getPrevActivePanelIndex(activePanel) {
  function scrollToNewActivePanel (line 3355) | function scrollToNewActivePanel() {
  function getNewActivePanel (line 3389) | function getNewActivePanel(prevActivePanelIndex, siblings) {
  function addInternalSelectors (line 3447) | function addInternalSelectors() {
  function styleSlides (line 3456) | function styleSlides(section) {
  function bindEvents$9 (line 3517) | function bindEvents$9() {
  function createObserver (line 3529) | function createObserver(target, callback, config) {
  function didSlidesChange (line 3535) | function didSlidesChange() {
  function didSectionsChange (line 3539) | function didSectionsChange() {
  function didSectionsOrSlidesChange (line 3543) | function didSectionsOrSlidesChange() {
  function onContentChange (line 3552) | function onContentChange(mutations) {
  function getPassiveOptionsIfPossible (line 3614) | function getPassiveOptionsIfPossible() {
  function scrollBeyondFullPage (line 3665) | function scrollBeyondFullPage() {
  function onKeyDown (line 3683) | function onKeyDown() {
  function scrollUpToFullpage (line 3690) | function scrollUpToFullpage() {
  function getDestinationOffset (line 3708) | function getDestinationOffset() {
  function beyondFullPageHandler (line 3716) | function beyondFullPageHandler(container, e) {
  function moveSectionDown (line 3790) | function moveSectionDown() {
  function hasContentBeyondFullPage (line 3804) | function hasContentBeyondFullPage() {
  function moveSectionUp (line 3813) | function moveSectionUp() {
  function mouseMoveHandler (line 3831) | function mouseMoveHandler(e) {
  function setOldPageY (line 3848) | function setOldPageY(value) {
  function scrolling (line 3857) | function scrolling(type) {
  function addTouchHandler (line 3887) | function addTouchHandler() {
  function removeTouchHandler (line 3917) | function removeTouchHandler() {
  function touchMoveHandler (line 3947) | function touchMoveHandler(e) {
  function isReallyTouch (line 4009) | function isReallyTouch(e) {
  function touchStartHandler (line 4018) | function touchStartHandler(e) {
  function touchEndHandler (line 4039) | function touchEndHandler() {
  function getEventsPage (line 4051) | function getEventsPage(e) {
  function getMSPointer (line 4069) | function getMSPointer() {
  function preventBouncing (line 4086) | function preventBouncing(e) {
  function moveSlide (line 4102) | function moveSlide(direction, section) {
  function moveSlideLeft (line 4130) | function moveSlideLeft(section) {
  function moveSlideRight (line 4138) | function moveSlideRight(section) {
  function getSectionByAnchor (line 4146) | function getSectionByAnchor(sectionAnchor) {
  function scrollSlider (line 4163) | function scrollSlider(slideElem) {
  function scrollPageAndSlide (line 4173) | function scrollPageAndSlide(sectionAnchor, slideAnchor) {
  function getSlideByAnchor (line 4192) | function getSlideByAnchor(slideAnchor, section) {
  function moveTo$1 (line 4211) | function moveTo$1(sectionAnchor, slideAnchor) {
  function bindEvents$8 (line 4227) | function bindEvents$8() {
  function onDestroy$5 (line 4239) | function onDestroy$5() {
  function keydownHandler (line 4246) | function keydownHandler(e) {
  function onkeydown (line 4266) | function onkeydown(e) {
  function keyUpHandler (line 4369) | function keyUpHandler(e) {
  function blurHandler (line 4377) | function blurHandler() {
  function onTab (line 4391) | function onTab(e) {
  function onAfterSlideLoads (line 4446) | function onAfterSlideLoads(v) {
  function afterSectionLoads (line 4450) | function afterSectionLoads(v) {
  function focusItem (line 4456) | function focusItem() {
  function getPanelWithFocusable (line 4468) | function getPanelWithFocusable(isPrevItem) {
  function getFocusables (line 4494) | function getFocusables(el) {
  function isFocusOutside (line 4505) | function isFocusOutside(e) {
  function shouldCancelKeyboardNavigation (line 4515) | function shouldCancelKeyboardNavigation(e) {
  function cancelDirectionKeyEvents (line 4527) | function cancelDirectionKeyEvents(e) {
  function getControlPressed (line 4533) | function getControlPressed() {
  function setMouseWheelScrolling (line 4544) | function setMouseWheelScrolling(value) {
  function addMouseWheelHandler (line 4560) | function addMouseWheelHandler() {
  function addMiddleWheelHandler (line 4592) | function addMiddleWheelHandler() {
  function removeMouseWheelHandler (line 4602) | function removeMouseWheelHandler() {
  function removeMiddleWheelHandler (line 4619) | function removeMiddleWheelHandler() {
  function MouseWheelHandler (line 4631) | function MouseWheelHandler(e) {
  function mouseDownHandler (line 4723) | function mouseDownHandler(e) {
  function mouseUpHandler (line 4732) | function mouseUpHandler(e) {
  function setMouseHijack (line 4743) | function setMouseHijack(value) {
  function bindEvents$7 (line 4756) | function bindEvents$7() {
  function onDestroy$4 (line 4773) | function onDestroy$4() {
  function forMouseLeaveOrTouch (line 4779) | function forMouseLeaveOrTouch(eventName, allowScrolling) {
  function onMouseEnterOrLeave (line 4785) | function onMouseEnterOrLeave(e) {
  function silentMoveTo (line 4839) | function silentMoveTo(sectionAnchor, slideAnchor) {
  function bindEvents$6 (line 4853) | function bindEvents$6() {
  function onDestroy$3 (line 4861) | function onDestroy$3() {
  function resizeHandler (line 4871) | function resizeHandler() {
  function fitToActiveSection (line 4893) | function fitToActiveSection() {
  function resizeActions (line 4923) | function resizeActions() {
  function reBuild (line 4962) | function reBuild(resizing) {
  function adjustToNewViewport (line 5019) | function adjustToNewViewport() {
  function setSectionsHeight (line 5032) | function setSectionsHeight(value) {
  function setVhUnits (line 5047) | function setVhUnits() {
  function getAnchorsURL (line 5056) | function getAnchorsURL() {
  function bindEvents$5 (line 5083) | function bindEvents$5() {
  function onDestroy$2 (line 5090) | function onDestroy$2() {
  function setLockAnchors (line 5098) | function setLockAnchors(value) {
  function hashChangeHandler (line 5107) | function hashChangeHandler() {
  function bindEvents$4 (line 5132) | function bindEvents$4() {
  function bindEvents$3 (line 5140) | function bindEvents$3() {
  function onClickOrTouch$1 (line 5144) | function onClickOrTouch$1(params) {
  function menuItemsHandler (line 5153) | function menuItemsHandler(e) {
  function bindEvents$2 (line 5170) | function bindEvents$2() {
  function onClickOrTouch (line 5174) | function onClickOrTouch(params) {
  function scrollHandler (line 5191) | function scrollHandler(e) {
  function onDestroy$1 (line 5331) | function onDestroy$1() {
  function getScrollDirection (line 5340) | function getScrollDirection(currentScroll) {
  function isCompletelyInViewPort (line 5354) | function isCompletelyInViewPort(movement) {
  function onDestroy (line 5368) | function onDestroy() {
  function bindEvents$1 (line 5372) | function bindEvents$1() {
  function bindEvents (line 5398) | function bindEvents() {
  function getActiveSlide (line 5415) | function getActiveSlide() {
  function init$1 (line 5421) | function init$1() {
  function i (line 5493) | function i() {
  function o (line 5497) | function o(t) {
  function s (line 5501) | function s(t) {
  function setKeyboardScrolling (line 5513) | function setKeyboardScrolling(value, directions) {
  function styleMenu (line 5529) | function styleMenu(section) {
  function prepareDom (line 5551) | function prepareDom() {
  function afterRenderActions (line 5610) | function afterRenderActions() {
  function isDestinyTheStartingSection (line 5641) | function isDestinyTheStartingSection() {
  function setAllowScrolling (line 5655) | function setAllowScrolling(value, directions) {
  function scrollToAnchor (line 5670) | function scrollToAnchor() {
  function destroyStructure (line 5691) | function destroyStructure() {
  function init (line 5774) | function init() {
  function destroy (line 5801) | function destroy(all) {
  function displayWarnings (line 5822) | function displayWarnings() {
  function fullpage (line 5885) | function fullpage(containerSelector, options) {
  function setAPI (line 5911) | function setAPI() {

FILE: examples/module_loaders/webpack-example/dist/main.js
  function __webpack_require__ (line 6) | function __webpack_require__(moduleId) {
  function showError (line 342) | function showError(type, text) {
  function isVisible (line 345) | function isVisible(el) {
  function getVisible (line 349) | function getVisible(elements) {
  function $ (line 358) | function $(selector, context) {
  function deepExtend (line 366) | function deepExtend(out) {
  function hasClass (line 397) | function hasClass(el, className) {
  function getWindowHeight (line 408) | function getWindowHeight() {
  function getWindowWidth (line 415) | function getWindowWidth() {
  function css (line 424) | function css(items, props) {
  function prev (line 445) | function prev(item) {
  function next (line 452) | function next(item) {
  function last (line 459) | function last(item) {
  function index (line 467) | function index(item, selector) {
  function getList (line 483) | function getList(item) {
  function hide (line 490) | function hide(el) {
  function show (line 503) | function show(el) {
  function isArrayOrList (line 516) | function isArrayOrList(el) {
  function addClass (line 523) | function addClass(el, className) {
  function removeClass (line 538) | function removeClass(el, className) {
  function appendTo (line 557) | function appendTo(el, parent) {
  function wrap (line 571) | function wrap(toWrap, wrapper, isWrapAll) {
  function wrapAll (line 598) | function wrapAll(toWrap, wrapper) {
  function wrapInner (line 611) | function wrapInner(parent, wrapper) {
  function unwrap (line 627) | function unwrap(wrapper) {
  function closest (line 641) | function closest(el, selector) {
  function after (line 659) | function after(reference, el) {
  function before (line 669) | function before(reference, el) {
  function insertBefore (line 677) | function insertBefore(reference, beforeElement, el) {
  function getScrollTop (line 691) | function getScrollTop() {
  function siblings (line 699) | function siblings(el) {
  function preventDefault (line 704) | function preventDefault(event) {
  function getAttr (line 707) | function getAttr(el, attr) {
  function docAddEvent (line 710) | function docAddEvent(event, callback, options) {
  function windowAddEvent (line 713) | function windowAddEvent(event, callback, options) {
  function docRemoveEvent (line 716) | function docRemoveEvent(event, callback, options) {
  function windowRemoveEvent (line 719) | function windowRemoveEvent(event, callback, options) {
  function isFunction (line 726) | function isFunction(item) {
  function trigger (line 738) | function trigger(el, eventName, data) {
  function matches (line 757) | function matches(el, selector) {
  function toggle (line 764) | function toggle(el, value) {
  function createElementFromHTML (line 779) | function createElementFromHTML(htmlString) {
  function remove (line 789) | function remove(items) {
  function untilAll (line 801) | function untilAll(item, selector, fn) {
  function nextAll (line 819) | function nextAll(item, selector) {
  function prevAll (line 826) | function prevAll(item, selector) {
  function toArray (line 833) | function toArray(objectData) {
  function getLast (line 838) | function getLast(items) {
  function getAverage (line 845) | function getAverage(elements, number) {
  function setSrc (line 861) | function setSrc(element, attribute) {
  function getParentsUntil (line 865) | function getParentsUntil(item, topParentSelector) {
  function isInsideInput (line 875) | function isInsideInput() {
  function _typeof (line 976) | function _typeof(obj) {
  function setState (line 1073) | function setState(props) {
  function getState (line 1076) | function getState() {
  function getActivePanel (line 1079) | function getActivePanel() {
  function bindEvents$c (line 1109) | function bindEvents$c() {
  function internalEvents (line 1119) | function internalEvents() {
  function delegatedEvents (line 1123) | function delegatedEvents(e) {
  function onDestroy$9 (line 1130) | function onDestroy$9() {
  function focusHandler (line 1137) | function focusHandler() {
  function getInitialAnchorsInDom (line 1303) | function getInitialAnchorsInDom() {
  function setContainer (line 1306) | function setContainer(value) {
  function getContainer (line 1309) | function getContainer(value) {
  function getOptions (line 1312) | function getOptions() {
  function setOptions (line 1315) | function setOptions(options) {
  function getOriginals (line 1319) | function getOriginals() {
  function setOption (line 1322) | function setOption(name, value) {
  function setVariableState (line 1332) | function setVariableState(variable, value, type) {
  function setOptionsFromDOM (line 1343) | function setOptionsFromDOM() {
  function getNodes (line 1450) | function getNodes(panels) {
  function getPanelByElement (line 1455) | function getPanelByElement(panels, el) {
  function getSlideOrSection (line 1471) | function getSlideOrSection(destiny) {
  function getSlideOrSectionPanel (line 1480) | function getSlideOrSectionPanel(panel) {
  function isFullPageAbove (line 1487) | function isFullPageAbove() {
  function getScrollSettings (line 1494) | function getScrollSettings(top) {
  function setScrolling (line 1518) | function setScrolling(element, val) {
  function addAnimation (line 1535) | function addAnimation(element) {
  function getYmovement (line 1548) | function getYmovement(activeSection, destiny) {
  function removeAnimation (line 1566) | function removeAnimation(element) {
  function getTransforms (line 1573) | function getTransforms(translate3d) {
  function transformContainer (line 1587) | function transformContainer(translate3d, animated) {
  function silentScroll (line 1607) | function silentScroll(top) {
  function setScrollingSpeed (line 1631) | function setScrollingSpeed(value, type) {
  function setCache (line 1639) | function setCache() {
  function scrollTo (line 1654) | function scrollTo(element, to, duration, callback) {
  function getScrolledPosition (line 1712) | function getScrolledPosition(element) {
  function nullOrSection (line 1731) | function nullOrSection(el) {
  function nullOrSlide (line 1739) | function nullOrSlide(el) {
  function fireCallback (line 1747) | function fireCallback(eventName, v) {
  function getEventData (line 1761) | function getEventData(eventName, v) {
  function playMedia (line 1812) | function playMedia(destiny) {
  function playYoutube (line 1838) | function playYoutube(element) {
  function stopMedia (line 1846) | function stopMedia(destiny) {
  function enableYoutubeAPI (line 1865) | function enableYoutubeAPI() {
  function addURLParam (line 1874) | function addURLParam(element, newParam) {
  function getUrlParamSign (line 1885) | function getUrlParamSign(url) {
  function lazyLoad (line 1893) | function lazyLoad(destiny) {
  function setBodyClass (line 1927) | function setBodyClass() {
  function getAnchor (line 1950) | function getAnchor(element) {
  function setPageStatus (line 1970) | function setPageStatus(slideIndex, slideAnchor, anchorLink) {
  function setUrlHash (line 2006) | function setUrlHash(url) {
  function getBulletLinkName (line 2024) | function getBulletLinkName(i, defaultName, item) {
  function slideBulletHandler (line 2029) | function slideBulletHandler(e) {
  function activeSlidesNavigation (line 2054) | function activeSlidesNavigation(slidesNav, slideIndex) {
  function addSlidesNavigation (line 2064) | function addSlidesNavigation(section) {
  function setIsScrollAllowed (line 2098) | function setIsScrollAllowed(value, direction, type) {
  function getIsScrollAllowed (line 2109) | function getIsScrollAllowed() {
  function onClickOrTouch$2 (line 2115) | function onClickOrTouch$2(params) {
  function slideArrowHandler (line 2124) | function slideArrowHandler() {
  function createSlideArrows (line 2154) | function createSlideArrows(section) {
  function toggleControlArrows (line 2175) | function toggleControlArrows(v) {
  function setRecordHistory (line 2189) | function setRecordHistory(value, type) {
  function setAutoScrolling (line 2200) | function setAutoScrolling(value, type) {
  function createInfiniteSections (line 2252) | function createInfiniteSections(v) {
  function keepSlidesPosition$1 (line 2283) | function keepSlidesPosition$1() {
  function keepSlidesPosition (line 2297) | function keepSlidesPosition() {
  function continuousVerticalFixSectionOrder (line 2309) | function continuousVerticalFixSectionOrder(v) {
  function lazyLoadOthers (line 2335) | function lazyLoadOthers() {
  function isSectionInViewport (line 2353) | function isSectionInViewport(el) {
  function tooltipTextHandler (line 2367) | function tooltipTextHandler() {
  function activateNavDots (line 2375) | function activateNavDots(name, sectionIndex) {
  function addVerticalNavigation (line 2392) | function addVerticalNavigation() {
  function sectionBulletHandler (line 2433) | function sectionBulletHandler(e) {
  function activateMenuAndNav (line 2454) | function activateMenuAndNav(anchor, index) {
  function activateMenuElement (line 2462) | function activateMenuElement(name) {
  function fireCallbackOncePerScroll (line 2503) | function fireCallbackOncePerScroll(callbackName, params) {
  function scrollPage (line 2527) | function scrollPage(section, callback, isMovementUp) {
  function onDestroy$8 (line 2624) | function onDestroy$8() {
  function getDestinationPosition (line 2634) | function getDestinationPosition(element) {
  function performMovement (line 2671) | function performMovement(v) {
  function afterSectionLoads$1 (line 2739) | function afterSectionLoads$1(v) {
  function setFitToSection (line 2774) | function setFitToSection(value, type) {
  function fitToSection (line 2781) | function fitToSection() {
  function responsive (line 2802) | function responsive() {
  function setResponsive (line 2823) | function setResponsive(active) {
  function isResponsiveMode (line 2853) | function isResponsiveMode() {
  function addTableClass (line 2857) | function addTableClass(element) {
  function getStartingSection (line 2878) | function getStartingSection() {
  function styleSection (line 2885) | function styleSection(section) {
  function getActiveSection (line 2926) | function getActiveSection() {
  function getSectionFromPanel (line 2930) | function getSectionFromPanel(panel) {
  function bindEvents$b (line 2937) | function bindEvents$b() {
  function afterRender (line 2949) | function afterRender() {
  function onDestroy$7 (line 2956) | function onDestroy$7() {
  function bindEvents$a (line 3178) | function bindEvents$a() {
  function onPerformMovement (line 3182) | function onPerformMovement() {
  function landscapeScroll (line 3193) | function landscapeScroll(slides, destiny, direction) {
  function performHorizontalMove (line 3273) | function performHorizontalMove(slides, v, fireCallback) {
  function getXmovement (line 3305) | function getXmovement(fromIndex, toIndex) {
  function onDestroy$6 (line 3317) | function onDestroy$6() {
  function afterSlideLoads (line 3321) | function afterSlideLoads(v) {
  function silentLandscapeScroll (line 3348) | function silentLandscapeScroll(activeSlide, noCallbacks) {
  function updateState (line 3375) | function updateState() {
  function updateStructuralState (line 3401) | function updateStructuralState() {
  function getPrevActivePanelIndex (line 3426) | function getPrevActivePanelIndex(activePanel) {
  function scrollToNewActivePanel (line 3448) | function scrollToNewActivePanel() {
  function getNewActivePanel (line 3482) | function getNewActivePanel(prevActivePanelIndex, siblings) {
  function addInternalSelectors (line 3540) | function addInternalSelectors() {
  function styleSlides (line 3549) | function styleSlides(section) {
  function bindEvents$9 (line 3610) | function bindEvents$9() {
  function createObserver (line 3622) | function createObserver(target, callback, config) {
  function didSlidesChange (line 3628) | function didSlidesChange() {
  function didSectionsChange (line 3632) | function didSectionsChange() {
  function didSectionsOrSlidesChange (line 3636) | function didSectionsOrSlidesChange() {
  function onContentChange (line 3645) | function onContentChange(mutations) {
  function getPassiveOptionsIfPossible (line 3707) | function getPassiveOptionsIfPossible() {
  function scrollBeyondFullPage (line 3758) | function scrollBeyondFullPage() {
  function onKeyDown (line 3776) | function onKeyDown() {
  function scrollUpToFullpage (line 3783) | function scrollUpToFullpage() {
  function getDestinationOffset (line 3801) | function getDestinationOffset() {
  function beyondFullPageHandler (line 3809) | function beyondFullPageHandler(container, e) {
  function moveSectionDown (line 3883) | function moveSectionDown() {
  function hasContentBeyondFullPage (line 3897) | function hasContentBeyondFullPage() {
  function moveSectionUp (line 3906) | function moveSectionUp() {
  function mouseMoveHandler (line 3924) | function mouseMoveHandler(e) {
  function setOldPageY (line 3941) | function setOldPageY(value) {
  function scrolling (line 3950) | function scrolling(type) {
  function addTouchHandler (line 3980) | function addTouchHandler() {
  function removeTouchHandler (line 4010) | function removeTouchHandler() {
  function touchMoveHandler (line 4040) | function touchMoveHandler(e) {
  function isReallyTouch (line 4102) | function isReallyTouch(e) {
  function touchStartHandler (line 4111) | function touchStartHandler(e) {
  function touchEndHandler (line 4132) | function touchEndHandler() {
  function getEventsPage (line 4144) | function getEventsPage(e) {
  function getMSPointer (line 4162) | function getMSPointer() {
  function preventBouncing (line 4179) | function preventBouncing(e) {
  function moveSlide (line 4195) | function moveSlide(direction, section) {
  function moveSlideLeft (line 4223) | function moveSlideLeft(section) {
  function moveSlideRight (line 4231) | function moveSlideRight(section) {
  function getSectionByAnchor (line 4239) | function getSectionByAnchor(sectionAnchor) {
  function scrollSlider (line 4256) | function scrollSlider(slideElem) {
  function scrollPageAndSlide (line 4266) | function scrollPageAndSlide(sectionAnchor, slideAnchor) {
  function getSlideByAnchor (line 4285) | function getSlideByAnchor(slideAnchor, section) {
  function moveTo$1 (line 4304) | function moveTo$1(sectionAnchor, slideAnchor) {
  function bindEvents$8 (line 4320) | function bindEvents$8() {
  function onDestroy$5 (line 4332) | function onDestroy$5() {
  function keydownHandler (line 4339) | function keydownHandler(e) {
  function onkeydown (line 4359) | function onkeydown(e) {
  function keyUpHandler (line 4462) | function keyUpHandler(e) {
  function blurHandler (line 4470) | function blurHandler() {
  function onTab (line 4484) | function onTab(e) {
  function onAfterSlideLoads (line 4539) | function onAfterSlideLoads(v) {
  function afterSectionLoads (line 4543) | function afterSectionLoads(v) {
  function focusItem (line 4549) | function focusItem() {
  function getPanelWithFocusable (line 4561) | function getPanelWithFocusable(isPrevItem) {
  function getFocusables (line 4587) | function getFocusables(el) {
  function isFocusOutside (line 4598) | function isFocusOutside(e) {
  function shouldCancelKeyboardNavigation (line 4608) | function shouldCancelKeyboardNavigation(e) {
  function cancelDirectionKeyEvents (line 4620) | function cancelDirectionKeyEvents(e) {
  function getControlPressed (line 4626) | function getControlPressed() {
  function setMouseWheelScrolling (line 4637) | function setMouseWheelScrolling(value) {
  function addMouseWheelHandler (line 4653) | function addMouseWheelHandler() {
  function addMiddleWheelHandler (line 4685) | function addMiddleWheelHandler() {
  function removeMouseWheelHandler (line 4695) | function removeMouseWheelHandler() {
  function removeMiddleWheelHandler (line 4712) | function removeMiddleWheelHandler() {
  function MouseWheelHandler (line 4724) | function MouseWheelHandler(e) {
  function mouseDownHandler (line 4816) | function mouseDownHandler(e) {
  function mouseUpHandler (line 4825) | function mouseUpHandler(e) {
  function setMouseHijack (line 4836) | function setMouseHijack(value) {
  function bindEvents$7 (line 4849) | function bindEvents$7() {
  function onDestroy$4 (line 4866) | function onDestroy$4() {
  function forMouseLeaveOrTouch (line 4872) | function forMouseLeaveOrTouch(eventName, allowScrolling) {
  function onMouseEnterOrLeave (line 4878) | function onMouseEnterOrLeave(e) {
  function silentMoveTo (line 4932) | function silentMoveTo(sectionAnchor, slideAnchor) {
  function bindEvents$6 (line 4946) | function bindEvents$6() {
  function onDestroy$3 (line 4954) | function onDestroy$3() {
  function resizeHandler (line 4964) | function resizeHandler() {
  function fitToActiveSection (line 4986) | function fitToActiveSection() {
  function resizeActions (line 5016) | function resizeActions() {
  function reBuild (line 5055) | function reBuild(resizing) {
  function adjustToNewViewport (line 5112) | function adjustToNewViewport() {
  function setSectionsHeight (line 5125) | function setSectionsHeight(value) {
  function setVhUnits (line 5140) | function setVhUnits() {
  function getAnchorsURL (line 5149) | function getAnchorsURL() {
  function bindEvents$5 (line 5176) | function bindEvents$5() {
  function onDestroy$2 (line 5183) | function onDestroy$2() {
  function setLockAnchors (line 5191) | function setLockAnchors(value) {
  function hashChangeHandler (line 5200) | function hashChangeHandler() {
  function bindEvents$4 (line 5225) | function bindEvents$4() {
  function bindEvents$3 (line 5233) | function bindEvents$3() {
  function onClickOrTouch$1 (line 5237) | function onClickOrTouch$1(params) {
  function menuItemsHandler (line 5246) | function menuItemsHandler(e) {
  function bindEvents$2 (line 5263) | function bindEvents$2() {
  function onClickOrTouch (line 5267) | function onClickOrTouch(params) {
  function scrollHandler (line 5284) | function scrollHandler(e) {
  function onDestroy$1 (line 5424) | function onDestroy$1() {
  function getScrollDirection (line 5433) | function getScrollDirection(currentScroll) {
  function isCompletelyInViewPort (line 5447) | function isCompletelyInViewPort(movement) {
  function onDestroy (line 5461) | function onDestroy() {
  function bindEvents$1 (line 5465) | function bindEvents$1() {
  function bindEvents (line 5491) | function bindEvents() {
  function getActiveSlide (line 5508) | function getActiveSlide() {
  function init$1 (line 5514) | function init$1() {
  function i (line 5586) | function i() {
  function o (line 5590) | function o(t) {
  function s (line 5594) | function s(t) {
  function setKeyboardScrolling (line 5606) | function setKeyboardScrolling(value, directions) {
  function styleMenu (line 5622) | function styleMenu(section) {
  function prepareDom (line 5644) | function prepareDom() {
  function afterRenderActions (line 5703) | function afterRenderActions() {
  function isDestinyTheStartingSection (line 5734) | function isDestinyTheStartingSection() {
  function setAllowScrolling (line 5748) | function setAllowScrolling(value, directions) {
  function scrollToAnchor (line 5763) | function scrollToAnchor() {
  function destroyStructure (line 5784) | function destroyStructure() {
  function init (line 5867) | function init() {
  function destroy (line 5894) | function destroy(all) {
  function displayWarnings (line 5915) | function displayWarnings() {
  function fullpage (line 5978) | function fullpage(containerSelector, options) {
  function setAPI (line 6004) | function setAPI() {

FILE: src/js/anchors/getAnchorsURL.js
  function getAnchorsURL (line 4) | function getAnchorsURL(){

FILE: src/js/anchors/index.js
  function bindEvents (line 15) | function bindEvents(){
  function onDestroy (line 27) | function onDestroy(){
  function setLockAnchors (line 35) | function setLockAnchors(value){
  function hashChangeHandler (line 43) | function hashChangeHandler(){
  function anchorLinkClickHandler (line 74) | function anchorLinkClickHandler(e){

FILE: src/js/anchors/setPageStatus.js
  function onDestroyAll (line 10) | function onDestroyAll(){
  function setPageStatus (line 19) | function setPageStatus(slideIndex, slideAnchor, anchorLink){
  function setUrlHash (line 58) | function setUrlHash(url){

FILE: src/js/anchors/setRecordHistory.js
  function setRecordHistory (line 9) | function setRecordHistory(value, type){

FILE: src/js/arrows.js
  function onClickOrTouch (line 21) | function onClickOrTouch(params){
  function slideArrowHandler (line 30) | function slideArrowHandler(){
  function createSlideArrows (line 52) | function createSlideArrows(section){
  function toggleControlArrows (line 70) | function toggleControlArrows(v){

FILE: src/js/autoScrolling.js
  function setAutoScrolling (line 23) | function setAutoScrolling(value, type){

FILE: src/js/beyondFullpage/beyondFullPageHandler.js
  function beyondFullPageHandler (line 8) | function beyondFullPageHandler(container, e){

FILE: src/js/beyondFullpage/index.js
  function bindEvents (line 10) | function bindEvents(){

FILE: src/js/beyondFullpage/scrollBeyondFullPage.js
  function scrollBeyondFullPage (line 9) | function scrollBeyondFullPage(){
  function onKeyDown (line 23) | function onKeyDown(){
  function scrollUpToFullpage (line 31) | function scrollUpToFullpage(){
  function getDestinationOffset (line 42) | function getDestinationOffset(){

FILE: src/js/bindings.js
  function bindEvents (line 8) | function bindEvents(){
  function internalEvents (line 21) | function internalEvents(){
  function delegatedEvents (line 25) | function delegatedEvents(e){
  function onDestroy (line 29) | function onDestroy(){
  function focusHandler (line 37) | function focusHandler(){

FILE: src/js/callbacks/fireCallback.js
  function fireCallback (line 10) | function fireCallback(eventName, v){
  function getEventData (line 24) | function getEventData(eventName, v){

FILE: src/js/callbacks/fireCallbacksOncePerScroll.js
  function fireCallbackOncePerScroll (line 10) | function fireCallbackOncePerScroll(callbackName, params){

FILE: src/js/callbacks/nullOrSection.js
  function nullOrSection (line 7) | function nullOrSection(el){

FILE: src/js/callbacks/nullOrSlide.js
  function nullOrSlide (line 3) | function nullOrSlide(el){

FILE: src/js/common/addTableClass.js
  function addTableClass (line 6) | function addTableClass(element){

FILE: src/js/common/cache.js
  function setCache (line 9) | function setCache(){

FILE: src/js/common/eventEmitter.js
  method on (line 3) | on(event, listener) {
  method removeListener (line 10) | removeListener(event, listener) {
  method emit (line 18) | emit(event, ...args) {
  method once (line 23) | once(event, listener) {

FILE: src/js/common/getSectionByAnchor.js
  function getSectionByAnchor (line 6) | function getSectionByAnchor(sectionAnchor){

FILE: src/js/common/isScrollAllowed.js
  function setIsScrollAllowed (line 11) | function setIsScrollAllowed(value, direction, type){
  function getIsScrollAllowed (line 25) | function getIsScrollAllowed(){

FILE: src/js/common/item.js
  function getNodes (line 87) | function getNodes(panels){
  function getPanelByElement (line 91) | function getPanelByElement(panels, el){

FILE: src/js/common/options.js
  function getInitialAnchorsInDom (line 9) | function getInitialAnchorsInDom(){
  function setContainer (line 13) | function setContainer(value){
  function getContainer (line 17) | function getContainer(value){
  function getOptions (line 21) | function getOptions(){
  function setOptions (line 25) | function setOptions(options){
  function getOriginals (line 30) | function getOriginals(){
  function setOption (line 34) | function setOption(name, value){
  function setVariableState (line 44) | function setVariableState(variable, value, type){
  function setOptionsFromDOM (line 54) | function setOptionsFromDOM(){

FILE: src/js/common/scrollTo.js
  function scrollTo (line 16) | function scrollTo(element, to, duration, callback) {
  function getScrolledPosition (line 70) | function getScrolledPosition(element){

FILE: src/js/common/selectors.js
  constant WRAPPER (line 3) | const WRAPPER =               'fullpage-wrapper';
  constant WRAPPER_SEL (line 4) | const WRAPPER_SEL =           '.' + WRAPPER;
  constant SCROLLABLE (line 7) | const SCROLLABLE =            'fp-scrollable';
  constant SCROLLABLE_SEL (line 8) | const SCROLLABLE_SEL =        '.' + SCROLLABLE;
  constant RESPONSIVE (line 11) | const RESPONSIVE =            'fp-responsive';
  constant NO_TRANSITION (line 12) | const NO_TRANSITION =         'fp-notransition';
  constant DESTROYED (line 13) | const DESTROYED =             'fp-destroyed';
  constant ENABLED (line 14) | const ENABLED =               'fp-enabled';
  constant VIEWING_PREFIX (line 15) | const VIEWING_PREFIX =        'fp-viewing';
  constant ACTIVE (line 16) | const ACTIVE =                'active';
  constant ACTIVE_SEL (line 17) | const ACTIVE_SEL =            '.' + ACTIVE;
  constant COMPLETELY (line 18) | const COMPLETELY =            'fp-completely';
  constant COMPLETELY_SEL (line 19) | const COMPLETELY_SEL =        '.' + COMPLETELY;
  constant LOADED (line 20) | const LOADED =                'fp-loaded';
  constant LOADED_SEL (line 21) | const LOADED_SEL =            '.' + LOADED;
  constant SECTION_DEFAULT_SEL (line 24) | const SECTION_DEFAULT_SEL =   '.section';
  constant SECTION (line 25) | const SECTION =               'fp-section';
  constant SECTION_SEL (line 26) | const SECTION_SEL =           '.' + SECTION;
  constant SECTION_ACTIVE_SEL (line 27) | const SECTION_ACTIVE_SEL =    SECTION_SEL + ACTIVE_SEL;
  constant TABLE_CELL (line 28) | const TABLE_CELL =            'fp-tableCell';
  constant TABLE_CELL_SEL (line 29) | const TABLE_CELL_SEL =        '.' + TABLE_CELL;
  constant AUTO_HEIGHT (line 30) | const AUTO_HEIGHT =           'fp-auto-height';
  constant AUTO_HEIGHT_SEL (line 31) | const AUTO_HEIGHT_SEL =       '.' + AUTO_HEIGHT;
  constant AUTO_HEIGHT_RESPONSIVE (line 32) | const AUTO_HEIGHT_RESPONSIVE = 'fp-auto-height-responsive';
  constant AUTO_HEIGHT_RESPONSIVE_SEL (line 33) | const AUTO_HEIGHT_RESPONSIVE_SEL = '.' + AUTO_HEIGHT_RESPONSIVE;
  constant NORMAL_SCROLL (line 34) | const NORMAL_SCROLL =         'fp-normal-scroll';
  constant NORMAL_SCROLL_SEL (line 35) | const NORMAL_SCROLL_SEL =     '.' + NORMAL_SCROLL;
  constant SECTION_NAV (line 38) | const SECTION_NAV =           'fp-nav';
  constant SECTION_NAV_SEL (line 39) | const SECTION_NAV_SEL =       '#' + SECTION_NAV;
  constant SECTION_NAV_TOOLTIP (line 40) | const SECTION_NAV_TOOLTIP =   'fp-tooltip';
  constant SECTION_NAV_TOOLTIP_SEL (line 41) | const SECTION_NAV_TOOLTIP_SEL='.'+SECTION_NAV_TOOLTIP;
  constant SHOW_ACTIVE_TOOLTIP (line 42) | const SHOW_ACTIVE_TOOLTIP =   'fp-show-active';
  constant SLIDE_DEFAULT_SEL (line 45) | const SLIDE_DEFAULT_SEL =     '.slide';
  constant SLIDE (line 46) | const SLIDE =                 'fp-slide';
  constant SLIDE_SEL (line 47) | const SLIDE_SEL =             '.' + SLIDE;
  constant SLIDE_ACTIVE_SEL (line 48) | const SLIDE_ACTIVE_SEL =      SLIDE_SEL + ACTIVE_SEL;
  constant SLIDES_WRAPPER (line 49) | const SLIDES_WRAPPER =        'fp-slides';
  constant SLIDES_WRAPPER_SEL (line 50) | const SLIDES_WRAPPER_SEL =    '.' + SLIDES_WRAPPER;
  constant SLIDES_CONTAINER (line 51) | const SLIDES_CONTAINER =      'fp-slidesContainer';
  constant SLIDES_CONTAINER_SEL (line 52) | const SLIDES_CONTAINER_SEL =  '.' + SLIDES_CONTAINER;
  constant TABLE (line 53) | const TABLE =                 'fp-table';
  constant OVERFLOW (line 54) | const OVERFLOW =              'fp-overflow';
  constant OVERFLOW_SEL (line 55) | const OVERFLOW_SEL =          '.' + OVERFLOW;
  constant IS_OVERFLOW (line 56) | const IS_OVERFLOW =           'fp-is-overflow';
  constant SLIDES_NAV (line 59) | const SLIDES_NAV =            'fp-slidesNav';
  constant SLIDES_NAV_SEL (line 60) | const SLIDES_NAV_SEL =        '.' + SLIDES_NAV;
  constant SLIDES_NAV_LINK_SEL (line 61) | const SLIDES_NAV_LINK_SEL =   SLIDES_NAV_SEL + ' a';
  constant SLIDES_STYLED_ARROW (line 62) | const SLIDES_STYLED_ARROW =   'fp-arrow';
  constant SLIDES_ARROW (line 63) | const SLIDES_ARROW =          'fp-controlArrow';
  constant SLIDES_ARROW_SEL (line 64) | const SLIDES_ARROW_SEL =      '.' + SLIDES_ARROW;
  constant SLIDES_PREV (line 65) | const SLIDES_PREV =           'fp-prev';
  constant SLIDES_PREV_SEL (line 66) | const SLIDES_PREV_SEL =       '.' + SLIDES_PREV;
  constant SLIDES_ARROW_PREV (line 67) | const SLIDES_ARROW_PREV =     SLIDES_ARROW + ' ' + SLIDES_PREV;
  constant SLIDES_ARROW_PREV_SEL (line 68) | const SLIDES_ARROW_PREV_SEL = SLIDES_ARROW_SEL + SLIDES_PREV_SEL;
  constant SLIDES_NEXT (line 69) | const SLIDES_NEXT =           'fp-next';
  constant SLIDES_NEXT_SEL (line 70) | const SLIDES_NEXT_SEL =       '.' + SLIDES_NEXT;
  constant SLIDES_ARROW_NEXT (line 71) | const SLIDES_ARROW_NEXT =     SLIDES_ARROW + ' ' + SLIDES_NEXT;
  constant SLIDES_ARROW_NEXT_SEL (line 72) | const SLIDES_ARROW_NEXT_SEL = SLIDES_ARROW_SEL + SLIDES_NEXT_SEL;
  constant WATERMARK (line 75) | const WATERMARK = 'fp-watermark';
  constant WATERMARK_SEL (line 76) | const WATERMARK_SEL = '.' + WATERMARK;

FILE: src/js/common/silentScroll.js
  function silentScroll (line 9) | function silentScroll(top){

FILE: src/js/common/state.js
  function setState (line 39) | function setState(props){
  function getState (line 43) | function getState(){
  function getActiveDefaultSection (line 47) | function getActiveDefaultSection(sections){
  function getActivePanel (line 56) | function getActivePanel(){
  function resetState (line 60) | function resetState(){

FILE: src/js/common/supportsPassive.js
  function getPassiveOptionsIfPossible (line 24) | function getPassiveOptionsIfPossible(){

FILE: src/js/common/tick.js
  function setPrevTime (line 6) | function setPrevTime(value){
  function getPrevTime (line 10) | function getPrevTime(value){

FILE: src/js/common/transformContainer.js
  function transformContainer (line 12) | function transformContainer(translate3d, animated){

FILE: src/js/common/utils.js
  function showError (line 8) | function showError(type, text){
  function isVisible (line 12) | function isVisible(el){
  function getVisible (line 18) | function getVisible(elements){
  function $ (line 27) | function $(selector, context){
  function deepExtend (line 35) | function deepExtend(out) {
  function hasClass (line 64) | function hasClass(el, className){
  function getWindowHeight (line 74) | function getWindowHeight(){
  function getWindowWidth (line 81) | function getWindowWidth(){
  function css (line 90) | function css(items, props) {
  function prev (line 111) | function prev(item){
  function next (line 118) | function next(item){
  function last (line 125) | function last(item){
  function index (line 133) | function index(item, selector) {
  function getList (line 147) | function getList(item){
  function hide (line 154) | function hide(el){
  function show (line 166) | function show(el){
  function isArrayOrList (line 178) | function isArrayOrList(el){
  function addClass (line 186) | function addClass(el, className) {
  function removeClass (line 200) | function removeClass(el, className){
  function appendTo (line 218) | function appendTo(el, parent){
  function wrap (line 232) | function wrap(toWrap, wrapper, isWrapAll) {
  function wrapAll (line 255) | function wrapAll(toWrap, wrapper) {
  function wrapInner (line 268) | function wrapInner(parent, wrapper) {
  function unwrap (line 284) | function unwrap(wrapper) {
  function closest (line 297) | function closest(el, selector) {
  function after (line 313) | function after(reference, el) {
  function before (line 323) | function before(reference, el) {
  function insertBefore (line 331) | function insertBefore(reference, beforeElement, el){
  function getScrollTop (line 345) | function getScrollTop(){
  function siblings (line 353) | function siblings(el){
  function preventDefault (line 359) | function preventDefault(event){
  function getAttr (line 363) | function getAttr(el, attr){
  function docAddEvent (line 367) | function docAddEvent(event, callback, options){
  function windowAddEvent (line 371) | function windowAddEvent(event, callback, options){
  function docRemoveEvent (line 375) | function docRemoveEvent(event, callback, options){
  function windowRemoveEvent (line 379) | function windowRemoveEvent(event, callback, options){
  function isFunction (line 386) | function isFunction(item) {
  function trigger (line 397) | function trigger(el, eventName, data){
  function matches (line 416) | function matches(el, selector) {
  function toggle (line 423) | function toggle(el, value){
  function createElementFromHTML (line 438) | function createElementFromHTML(htmlString) {
  function remove (line 449) | function remove(items){
  function untilAll (line 460) | function untilAll(item, selector, fn){
  function nextAll (line 476) | function nextAll(item, selector){
  function prevAll (line 483) | function prevAll(item, selector){
  function toArray (line 490) | function toArray(objectData){
  function getLast (line 496) | function getLast(items){
  function getAverage (line 503) | function getAverage(elements, number){
  function setSrc (line 520) | function setSrc(element, attribute){
  function getParentsUntil (line 525) | function getParentsUntil(item, topParentSelector){
  function isInsideInput (line 536) | function isInsideInput(){

FILE: src/js/common/utilsFP.js
  function getSlideOrSection (line 14) | function getSlideOrSection(destiny){
  function getSlideOrSectionPanel (line 23) | function getSlideOrSectionPanel(panel){
  function isFullPageAbove (line 30) | function isFullPageAbove(){
  function getScrollSettings (line 37) | function getScrollSettings(top){
  function setScrolling (line 64) | function setScrolling(element, val){
  function addAnimation (line 83) | function addAnimation(element){
  function getYmovement (line 97) | function getYmovement(activeSection, destiny){
  function removeAnimation (line 112) | function removeAnimation(element){
  function getTransforms (line 119) | function getTransforms(translate3d){

FILE: src/js/console.js
  function displayWarnings (line 17) | function displayWarnings(){

FILE: src/js/dom/addInternalSelectors.js
  function addInternalSelectors (line 12) | function addInternalSelectors(){

FILE: src/js/dom/afterRenderActions.js
  function afterRenderActions (line 23) | function afterRenderActions(){
  function isDestinyTheStartingSection (line 59) | function isDestinyTheStartingSection(){

FILE: src/js/dom/destroyStructure.js
  function destroyStructure (line 38) | function destroyStructure(){

FILE: src/js/dom/prepareDom.js
  function prepareDom (line 22) | function prepareDom(){

FILE: src/js/dynamic.js
  function bindEvents (line 33) | function bindEvents(){
  function unbindEvents (line 42) | function unbindEvents(){
  function createObserver (line 52) | function createObserver(target, callback, config) {
  function didSlidesChange (line 58) | function didSlidesChange(){
  function didSectionsChange (line 62) | function didSectionsChange(){
  function didSectionsOrSlidesChange (line 66) | function didSectionsOrSlidesChange(){
  function onContentChange (line 74) | function onContentChange(mutations){

FILE: src/js/fitToSection.js
  function setFitToSection (line 12) | function setFitToSection(value, type){
  function fitToSection (line 19) | function fitToSection(){

FILE: src/js/fullpage.js
  function fullpage (line 29) | function fullpage(containerSelector, options) {
  function setAPI (line 60) | function setAPI(){

FILE: src/js/infiniteScroll/createInfiniteSections.js
  function createInfiniteSections (line 16) | function createInfiniteSections(v){
  function keepSlidesPosition (line 51) | function keepSlidesPosition(){

FILE: src/js/infiniteScroll/fixPosition.js
  function keepSlidesPosition (line 16) | function keepSlidesPosition(){
  function continuousVerticalFixSectionOrder (line 26) | function continuousVerticalFixSectionOrder (v) {

FILE: src/js/infiniteScroll/getPositions.js
  function getTmpPosition (line 6) | function getTmpPosition(v){
  function getDestinationPosForInfiniteScroll (line 12) | function getDestinationPosForInfiniteScroll(v){

FILE: src/js/instance.js
  function init (line 21) | function init(){
  function destroy (line 54) | function destroy(all){

FILE: src/js/keyboard/index.js
  function bindEvents (line 30) | function bindEvents(){
  function onDestroy (line 47) | function onDestroy(){
  function keydownHandler (line 54) | function keydownHandler(e) {
  function onkeydown (line 81) | function onkeydown(e){
  function keyUpHandler (line 184) | function keyUpHandler(e){
  function blurHandler (line 192) | function blurHandler(){
  function onTab (line 204) | function onTab(e){
  function onAfterSlideLoads (line 263) | function onAfterSlideLoads(v){
  function afterSectionLoads (line 267) | function afterSectionLoads(v){
  function focusItem (line 273) | function focusItem(){
  function getPanelWithFocusable (line 284) | function getPanelWithFocusable(isPrevItem){
  function getFocusables (line 310) | function getFocusables(el){
  function isFocusOutside (line 322) | function isFocusOutside(e){
  function shouldCancelKeyboardNavigation (line 333) | function shouldCancelKeyboardNavigation(e){
  function cancelDirectionKeyEvents (line 345) | function cancelDirectionKeyEvents(e){
  function getControlPressed (line 351) | function getControlPressed(){

FILE: src/js/keyboard/setKeyboardScrolling.js
  function beforeInit (line 12) | function beforeInit(){
  function setKeyboardScrolling (line 19) | function setKeyboardScrolling(value, directions){

FILE: src/js/lazyLoad/lazyLoad.js
  function lazyLoad (line 10) | function lazyLoad(destiny){
  function lazyLoadPanels (line 43) | function lazyLoadPanels(panel){
  function lazyLoadDirection (line 54) | function lazyLoadDirection(startPanel, direction, count) {

FILE: src/js/lazyLoad/lazyLoadOthers.js
  function lazyLoadOthers (line 18) | function lazyLoadOthers(){
  function isSectionInViewport (line 38) | function isSectionInViewport (el) {

FILE: src/js/media.js
  function onMediaLoad (line 11) | function onMediaLoad(section){
  function hasAutoPlay (line 22) | function hasAutoPlay(item){
  function playMedia (line 29) | function playMedia(destiny){
  function playYoutube (line 57) | function playYoutube(element){
  function stopMedia (line 64) | function stopMedia(destiny){
  function enableYoutubeAPI (line 85) | function enableYoutubeAPI(){
  function addURLParam (line 94) | function addURLParam(element, newParam){
  function getUrlParamSign (line 105) | function getUrlParamSign(url){

FILE: src/js/menu/activateMenuAndNav.js
  function activateMenuAndNav (line 12) | function activateMenuAndNav(anchor, index){
  function activateMenuElement (line 20) | function activateMenuElement(name){

FILE: src/js/menu/index.js
  function bindEvents (line 10) | function bindEvents(){
  function onClickOrTouch (line 14) | function onClickOrTouch(params){
  function menuItemsHandler (line 24) | function menuItemsHandler(e){

FILE: src/js/menu/styleMenu.js
  function styleMenu (line 10) | function styleMenu(section){

FILE: src/js/mixed/warnings.js
  function showLicenseWarning (line 8) | function showLicenseWarning(){

FILE: src/js/mixed/waterMark.js
  function init (line 10) | function init(){

FILE: src/js/mouse/move.js
  function mouseMoveHandler (line 13) | function mouseMoveHandler(e) {
  function setOldPageY (line 31) | function setOldPageY(value){

FILE: src/js/mouse/wheel.js
  function setMouseWheelScrolling (line 28) | function setMouseWheelScrolling(value){
  function addMouseWheelHandler (line 43) | function addMouseWheelHandler(){
  function addMiddleWheelHandler (line 75) | function addMiddleWheelHandler(){
  function removeMouseWheelHandler (line 85) | function removeMouseWheelHandler(){
  function removeMiddleWheelHandler (line 99) | function removeMiddleWheelHandler(){
  function isAccelerating (line 109) | function isAccelerating(scrollings) {
  function MouseWheelHandler (line 122) | function MouseWheelHandler(e) {
  function mouseDownHandler (line 267) | function mouseDownHandler(e){
  function mouseUpHandler (line 277) | function mouseUpHandler(e){
  function setMouseHijack (line 288) | function setMouseHijack(value){

FILE: src/js/nav/getBulletLinkName.js
  function getBulletLinkName (line 7) | function getBulletLinkName(i, defaultName, item){

FILE: src/js/nav/index.js
  function bindEvents (line 14) | function bindEvents(){
  function onClickOrTouch (line 18) | function onClickOrTouch(params){

FILE: src/js/nav/sections.js
  function tooltipTextHandler (line 18) | function tooltipTextHandler(){
  function activateNavDots (line 26) | function activateNavDots(name, sectionIndex){
  function addVerticalNavigation (line 41) | function addVerticalNavigation(){
  function sectionBulletHandler (line 88) | function sectionBulletHandler(e){

FILE: src/js/nav/slides.js
  function slideBulletHandler (line 19) | function slideBulletHandler(e){
  function activeSlidesNavigation (line 45) | function activeSlidesNavigation(slidesNav, slideIndex){
  function addSlidesNavigation (line 55) | function addSlidesNavigation(section){

FILE: src/js/normalScrollElements.js
  function bindEvents (line 12) | function bindEvents(){
  function onDestroy (line 30) | function onDestroy(){
  function forMouseLeaveOrTouch (line 36) | function forMouseLeaveOrTouch(eventName, allowScrolling){
  function onMouseEnterOrLeave (line 42) | function onMouseEnterOrLeave(e) {

FILE: src/js/resize.js
  function bindEvents (line 26) | function bindEvents(){
  function onDestroy (line 36) | function onDestroy(){
  function resizeHandler (line 45) | function resizeHandler(){
  function fitToActiveSection (line 75) | function fitToActiveSection(){
  function shouldSetVhUnits (line 103) | function shouldSetVhUnits() {
  function resizeActions (line 110) | function resizeActions(){
  function reBuild (line 151) | function reBuild(resizing){
  function adjustToNewViewport (line 202) | function adjustToNewViewport(){
  function setSectionsHeight (line 213) | function setSectionsHeight(value){
  function setVhUnits (line 227) | function setVhUnits(){

FILE: src/js/responsive.js
  function responsive (line 19) | function responsive(){
  function setResponsive (line 42) | function setResponsive(active){
  function isResponsiveMode (line 70) | function isResponsiveMode(){

FILE: src/js/scroll/index.js
  function onDestroy (line 15) | function onDestroy(){
  function bindEvents (line 19) | function bindEvents(){

FILE: src/js/scroll/moveSectionDown.js
  function moveSectionDown (line 14) | function moveSectionDown(){
  function hasContentBeyondFullPage (line 31) | function hasContentBeyondFullPage(){

FILE: src/js/scroll/moveSectionUp.js
  function moveSectionUp (line 12) | function moveSectionUp(){

FILE: src/js/scroll/moveTo.js
  function moveTo (line 12) | function moveTo(sectionAnchor, slideAnchor){

FILE: src/js/scroll/scrollHandler.js
  function scrollHandler (line 29) | function scrollHandler(e){
  function isFormElementFocused (line 180) | function isFormElementFocused() {
  function onDestroy (line 188) | function onDestroy(){
  function getScrollDirection (line 196) | function getScrollDirection(currentScroll){
  function isCompletelyInViewPort (line 212) | function isCompletelyInViewPort(movement){

FILE: src/js/scroll/scrollPage.js
  function scrollPage (line 42) | function scrollPage(section, callback, isMovementUp){
  function onDestroy (line 144) | function onDestroy(){
  function getDestinationPosition (line 154) | function getDestinationPosition(element){
  function performMovement (line 191) | function performMovement(v){
  function afterSectionLoads (line 266) | function afterSectionLoads(v){

FILE: src/js/scroll/scrollPageAndSlide.js
  function scrollPageAndSlide (line 11) | function scrollPageAndSlide(sectionAnchor, slideAnchor){
  function getSlideByAnchor (line 35) | function getSlideByAnchor(slideAnchor, section){

FILE: src/js/scroll/scrollToAnchor.js
  function scrollToAnchor (line 11) | function scrollToAnchor(){

FILE: src/js/scroll/scrolling.js
  function scrolling (line 12) | function scrolling(type){

FILE: src/js/scroll/setAllowScrolling.js
  function setAllowScrolling (line 12) | function setAllowScrolling(value, directions){

FILE: src/js/scroll/silentMove.js
  function silentMoveTo (line 12) | function silentMoveTo(sectionAnchor, slideAnchor){

FILE: src/js/scroll/skipIntermediateItems.js
  function onSlideOrScroll (line 11) | function onSlideOrScroll(params){
  function afterPanelLoad (line 22) | function afterPanelLoad(params){

FILE: src/js/scrolloverflow.js
  function bindEvents (line 24) | function bindEvents(){
  function afterRender (line 38) | function afterRender(){
  function onDestroy (line 45) | function onDestroy(){

FILE: src/js/sections.js
  function getStartingSection (line 12) | function getStartingSection(){
  function styleSection (line 19) | function styleSection(section){
  function getActiveSection (line 58) | function getActiveSection(){
  function getSectionFromPanel (line 62) | function getSectionFromPanel(panel){

FILE: src/js/slides/index.js
  function bindEvents (line 16) | function bindEvents(){
  function updateScrollX (line 31) | function updateScrollX(params){
  function getActiveSlide (line 43) | function getActiveSlide(){

FILE: src/js/slides/landscapeScroll.js
  function bindEvents (line 29) | function bindEvents(){
  function onPerformMovement (line 33) | function onPerformMovement(){
  function landscapeScroll (line 42) | function landscapeScroll(slides, destiny, direction){
  function performHorizontalMove (line 122) | function performHorizontalMove(slides, v, fireCallback){
  function getXmovement (line 157) | function getXmovement(fromIndex, toIndex){
  function onDestroy (line 167) | function onDestroy(){
  function afterSlideLoads (line 171) | function afterSlideLoads(v){

FILE: src/js/slides/moveSlide.js
  function moveSlide (line 17) | function moveSlide(direction, section){
  function moveSlideLeft (line 46) | function moveSlideLeft(section){
  function moveSlideRight (line 54) | function moveSlideRight(section){

FILE: src/js/slides/scrollSlider.js
  function scrollSlider (line 8) | function scrollSlider(slideElem){

FILE: src/js/slides/silentLandscapeScroll.js
  function silentLandscapeScroll (line 12) | function silentLandscapeScroll(activeSlide, noCallbacks){

FILE: src/js/slides/styleSlides.js
  function styleSlides (line 20) | function styleSlides(section){

FILE: src/js/speed.js
  function setScrollingSpeed (line 9) | function setScrollingSpeed(value, type){

FILE: src/js/stateClasses.js
  function setBodyClass (line 9) | function setBodyClass(){
  function getAnchor (line 35) | function getAnchor(element){

FILE: src/js/stateUpdates.js
  function onDestroyAll (line 17) | function onDestroyAll(){
  function updateState (line 25) | function updateState(){
  function updateStructuralState (line 64) | function updateStructuralState(){
  function getPrevActivePanelIndex (line 88) | function getPrevActivePanelIndex(activePanel){
  function scrollToNewActivePanel (line 106) | function scrollToNewActivePanel(){
  function getNewActivePanel (line 136) | function getNewActivePanel(prevActivePanelIndex, siblings){

FILE: src/js/touch.js
  function addTouchHandler (line 29) | function addTouchHandler(){
  function removeTouchHandler (line 52) | function removeTouchHandler(){
  function touchMoveHandler (line 76) | function touchMoveHandler(e){
  function isReallyTouch (line 140) | function isReallyTouch(e){
  function touchStartHandler (line 148) | function touchStartHandler(e){
  function touchEndHandler (line 167) | function touchEndHandler(){
  function getEventsPage (line 176) | function getEventsPage(e){
  function getMSPointer (line 195) | function getMSPointer(){
  function preventBouncing (line 209) | function preventBouncing(e){

FILE: tests/unit/callbacks.js
  function afterMove (line 15) | function afterMove(i){
  function afterMove (line 33) | function afterMove(i){
  function afterMove (line 51) | function afterMove(i){

FILE: tests/unit/callbacksV3.js
  function afterMove (line 15) | function afterMove(i){
  function afterMove (line 49) | function afterMove(i){
  function afterMove (line 82) | function afterMove(i){

FILE: tests/unit/continuousVertical.js
  function getPosition (line 143) | function getPosition(){

FILE: tests/unit/destroy.js
  function checkDestroyWhenScrollBarPresent (line 169) | function checkDestroyWhenScrollBarPresent(assert, options){

FILE: tests/unit/displayWarnings.js
  function mockConsole (line 8) | function mockConsole(){
  function isWarnFired (line 21) | function isWarnFired(){
  function isErrorFired (line 29) | function isErrorFired(){
  function isUsingExtensionsFile (line 37) | function isUsingExtensionsFile(FP){

FILE: tests/unit/keyboardScrolling.js
  function simulateMouseWheel (line 2) | function simulateMouseWheel(type){
  function simulateKeydown (line 11) | function simulateKeydown(type){
  function simulateTouchMove (line 22) | function simulateTouchMove(target, type){
  function triggerKeydown (line 45) | function triggerKeydown(keyCode, shift, direction){
  function upAndDown (line 54) | function upAndDown(assert, done, FP, params, prefix){

FILE: tests/unit/menu.js
  function trigger (line 2) | function trigger(el, eventName, data){

FILE: tests/unit/moveSlideLeft.js
  function getPosition (line 24) | function getPosition(){

FILE: tests/unit/moveSlideRight.js
  function getPosition (line 23) | function getPosition(){

FILE: tests/unit/responsiveHeight.js
  function checkIsResponsive (line 1) | function checkIsResponsive(FP, assert){
  function checkIsNotResponsive (line 9) | function checkIsNotResponsive(FP, assert){

FILE: tests/unit/responsiveWidth.js
  function checkIsResponsive (line 1) | function checkIsResponsive(FP, assert){
  function checkIsNotResponsive (line 9) | function checkIsNotResponsive(FP, assert){

FILE: tests/unit/sectionsColor.js
  function rgb2hex (line 4) | function rgb2hex(rgb) {
  function hex (line 9) | function hex(x) {

FILE: tests/utils.js
  function areAllLazyLoaded (line 110) | function areAllLazyLoaded(element){
  function isAnyLazyLoaded (line 115) | function isAnyLazyLoaded(element){
  function areOthersLazyLoaded (line 119) | function areOthersLazyLoaded(){
  function appendLazyElements (line 142) | function appendLazyElements(id){
  method afterRender (line 163) | afterRender() {
  method afterRender (line 198) | afterRender() {
  function getTransform (line 270) | function getTransform(translate) {
  function getTransformFromElement (line 281) | function getTransformFromElement($el) {
  function getWindowPosition (line 291) | function getWindowPosition(){
  function getTop (line 295) | function getTop(selector){
  function simulateScroll (line 301) | function simulateScroll(scrollValue, FP){
  function showFullpage (line 315) | function showFullpage(id){
  function showQunit (line 323) | function showQunit(id){
  function simulateMouseWheel (line 330) | function simulateMouseWheel(type){
  function simulateKeydown (line 339) | function simulateKeydown(type){
  function simulateTouchMove (line 349) | function simulateTouchMove(target, type){
  function trigger (line 373) | function trigger(el, eventName, data){
  function destroyTest (line 397) | function destroyTest(){
  function setLoadedState (line 431) | function setLoadedState(){
  function areOthersLoaded (line 444) | function areOthersLoaded(elements){
  function initFullpage (line 450) | function initFullpage(id, options){
  function initFullpageNew (line 456) | function initFullpageNew(id, options){

FILE: types/index.d.ts
  type Item (line 2) | type Item = {
  type DragAndMove (line 10) | type DragAndMove = boolean | "vertical" | "horizontal" | "fingersonly" |...
  type FadingEffect (line 11) | type FadingEffect = boolean | "sections" | "slides";
  type InterlockedSlides (line 12) | type InterlockedSlides = boolean | Array<number>;
  type bigSectionsDestination (line 13) | type bigSectionsDestination = "top" | "bottom" | null;
  type Parallax (line 14) | type Parallax = boolean | "sections" | "slides";
  type DropEffect (line 15) | type DropEffect = boolean | "sections" | "slides";
  type WaterEffect (line 16) | type WaterEffect = boolean | "sections" | "slides";
  type SkipIntermediateItems (line 17) | type SkipIntermediateItems = boolean | "sections" | "slides";
  type Trigger (line 18) | type Trigger = "slideArrow" | "verticalNav" | "horizontalNav" | "keydown...
  type ScrollOverflowReset (line 19) | type ScrollOverflowReset = boolean | "slides" | "sections";
  type Effects (line 20) | type Effects = boolean | string;
  type Cinematic (line 21) | type Cinematic = boolean | string;
  type WaterEffectOptions (line 22) | type WaterEffectOptions = {
  type CardsOptions (line 26) | type CardsOptions = {
  type ParallaxOptions (line 31) | type ParallaxOptions = {
  type CinematicContentDirection (line 37) | type CinematicContentDirection = 'auto' | 'vertical' | 'horizontal' | 'n...
  type CinematicOptions (line 38) | type CinematicOptions = {
  type EffectsOptions (line 45) | type EffectsOptions = {
  type Credits (line 80) | type Credits = {
  type fullpageOptions (line 86) | interface fullpageOptions {
  type fullpageApi (line 188) | interface fullpageApi {
  type FullPageProps (line 237) | interface FullPageProps extends fullpageOptions {
  class ReactFullpage (line 244) | class ReactFullpage extends React.Component<FullPageProps>{ }
  type WrapperProps (line 246) | interface WrapperProps {
Condensed preview — 265 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (2,434K chars).
[
  {
    "path": ". jshintrc",
    "chars": 23,
    "preview": "{\n    \"esversion\": 6,\n}"
  },
  {
    "path": ".gitattributes",
    "chars": 28,
    "preview": "examples/* linguist-vendored"
  },
  {
    "path": ".github/ISSUE_TEMPLATE.md",
    "chars": 471,
    "preview": "### Description\r\n\r\n### Link to isolated reproduction with no external CSS / JS\r\n[Ideally in jsfiddle.net (https://jsfidd"
  },
  {
    "path": ".github/PULL_REQUEST_TEMPLATE.md",
    "chars": 133,
    "preview": "1. Make sure to commit it to the `dev` branch!\r\n2. Read https://github.com/alvarotrigo/fullPage.js/wiki/Contributing-to-"
  },
  {
    "path": ".gitignore",
    "chars": 424,
    "preview": ".DS_Store\n.idea\n.ignore/\n.vscode/*\n.history/\nbower_components/\nnode_modules/\n**/node_modules/\npackage-lock.json\nsrc/full"
  },
  {
    "path": "BACKERS.md",
    "chars": 1544,
    "preview": "# Sponsors & Backers\n\nfullPage.js is being developed and maintained by [Alvaro Trigo](https://twitter.com/imac2).\nAny he"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 645,
    "preview": "## Contributing to fullpage.js\n\nYour contributions to the project are very welcome. If you would like to fix a bug or pr"
  },
  {
    "path": "FUNDING.yml",
    "chars": 19,
    "preview": "github: alvarotrigo"
  },
  {
    "path": "LICENSE",
    "chars": 35821,
    "preview": "                    GNU GENERAL PUBLIC LICENSE\r\n                       Version 3, 29 June 2007\r\n\r\n Copyright (C) 2007 Fr"
  },
  {
    "path": "README.md",
    "chars": 62909,
    "preview": "# fullPage.js\r\n![preview](https://raw.github.com/alvarotrigo/fullPage.js/master/examples/imgs/intro.png)\r\n![compatibilit"
  },
  {
    "path": "SECURITY.md",
    "chars": 55,
    "preview": "You can privately report issues at help@alvarotrigo.com"
  },
  {
    "path": "bower.json",
    "chars": 640,
    "preview": "{\n  \"name\": \"fullpage.js\",\n  \"homepage\": \"http://alvarotrigo.com/fullPage/\",\n  \"authors\": [\n    \"Alvaro Trigo https://gi"
  },
  {
    "path": "dist/fullpage.css",
    "chars": 7793,
    "preview": "/*!\r\n * fullPage 4.0.41\r\n * https://github.com/alvarotrigo/fullPage.js\r\n *\r\n * @license GPLv3 for open source use only\r\n"
  },
  {
    "path": "dist/fullpage.js",
    "chars": 203987,
    "preview": "/*!\n* fullPage 4.0.41\n* https://github.com/alvarotrigo/fullPage.js\n*\n* @license GPLv3 for open source use only\n* or Full"
  },
  {
    "path": "examples/active-slide.html",
    "chars": 5761,
    "preview": "<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n\n<head>\n    <meta http-equiv=\"Content-Type\" content=\"text/ht"
  },
  {
    "path": "examples/angular-fullpage.html",
    "chars": 615,
    "preview": "<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n\n<head>\n    <meta http-equiv=\"Content-Type\" content=\"text/ht"
  },
  {
    "path": "examples/auto-height.html",
    "chars": 5494,
    "preview": "<!DOCTYPE html>\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\r\n\r\n<head>\r\n    <meta http-equiv=\"Content-Type\" content=\"tex"
  },
  {
    "path": "examples/autoplay-video-and-audio.html",
    "chars": 6388,
    "preview": "<!DOCTYPE html>\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\r\n\r\n<head>\r\n    <meta http-equiv=\"Content-Type\" content=\"tex"
  },
  {
    "path": "examples/background-video.html",
    "chars": 6734,
    "preview": "<!DOCTYPE html>\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\r\n\r\n<head>\r\n\t<meta http-equiv=\"Content-Type\" content=\"text/h"
  },
  {
    "path": "examples/backgrounds-fixed.html",
    "chars": 6587,
    "preview": "<!DOCTYPE html>\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\r\n\r\n<head>\r\n\t<meta http-equiv=\"Content-Type\" content=\"text/h"
  },
  {
    "path": "examples/backgrounds.html",
    "chars": 6329,
    "preview": "<!DOCTYPE html>\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\r\n\r\n<head>\r\n\t<meta http-equiv=\"Content-Type\" content=\"text/h"
  },
  {
    "path": "examples/callbacks.html",
    "chars": 10672,
    "preview": "<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n\n<head>\n    <meta http-equiv=\"Content-Type\" content=\"text/ht"
  },
  {
    "path": "examples/cards.html",
    "chars": 627,
    "preview": "<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n\n<head>\n    <meta http-equiv=\"Content-Type\" content=\"text/ht"
  },
  {
    "path": "examples/cinematic.html",
    "chars": 644,
    "preview": "<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n\n<head>\n    <meta http-equiv=\"Content-Type\" content=\"text/ht"
  },
  {
    "path": "examples/continuous-horizontal.html",
    "chars": 676,
    "preview": "<!DOCTYPE html>\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\r\n\r\n<head>\r\n    <meta http-equiv=\"Content-Type\" content=\"tex"
  },
  {
    "path": "examples/continuous-vertical.html",
    "chars": 5489,
    "preview": "<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n\n<head>\n\t<meta http-equiv=\"Content-Type\" content=\"text/html;"
  },
  {
    "path": "examples/css3.html",
    "chars": 4801,
    "preview": "<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n\n<head>\n\t<meta http-equiv=\"Content-Type\" content=\"text/html;"
  },
  {
    "path": "examples/custom-arrows.html",
    "chars": 5232,
    "preview": "<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n\n<head>\n\t<meta http-equiv=\"Content-Type\" content=\"text/html;"
  },
  {
    "path": "examples/drag-and-move.html",
    "chars": 648,
    "preview": "<!DOCTYPE html>\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\r\n\r\n<head>\r\n    <meta http-equiv=\"Content-Type\" content=\"tex"
  },
  {
    "path": "examples/drop-effect.html",
    "chars": 652,
    "preview": "<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n\n<head>\n    <meta http-equiv=\"Content-Type\" content=\"text/ht"
  },
  {
    "path": "examples/easing-css3.html",
    "chars": 5525,
    "preview": "<!DOCTYPE html>\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\r\n\r\n<head>\r\n\t<meta http-equiv=\"Content-Type\" content=\"text/h"
  },
  {
    "path": "examples/easing-js.html",
    "chars": 5526,
    "preview": "<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n\n<head>\n\t<meta http-equiv=\"Content-Type\" content=\"text/html;"
  },
  {
    "path": "examples/effects.html",
    "chars": 641,
    "preview": "<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n\n<head>\n    <meta http-equiv=\"Content-Type\" content=\"text/ht"
  },
  {
    "path": "examples/examples.css",
    "chars": 5358,
    "preview": "@CHARSET \"ISO-8859-1\";\r\n/* Reset CSS\r\n * --------------------------------------- */\r\nbody,div,dl,dt,dd,ul,ol,li,h1,h2,h3"
  },
  {
    "path": "examples/examples.js",
    "chars": 238,
    "preview": "document.getElementById('demosMenu').addEventListener('change', function(e){\r\n    var dropdown = document.getElementById"
  },
  {
    "path": "examples/fading-effect.html",
    "chars": 652,
    "preview": "<!DOCTYPE html>\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\r\n\r\n<head>\r\n    <meta http-equiv=\"Content-Type\" content=\"tex"
  },
  {
    "path": "examples/fixed-headers.html",
    "chars": 6165,
    "preview": "<!DOCTYPE html>\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\r\n\r\n<head>\r\n\t<meta http-equiv=\"Content-Type\" content=\"text/h"
  },
  {
    "path": "examples/gradient-backgrounds.html",
    "chars": 6318,
    "preview": "<!DOCTYPE html>\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\r\n\r\n<head>\r\n\t<meta http-equiv=\"Content-Type\" content=\"text/h"
  },
  {
    "path": "examples/hide-sections.html",
    "chars": 6565,
    "preview": "<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n\n<head>\n\t<meta http-equiv=\"Content-Type\" content=\"text/html;"
  },
  {
    "path": "examples/imgs/copyright.txt",
    "chars": 551,
    "preview": "Background images used in the examples were extracted from:\r\n\r\nhttp://good-wallpapers.com/art/4121\r\nhttp://files.all-fre"
  },
  {
    "path": "examples/interlocked-slides.html",
    "chars": 660,
    "preview": "<!DOCTYPE html>\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\r\n\r\n<head>\r\n    <meta http-equiv=\"Content-Type\" content=\"tex"
  },
  {
    "path": "examples/jquery-adapter.html",
    "chars": 6759,
    "preview": "<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n\n<head>\n    <meta http-equiv=\"Content-Type\" content=\"text/ht"
  },
  {
    "path": "examples/lazy-load.html",
    "chars": 7643,
    "preview": "<!DOCTYPE html>\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\r\n\r\n<head>\r\n    <meta http-equiv=\"Content-Type\" content=\"tex"
  },
  {
    "path": "examples/looping.html",
    "chars": 5238,
    "preview": "<!DOCTYPE html>\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\r\n\r\n<head>\r\n\t<meta http-equiv=\"Content-Type\" content=\"text/h"
  },
  {
    "path": "examples/methods.html",
    "chars": 10529,
    "preview": "<!DOCTYPE html>\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\r\n\r\n<head>\r\n\t<meta http-equiv=\"Content-Type\" content=\"text/h"
  },
  {
    "path": "examples/module_loaders/browserify-example/README.md",
    "chars": 915,
    "preview": "# Browserify example for fullPage.js\n\n### Creating the bundle file\n\nIn order to create the bundle file `main.js` run the"
  },
  {
    "path": "examples/module_loaders/browserify-example/dist/index.html",
    "chars": 763,
    "preview": "<!doctype html>\n<html>\n  <head>\n    <title>Browserify example for fullPage.js</title>\n     <link rel=\"stylesheet\" type=\""
  },
  {
    "path": "examples/module_loaders/browserify-example/dist/main.js",
    "chars": 192716,
    "preview": "(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)ret"
  },
  {
    "path": "examples/module_loaders/browserify-example/package.json",
    "chars": 302,
    "preview": "{\n  \"name\": \"browserify-example\",\n  \"version\": \"1.0.0\",\n  \"description\": \"\",\n  \"main\": \"dist/index.html\",\n  \"scripts\": {"
  },
  {
    "path": "examples/module_loaders/browserify-example/src/index.js",
    "chars": 649,
    "preview": "// Optional. When using fullPage extensions\n//require('./fullpage.scrollHorizontally.min');\n\n// Optional. When using scr"
  },
  {
    "path": "examples/module_loaders/requirejs-example/README.md",
    "chars": 2039,
    "preview": "# Require.js example for fullpage.js\n\n### Require.js configuration\n\n```javascript\n// src/require.config.js\nvar require ="
  },
  {
    "path": "examples/module_loaders/requirejs-example/index.html",
    "chars": 920,
    "preview": "<!doctype html>\n<html>\n  <head>\n    <title>Require.js example for fullPage.js</title>\n    <link rel=\"stylesheet\" type=\"t"
  },
  {
    "path": "examples/module_loaders/requirejs-example/package.json",
    "chars": 269,
    "preview": "{\n  \"name\": \"requirejs-example\",\n  \"version\": \"1.0.0\",\n  \"description\": \"\",\n  \"main\": \"index.js\",\n  \"scripts\": {\n    \"te"
  },
  {
    "path": "examples/module_loaders/requirejs-example/src/main.js",
    "chars": 958,
    "preview": "define(['fullpage'], function(fullpage) {\n\n    // Initializing it\n    var fullPageInstance = new fullpage('#myFullpage',"
  },
  {
    "path": "examples/module_loaders/requirejs-example/src/require.config.js",
    "chars": 497,
    "preview": "var require = {\n    baseUrl: \".\",\n    app: \"./\",\n    paths: {\n        \"fullpage\": \"./node_modules/fullpage.js/dist/fullp"
  },
  {
    "path": "examples/module_loaders/webpack-example/.babelrc",
    "chars": 68,
    "preview": "{\n    \"presets\": [\n        [\n            \"env\", {}\n        ]\n    ]\n}"
  },
  {
    "path": "examples/module_loaders/webpack-example/README.md",
    "chars": 962,
    "preview": "# Webpack example for fullPage.js\n\n### Creating the bundle file\n\nIn order to create the bundle file `main.js` run the fo"
  },
  {
    "path": "examples/module_loaders/webpack-example/dist/index.html",
    "chars": 864,
    "preview": "<!doctype html>\n<html>\n  <head>\n    <title>Webpack example for fullPage.js</title>\n    <link rel=\"stylesheet\" type=\"text"
  },
  {
    "path": "examples/module_loaders/webpack-example/dist/main.js",
    "chars": 506361,
    "preview": "/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/**"
  },
  {
    "path": "examples/module_loaders/webpack-example/package.json",
    "chars": 491,
    "preview": "{\n  \"name\": \"webpack-example\",\n  \"version\": \"1.0.0\",\n  \"description\": \"\",\n  \"scripts\": {\n    \"test\": \"echo \\\"Error: no t"
  },
  {
    "path": "examples/module_loaders/webpack-example/src/index.js",
    "chars": 701,
    "preview": "// Optional. When using fullPage extensions\n//import scrollHorizontally from './fullpage.scrollHorizontally.min';\n\n// Op"
  },
  {
    "path": "examples/module_loaders/webpack-example/webpack.config.js",
    "chars": 281,
    "preview": "var webpack = require('webpack');\nconst path = require('path');\n\nvar PROD = JSON.parse(process.env.PROD_ENV || '0');\n\nmo"
  },
  {
    "path": "examples/navigation-horizontal.html",
    "chars": 6565,
    "preview": "<!DOCTYPE html>\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\r\n\r\n<head>\r\n    <meta http-equiv=\"Content-Type\" content=\"tex"
  },
  {
    "path": "examples/navigation-tooltips.html",
    "chars": 5449,
    "preview": "<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n\n<head>\n    <meta http-equiv=\"Content-Type\" content=\"text/ht"
  },
  {
    "path": "examples/navigation-vertical.html",
    "chars": 6065,
    "preview": "<!DOCTYPE html>\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\r\n\r\n<head>\r\n\t<meta http-equiv=\"Content-Type\" content=\"text/h"
  },
  {
    "path": "examples/no-anchor.html",
    "chars": 4868,
    "preview": "<!DOCTYPE html>\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\r\n\r\n<head>\r\n\t<meta http-equiv=\"Content-Type\" content=\"text/h"
  },
  {
    "path": "examples/normal-scroll.html",
    "chars": 6298,
    "preview": "<!DOCTYPE html>\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\r\n\r\n<head>\r\n    <meta http-equiv=\"Content-Type\" content=\"tex"
  },
  {
    "path": "examples/normalScrollElements.html",
    "chars": 5764,
    "preview": "<!DOCTYPE html>\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\r\n\r\n<head>\r\n    <meta http-equiv=\"Content-Type\" content=\"tex"
  },
  {
    "path": "examples/observer.html",
    "chars": 8198,
    "preview": "<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n\n<head>\n\t<meta http-equiv=\"Content-Type\" content=\"text/html;"
  },
  {
    "path": "examples/offset-sections.html",
    "chars": 653,
    "preview": "<!DOCTYPE html>\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\r\n\r\n<head>\r\n    <meta http-equiv=\"Content-Type\" content=\"tex"
  },
  {
    "path": "examples/one-section.html",
    "chars": 15440,
    "preview": "<!DOCTYPE html>\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\r\n\r\n<head>\r\n\t<meta http-equiv=\"Content-Type\" content=\"text/h"
  },
  {
    "path": "examples/parallax.html",
    "chars": 634,
    "preview": "<!DOCTYPE html>\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\r\n\r\n<head>\r\n    <meta http-equiv=\"Content-Type\" content=\"tex"
  },
  {
    "path": "examples/react-fullpage.html",
    "chars": 611,
    "preview": "<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n\n<head>\n    <meta http-equiv=\"Content-Type\" content=\"text/ht"
  },
  {
    "path": "examples/reset-sliders.html",
    "chars": 651,
    "preview": "<!DOCTYPE html>\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\r\n\r\n<head>\r\n    <meta http-equiv=\"Content-Type\" content=\"tex"
  },
  {
    "path": "examples/responsive-auto-height.html",
    "chars": 6771,
    "preview": "<!DOCTYPE html>\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\r\n\r\n<head>\r\n\t<meta http-equiv=\"Content-Type\" content=\"text/h"
  },
  {
    "path": "examples/responsive-height.html",
    "chars": 5626,
    "preview": "<!DOCTYPE html>\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\r\n\r\n<head>\r\n\t<meta http-equiv=\"Content-Type\" content=\"text/h"
  },
  {
    "path": "examples/responsive-slides.html",
    "chars": 664,
    "preview": "<!DOCTYPE html>\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\r\n\r\n<head>\r\n    <meta http-equiv=\"Content-Type\" content=\"tex"
  },
  {
    "path": "examples/responsive-width.html",
    "chars": 5773,
    "preview": "<!DOCTYPE html>\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\r\n\r\n<head>\r\n\t<meta http-equiv=\"Content-Type\" content=\"text/h"
  },
  {
    "path": "examples/rtl.html",
    "chars": 5769,
    "preview": "<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n\n<head>\n    <meta http-equiv=\"Content-Type\" content=\"text/ht"
  },
  {
    "path": "examples/scroll-after-fullpage.html",
    "chars": 8162,
    "preview": "<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n\n<head>\n    <meta http-equiv=\"Content-Type\" content=\"text/ht"
  },
  {
    "path": "examples/scroll-horizontally.html",
    "chars": 661,
    "preview": "<!DOCTYPE html>\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\r\n\r\n<head>\r\n    <meta http-equiv=\"Content-Type\" content=\"tex"
  },
  {
    "path": "examples/scrollBar.html",
    "chars": 5570,
    "preview": "<!DOCTYPE html>\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\r\n\r\n<head>\r\n\t<meta http-equiv=\"Content-Type\" content=\"text/h"
  },
  {
    "path": "examples/scrollOverflow-reset.html",
    "chars": 673,
    "preview": "<!DOCTYPE html>\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\r\n\r\n<head>\r\n    <meta http-equiv=\"Content-Type\" content=\"tex"
  },
  {
    "path": "examples/scrollOverflow.html",
    "chars": 16485,
    "preview": "<!DOCTYPE html>\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\r\n\r\n<head>\r\n\t<meta http-equiv=\"Content-Type\" content=\"text/h"
  },
  {
    "path": "examples/scrolling-speed.html",
    "chars": 5426,
    "preview": "<!DOCTYPE html>\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\r\n\r\n<head>\r\n\t<meta http-equiv=\"Content-Type\" content=\"text/h"
  },
  {
    "path": "examples/simple.html",
    "chars": 4619,
    "preview": "<!DOCTYPE html>\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\r\n\r\n<head>\r\n\t<meta http-equiv=\"Content-Type\" content=\"text/h"
  },
  {
    "path": "examples/skipIntermediateItems.html",
    "chars": 5831,
    "preview": "<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n\n<head>\n    <meta http-equiv=\"Content-Type\" content=\"text/ht"
  },
  {
    "path": "examples/trigger-animations.html",
    "chars": 7139,
    "preview": "<!DOCTYPE html>\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\r\n\r\n<head>\r\n\t<meta http-equiv=\"Content-Type\" content=\"text/h"
  },
  {
    "path": "examples/vue-fullpage.html",
    "chars": 607,
    "preview": "<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n\n<head>\n    <meta http-equiv=\"Content-Type\" content=\"text/ht"
  },
  {
    "path": "examples/water-effect.html",
    "chars": 642,
    "preview": "<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n\n<head>\n    <meta http-equiv=\"Content-Type\" content=\"text/ht"
  },
  {
    "path": "gulp/build.js",
    "chars": 2194,
    "preview": "var gulp = require('gulp');\nvar rename = require('gulp-rename');\nvar sourcemaps = require('gulp-sourcemaps');\nvar uglify"
  },
  {
    "path": "gulpfile.js",
    "chars": 148,
    "preview": "var gulp = require('gulp');\n\nvar requireDir = require('require-dir');\nrequireDir('./gulp');\n\ngulp.task('default', gulp.s"
  },
  {
    "path": "lang/brazilian-portuguese/README.md",
    "chars": 63990,
    "preview": "# fullPage.js\n![preview](https://raw.github.com/alvarotrigo/fullPage.js/master/examples/imgs/intro.png)\n![compatibility]"
  },
  {
    "path": "lang/brazilian-portuguese/how-to-activate-fullpage-extension.md",
    "chars": 3168,
    "preview": "# Cómo activar una extension de fullPage.js\r\n\r\n1. Acesse https://alvarotrigo.com/fullPage/extensions/activationKey.html."
  },
  {
    "path": "lang/brazilian-portuguese/parallax-extension.md",
    "chars": 5455,
    "preview": "![](https://cloud.githubusercontent.com/assets/1706326/23580315/f28edab4-00f6-11e7-90f9-81ffafd77b0e.gif)\r\n\r\nLeia [como "
  },
  {
    "path": "lang/chinese/README.md",
    "chars": 45729,
    "preview": "# fullPage.js\r\n![preview](https://raw.github.com/alvarotrigo/fullPage.js/master/examples/imgs/intro.png)\r\n![compatibilit"
  },
  {
    "path": "lang/chinese/how-to-activate-fullpage-extension.md",
    "chars": 1958,
    "preview": "# 如何激活fullPage.js扩展\r\n\r\n1. 访问 https://alvarotrigo.com/fullPage/extensions/activationKey.html. (当购买扩展时,此链接会发送到你的邮箱中)\r\n1. 介"
  },
  {
    "path": "lang/chinese/parallax-extensionmd.md",
    "chars": 3134,
    "preview": "# 视差扩展\r\n\r\n![](https://cloud.githubusercontent.com/assets/1706326/23580315/f28edab4-00f6-11e7-90f9-81ffafd77b0e.gif)\r\n\r\n使"
  },
  {
    "path": "lang/french/README.md",
    "chars": 65500,
    "preview": "# fullPage.js\n![preview](https://raw.github.com/alvarotrigo/fullPage.js/master/examples/imgs/intro.png)\n![compatibility]"
  },
  {
    "path": "lang/french/how-to-activate-fullpage-extension.md",
    "chars": 3060,
    "preview": "# How to activate a fullPage.js extension \n\n1. Accédez à https://alvarotrigo.com/fullPage/extensions/activationKey.html."
  },
  {
    "path": "lang/french/parallax-extension.md",
    "chars": 5613,
    "preview": "# Parallax extension \n\n![](https://cloud.githubusercontent.com/assets/1706326/23580315/f28edab4-00f6-11e7-90f9-81ffafd77"
  },
  {
    "path": "lang/japanese/README.md",
    "chars": 46624,
    "preview": "# fullPage.js\n![preview](https://raw.github.com/alvarotrigo/fullPage.js/master/examples/imgs/intro.png)\n![compatibility]"
  },
  {
    "path": "lang/japanese/how-to-activate-fullpage-extension.md",
    "chars": 1929,
    "preview": "# fullPage.js エクステンション(拡張機能)の有効化方法\n\n1. [https://alvarotrigo.com/fullPage/extensions/activationKey.html](https://alvarotr"
  },
  {
    "path": "lang/japanese/parallax-extension.md",
    "chars": 3816,
    "preview": "# Parallax Extension \n\n![](https://cloud.githubusercontent.com/assets/1706326/23580315/f28edab4-00f6-11e7-90f9-81ffafd77"
  },
  {
    "path": "lang/korean/README.md",
    "chars": 47746,
    "preview": "# fullPage.js\n![preview](https://raw.github.com/alvarotrigo/fullPage.js/master/examples/imgs/intro.png)\n![compatibility]"
  },
  {
    "path": "lang/korean/how-to-activate-fullpage-extension.md",
    "chars": 1858,
    "preview": "# fullPage.js 확장 프로그램을 활성화하는 법\n\n1. 확장 프로그램을 구매하셨을 때 이메일로 전송된 [URL](https://alvarotrigo.com/fullPage/extensions/activatio"
  },
  {
    "path": "lang/korean/parallax-extension.md",
    "chars": 3665,
    "preview": "# 패럴랙스 확장 프로그램\n\n![](https://cloud.githubusercontent.com/assets/1706326/23580315/f28edab4-00f6-11e7-90f9-81ffafd77b0e.gif"
  },
  {
    "path": "lang/russian/README.md",
    "chars": 65263,
    "preview": "# fullPage.js\r\n![предварительный просмотр](https://raw.github.com/alvarotrigo/fullPage.js/master/examples/imgs/intro.png"
  },
  {
    "path": "lang/russian/how-to-activate-fullpage-extension.md",
    "chars": 2251,
    "preview": "# Как активировать расширение fullPage.js\n\n1. Перейдите по [URL](https://alvarotrigo.com/fullPage/extensions/activationK"
  },
  {
    "path": "lang/russian/parallax-extension.md",
    "chars": 5164,
    "preview": "# Расширение параллакс\n\n![](https://cloud.githubusercontent.com/assets/1706326/23580315/f28edab4-00f6-11e7-90f9-81ffafd7"
  },
  {
    "path": "lang/spanish/README.md",
    "chars": 68502,
    "preview": "# fullPage.js\r\n\r\n![preview](https://raw.github.com/alvarotrigo/fullPage.js/master/examples/imgs/intro.png)\r\n![compatibil"
  },
  {
    "path": "lang/spanish/how-to-activate-fullpage-extension.md",
    "chars": 3206,
    "preview": "# Cómo activar una extension de fullPage.js\n\n1. Accede https://alvarotrigo.com/fullPage/extensions/activationKey.html. ("
  },
  {
    "path": "lang/spanish/parallax-extension.md",
    "chars": 5631,
    "preview": "![](https://cloud.githubusercontent.com/assets/1706326/23580315/f28edab4-00f6-11e7-90f9-81ffafd77b0e.gif)\n\nLee [como usa"
  },
  {
    "path": "lang/website/br.yml",
    "chars": 11797,
    "preview": "#Page meta data\ntitle: fullPage.js | Plugin para site de seções de rolagem de uma página\ndescription: fullPage plugin po"
  },
  {
    "path": "lang/website/en.yml",
    "chars": 11270,
    "preview": "#Page meta data\ntitle: fullPage.js | One Page Scroll sections Site Plugin\ndescription: fullPage plugin by Alvaro Trigo. "
  },
  {
    "path": "lang/website/es.yml",
    "chars": 11943,
    "preview": "#Page meta data\ntitle: fullPage.js | Crea webs con desplazamiento de secciones a pantalla completa\ndescription: fullPage"
  },
  {
    "path": "lang/website/fr.yml",
    "chars": 12544,
    "preview": "#Page meta data\ntitle: fullPage.js | Plugin pour site web d'une page de défilement des sections\ndescription: plugin full"
  },
  {
    "path": "lang/website/ja.yml",
    "chars": 9038,
    "preview": "# Page meta data\ntitle: fullPage.js | 全画面スクロールセクションサイトプラグイン\ndescription: Alvaro TrigoによるfullPageプラグイン。フルスクリーンページを素早く簡単に作"
  },
  {
    "path": "lang/website/ko.yml",
    "chars": 9157,
    "preview": "#page meta data - just translate the 2nd part, the part after the semicolon \":\"\ntitle: fullPage.js | 한 페이지 스크롤 구역 사이트 플러"
  },
  {
    "path": "lang/website/ru.yml",
    "chars": 12005,
    "preview": "#Page meta data\ntitle: fullPage.js | для постраничного скроллинга разделов сайта\ndescription: плагин от Alvaro. Создавай"
  },
  {
    "path": "lang/website/zh.yml",
    "chars": 8345,
    "preview": "#page meta data - just translate the 2nd part, the part after the semicolon \":\"\r\ntitle: fullPage.js | 单页滚动部分网站插件\r\ndescr"
  },
  {
    "path": "package.json",
    "chars": 2351,
    "preview": "{\n  \"name\": \"fullpage.js\",\n  \"version\": \"4.0.41\",\n  \"description\": \"Create beautiful fullscreen snap scrolling websites\""
  },
  {
    "path": "rollup.config.js",
    "chars": 6782,
    "preview": "import { terser } from \"rollup-plugin-terser\";\nimport resolve from \"@rollup/plugin-node-resolve\";\nimport babel from \"@ro"
  },
  {
    "path": "src/css/fullpage.css",
    "chars": 7793,
    "preview": "/*!\r\n * fullPage 4.0.41\r\n * https://github.com/alvarotrigo/fullPage.js\r\n *\r\n * @license GPLv3 for open source use only\r\n"
  },
  {
    "path": "src/js/anchors/getAnchorsURL.js",
    "chars": 832,
    "preview": "import { win } from \"../common/constants.js\";\n\n//gets the URL anchors (section and slide)\nexport function getAnchorsURL("
  },
  {
    "path": "src/js/anchors/index.js",
    "chars": 4256,
    "preview": "import * as utils from '../common/utils.js';\nimport { getOptions, getContainer } from '../common/options.js';\nimport { s"
  },
  {
    "path": "src/js/anchors/setPageStatus.js",
    "chars": 1792,
    "preview": "import { win } from \"../common/constants.js\";\nimport { getOptions } from \"../common/options.js\";\nimport { setState } fro"
  },
  {
    "path": "src/js/anchors/setRecordHistory.js",
    "chars": 324,
    "preview": "import { setVariableState } from \"../common/options.js\";\nimport { FP } from '../common/constants.js';\n\nFP.setRecordHisto"
  },
  {
    "path": "src/js/app.js",
    "chars": 123,
    "preview": "import './polyfills/index.js';\nexport { default } from './fullpage.js';\nimport './easing.js';\nimport './jquery-adaptor.j"
  },
  {
    "path": "src/js/arrows.js",
    "chars": 2909,
    "preview": "import * as utils from './common/utils.js';\nimport { getOptions } from './common/options.js'; \nimport { \n    SLIDES_WRAP"
  },
  {
    "path": "src/js/autoScrolling.js",
    "chars": 2253,
    "preview": "import * as utils from './common/utils.js';\nimport { silentScroll } from './common/silentScroll.js';\nimport { getScrollS"
  },
  {
    "path": "src/js/beyondFullpage/beyondFullPageHandler.js",
    "chars": 2631,
    "preview": "import * as utils from '../common/utils.js';\nimport { getState, setState } from \"../common/state.js\";\nimport { setPrevTi"
  },
  {
    "path": "src/js/beyondFullpage/index.js",
    "chars": 670,
    "preview": "import * as utils from '../common/utils.js';\nimport { getPassiveOptionsIfPossible } from '../common/supportsPassive.js';"
  },
  {
    "path": "src/js/beyondFullpage/scrollBeyondFullPage.js",
    "chars": 1625,
    "preview": "import * as utils from '../common/utils.js';\nimport { getScrollSettings, isFullPageAbove } from '../common/utilsFP.js';\n"
  },
  {
    "path": "src/js/beyondFullpage/wheelDataHandler.js",
    "chars": 1988,
    "preview": "\nimport { win } from '../common/constants.js';\nimport * as utils from '../common/utils.js';\n\nexport const wheelDataHandl"
  },
  {
    "path": "src/js/bindings.js",
    "chars": 1042,
    "preview": "import * as utils from './common/utils.js';\nimport { EventEmitter } from './common/eventEmitter.js';\nimport { setState }"
  },
  {
    "path": "src/js/callbacks/fireCallback.js",
    "chars": 2300,
    "preview": "import * as utils from '../common/utils.js';\nimport { getOptions, getContainer } from '../common/options.js';\nimport { n"
  },
  {
    "path": "src/js/callbacks/fireCallbacksOncePerScroll.js",
    "chars": 613,
    "preview": "import * as utils from '../common/utils.js';\nimport { getOptions, getContainer } from '../common/options.js';\nimport { o"
  },
  {
    "path": "src/js/callbacks/nullOrSection.js",
    "chars": 324,
    "preview": "import { Section } from \"../common/item.js\";\nimport { SectionPanel } from \"../stateUpdates.js\";\n\n/**\n* Makes sure to onl"
  },
  {
    "path": "src/js/callbacks/nullOrSlide.js",
    "chars": 116,
    "preview": "import { Slide } from \"../common/item.js\";\n\nexport function nullOrSlide(el){\n    return el ? new Slide(el) : null;\n}"
  },
  {
    "path": "src/js/common/addTableClass.js",
    "chars": 791,
    "preview": "import * as utils from './utils.js';\nimport { getOptions } from \"./options.js\";\nimport { TABLE } from './selectors.js';\n"
  },
  {
    "path": "src/js/common/cache.js",
    "chars": 278,
    "preview": "import * as utils from './utils.js';\n\nexport let $body = null;\nexport let $html = null;\nexport let $htmlBody = null;\n\n\n/"
  },
  {
    "path": "src/js/common/constants.js",
    "chars": 1549,
    "preview": "export const win = window;\nexport const doc = document;\n\nexport const isTouchDevice = navigator.userAgent.match(/(iPhone"
  },
  {
    "path": "src/js/common/eventEmitter.js",
    "chars": 857,
    "preview": "export const EventEmitter = {\n    events: {},\n    on(event, listener) {\n        if (typeof this.events[event] !== 'objec"
  },
  {
    "path": "src/js/common/events.js",
    "chars": 858,
    "preview": "export const events = {\n    onAfterRenderNoAnchor: 'onAfterRenderNoAnchor',\n    onClickOrTouch: 'onClickOrTouch',\n    mo"
  },
  {
    "path": "src/js/common/getSectionByAnchor.js",
    "chars": 418,
    "preview": "import { getState } from \"./state.js\";\n\n/**\n* Gets a section by its anchor / index\n*/\nexport function getSectionByAnchor"
  },
  {
    "path": "src/js/common/isScrollAllowed.js",
    "chars": 747,
    "preview": "import * as utils from './utils.js';\n\nlet isScrollAllowed = {};\nisScrollAllowed.m = {  'up':true, 'down':true, 'left':tr"
  },
  {
    "path": "src/js/common/item.js",
    "chars": 2927,
    "preview": "import * as utils from '../common/utils.js';\nimport { getOptions } from '../common/options.js';\nimport { state } from '."
  },
  {
    "path": "src/js/common/options.js",
    "chars": 2585,
    "preview": "import * as utils from './utils.js';\nimport { defaultOptions } from '../optionsDefault.js';\n\nlet container = null;\nlet g"
  },
  {
    "path": "src/js/common/scrollTo.js",
    "chars": 2649,
    "preview": "//@ts-check\nimport * as utils from './utils.js';\nimport { setScrolling } from './utilsFP.js';\nimport { state, setState }"
  },
  {
    "path": "src/js/common/selectors.js",
    "chars": 3449,
    "preview": "\n// keeping central set of classnames and selectors\nexport const WRAPPER =               'fullpage-wrapper';\nexport cons"
  },
  {
    "path": "src/js/common/silentScroll.js",
    "chars": 1086,
    "preview": "import * as utils from './utils.js';\nimport { getOptions, getContainer } from './options.js';\nimport { transformContaine"
  },
  {
    "path": "src/js/common/state.js",
    "chars": 1424,
    "preview": "import * as utils from './utils.js';\nimport { win } from './constants.js';\n\nconst defaultState = {\n    numSections: 0,\n "
  },
  {
    "path": "src/js/common/supportsPassive.js",
    "chars": 652,
    "preview": "import * as utils from './utils.js';\n\nconst supportsPassiveEvents = (function(){\n    //cheks for passive event support\n "
  },
  {
    "path": "src/js/common/tick.js",
    "chars": 1063,
    "preview": "import { win } from './constants.js';\nimport { getOptions } from './options.js';\n\nlet prevTime = new Date().getTime();\n\n"
  },
  {
    "path": "src/js/common/transformContainer.js",
    "chars": 885,
    "preview": "import * as utils from './utils.js';\nimport { FP } from './constants.js';\nimport { NO_TRANSITION } from './selectors.js'"
  },
  {
    "path": "src/js/common/utils.js",
    "chars": 14423,
    "preview": "//utils\n\nimport { doc, win } from \"./constants.js\";\n\n/**\n* Shows a message in the console of the given type.\n*/\nexport f"
  },
  {
    "path": "src/js/common/utilsFP.js",
    "chars": 3118,
    "preview": "import * as utils from './utils.js';\nimport { getContainer, getOptions } from './options.js';\nimport { \n    SLIDE_ACTIVE"
  },
  {
    "path": "src/js/console.js",
    "chars": 3873,
    "preview": "import * as utils from './common/utils.js';\nimport { getOptions } from './common/options.js';\nimport { doc, extensions }"
  },
  {
    "path": "src/js/dom/addInternalSelectors.js",
    "chars": 500,
    "preview": "import * as utils from '../common/utils.js';\nimport { getOptions, getContainer } from '../common/options.js';\nimport { \n"
  },
  {
    "path": "src/js/dom/afterRenderActions.js",
    "chars": 2219,
    "preview": "import * as utils from '../common/utils.js';\nimport { FP } from '../common/constants.js';\nimport { getState, state } fro"
  },
  {
    "path": "src/js/dom/destroyStructure.js",
    "chars": 4206,
    "preview": "import * as utils from '../common/utils.js';\nimport { removeAnimation } from '../common/utilsFP.js';\nimport { silentScro"
  },
  {
    "path": "src/js/dom/prepareDom.js",
    "chars": 2624,
    "preview": "import * as utils from '../common/utils.js';\nimport { $html, $body } from '../common/cache.js';\nimport { addTableClass }"
  },
  {
    "path": "src/js/dynamic.js",
    "chars": 3654,
    "preview": "import * as utils from './common/utils.js';\nimport { getContainer, getOptions, setOptionsFromDOM } from './common/option"
  },
  {
    "path": "src/js/easing.js",
    "chars": 339,
    "preview": "import * as utils from './common/utils.js';\nimport { win } from './common/constants.js';\n\n//easeInOutCubic animation inc"
  },
  {
    "path": "src/js/fitToSection.js",
    "chars": 893,
    "preview": "import { getOptions, setVariableState } from './common/options.js';\nimport { FP } from './common/constants.js';\nimport {"
  },
  {
    "path": "src/js/fullpage.js",
    "chars": 2978,
    "preview": "import './bindings.js';\nimport './dynamic.js';\nimport './normalScrollElements.js';\nimport './resize.js';\nimport './ancho"
  },
  {
    "path": "src/js/infiniteScroll/createInfiniteSections.js",
    "chars": 2026,
    "preview": "//@ts-check\nimport * as utils from '../common/utils.js';\nimport { silentScroll } from '../common/silentScroll.js';\nimpor"
  },
  {
    "path": "src/js/infiniteScroll/fixPosition.js",
    "chars": 1537,
    "preview": "//@ts-check\nimport * as utils from '../common/utils.js';\nimport { silentScroll } from '../common/silentScroll.js';\nimpor"
  },
  {
    "path": "src/js/infiniteScroll/getPositions.js",
    "chars": 793,
    "preview": "import * as utils from '../common/utils.js';\nimport { getState } from \"../common/state.js\";\nimport { getDestinationPosit"
  },
  {
    "path": "src/js/instance.js",
    "chars": 2106,
    "preview": "import * as utils from './common/utils.js';\nimport { getOptions, getContainer, setOptionsFromDOM } from './common/option"
  },
  {
    "path": "src/js/jquery-adaptor.js",
    "chars": 909,
    "preview": "import * as utils from './common/utils.js';\nimport { FP, win } from \"./common/constants.js\";\nimport { getOptions } from "
  },
  {
    "path": "src/js/keyboard/index.js",
    "chars": 10689,
    "preview": "//@ts-check\nimport * as utils from '../common/utils.js';\nimport { getOptions } from '../common/options';\nimport { focusa"
  },
  {
    "path": "src/js/keyboard/setKeyboardScrolling.js",
    "chars": 954,
    "preview": "//@ts-check\nimport { getOptions } from '../common/options';\nimport { FP } from '../common/constants.js';\nimport { setIsS"
  },
  {
    "path": "src/js/lazyLoad/lazyLoad.js",
    "chars": 1974,
    "preview": "import * as utils from '../common/utils.js'; \nimport { getSlideOrSection } from '../common/utilsFP.js';\nimport { getOpti"
  },
  {
    "path": "src/js/lazyLoad/lazyLoadOthers.js",
    "chars": 1838,
    "preview": "import * as utils from '../common/utils.js'; \nimport { getOptions } from '../common/options.js';\nimport { \n    AUTO_HEIG"
  },
  {
    "path": "src/js/media.js",
    "chars": 3138,
    "preview": "import * as utils from './common/utils.js'; \nimport { getSlideOrSection } from './common/utilsFP.js';\nimport { getContai"
  },
  {
    "path": "src/js/menu/activateMenuAndNav.js",
    "chars": 866,
    "preview": "import * as utils from '../common/utils.js';\nimport { getOptions } from '../common/options.js';\nimport { activateNavDots"
  },
  {
    "path": "src/js/menu/index.js",
    "chars": 1141,
    "preview": "import * as utils from '../common/utils.js';\nimport { getOptions } from '../common/options.js';\nimport { EventEmitter } "
  },
  {
    "path": "src/js/menu/styleMenu.js",
    "chars": 1011,
    "preview": "import * as utils from '../common/utils.js';\nimport { getOptions } from '../common/options.js';\nimport { $body } from '."
  },
  {
    "path": "src/js/mixed/warnings.js",
    "chars": 796,
    "preview": "import { doc } from '../common/constants.js';\nimport { EventEmitter } from '../common/eventEmitter.js';\nimport { events "
  },
  {
    "path": "src/js/mixed/waterMark.js",
    "chars": 1174,
    "preview": "import { EventEmitter } from '../common/eventEmitter.js';\nimport { events } from '../common/events.js';\nimport { getOpti"
  },
  {
    "path": "src/js/mouse/move.js",
    "chars": 886,
    "preview": "import { getIsScrollAllowed } from '../common/isScrollAllowed.js';\nimport { getOptions } from '../common/options.js';\nim"
  },
  {
    "path": "src/js/mouse/wheel.js",
    "chars": 10541,
    "preview": "import * as utils from '../common/utils.js';\nimport { getIsScrollAllowed } from '../common/isScrollAllowed.js';\nimport {"
  },
  {
    "path": "src/js/nav/getBulletLinkName.js",
    "chars": 458,
    "preview": "import * as utils from '../common/utils.js';\nimport { getOptions } from \"../common/options.js\";\n\n/**\n* Gets the name for"
  },
  {
    "path": "src/js/nav/index.js",
    "chars": 999,
    "preview": "import * as utils from '../common/utils.js';\nimport {\n    SECTION_NAV_SEL,\n    SECTION_NAV_TOOLTIP_SEL,\n    SLIDES_NAV_L"
  },
  {
    "path": "src/js/nav/sections.js",
    "chars": 3220,
    "preview": "import * as utils from '../common/utils.js';\nimport { getOptions } from '../common/options.js';\nimport { getState, setSt"
  },
  {
    "path": "src/js/nav/slides.js",
    "chars": 2717,
    "preview": "import * as utils from '../common/utils.js';\nimport { getOptions } from '../common/options.js';\nimport { getState, setSt"
  },
  {
    "path": "src/js/normalScrollElements.js",
    "chars": 3137,
    "preview": "import * as utils from './common/utils.js';\nimport { setMouseHijack } from './mouse/wheel.js';\nimport { getOptions } fro"
  },
  {
    "path": "src/js/optionsDefault.js",
    "chars": 2642,
    "preview": "import { SECTION_DEFAULT_SEL, SLIDES_STYLED_ARROW, SLIDE_DEFAULT_SEL } from \"./common/selectors.js\";\n\nexport const defau"
  },
  {
    "path": "src/js/polyfills/array.find.js",
    "chars": 1507,
    "preview": "// https://tc39.github.io/ecma262/#sec-array.prototype.find\nif (!Array.prototype.find) {\n    Object.defineProperty(Array"
  },
  {
    "path": "src/js/polyfills/array.foreach.js",
    "chars": 442,
    "preview": "import { win } from \"../common/constants.js\";\n\n/**\n* forEach polyfill for IE\n* https://developer.mozilla.org/en-US/docs/"
  },
  {
    "path": "src/js/polyfills/array.from.js",
    "chars": 3341,
    "preview": "// Production steps of ECMA-262, Edition 6, 22.1.2.1\nif (!Array.from) {\n    Array.from = (function() {\n        var toStr"
  },
  {
    "path": "src/js/polyfills/index.js",
    "chars": 140,
    "preview": "import './array.find.js';\nimport './array.from.js';\nimport './array.foreach.js';\nimport './object.assign.js';\nimport './"
  },
  {
    "path": "src/js/polyfills/object.assign.js",
    "chars": 1346,
    "preview": "if (typeof Object.assign != 'function') {\n    // Must be writable: true, enumerable: false, configurable: true\n    Objec"
  },
  {
    "path": "src/js/polyfills/string.padStart.js",
    "chars": 949,
    "preview": "// https://stackoverflow.com/questions/51719553/padstart-not-working-in-ie11\n// https://github.com/behnammodi/polyfill/b"
  },
  {
    "path": "src/js/resize.js",
    "chars": 7585,
    "preview": "import * as utils from './common/utils.js';\nimport { getOptions, getContainer } from './common/options.js';\nimport { upd"
  },
  {
    "path": "src/js/responsive.js",
    "chars": 2520,
    "preview": "import * as utils from './common/utils.js';\nimport { getOptions, getContainer, getOriginals} from './common/options.js';"
  },
  {
    "path": "src/js/scroll/index.js",
    "chars": 1366,
    "preview": "import * as utils from '../common/utils.js';\nimport { EventEmitter } from '../common/eventEmitter.js';\nimport { scrollHa"
  },
  {
    "path": "src/js/scroll/moveSectionDown.js",
    "chars": 1066,
    "preview": "import { getContainer, getOptions } from \"../common/options.js\";\nimport { getState } from \"../common/state.js\";\nimport {"
  }
]

// ... and 65 more files (download for full content)

About this extraction

This page contains the full source code of the alvarotrigo/fullPage.js GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 265 files (2.2 MB), approximately 596.3k tokens, and a symbol index with 1250 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!