IntelliJ project files added to .gitignore
External afterRender() is now executed before executionContext.afterRender() (and with it, iterator callbacks) is executed.
Some getPageCount() optimizations.
getPageForItem* functions use filtered model, with where-function applied.
Ensuring that current page is never outside of limits.
Added iterator callbacks whenThereAreItems, whenThereAreNoItems.
External afterRender() is executed before executionContext.afterRender(). External might inject result into DOM, which execution context callbacks might use.
Small ensurePageIsWithinLimits update. Now takes an argument and returns a value.
Iterator config object is a new object, instead of reusing args object. Ensures private access.
Iterators are now created when compiling the views, instead of when rendering the first time. This means you can get the iterator before rendering.
Page limits are not enforced when there is no model. For example, you can showPage(3) before rendering, even if the model only has 2 pages. But when it is rendering, currentPage will be limited to these two pages, and updated to correct value.
Using showPageWithItemWhere before rendering, by setting the model for the iterator manually.
Added tests for this. Everything seems to be in order, all tests pass.