j1_template_mde 2018.4.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/LICENSE +21 -0
- data/README.md +79 -0
- data/_includes/themes/j1/layouts/content_generator_app.html +34 -0
- data/_includes/themes/j1/layouts/content_generator_blog_archive.html +201 -0
- data/_includes/themes/j1/layouts/content_generator_collection.html +116 -0
- data/_includes/themes/j1/layouts/content_generator_page.html +116 -0
- data/_includes/themes/j1/layouts/content_generator_post.html +214 -0
- data/_includes/themes/j1/layouts/content_generator_raw.html +35 -0
- data/_includes/themes/j1/layouts/layout_metadata_generator.html +106 -0
- data/_includes/themes/j1/layouts/layout_module_generator.html +49 -0
- data/_includes/themes/j1/layouts/layout_resource_generator.html +53 -0
- data/_includes/themes/j1/layouts/layout_shim_generator.html +105 -0
- data/_includes/themes/j1/layouts/layout_theme_generator.html +105 -0
- data/_includes/themes/j1/modules/boards/news_pin_board.html +183 -0
- data/_includes/themes/j1/modules/connectors/ad/google-adsense +39 -0
- data/_includes/themes/j1/modules/connectors/ads +34 -0
- data/_includes/themes/j1/modules/connectors/analytic/google +42 -0
- data/_includes/themes/j1/modules/connectors/analytic/googleUA +44 -0
- data/_includes/themes/j1/modules/connectors/analytics +46 -0
- data/_includes/themes/j1/modules/connectors/comment/disqus.html +61 -0
- data/_includes/themes/j1/modules/connectors/comments +44 -0
- data/_includes/themes/j1/modules/connectors/sharing +36 -0
- data/_includes/themes/j1/modules/footers/boxes/about_box.proc +33 -0
- data/_includes/themes/j1/modules/footers/boxes/contacts_box.proc +55 -0
- data/_includes/themes/j1/modules/footers/boxes/legal_statements.proc +61 -0
- data/_includes/themes/j1/modules/footers/boxes/links_box.proc +38 -0
- data/_includes/themes/j1/modules/footers/boxes/news_box.proc +54 -0
- data/_includes/themes/j1/modules/footers/boxes/social_media_icons.proc +38 -0
- data/_includes/themes/j1/modules/footers/footer_light_generator.html +130 -0
- data/_includes/themes/j1/modules/headers/master_header_generator.html +140 -0
- data/_includes/themes/j1/modules/navigator/generator.html +170 -0
- data/_includes/themes/j1/modules/navigator/procedures/_unused/authclient.proc +139 -0
- data/_includes/themes/j1/modules/navigator/procedures/_unused/authclient.proc.org +217 -0
- data/_includes/themes/j1/modules/navigator/procedures/quicklinks.proc +97 -0
- data/_includes/themes/j1/modules/navigator/procedures/sidebar.proc +117 -0
- data/_includes/themes/j1/modules/navigator/procedures/topsearch.proc +115 -0
- data/_includes/themes/j1/procedures/collections/create_collection_article_preview.proc +68 -0
- data/_includes/themes/j1/procedures/global/_get_page_path.proc.new +80 -0
- data/_includes/themes/j1/procedures/global/_get_page_path.proc.org +68 -0
- data/_includes/themes/j1/procedures/global/collect_frontmatter_options.proc +62 -0
- data/_includes/themes/j1/procedures/global/create_bs_button.proc +126 -0
- data/_includes/themes/j1/procedures/global/create_word_cloud.proc +119 -0
- data/_includes/themes/j1/procedures/global/get_category.proc +60 -0
- data/_includes/themes/j1/procedures/global/get_category_item.proc +80 -0
- data/_includes/themes/j1/procedures/global/get_documents_dir.proc +67 -0
- data/_includes/themes/j1/procedures/global/get_page_path.proc +67 -0
- data/_includes/themes/j1/procedures/global/get_page_url.proc +55 -0
- data/_includes/themes/j1/procedures/global/pager.proc +79 -0
- data/_includes/themes/j1/procedures/global/select_color.proc +69 -0
- data/_includes/themes/j1/procedures/global/select_font_size.proc +86 -0
- data/_includes/themes/j1/procedures/global/select_icon_size.proc +72 -0
- data/_includes/themes/j1/procedures/global/select_location.proc +107 -0
- data/_includes/themes/j1/procedures/global/set_env_entry_document.proc +88 -0
- data/_includes/themes/j1/procedures/global/set_image_block.proc +50 -0
- data/_includes/themes/j1/procedures/global/setup.proc +61 -0
- data/_includes/themes/j1/procedures/layouts/content_writer.proc +107 -0
- data/_includes/themes/j1/procedures/layouts/default_writer.proc +160 -0
- data/_includes/themes/j1/procedures/layouts/module_writer.proc +170 -0
- data/_includes/themes/j1/procedures/layouts/resource_writer.proc +183 -0
- data/_includes/themes/j1/procedures/posts/_collate_timeline.proc +253 -0
- data/_includes/themes/j1/procedures/posts/collate_calendar.proc +224 -0
- data/_includes/themes/j1/procedures/posts/collate_list.proc +102 -0
- data/_includes/themes/j1/procedures/posts/collate_timeline.proc +219 -0
- data/_includes/themes/j1/procedures/posts/create_ad_block.proc +56 -0
- data/_includes/themes/j1/procedures/posts/create_series_header.proc +96 -0
- data/_layouts/_unused/default.html +347 -0
- data/_layouts/_unused/default.modal.html +291 -0
- data/_layouts/app.html +68 -0
- data/_layouts/blog_archive.html +60 -0
- data/_layouts/collection.html +68 -0
- data/_layouts/compress.html +52 -0
- data/_layouts/default.html +192 -0
- data/_layouts/home.html +80 -0
- data/_layouts/page.html +68 -0
- data/_layouts/paginator/autopage_category.html +79 -0
- data/_layouts/paginator/autopage_collection.html +159 -0
- data/_layouts/paginator/autopage_collections_tags.html +87 -0
- data/_layouts/paginator/autopage_tags.html +79 -0
- data/_layouts/post.html +68 -0
- data/_layouts/raw.html +71 -0
- data/_sass/README.md +16 -0
- data/assets/README.md +3 -0
- data/exe/j1 +26 -0
- data/lib/j1.rb +130 -0
- data/lib/j1/command.rb +23 -0
- data/lib/j1/commands/generate.rb +154 -0
- data/lib/j1/commands/help.rb +32 -0
- data/lib/j1/commands/module.rb +69 -0
- data/lib/j1/external.rb +59 -0
- data/lib/j1/log_adapter.rb +115 -0
- data/lib/j1/log_helper.rb +61 -0
- data/lib/j1/templates/posts/0000-00-00-welcome-to-j1-template.adoc.erb +60 -0
- data/lib/j1/utils.rb +330 -0
- data/lib/j1/utils/ansi.rb +59 -0
- data/lib/j1/utils/exec.rb +25 -0
- data/lib/j1/utils/platforms.rb +80 -0
- data/lib/j1/utils/win_tz.rb +73 -0
- data/lib/j1/version.rb +3 -0
- data/lib/j1_app.rb +69 -0
- data/lib/j1_app/j1_auth_manager/auth_manager.rb +418 -0
- data/lib/j1_app/j1_auth_manager/commands.rb +18 -0
- data/lib/j1_app/j1_auth_manager/config.rb +76 -0
- data/lib/j1_app/j1_auth_manager/helpers.rb +55 -0
- data/lib/j1_app/j1_auth_manager/helpers_disqus.rb +12 -0
- data/lib/j1_app/j1_auth_manager/helpers_facebook.rb +12 -0
- data/lib/j1_app/j1_auth_manager/helpers_github.rb +95 -0
- data/lib/j1_app/j1_auth_manager/helpers_patreon.rb +12 -0
- data/lib/j1_app/j1_auth_manager/helpers_twitter.rb +12 -0
- data/lib/j1_app/j1_auth_manager/warden_omniauth.rb +133 -0
- data/lib/j1_app/j1_site_manager/static_site.rb +16 -0
- data/lib/j1_app/omniauth/facebook/signed_request.rb +52 -0
- data/lib/j1_app/omniauth/strategies/_unused/doumart_patreon.rb +75 -0
- data/lib/j1_app/omniauth/strategies/_unused/my_patreon.rb +78 -0
- data/lib/j1_app/omniauth/strategies/disqus.rb +56 -0
- data/lib/j1_app/omniauth/strategies/facebook.rb +181 -0
- data/lib/j1_app/omniauth/strategies/github.rb +79 -0
- data/lib/j1_app/omniauth/strategies/patreon.rb +49 -0
- data/lib/j1_app/omniauth/strategies/twitter.rb +104 -0
- data/lib/j1_app/sinatra/extras/cookies.rb +282 -0
- data/lib/j1_app/sinatra/extras/index.rb +33 -0
- data/lib/starter_web/Gemfile +180 -0
- data/lib/starter_web/_config.yml +962 -0
- data/lib/starter_web/_data/apps/_unused/j1_colorbox.yml +100 -0
- data/lib/starter_web/_data/apps/_unused/j1_tocbot.yml +156 -0
- data/lib/starter_web/_data/apps/j1_bootstrap_gallery.yml +167 -0
- data/lib/starter_web/_data/apps/j1_carousel.yml +501 -0
- data/lib/starter_web/_data/apps/j1_justified_gallery.yml +229 -0
- data/lib/starter_web/_data/apps/j1_light_gallery.yml +105 -0
- data/lib/starter_web/_data/apps/j1_lightbox.yml +163 -0
- data/lib/starter_web/_data/apps/j1_link_checker.yml +21 -0
- data/lib/starter_web/_data/asciidoc2pdf/default-theme.yml +391 -0
- data/lib/starter_web/_data/asciidoc2pdf/j1-theme.yml +53 -0
- data/lib/starter_web/_data/builder/blog_navigator.yml +203 -0
- data/lib/starter_web/_data/j1_categories.yml +31 -0
- data/lib/starter_web/_data/j1_colors.yml +607 -0
- data/lib/starter_web/_data/j1_config.yml +203 -0
- data/lib/starter_web/_data/j1_font_sizes.yml +25 -0
- data/lib/starter_web/_data/j1_i18n.yml +18 -0
- data/lib/starter_web/_data/j1_resources.yml +631 -0
- data/lib/starter_web/_data/known_issues/windows/cacert.pem +3314 -0
- data/lib/starter_web/_data/layouts/app.yml +154 -0
- data/lib/starter_web/_data/layouts/blog_archive.yml +155 -0
- data/lib/starter_web/_data/layouts/collection.yml +157 -0
- data/lib/starter_web/_data/layouts/default.yml +230 -0
- data/lib/starter_web/_data/layouts/home.yml +203 -0
- data/lib/starter_web/_data/layouts/page.yml +154 -0
- data/lib/starter_web/_data/layouts/post.yml +164 -0
- data/lib/starter_web/_data/layouts/raw.yml +154 -0
- data/lib/starter_web/_data/modules/_unused/j1_navigator.yml +195 -0
- data/lib/starter_web/_data/modules/_unused/j1_navigator_menu.yml +317 -0
- data/lib/starter_web/_data/modules/j1_back2top.yml +120 -0
- data/lib/starter_web/_data/modules/j1_banner.yml +248 -0
- data/lib/starter_web/_data/modules/j1_cookiebar.yml +65 -0
- data/lib/starter_web/_data/modules/j1_footer.yml +128 -0
- data/lib/starter_web/_data/modules/j1_header.yml +201 -0
- data/lib/starter_web/_data/modules/j1_iframe_resizer.yml +234 -0
- data/lib/starter_web/_data/modules/j1_jekyll_search.yml +112 -0
- data/lib/starter_web/_data/modules/j1_log4javascript.yml +98 -0
- data/lib/starter_web/_data/modules/j1_navigator.yml +218 -0
- data/lib/starter_web/_data/modules/j1_navigator_menu.yml +265 -0
- data/lib/starter_web/_data/modules/j1_panel.yml +688 -0
- data/lib/starter_web/_data/modules/j1_parallax.yml +87 -0
- data/lib/starter_web/_data/modules/j1_sign_in_up.yml +18 -0
- data/lib/starter_web/_data/modules/j1_smooth_scroll.yml +122 -0
- data/lib/starter_web/_data/modules/j1_theme_switcher.yml +139 -0
- data/lib/starter_web/_data/modules/j1_toccer.yml +155 -0
- data/lib/starter_web/_data/pages/builder.yml +82 -0
- data/lib/starter_web/_plugins/asciidoctor-extensions/admonition-block-answer.rb +48 -0
- data/lib/starter_web/_plugins/asciidoctor-extensions/admonition-block-question.rb +48 -0
- data/lib/starter_web/_plugins/asciidoctor-extensions/carousel-block.rb +45 -0
- data/lib/starter_web/_plugins/asciidoctor-extensions/gist-block.rb +52 -0
- data/lib/starter_web/_plugins/asciidoctor-extensions/lightbox-block.rb +85 -0
- data/lib/starter_web/_plugins/asciidoctor-extensions/lorem-inline.rb +65 -0
- data/lib/starter_web/_plugins/asciidoctor-extensions/shout-block.rb +47 -0
- data/lib/starter_web/_plugins/asciidoctor-extensions/twitter-emoji-inline.rb +69 -0
- data/lib/starter_web/_plugins/debug.rb +64 -0
- data/lib/starter_web/_plugins/filters.rb +307 -0
- data/lib/starter_web/_plugins/prettify.rb +45 -0
- data/lib/starter_web/_plugins/simple_search_filter.rb +33 -0
- data/lib/starter_web/_plugins/symlink_watcher.rb +53 -0
- data/lib/starter_web/_rack/Procfile.nginx +1 -0
- data/lib/starter_web/_rack/Procfile.webrick +1 -0
- data/lib/starter_web/_rack/Rakefile +6 -0
- data/lib/starter_web/_rack/config.ru +7 -0
- data/lib/starter_web/_rack/dot.env +48 -0
- data/lib/starter_web/_rack/dot.gitignore +34 -0
- data/lib/starter_web/_rack/heroku.config_set +12 -0
- data/lib/starter_web/_rack/puma.rb +200 -0
- data/lib/starter_web/_sass/README.md +16 -0
- data/lib/starter_web/apps/calendar/index.adoc +71 -0
- data/lib/starter_web/apps/link_checker/index.html +24 -0
- data/lib/starter_web/assets/apps/link-checker/assets/img/main/img22.jpg +0 -0
- data/lib/starter_web/assets/apps/link-checker/assets/img/main/img22.png +0 -0
- data/lib/starter_web/assets/apps/link-checker/index.html +125 -0
- data/lib/starter_web/assets/apps/link-checker/src/bootstrap/css/bootstrap.min.css +1560 -0
- data/lib/starter_web/assets/apps/link-checker/src/bootstrap/fonts/glyphicons-halflings-regular.eot +0 -0
- data/lib/starter_web/assets/apps/link-checker/src/bootstrap/fonts/glyphicons-halflings-regular.svg +288 -0
- data/lib/starter_web/assets/apps/link-checker/src/bootstrap/fonts/glyphicons-halflings-regular.ttf +0 -0
- data/lib/starter_web/assets/apps/link-checker/src/bootstrap/fonts/glyphicons-halflings-regular.woff +0 -0
- data/lib/starter_web/assets/apps/link-checker/src/bootstrap/fonts/glyphicons-halflings-regular.woff2 +0 -0
- data/lib/starter_web/assets/apps/link-checker/src/bootstrap/js/bootstrap.min.js +7 -0
- data/lib/starter_web/assets/apps/link-checker/src/fonts/font_awesome/LICENSE.md +11 -0
- data/lib/starter_web/assets/apps/link-checker/src/fonts/font_awesome/README.md +105 -0
- data/lib/starter_web/assets/apps/link-checker/src/fonts/font_awesome/css/font-awesome.css +2337 -0
- data/lib/starter_web/assets/apps/link-checker/src/fonts/font_awesome/css/font-awesome.min.css +4 -0
- data/lib/starter_web/assets/apps/link-checker/src/fonts/font_awesome/fonts/FontAwesome.otf +0 -0
- data/lib/starter_web/assets/apps/link-checker/src/fonts/font_awesome/fonts/fontawesome-webfont.eot +0 -0
- data/lib/starter_web/assets/apps/link-checker/src/fonts/font_awesome/fonts/fontawesome-webfont.svg +2671 -0
- data/lib/starter_web/assets/apps/link-checker/src/fonts/font_awesome/fonts/fontawesome-webfont.ttf +0 -0
- data/lib/starter_web/assets/apps/link-checker/src/fonts/font_awesome/fonts/fontawesome-webfont.woff +0 -0
- data/lib/starter_web/assets/apps/link-checker/src/fonts/font_awesome/fonts/fontawesome-webfont.woff2 +0 -0
- data/lib/starter_web/assets/apps/link-checker/src/fonts/roboto/How_to_use_webfonts.html +230 -0
- data/lib/starter_web/assets/apps/link-checker/src/fonts/roboto/Roboto-Regular-demo.html +372 -0
- data/lib/starter_web/assets/apps/link-checker/src/fonts/roboto/Roboto-Regular.eot +0 -0
- data/lib/starter_web/assets/apps/link-checker/src/fonts/roboto/Roboto-Regular.svg +621 -0
- data/lib/starter_web/assets/apps/link-checker/src/fonts/roboto/Roboto-Regular.ttf +0 -0
- data/lib/starter_web/assets/apps/link-checker/src/fonts/roboto/Roboto-Regular.woff +0 -0
- data/lib/starter_web/assets/apps/link-checker/src/fonts/roboto/specimen_files/Roboto-Regular-cleartype.png +0 -0
- data/lib/starter_web/assets/apps/link-checker/src/fonts/roboto/specimen_files/grid_12-825-55-15.css +129 -0
- data/lib/starter_web/assets/apps/link-checker/src/fonts/roboto/specimen_files/specimen_stylesheet.css +396 -0
- data/lib/starter_web/assets/apps/link-checker/src/fonts/roboto/stylesheet.css +12 -0
- data/lib/starter_web/assets/apps/link-checker/src/link-checker/css/link-checker.css +87 -0
- data/lib/starter_web/assets/apps/link-checker/src/link-checker/js/backbone.1.3.2.js +1920 -0
- data/lib/starter_web/assets/apps/link-checker/src/link-checker/js/backbone.min.js +37 -0
- data/lib/starter_web/assets/apps/link-checker/src/link-checker/js/html5shiv.min.js +4 -0
- data/lib/starter_web/assets/apps/link-checker/src/link-checker/js/iframeResizer.contentWindow.min.js +9 -0
- data/lib/starter_web/assets/apps/link-checker/src/link-checker/js/jquery.min.js +6 -0
- data/lib/starter_web/assets/apps/link-checker/src/link-checker/js/jsuri-1.1.1.min.js +2 -0
- data/lib/starter_web/assets/apps/link-checker/src/link-checker/js/link-checker.js +333 -0
- data/lib/starter_web/assets/apps/link-checker/src/link-checker/js/underscore.min.js +31 -0
- data/lib/starter_web/assets/data/animate.json +120 -0
- data/lib/starter_web/assets/data/ascii_code_table.json +1794 -0
- data/lib/starter_web/assets/data/authclient.html +371 -0
- data/lib/starter_web/assets/data/banner.html +350 -0
- data/lib/starter_web/assets/data/carousel.json +95 -0
- data/lib/starter_web/assets/data/colors.json +42 -0
- data/lib/starter_web/assets/data/font_sizes.json +42 -0
- data/lib/starter_web/assets/data/fontawesome_icons.json +5525 -0
- data/lib/starter_web/assets/data/footer.html +230 -0
- data/lib/starter_web/assets/data/galleries.json +143 -0
- data/lib/starter_web/assets/data/mdi_icons.json +14324 -0
- data/lib/starter_web/assets/data/menu.html +470 -0
- data/lib/starter_web/assets/data/objects.json +458 -0
- data/lib/starter_web/assets/data/panel.html +529 -0
- data/lib/starter_web/assets/data/search.json +114 -0
- data/lib/starter_web/assets/data/themes.json +59 -0
- data/lib/starter_web/assets/data/twa_v1.json +6978 -0
- data/lib/starter_web/assets/data/twa_v2.json +12812 -0
- data/lib/starter_web/assets/images/backgrounds/bg-1.jpg +0 -0
- data/lib/starter_web/assets/images/backgrounds/bg-2.jpg +0 -0
- data/lib/starter_web/assets/images/backgrounds/bg-3.jpg +0 -0
- data/lib/starter_web/assets/images/backgrounds/bg-4.jpg +0 -0
- data/lib/starter_web/assets/images/backgrounds/bg-7.jpg +0 -0
- data/lib/starter_web/assets/images/blog/featured/img3.jpg +0 -0
- data/lib/starter_web/assets/images/blog/featured/jekyll.1200x400.png +0 -0
- data/lib/starter_web/assets/images/blog/featured/jekyll.png +0 -0
- data/lib/starter_web/assets/images/blog/featured/staticgen.jpg +0 -0
- data/lib/starter_web/assets/images/blog/featured/what-is-a-baseurl.jpg +0 -0
- data/lib/starter_web/assets/images/blog/series/j1_using_docker/j1_docker_banner.1280x500.png +0 -0
- data/lib/starter_web/assets/images/blog/series/j1_using_docker/kinematic_alpha.1280x600.png +0 -0
- data/lib/starter_web/assets/images/blog/series/j1_using_docker/kinematic_j1.1280x300.png +0 -0
- data/lib/starter_web/assets/images/blog/series/j1_using_docker/windows_docker_banner.1280x500.png +0 -0
- data/lib/starter_web/assets/images/blog/wikipedia/columbia-river.1200x400.jpg +0 -0
- data/lib/starter_web/assets/images/blog/wikipedia/minneapolis.1200x400.jpg +0 -0
- data/lib/starter_web/assets/images/blog/wikipedia/narcise-snake-pits.1200x400.jpg +0 -0
- data/lib/starter_web/assets/images/carousel/cats/cat-1.jpg +0 -0
- data/lib/starter_web/assets/images/carousel/cats/cat-2.jpg +0 -0
- data/lib/starter_web/assets/images/carousel/cats/cat-3.jpg +0 -0
- data/lib/starter_web/assets/images/carousel/cats/cat-4.jpg +0 -0
- data/lib/starter_web/assets/images/carousel/cats/cat-5.jpg +0 -0
- data/lib/starter_web/assets/images/carousel/cats/cat-6.jpg +0 -0
- data/lib/starter_web/assets/images/carousel/cats/cat-7.jpg +0 -0
- data/lib/starter_web/assets/images/carousel/cats/cat-8.jpg +0 -0
- data/lib/starter_web/assets/images/carousel/katarina/katarina-1.jpg +0 -0
- data/lib/starter_web/assets/images/carousel/katarina/katarina-2.jpg +0 -0
- data/lib/starter_web/assets/images/carousel/katarina/katarina-3.jpg +0 -0
- data/lib/starter_web/assets/images/carousel/katarina/katarina-4.jpg +0 -0
- data/lib/starter_web/assets/images/carousel/katarina/katarina-5.jpg +0 -0
- data/lib/starter_web/assets/images/gallery/justified_gallery/000_6791628438_affaa19e10_b.jpg +0 -0
- data/lib/starter_web/assets/images/gallery/justified_gallery/000_6798453217_72dea2d06e_b.jpg +0 -0
- data/lib/starter_web/assets/images/gallery/justified_gallery/000_6806687375_07d2b7a1f9_b.jpg +0 -0
- data/lib/starter_web/assets/images/gallery/justified_gallery/000_6840627709_92ed52fb41_b.jpg +0 -0
- data/lib/starter_web/assets/images/gallery/justified_gallery/000_6876412479_6268c6e2aa_b.jpg +0 -0
- data/lib/starter_web/assets/images/gallery/justified_gallery/000_6880502467_d4b3c4b2a8_b.jpg +0 -0
- data/lib/starter_web/assets/images/gallery/justified_gallery/13824322785_104dc0968c_b.jpg +0 -0
- data/lib/starter_web/assets/images/gallery/justified_gallery/13824674674_ca1e482394_b.jpg +0 -0
- data/lib/starter_web/assets/images/gallery/justified_gallery/16961685188_f130144d60_b.jpg +0 -0
- data/lib/starter_web/assets/images/gallery/justified_gallery/23753792354_bd75d8dabc_b.jpg +0 -0
- data/lib/starter_web/assets/images/gallery/justified_gallery/24014174029_2cfa940264_b.jpg +0 -0
- data/lib/starter_web/assets/images/gallery/justified_gallery/24096687789_c37d45712f_b.jpg +0 -0
- data/lib/starter_web/assets/images/gallery/justified_gallery/6791628438_affaa19e10_b.jpg +0 -0
- data/lib/starter_web/assets/images/gallery/justified_gallery/6798453217_72dea2d06e_b.jpg +0 -0
- data/lib/starter_web/assets/images/gallery/justified_gallery/6806687375_07d2b7a1f9_b.jpg +0 -0
- data/lib/starter_web/assets/images/gallery/justified_gallery/6812090617_5fd5bbdda0_b.jpg +0 -0
- data/lib/starter_web/assets/images/gallery/justified_gallery/6840627709_92ed52fb41_b.jpg +0 -0
- data/lib/starter_web/assets/images/gallery/justified_gallery/6841267340_855273fd7e_b.jpg +0 -0
- data/lib/starter_web/assets/images/gallery/justified_gallery/6876412479_6268c6e2aa_b.jpg +0 -0
- data/lib/starter_web/assets/images/gallery/justified_gallery/6880502467_d4b3c4b2a8_b.jpg +0 -0
- data/lib/starter_web/assets/images/gallery/justified_gallery/6916180091_9c9559e463_b.jpg +0 -0
- data/lib/starter_web/assets/images/gallery/justified_gallery/7002395006_29fdc85f7a_b.jpg +0 -0
- data/lib/starter_web/assets/images/gallery/justified_gallery/7062575651_b23918b11a_b.jpg +0 -0
- data/lib/starter_web/assets/images/gallery/justified_gallery/7822678460_ee98ff1f69_b.jpg +0 -0
- data/lib/starter_web/assets/images/gallery/justified_gallery/7948632554_01f6ae6b6f_b.jpg +0 -0
- data/lib/starter_web/assets/images/gallery/justified_gallery/8157236803_78aa1698b6_b.jpg +0 -0
- data/lib/starter_web/assets/images/gallery/justified_gallery/8400794773_932654a20e_b.jpg +0 -0
- data/lib/starter_web/assets/images/gallery/justified_gallery/8811828736_88392f614a_b.jpg +0 -0
- data/lib/starter_web/assets/images/gallery/justified_gallery/8842312290_f310d491f4_b.jpg +0 -0
- data/lib/starter_web/assets/images/icons/asciidoc/logo-512x512.png +0 -0
- data/lib/starter_web/assets/images/icons/bootstrap/bootstrap-solid-32x32.png +0 -0
- data/lib/starter_web/assets/images/icons/bootstrap/bs-docs-masthead-pattern.png +0 -0
- data/lib/starter_web/assets/images/icons/bootstrap/scalable/bootstrap-outline.svg +20 -0
- data/lib/starter_web/assets/images/icons/bootstrap/scalable/bootstrap-punchout.svg +18 -0
- data/lib/starter_web/assets/images/icons/bootstrap/scalable/bootstrap-solid.svg +17 -0
- data/lib/starter_web/assets/images/icons/components/angular.ui.png +0 -0
- data/lib/starter_web/assets/images/icons/components/angularjs.png +0 -0
- data/lib/starter_web/assets/images/icons/components/aws.png +0 -0
- data/lib/starter_web/assets/images/icons/components/bootstrap.png +0 -0
- data/lib/starter_web/assets/images/icons/components/c9.png +0 -0
- data/lib/starter_web/assets/images/icons/components/chai.png +0 -0
- data/lib/starter_web/assets/images/icons/components/emmet.png +0 -0
- data/lib/starter_web/assets/images/icons/components/express.png +0 -0
- data/lib/starter_web/assets/images/icons/components/git.png +0 -0
- data/lib/starter_web/assets/images/icons/components/github.png +0 -0
- data/lib/starter_web/assets/images/icons/components/gulp.png +0 -0
- data/lib/starter_web/assets/images/icons/components/heroku.png +0 -0
- data/lib/starter_web/assets/images/icons/components/htmlcss-1.png +0 -0
- data/lib/starter_web/assets/images/icons/components/htmlcss-2.png +0 -0
- data/lib/starter_web/assets/images/icons/components/jasmine.png +0 -0
- data/lib/starter_web/assets/images/icons/components/javascript.png +0 -0
- data/lib/starter_web/assets/images/icons/components/jquery.png +0 -0
- data/lib/starter_web/assets/images/icons/components/kanban.png +0 -0
- data/lib/starter_web/assets/images/icons/components/leanux.png +0 -0
- data/lib/starter_web/assets/images/icons/components/linkedin.png +0 -0
- data/lib/starter_web/assets/images/icons/components/mean.png +0 -0
- data/lib/starter_web/assets/images/icons/components/mongodb.png +0 -0
- data/lib/starter_web/assets/images/icons/components/node.png +0 -0
- data/lib/starter_web/assets/images/icons/components/postgresql.png +0 -0
- data/lib/starter_web/assets/images/icons/components/protractor.png +0 -0
- data/lib/starter_web/assets/images/icons/components/rails.png +0 -0
- data/lib/starter_web/assets/images/icons/components/ruby.png +0 -0
- data/lib/starter_web/assets/images/icons/components/sass.png +0 -0
- data/lib/starter_web/assets/images/icons/components/scrum.png +0 -0
- data/lib/starter_web/assets/images/icons/components/twitter.png +0 -0
- data/lib/starter_web/assets/images/icons/j1/favicon.ico +0 -0
- data/lib/starter_web/assets/images/icons/j1/j1-32x32.ico +0 -0
- data/lib/starter_web/assets/images/icons/j1/j1-512x512.png +0 -0
- data/lib/starter_web/assets/images/icons/j1/j1-64x64.png +0 -0
- data/lib/starter_web/assets/images/icons/j1/j1.ico +0 -0
- data/lib/starter_web/assets/images/icons/j1/scalable/j1.svg +2037 -0
- data/lib/starter_web/assets/images/icons/social/amazon.png +0 -0
- data/lib/starter_web/assets/images/icons/social/behance.png +0 -0
- data/lib/starter_web/assets/images/icons/social/blogger.png +0 -0
- data/lib/starter_web/assets/images/icons/social/deviantart.png +0 -0
- data/lib/starter_web/assets/images/icons/social/dribbble.png +0 -0
- data/lib/starter_web/assets/images/icons/social/dropbox.png +0 -0
- data/lib/starter_web/assets/images/icons/social/evernote.png +0 -0
- data/lib/starter_web/assets/images/icons/social/facebook.png +0 -0
- data/lib/starter_web/assets/images/icons/social/forrst.png +0 -0
- data/lib/starter_web/assets/images/icons/social/github.png +0 -0
- data/lib/starter_web/assets/images/icons/social/googleplus.png +0 -0
- data/lib/starter_web/assets/images/icons/social/instagram.png +0 -0
- data/lib/starter_web/assets/images/icons/social/jolicloud.png +0 -0
- data/lib/starter_web/assets/images/icons/social/last-fm.png +0 -0
- data/lib/starter_web/assets/images/icons/social/linkedin.png +0 -0
- data/lib/starter_web/assets/images/icons/social/picasa.png +0 -0
- data/lib/starter_web/assets/images/icons/social/pintrest.png +0 -0
- data/lib/starter_web/assets/images/icons/social/rss.png +0 -0
- data/lib/starter_web/assets/images/icons/social/skype.png +0 -0
- data/lib/starter_web/assets/images/icons/social/spotify.png +0 -0
- data/lib/starter_web/assets/images/icons/social/stumbleupon.png +0 -0
- data/lib/starter_web/assets/images/icons/social/tumblr.png +0 -0
- data/lib/starter_web/assets/images/icons/social/twitter.png +0 -0
- data/lib/starter_web/assets/images/icons/social/vimeo.png +0 -0
- data/lib/starter_web/assets/images/icons/social/vk.png +0 -0
- data/lib/starter_web/assets/images/icons/social/wordpress.png +0 -0
- data/lib/starter_web/assets/images/icons/social/xing.png +0 -0
- data/lib/starter_web/assets/images/icons/social/yahoo.png +0 -0
- data/lib/starter_web/assets/images/icons/social/youtube.png +0 -0
- data/lib/starter_web/assets/images/lightbox/close.png +0 -0
- data/lib/starter_web/assets/images/lightbox/loading.gif +0 -0
- data/lib/starter_web/assets/images/lightbox/next.png +0 -0
- data/lib/starter_web/assets/images/lightbox/prev.png +0 -0
- data/lib/starter_web/assets/images/master_header/aaron-burden-1200.jpg +0 -0
- data/lib/starter_web/assets/images/master_header/alexey-ruban-slider.jpg +0 -0
- data/lib/starter_web/assets/images/master_header/chuttersnap-1200.jpg +0 -0
- data/lib/starter_web/assets/images/master_header/clark-tibbs-do-something.jpg +0 -0
- data/lib/starter_web/assets/images/master_header/docker_banner_l.1280x500.png +0 -0
- data/lib/starter_web/assets/images/master_header/docker_banner_r.1280x500.png +0 -0
- data/lib/starter_web/assets/images/master_header/homehead-default-1200.jpg +0 -0
- data/lib/starter_web/assets/images/master_header/ideas-start-here.1200x800.png +0 -0
- data/lib/starter_web/assets/images/master_header/ideas-start-here.1920x1200.png +0 -0
- data/lib/starter_web/assets/images/master_header/ideas-start-here.jpg +0 -0
- data/lib/starter_web/assets/images/master_header/maarten-van-den-heuvel-1200.jpg +0 -0
- data/lib/starter_web/assets/images/master_header/pagehead-default-1200.jpg +0 -0
- data/lib/starter_web/assets/images/master_header/stefan-stefancik-1200.jpg +0 -0
- data/lib/starter_web/assets/images/master_header/water-journal-1200.jpg +0 -0
- data/lib/starter_web/assets/images/md-kit/avatar.jpg +0 -0
- data/lib/starter_web/assets/images/md-kit/bg7.jpg +0 -0
- data/lib/starter_web/assets/images/md-kit/blog1.jpg +0 -0
- data/lib/starter_web/assets/images/md-kit/blog5.jpg +0 -0
- data/lib/starter_web/assets/images/md-kit/blog6.jpg +0 -0
- data/lib/starter_web/assets/images/md-kit/card-blog2.jpg +0 -0
- data/lib/starter_web/assets/images/md-kit/card-blog3.jpg +0 -0
- data/lib/starter_web/assets/images/md-kit/card-profile1.jpg +0 -0
- data/lib/starter_web/assets/images/md-kit/card-profile4.jpg +0 -0
- data/lib/starter_web/assets/images/md-kit/card-profile5-square.jpg +0 -0
- data/lib/starter_web/assets/images/md-kit/kendall.jpg +0 -0
- data/lib/starter_web/assets/images/md-kit/kendall.png +0 -0
- data/lib/starter_web/assets/images/md-kit/marc.jpg +0 -0
- data/lib/starter_web/assets/images/md-kit/office1.jpg +0 -0
- data/lib/starter_web/assets/images/old_times/image_01.jpg +0 -0
- data/lib/starter_web/assets/images/old_times/image_02.jpg +0 -0
- data/lib/starter_web/assets/images/old_times/image_03.jpg +0 -0
- data/lib/starter_web/assets/images/old_times/image_04.jpg +0 -0
- data/lib/starter_web/assets/images/pages/documentation/100_user_guide/200_modules/200_navigation/001_menubar_example.png +0 -0
- data/lib/starter_web/assets/images/pages/documentation/100_user_guide/200_modules/200_navigation/005_navbar.png +0 -0
- data/lib/starter_web/assets/images/pages/documentation/100_user_guide/200_modules/200_navigation/005_navigation_bar.png +0 -0
- data/lib/starter_web/assets/images/pages/documentation/100_user_guide/200_modules/200_navigation/006_navigation_side_bar.png +0 -0
- data/lib/starter_web/assets/images/pages/documentation/100_user_guide/200_modules/200_navigation/006_searchbar.png +0 -0
- data/lib/starter_web/assets/images/pages/documentation/100_user_guide/200_modules/200_navigation/007_sidebar.png +0 -0
- data/lib/starter_web/assets/images/pages/documentation/100_user_guide/200_modules/200_navigation/008_navbar_blank.png +0 -0
- data/lib/starter_web/assets/images/pages/documentation/100_user_guide/200_modules/200_navigation/010_nav_bar.png +0 -0
- data/lib/starter_web/assets/images/pages/documentation/100_user_guide/200_modules/200_navigation/010_top_search.png +0 -0
- data/lib/starter_web/assets/images/pages/documentation/100_user_guide/200_modules/200_navigation/012_top_search.png +0 -0
- data/lib/starter_web/assets/images/pages/documentation/100_user_guide/200_modules/200_navigation/015_quicklink_bar.png +0 -0
- data/lib/starter_web/assets/images/pages/documentation/100_user_guide/200_modules/200_navigation/017_side_bar.png +0 -0
- data/lib/starter_web/assets/images/pages/documentation/100_user_guide/200_modules/200_navigation/020_menu_bar.png +0 -0
- data/lib/starter_web/assets/images/pages/documentation/100_user_guide/200_modules/240_auth_manager/2-tier-architecture-1280x600.png +0 -0
- data/lib/starter_web/assets/images/pages/documentation/100_user_guide/200_modules/240_auth_manager/3-tier-architecture-1280x600.png +0 -0
- data/lib/starter_web/assets/images/pages/documentation/100_user_guide/200_modules/240_auth_manager/download_image_create_starter.800x600.png +0 -0
- data/lib/starter_web/assets/images/pages/documentation/100_user_guide/200_modules/240_auth_manager/j1-app-authclient-icon.1280x600.png +0 -0
- data/lib/starter_web/assets/images/pages/documentation/100_user_guide/200_modules/240_auth_manager/j1-app-authclient-signin.1280x700.png +0 -0
- data/lib/starter_web/assets/images/pages/documentation/100_user_guide/200_modules/240_auth_manager/j1-app-authclient-signout.1280x700.png +0 -0
- data/lib/starter_web/assets/images/pages/documentation/100_user_guide/200_modules/240_auth_manager/j1-disqus-comment-dialog.1280x500.png +0 -0
- data/lib/starter_web/assets/images/pages/documentation/100_user_guide/200_modules/240_auth_manager/j1_development_system-1280x600.png +0 -0
- data/lib/starter_web/assets/images/pages/documentation/100_user_guide/200_modules/240_auth_manager/j1_runtime_system-1280x600.png +0 -0
- data/lib/starter_web/assets/images/pages/documentation/100_user_guide/200_modules/240_auth_manager/rack_based_web_app-1280x600.png +0 -0
- data/lib/starter_web/assets/images/pages/documentation/100_user_guide/200_modules/240_auth_manager/rack_based_web_app.png +0 -0
- data/lib/starter_web/assets/images/pages/documentation/100_user_guide/200_modules/240_auth_manager/run_container_build_start_web.800x400.png +0 -0
- data/lib/starter_web/assets/images/pages/documentation/100_user_guide/200_modules/240_auth_manager/run_starter_web.800x700.png +0 -0
- data/lib/starter_web/assets/images/pages/kickstarter/web_in_a_day/130_layout_inheritance.png +0 -0
- data/lib/starter_web/assets/images/pages/kickstarter/web_in_a_day/content_inheritance.png +0 -0
- data/lib/starter_web/assets/images/pages/kickstarter/web_in_a_day/content_inheritance_thumb.png +0 -0
- data/lib/starter_web/assets/images/pages/kickstarter/web_in_a_day/html_layout.png +0 -0
- data/lib/starter_web/assets/images/pages/kickstarter/web_in_a_day/j1-quickstart-windows.png +0 -0
- data/lib/starter_web/assets/images/pages/kickstarter/web_in_a_day/j1-template-theme.png +0 -0
- data/lib/starter_web/assets/images/pages/kickstarter/web_in_a_day/j1_layout.png +0 -0
- data/lib/starter_web/assets/images/pages/kickstarter/web_in_a_day/jekyll-minima-theme.png +0 -0
- data/lib/starter_web/assets/images/pages/kickstarter/web_in_a_day/lane_inheritance.png +0 -0
- data/lib/starter_web/assets/images/pages/kickstarter/web_in_a_day/layout_inheritance.png +0 -0
- data/lib/starter_web/assets/images/pages/modals/01_frame_modal.jpg +0 -0
- data/lib/starter_web/assets/images/pages/modals/02_site_modal.jpg +0 -0
- data/lib/starter_web/assets/images/pages/modals/03_central_modal.jpg +0 -0
- data/lib/starter_web/assets/images/pages/modals/04_fluid_modal.jpg +0 -0
- data/lib/starter_web/assets/images/pages/previewer/bs-color-palette.png +0 -0
- data/lib/starter_web/assets/images/pages/previewer/material-design-color-palette.jpg +0 -0
- data/lib/starter_web/assets/images/pages/previewer/material-design-color-palette.png +0 -0
- data/lib/starter_web/assets/images/pages/roundtrip/100_present_images/image-1.jpg +0 -0
- data/lib/starter_web/assets/images/pages/roundtrip/100_present_images/image-2.jpg +0 -0
- data/lib/starter_web/assets/images/pages/roundtrip/100_present_images/image-3.jpg +0 -0
- data/lib/starter_web/assets/images/pages/roundtrip/100_present_images/image-4.jpg +0 -0
- data/lib/starter_web/assets/images/pages/roundtrip/100_present_images/image-5.jpg +0 -0
- data/lib/starter_web/assets/images/pages/roundtrip/100_present_images/tables-1920.jpg +0 -0
- data/lib/starter_web/assets/images/pages/roundtrip/100_present_images/thumb-1.jpg +0 -0
- data/lib/starter_web/assets/images/pages/roundtrip/100_present_images/thumb-2.jpg +0 -0
- data/lib/starter_web/assets/images/pages/roundtrip/100_present_images/thumb-3.jpg +0 -0
- data/lib/starter_web/assets/images/pages/roundtrip/100_present_images/thumb-4.jpg +0 -0
- data/lib/starter_web/assets/images/pages/roundtrip/100_present_images/thumb-5.jpg +0 -0
- data/lib/starter_web/assets/images/pages/roundtrip/cards-1920.jpg +0 -0
- data/lib/starter_web/assets/images/pages/roundtrip/icon-fonts-1920.jpg +0 -0
- data/lib/starter_web/assets/images/pages/roundtrip/meeting.jpg +0 -0
- data/lib/starter_web/assets/images/pages/roundtrip/theme-1920.jpg +0 -0
- data/lib/starter_web/assets/images/pages/roundtrip/typography-1920.jpg +0 -0
- data/lib/starter_web/assets/images/patterns/1x1.png +0 -0
- data/lib/starter_web/assets/images/patterns/gridtile.png +0 -0
- data/lib/starter_web/assets/images/quotes/default.png +0 -0
- data/lib/starter_web/assets/images/quotes/people.png +0 -0
- data/lib/starter_web/assets/images/spinner/loader1.gif +0 -0
- data/lib/starter_web/assets/images/spinner/loader2.gif +0 -0
- data/lib/starter_web/assets/images/widescreen/featured-1920x800.jpg +0 -0
- data/lib/starter_web/assets/images/widescreen/people.jpg +0 -0
- data/lib/starter_web/assets/themes/j1/core/css/bootstrap.css +6328 -0
- data/lib/starter_web/assets/themes/j1/core/css/bootstrap.min.css +6 -0
- data/lib/starter_web/assets/themes/j1/core/css/custom.scss +28 -0
- data/lib/starter_web/assets/themes/j1/core/css/theme_extensions.css +3333 -0
- data/lib/starter_web/assets/themes/j1/core/css/theme_extensions.min.css +1 -0
- data/lib/starter_web/assets/themes/j1/core/css/uno.css +11580 -0
- data/lib/starter_web/assets/themes/j1/core/css/uno.min.css +1 -0
- data/lib/starter_web/assets/themes/j1/core/css/uno.scss +28 -0
- data/lib/starter_web/assets/themes/j1/core/css/vendor.css +34598 -0
- data/lib/starter_web/assets/themes/j1/core/css/vendor.min.css +8 -0
- data/lib/starter_web/assets/themes/j1/core/css/vendor.scss +28 -0
- data/lib/starter_web/assets/themes/j1/core/fonts/fontawesome_5/fonts/fa-brands-400.eot +0 -0
- data/lib/starter_web/assets/themes/j1/core/fonts/fontawesome_5/fonts/fa-brands-400.svg +990 -0
- data/lib/starter_web/assets/themes/j1/core/fonts/fontawesome_5/fonts/fa-brands-400.ttf +0 -0
- data/lib/starter_web/assets/themes/j1/core/fonts/fontawesome_5/fonts/fa-brands-400.woff +0 -0
- data/lib/starter_web/assets/themes/j1/core/fonts/fontawesome_5/fonts/fa-brands-400.woff2 +0 -0
- data/lib/starter_web/assets/themes/j1/core/fonts/fontawesome_5/fonts/fa-regular-400.eot +0 -0
- data/lib/starter_web/assets/themes/j1/core/fonts/fontawesome_5/fonts/fa-regular-400.svg +363 -0
- data/lib/starter_web/assets/themes/j1/core/fonts/fontawesome_5/fonts/fa-regular-400.ttf +0 -0
- data/lib/starter_web/assets/themes/j1/core/fonts/fontawesome_5/fonts/fa-regular-400.woff +0 -0
- data/lib/starter_web/assets/themes/j1/core/fonts/fontawesome_5/fonts/fa-regular-400.woff2 +0 -0
- data/lib/starter_web/assets/themes/j1/core/fonts/fontawesome_5/fonts/fa-solid-900.eot +0 -0
- data/lib/starter_web/assets/themes/j1/core/fonts/fontawesome_5/fonts/fa-solid-900.svg +1413 -0
- data/lib/starter_web/assets/themes/j1/core/fonts/fontawesome_5/fonts/fa-solid-900.ttf +0 -0
- data/lib/starter_web/assets/themes/j1/core/fonts/fontawesome_5/fonts/fa-solid-900.woff +0 -0
- data/lib/starter_web/assets/themes/j1/core/fonts/fontawesome_5/fonts/fa-solid-900.woff2 +0 -0
- data/lib/starter_web/assets/themes/j1/core/fonts/fontawesome_5/metadata/icons.json +26790 -0
- data/lib/starter_web/assets/themes/j1/core/fonts/fontawesome_5/metadata/icons.yml +9088 -0
- data/lib/starter_web/assets/themes/j1/core/fonts/fontawesome_5/metadata/shims.json +2302 -0
- data/lib/starter_web/assets/themes/j1/core/fonts/fontawesome_5/metadata/shims.yml +292 -0
- data/lib/starter_web/assets/themes/j1/core/fonts/materialdesign_icons/fonts/materialdesignicons-webfont.eot +0 -0
- data/lib/starter_web/assets/themes/j1/core/fonts/materialdesign_icons/fonts/materialdesignicons-webfont.svg +6369 -0
- data/lib/starter_web/assets/themes/j1/core/fonts/materialdesign_icons/fonts/materialdesignicons-webfont.ttf +0 -0
- data/lib/starter_web/assets/themes/j1/core/fonts/materialdesign_icons/fonts/materialdesignicons-webfont.woff +0 -0
- data/lib/starter_web/assets/themes/j1/core/fonts/materialdesign_icons/fonts/materialdesignicons-webfont.woff2 +0 -0
- data/lib/starter_web/assets/themes/j1/core/fonts/materialdesign_icons/license.md +97 -0
- data/lib/starter_web/assets/themes/j1/core/fonts/materialdesign_icons/metadata/icons.json +8186 -0
- data/lib/starter_web/assets/themes/j1/core/fonts/materialdesign_icons/metadata/icons.yml +5857 -0
- data/lib/starter_web/assets/themes/j1/core/fonts/roboto/fonts/OpenSansEmoji.ttf +0 -0
- data/lib/starter_web/assets/themes/j1/core/fonts/roboto/fonts/Roboto-Black.ttf +0 -0
- data/lib/starter_web/assets/themes/j1/core/fonts/roboto/fonts/Roboto-BlackItalic.ttf +0 -0
- data/lib/starter_web/assets/themes/j1/core/fonts/roboto/fonts/Roboto-Bold.ttf +0 -0
- data/lib/starter_web/assets/themes/j1/core/fonts/roboto/fonts/Roboto-Bold.woff +0 -0
- data/lib/starter_web/assets/themes/j1/core/fonts/roboto/fonts/Roboto-Bold.woff2 +0 -0
- data/lib/starter_web/assets/themes/j1/core/fonts/roboto/fonts/Roboto-BoldItalic.ttf +0 -0
- data/lib/starter_web/assets/themes/j1/core/fonts/roboto/fonts/Roboto-Italic.ttf +0 -0
- data/lib/starter_web/assets/themes/j1/core/fonts/roboto/fonts/Roboto-Light.ttf +0 -0
- data/lib/starter_web/assets/themes/j1/core/fonts/roboto/fonts/Roboto-Light.woff +0 -0
- data/lib/starter_web/assets/themes/j1/core/fonts/roboto/fonts/Roboto-Light.woff2 +0 -0
- data/lib/starter_web/assets/themes/j1/core/fonts/roboto/fonts/Roboto-LightItalic.ttf +0 -0
- data/lib/starter_web/assets/themes/j1/core/fonts/roboto/fonts/Roboto-Medium.ttf +0 -0
- data/lib/starter_web/assets/themes/j1/core/fonts/roboto/fonts/Roboto-Medium.woff +0 -0
- data/lib/starter_web/assets/themes/j1/core/fonts/roboto/fonts/Roboto-Medium.woff2 +0 -0
- data/lib/starter_web/assets/themes/j1/core/fonts/roboto/fonts/Roboto-MediumItalic.ttf +0 -0
- data/lib/starter_web/assets/themes/j1/core/fonts/roboto/fonts/Roboto-Regular.ttf +0 -0
- data/lib/starter_web/assets/themes/j1/core/fonts/roboto/fonts/Roboto-Regular.woff +0 -0
- data/lib/starter_web/assets/themes/j1/core/fonts/roboto/fonts/Roboto-Regular.woff2 +0 -0
- data/lib/starter_web/assets/themes/j1/core/fonts/roboto/fonts/Roboto-Thin.ttf +0 -0
- data/lib/starter_web/assets/themes/j1/core/fonts/roboto/fonts/Roboto-Thin.woff +0 -0
- data/lib/starter_web/assets/themes/j1/core/fonts/roboto/fonts/Roboto-Thin.woff2 +0 -0
- data/lib/starter_web/assets/themes/j1/core/fonts/roboto/fonts/Roboto-ThinItalic.ttf +0 -0
- data/lib/starter_web/assets/themes/j1/core/fonts/roboto/fonts/mplus1mn-bold-ascii.ttf +0 -0
- data/lib/starter_web/assets/themes/j1/core/fonts/roboto/fonts/mplus1mn-bold_italic-ascii.ttf +0 -0
- data/lib/starter_web/assets/themes/j1/core/fonts/roboto/fonts/mplus1mn-italic-ascii.ttf +0 -0
- data/lib/starter_web/assets/themes/j1/core/fonts/roboto/fonts/mplus1mn-regular-ascii-conums.ttf +0 -0
- data/lib/starter_web/assets/themes/j1/core/fonts/roboto/fonts/mplus1p-regular-fallback.ttf +0 -0
- data/lib/starter_web/assets/themes/j1/core/fonts/roboto/fonts/notoserif-bold-subset.ttf +0 -0
- data/lib/starter_web/assets/themes/j1/core/fonts/roboto/fonts/notoserif-bold_italic-subset.ttf +0 -0
- data/lib/starter_web/assets/themes/j1/core/fonts/roboto/fonts/notoserif-italic-subset.ttf +0 -0
- data/lib/starter_web/assets/themes/j1/core/fonts/roboto/fonts/notoserif-regular-subset.ttf +0 -0
- data/lib/starter_web/assets/themes/j1/core/js/adapter/back2top.js +141 -0
- data/lib/starter_web/assets/themes/j1/core/js/adapter/bs_gallery.js +282 -0
- data/lib/starter_web/assets/themes/j1/core/js/adapter/cookiebar.js +112 -0
- data/lib/starter_web/assets/themes/j1/core/js/adapter/custom.js +92 -0
- data/lib/starter_web/assets/themes/j1/core/js/adapter/iframer.js +99 -0
- data/lib/starter_web/assets/themes/j1/core/js/adapter/lightbox.js +95 -0
- data/lib/starter_web/assets/themes/j1/core/js/adapter/logger.js +153 -0
- data/lib/starter_web/assets/themes/j1/core/js/adapter/master_header.js +488 -0
- data/lib/starter_web/assets/themes/j1/core/js/adapter/navigator.js +687 -0
- data/lib/starter_web/assets/themes/j1/core/js/adapter/scroller.js +110 -0
- data/lib/starter_web/assets/themes/j1/core/js/adapter/searcher.js +111 -0
- data/lib/starter_web/assets/themes/j1/core/js/adapter/switcher.js +113 -0
- data/lib/starter_web/assets/themes/j1/core/js/adapter/template.js +608 -0
- data/lib/starter_web/assets/themes/j1/core/js/adapter/toccer.js +295 -0
- data/lib/starter_web/assets/themes/j1/core/js/template.js +79 -0
- data/lib/starter_web/assets/themes/j1/core/js/template.js.map +1 -0
- data/lib/starter_web/assets/themes/j1/core/js/template.min.js +1 -0
- data/lib/starter_web/assets/themes/j1/extensions/carousel/css/carousel.css +81 -0
- data/lib/starter_web/assets/themes/j1/extensions/carousel/css/carousel.min.css +17 -0
- data/lib/starter_web/assets/themes/j1/extensions/carousel/css/carousel_transitions.css +184 -0
- data/lib/starter_web/assets/themes/j1/extensions/carousel/css/carousel_transitions.min.css +17 -0
- data/lib/starter_web/assets/themes/j1/extensions/carousel/css/theme/uno.css +190 -0
- data/lib/starter_web/assets/themes/j1/extensions/carousel/css/theme/uno.min.css +17 -0
- data/lib/starter_web/assets/themes/j1/extensions/carousel/images/ajax-loader.gif +0 -0
- data/lib/starter_web/assets/themes/j1/extensions/carousel/images/grabbing.png +0 -0
- data/lib/starter_web/assets/themes/j1/extensions/carousel/images/owl-logo.png +0 -0
- data/lib/starter_web/assets/themes/j1/extensions/carousel/images/owl.video.play.png +0 -0
- data/lib/starter_web/assets/themes/j1/extensions/carousel/js/carousel.js +1517 -0
- data/lib/starter_web/assets/themes/j1/extensions/carousel/js/carousel.min.js +57 -0
- data/lib/starter_web/assets/themes/j1/extensions/carousel/js/j1_adapter_carousel.js +228 -0
- data/lib/starter_web/assets/themes/j1/extensions/datatables/css/DataTables-1.10.16/images/sort_asc.png +0 -0
- data/lib/starter_web/assets/themes/j1/extensions/datatables/css/DataTables-1.10.16/images/sort_asc_disabled.png +0 -0
- data/lib/starter_web/assets/themes/j1/extensions/datatables/css/DataTables-1.10.16/images/sort_both.png +0 -0
- data/lib/starter_web/assets/themes/j1/extensions/datatables/css/DataTables-1.10.16/images/sort_desc.png +0 -0
- data/lib/starter_web/assets/themes/j1/extensions/datatables/css/DataTables-1.10.16/images/sort_desc_disabled.png +0 -0
- data/lib/starter_web/assets/themes/j1/extensions/datatables/css/datatables.css +1113 -0
- data/lib/starter_web/assets/themes/j1/extensions/datatables/css/datatables.min.css +136 -0
- data/lib/starter_web/assets/themes/j1/extensions/datatables/css/theme/uno.css +473 -0
- data/lib/starter_web/assets/themes/j1/extensions/datatables/js/datatables.js +95360 -0
- data/lib/starter_web/assets/themes/j1/extensions/datatables/js/datatables.min.js +533 -0
- data/lib/starter_web/assets/themes/j1/extensions/iframe_resizer/examples/frame.absolute.html +86 -0
- data/lib/starter_web/assets/themes/j1/extensions/iframe_resizer/examples/frame.content.html +58 -0
- data/lib/starter_web/assets/themes/j1/extensions/iframe_resizer/examples/frame.hover.html +51 -0
- data/lib/starter_web/assets/themes/j1/extensions/iframe_resizer/examples/frame.nested.html +68 -0
- data/lib/starter_web/assets/themes/j1/extensions/iframe_resizer/examples/frame.textarea.html +46 -0
- data/lib/starter_web/assets/themes/j1/extensions/iframe_resizer/examples/frame.tolerance.html +79 -0
- data/lib/starter_web/assets/themes/j1/extensions/iframe_resizer/examples/index.html +70 -0
- data/lib/starter_web/assets/themes/j1/extensions/iframe_resizer/examples/two.html +71 -0
- data/lib/starter_web/assets/themes/j1/extensions/iframe_resizer/js/client/iframeResizer.contentWindow.js +1104 -0
- data/lib/starter_web/assets/themes/j1/extensions/iframe_resizer/js/client/iframeResizer.contentWindow.map +1 -0
- data/lib/starter_web/assets/themes/j1/extensions/iframe_resizer/js/client/iframeResizer.contentWindow.min.js +10 -0
- data/lib/starter_web/assets/themes/j1/extensions/justified_gallery/css/justifiedGallery.css +103 -0
- data/lib/starter_web/assets/themes/j1/extensions/justified_gallery/css/justifiedGallery.min.css +8 -0
- data/lib/starter_web/assets/themes/j1/extensions/justified_gallery/css/theme/uno.css +23 -0
- data/lib/starter_web/assets/themes/j1/extensions/justified_gallery/js/j1_adapter_justified_gallery.js +262 -0
- data/lib/starter_web/assets/themes/j1/extensions/justified_gallery/js/justifiedGallery.3.6.3.js +1145 -0
- data/lib/starter_web/assets/themes/j1/extensions/justified_gallery/js/justifiedGallery.js +1147 -0
- data/lib/starter_web/assets/themes/j1/extensions/justified_gallery/js/justifiedGallery.min.js +9 -0
- data/lib/starter_web/assets/themes/j1/extensions/justified_gallery/less/.csslintrc +19 -0
- data/lib/starter_web/assets/themes/j1/extensions/justified_gallery/less/justifiedGallery.less +113 -0
- data/lib/starter_web/assets/themes/j1/extensions/light_gallery/css/lg-fb-comment-box.css +57 -0
- data/lib/starter_web/assets/themes/j1/extensions/light_gallery/css/lg-fb-comment-box.min.css +1 -0
- data/lib/starter_web/assets/themes/j1/extensions/light_gallery/css/lg-transitions.css +777 -0
- data/lib/starter_web/assets/themes/j1/extensions/light_gallery/css/lg-transitions.min.css +1 -0
- data/lib/starter_web/assets/themes/j1/extensions/light_gallery/css/lightgallery.css +980 -0
- data/lib/starter_web/assets/themes/j1/extensions/light_gallery/css/lightgallery.min.css +1 -0
- data/lib/starter_web/assets/themes/j1/extensions/light_gallery/css/theme/uno.css +330 -0
- data/lib/starter_web/assets/themes/j1/extensions/light_gallery/fonts/lg.eot +0 -0
- data/lib/starter_web/assets/themes/j1/extensions/light_gallery/fonts/lg.svg +47 -0
- data/lib/starter_web/assets/themes/j1/extensions/light_gallery/fonts/lg.ttf +0 -0
- data/lib/starter_web/assets/themes/j1/extensions/light_gallery/fonts/lg.woff +0 -0
- data/lib/starter_web/assets/themes/j1/extensions/light_gallery/img/icons/animation-w.png +0 -0
- data/lib/starter_web/assets/themes/j1/extensions/light_gallery/img/icons/customize-w.png +0 -0
- data/lib/starter_web/assets/themes/j1/extensions/light_gallery/img/icons/dynamic-w.png +0 -0
- data/lib/starter_web/assets/themes/j1/extensions/light_gallery/img/icons/facebook-icon.svg +10 -0
- data/lib/starter_web/assets/themes/j1/extensions/light_gallery/img/icons/googleplus-icon.svg +30 -0
- data/lib/starter_web/assets/themes/j1/extensions/light_gallery/img/icons/html5-w.png +0 -0
- data/lib/starter_web/assets/themes/j1/extensions/light_gallery/img/icons/linked-in.png +0 -0
- data/lib/starter_web/assets/themes/j1/extensions/light_gallery/img/icons/module-w.png +0 -0
- data/lib/starter_web/assets/themes/j1/extensions/light_gallery/img/icons/play-button.png +0 -0
- data/lib/starter_web/assets/themes/j1/extensions/light_gallery/img/icons/responsive-w.png +0 -0
- data/lib/starter_web/assets/themes/j1/extensions/light_gallery/img/icons/thumb-w.png +0 -0
- data/lib/starter_web/assets/themes/j1/extensions/light_gallery/img/icons/touch-w.png +0 -0
- data/lib/starter_web/assets/themes/j1/extensions/light_gallery/img/icons/twitter-icon.svg +15 -0
- data/lib/starter_web/assets/themes/j1/extensions/light_gallery/img/icons/twitter.png +0 -0
- data/lib/starter_web/assets/themes/j1/extensions/light_gallery/img/icons/video1-w.png +0 -0
- data/lib/starter_web/assets/themes/j1/extensions/light_gallery/img/icons/zoom-w.png +0 -0
- data/lib/starter_web/assets/themes/j1/extensions/light_gallery/img/icons/zoom.png +0 -0
- data/lib/starter_web/assets/themes/j1/extensions/light_gallery/img/loading.gif +0 -0
- data/lib/starter_web/assets/themes/j1/extensions/light_gallery/img/video-play.png +0 -0
- data/lib/starter_web/assets/themes/j1/extensions/light_gallery/img/vimeo-play.png +0 -0
- data/lib/starter_web/assets/themes/j1/extensions/light_gallery/img/youtube-play.png +0 -0
- data/lib/starter_web/assets/themes/j1/extensions/light_gallery/js/lg-autoplay.js +206 -0
- data/lib/starter_web/assets/themes/j1/extensions/light_gallery/js/lg-autoplay.min.js +4 -0
- data/lib/starter_web/assets/themes/j1/extensions/light_gallery/js/lg-fullscreen.js +116 -0
- data/lib/starter_web/assets/themes/j1/extensions/light_gallery/js/lg-fullscreen.min.js +4 -0
- data/lib/starter_web/assets/themes/j1/extensions/light_gallery/js/lg-hash.js +101 -0
- data/lib/starter_web/assets/themes/j1/extensions/light_gallery/js/lg-hash.min.js +4 -0
- data/lib/starter_web/assets/themes/j1/extensions/light_gallery/js/lg-pager.js +105 -0
- data/lib/starter_web/assets/themes/j1/extensions/light_gallery/js/lg-pager.min.js +4 -0
- data/lib/starter_web/assets/themes/j1/extensions/light_gallery/js/lg-share.js +107 -0
- data/lib/starter_web/assets/themes/j1/extensions/light_gallery/js/lg-share.min.js +4 -0
- data/lib/starter_web/assets/themes/j1/extensions/light_gallery/js/lg-thumbnail.js +478 -0
- data/lib/starter_web/assets/themes/j1/extensions/light_gallery/js/lg-thumbnail.min.js +4 -0
- data/lib/starter_web/assets/themes/j1/extensions/light_gallery/js/lg-video.js +331 -0
- data/lib/starter_web/assets/themes/j1/extensions/light_gallery/js/lg-video.min.js +4 -0
- data/lib/starter_web/assets/themes/j1/extensions/light_gallery/js/lg-zoom.js +527 -0
- data/lib/starter_web/assets/themes/j1/extensions/light_gallery/js/lg-zoom.min.js +4 -0
- data/lib/starter_web/assets/themes/j1/extensions/light_gallery/js/lightgallery.js +1364 -0
- data/lib/starter_web/assets/themes/j1/extensions/light_gallery/js/lightgallery.min.js +4 -0
- data/lib/starter_web/assets/themes/j1/extensions/rouge/css/base16.dark/theme.css +78 -0
- data/lib/starter_web/assets/themes/j1/extensions/rouge/css/base16.light/theme.css +77 -0
- data/lib/starter_web/assets/themes/j1/extensions/rouge/css/base16.monokai.dark/theme.css +78 -0
- data/lib/starter_web/assets/themes/j1/extensions/rouge/css/base16.monokai.light/theme.css +77 -0
- data/lib/starter_web/assets/themes/j1/extensions/rouge/css/base16.monokai/theme.css +78 -0
- data/lib/starter_web/assets/themes/j1/extensions/rouge/css/base16.solarized.dark/theme.css +78 -0
- data/lib/starter_web/assets/themes/j1/extensions/rouge/css/base16.solarized.light/theme.css +77 -0
- data/lib/starter_web/assets/themes/j1/extensions/rouge/css/base16.solarized/theme.css +77 -0
- data/lib/starter_web/assets/themes/j1/extensions/rouge/css/base16/theme.css +77 -0
- data/lib/starter_web/assets/themes/j1/extensions/rouge/css/colorful/theme.css +170 -0
- data/lib/starter_web/assets/themes/j1/extensions/rouge/css/github/theme.css +209 -0
- data/lib/starter_web/assets/themes/j1/extensions/rouge/css/gruvbox.dark/theme.css +84 -0
- data/lib/starter_web/assets/themes/j1/extensions/rouge/css/gruvbox.light/theme.css +84 -0
- data/lib/starter_web/assets/themes/j1/extensions/rouge/css/gruvbox/theme.css +84 -0
- data/lib/starter_web/assets/themes/j1/extensions/rouge/css/igorpro/theme.css +32 -0
- data/lib/starter_web/assets/themes/j1/extensions/rouge/css/molokai/theme.css +208 -0
- data/lib/starter_web/assets/themes/j1/extensions/rouge/css/monokai.sublime/theme.css +187 -0
- data/lib/starter_web/assets/themes/j1/extensions/rouge/css/monokai/theme.css +210 -0
- data/lib/starter_web/assets/themes/j1/extensions/rouge/css/pastie/theme.css +146 -0
- data/lib/starter_web/assets/themes/j1/extensions/rouge/css/thankful_eyes/theme.css +173 -0
- data/lib/starter_web/assets/themes/j1/extensions/rouge/css/tulip/theme.css +164 -0
- data/lib/starter_web/assets/themes/j1/extensions/videojs/css/font/vjs.ttf +0 -0
- data/lib/starter_web/assets/themes/j1/extensions/videojs/css/font/vjs.woff +0 -0
- data/lib/starter_web/assets/themes/j1/extensions/videojs/css/video-js.4.12.15.css +1011 -0
- data/lib/starter_web/assets/themes/j1/extensions/videojs/css/video-js.4.12.15.min.css +5 -0
- data/lib/starter_web/assets/themes/j1/extensions/videojs/js/video.4.12.15.min.js +203 -0
- data/lib/starter_web/assets/themes/j1/extensions/vimeo_player/js/froogaloop2.min.js +4 -0
- data/lib/starter_web/assets/videos/gallery/video1-poster.jpg +0 -0
- data/lib/starter_web/assets/videos/gallery/video1-thumb.jpg +0 -0
- data/lib/starter_web/assets/videos/gallery/video2-poster.jpg +0 -0
- data/lib/starter_web/assets/videos/gallery/video2-thumb.jpg +0 -0
- data/lib/starter_web/assets/videos/gallery/video_adele-poster.jpg +0 -0
- data/lib/starter_web/assets/videos/gallery/video_gaga-poster.jpg +0 -0
- data/lib/starter_web/assets/videos/gallery/video_gwen-poster.jpg +0 -0
- data/lib/starter_web/assets/videos/gallery/video_michelle-poster.jpg +0 -0
- data/lib/starter_web/assets/videos/headers/still/underground-broadway.png +0 -0
- data/lib/starter_web/assets/videos/headers/still/victoria-oskolovich-on-vimeo.png +0 -0
- data/lib/starter_web/collections/_biography/a-life-in-questions.adoc +76 -0
- data/lib/starter_web/collections/_biography/born-to-run.adoc +73 -0
- data/lib/starter_web/collections/_biography/forty-autumns.adoc +70 -0
- data/lib/starter_web/collections/_biography/not-dead-yet.adoc +64 -0
- data/lib/starter_web/collections/_biography/princess-diarist-the.adoc +67 -0
- data/lib/starter_web/collections/_biography/when-breath-becomes-air.adoc +68 -0
- data/lib/starter_web/collections/_fantasy/harry-potter-deathly-hallows.adoc +59 -0
- data/lib/starter_web/collections/_fantasy/harry-potter-philosophers-stone.adoc +59 -0
- data/lib/starter_web/collections/_fantasy/mistborn-trilogy.adoc +57 -0
- data/lib/starter_web/collections/_fantasy/ready-player-one.adoc +58 -0
- data/lib/starter_web/collections/_fantasy/sword-of-destiny.adoc +57 -0
- data/lib/starter_web/collections/_fantasy/terry-pratchet-diary-2017.adoc +55 -0
- data/lib/starter_web/collections/_featured/static-site-generators.adoc +43 -0
- data/lib/starter_web/collections/_romance/breath-of-snow-and-ashes-a.adoc +62 -0
- data/lib/starter_web/collections/_romance/dressmaker-the.adoc +56 -0
- data/lib/starter_web/collections/_romance/fiery-cross-the.adoc +64 -0
- data/lib/starter_web/collections/_romance/it-ends-with-us.adoc +61 -0
- data/lib/starter_web/collections/_romance/outlander-novel.adoc +73 -0
- data/lib/starter_web/collections/_romance/virgins-outlander-short-story.adoc +57 -0
- data/lib/starter_web/collections/posts/featured/_posts/0000-00-00-welcome-to-j1-template.adoc.erb +60 -0
- data/lib/starter_web/collections/posts/featured/_posts/000_includes/attributes.asciidoc +15 -0
- data/lib/starter_web/collections/posts/featured/_posts/2017-05-01-confusion-about-base-url.adoc +102 -0
- data/lib/starter_web/collections/posts/featured/_posts/2017-06-01-top-open-source-static-site-generators.adoc +79 -0
- data/lib/starter_web/collections/posts/featured/_posts/2017-07-01-what-is-a-static-site.adoc +146 -0
- data/lib/starter_web/collections/posts/series/_posts/000_includes/attributes.asciidoc +66 -0
- data/lib/starter_web/collections/posts/series/_posts/000_includes/documents/100-docker-using-shared-folders.asciidoc +415 -0
- data/lib/starter_web/collections/posts/series/_posts/000_includes/documents/loop.sh +28 -0
- data/lib/starter_web/collections/posts/series/_posts/000_includes/tables/debug_variables.asciidoc +47 -0
- data/lib/starter_web/collections/posts/series/_posts/2018-11-01-docker-using-shared-folders.adoc +94 -0
- data/lib/starter_web/collections/posts/wikipedia/_posts/2016-11-20-minneapolis.adoc +112 -0
- data/lib/starter_web/collections/posts/wikipedia/_posts/2016-11-24-narcisse-snake-pits.adoc +81 -0
- data/lib/starter_web/collections/posts/wikipedia/_posts/2016-11-26-columbia-river.adoc +68 -0
- data/lib/starter_web/favicon.ico +0 -0
- data/lib/starter_web/index.html +57 -0
- data/lib/starter_web/package.json +104 -0
- data/lib/starter_web/pages/about/about_site.adoc +40 -0
- data/lib/starter_web/pages/about/about_you.adoc +103 -0
- data/lib/starter_web/pages/blog/navigator/archive.html +97 -0
- data/lib/starter_web/pages/blog/navigator/archive_by_category.html +135 -0
- data/lib/starter_web/pages/blog/navigator/archive_by_date.html +115 -0
- data/lib/starter_web/pages/blog/navigator/archive_by_tag.html +168 -0
- data/lib/starter_web/pages/blog/navigator/index.html +41 -0
- data/lib/starter_web/pages/bookshelf/100_about_jekyll_collections.adoc +264 -0
- data/lib/starter_web/pages/bookshelf/200_book_shelf_biography.adoc +41 -0
- data/lib/starter_web/pages/bookshelf/300_book_shelf_fantasy.adoc +43 -0
- data/lib/starter_web/pages/bookshelf/400_book_shelf_romance.adoc +43 -0
- data/lib/starter_web/pages/legal/de/100_impress.adoc +80 -0
- data/lib/starter_web/pages/legal/de/200_terms_of_use.adoc +48 -0
- data/lib/starter_web/pages/legal/de/300_privacy.adoc +233 -0
- data/lib/starter_web/pages/legal/de/400_license_agreement.adoc +388 -0
- data/lib/starter_web/pages/legal/de/500_support.adoc +13 -0
- data/lib/starter_web/pages/legal/en/100_impress.adoc +80 -0
- data/lib/starter_web/pages/legal/en/200_terms_of_use.adoc +44 -0
- data/lib/starter_web/pages/legal/en/300_privacy.adoc +269 -0
- data/lib/starter_web/pages/legal/en/400_license_agreement.adoc +430 -0
- data/lib/starter_web/pages/legal/en/500_support.adoc +13 -0
- data/lib/starter_web/pages/panel/100_intro_panel.adoc +151 -0
- data/lib/starter_web/pages/previewer/000_includes/attributes.asciidoc +75 -0
- data/lib/starter_web/pages/previewer/000_includes/tables/mdi_icons/100_absolute_sizes.asciidoc +39 -0
- data/lib/starter_web/pages/previewer/000_includes/tables/mdi_icons/110_bs_grid_sizes.asciidoc +47 -0
- data/lib/starter_web/pages/previewer/000_includes/tables/mdi_icons/120_relative_sizes.asciidoc +87 -0
- data/lib/starter_web/pages/previewer/000_includes/tables/mdi_icons/200_rotate.asciidoc +71 -0
- data/lib/starter_web/pages/previewer/000_includes/tables/mdi_icons/300_flip.asciidoc +30 -0
- data/lib/starter_web/pages/previewer/000_includes/tables/mdi_icons/400_spin_pulsed.asciidoc +39 -0
- data/lib/starter_web/pages/previewer/000_includes/tables/mdi_icons/500_bw_color_palette.asciidoc +60 -0
- data/lib/starter_web/pages/previewer/000_includes/tables/mdi_icons/510_bs_color_palette.asciidoc +54 -0
- data/lib/starter_web/pages/previewer/000_includes/tables/mdi_icons/600_md_color_palette.asciidoc +94 -0
- data/lib/starter_web/pages/previewer/000_includes/tables/mdi_icons/601_md_color_palette_indigo.asciidoc +94 -0
- data/lib/starter_web/pages/previewer/000_includes/tables/mdi_icons/602_md_color_palette_pink.asciidoc +94 -0
- data/lib/starter_web/pages/previewer/000_includes/tables/twitter_emoji/100_bs_sizes.asciidoc +46 -0
- data/lib/starter_web/pages/previewer/000_includes/tables/twitter_emoji/100_relative_sizes.asciidoc +46 -0
- data/lib/starter_web/pages/previewer/000_includes/tables/twitter_emoji/200_rotate.asciidoc +70 -0
- data/lib/starter_web/pages/previewer/000_includes/tables/twitter_emoji/300_flip.asciidoc +29 -0
- data/lib/starter_web/pages/previewer/000_includes/tables/twitter_emoji/400_spin_pulsed.asciidoc +30 -0
- data/lib/starter_web/pages/previewer/bootstrap_theme.adoc +1820 -0
- data/lib/starter_web/pages/previewer/justified_gallery.html +353 -0
- data/lib/starter_web/pages/previewer/mdi_icons_preview.adoc +314 -0
- data/lib/starter_web/pages/previewer/twitter_emoji_preview.adoc +181 -0
- data/lib/starter_web/pages/start/000_includes/attributes.asciidoc +30 -0
- data/lib/starter_web/pages/start/change_me_first.adoc +54 -0
- data/lib/starter_web/pages/start/dm920hd.adoc +467 -0
- data/lib/starter_web/pages/start/documentation/user_guide/100_header/000_includes/attributes.asciidoc +72 -0
- data/lib/starter_web/pages/start/documentation/user_guide/100_header/000_includes/documents/200_library_features.asciidoc +285 -0
- data/lib/starter_web/pages/start/documentation/user_guide/100_header/000_includes/images/001_menu_bar_example.png +0 -0
- data/lib/starter_web/pages/start/documentation/user_guide/100_header/000_includes/images/005_navbar.png +0 -0
- data/lib/starter_web/pages/start/documentation/user_guide/100_header/000_includes/images/005_navigation_bar.png +0 -0
- data/lib/starter_web/pages/start/documentation/user_guide/100_header/000_includes/images/006_navigation_side_bar.png +0 -0
- data/lib/starter_web/pages/start/documentation/user_guide/100_header/000_includes/images/006_searchbar.png +0 -0
- data/lib/starter_web/pages/start/documentation/user_guide/100_header/000_includes/images/007_sidebar.png +0 -0
- data/lib/starter_web/pages/start/documentation/user_guide/100_header/000_includes/images/008_navbar_blank.png +0 -0
- data/lib/starter_web/pages/start/documentation/user_guide/100_header/000_includes/images/010_nav_bar.png +0 -0
- data/lib/starter_web/pages/start/documentation/user_guide/100_header/000_includes/images/010_top_search.png +0 -0
- data/lib/starter_web/pages/start/documentation/user_guide/100_header/000_includes/images/012_top_search.png +0 -0
- data/lib/starter_web/pages/start/documentation/user_guide/100_header/000_includes/images/015_quicklink_bar.png +0 -0
- data/lib/starter_web/pages/start/documentation/user_guide/100_header/000_includes/images/017_side_bar.png +0 -0
- data/lib/starter_web/pages/start/documentation/user_guide/100_header/000_includes/images/020_menu_bar.png +0 -0
- data/lib/starter_web/pages/start/documentation/user_guide/100_header/000_includes/images/400_master_header.png +0 -0
- data/lib/starter_web/pages/start/documentation/user_guide/100_header/000_includes/images/410_text_header.png +0 -0
- data/lib/starter_web/pages/start/documentation/user_guide/100_header/000_includes/images/411_text_header.png +0 -0
- data/lib/starter_web/pages/start/documentation/user_guide/100_header/000_includes/images/412_header_anatomy.png +0 -0
- data/lib/starter_web/pages/start/documentation/user_guide/100_header/000_includes/images/415_image_header_caption.png +0 -0
- data/lib/starter_web/pages/start/documentation/user_guide/100_header/000_includes/images/snagit/412_header_anatomy.snag +0 -0
- data/lib/starter_web/pages/start/documentation/user_guide/100_header/000_includes/tables/000_text_sizes.asciidoc +50 -0
- data/lib/starter_web/pages/start/documentation/user_guide/100_header/000_includes/tables/410_common_header_parameters.asciidoc +120 -0
- data/lib/starter_web/pages/start/documentation/user_guide/100_header/000_includes/tables/420_common_image_header_parameters.asciidoc +52 -0
- data/lib/starter_web/pages/start/documentation/user_guide/100_header/000_includes/tables/421_additional_image_header_parameters.asciidoc +36 -0
- data/lib/starter_web/pages/start/documentation/user_guide/100_header/000_includes/tables/430_video_header_parameters.asciidoc +26 -0
- data/lib/starter_web/pages/start/documentation/user_guide/100_header/000_includes/tables/440_image_and_video_transitions.asciidoc +36 -0
- data/lib/starter_web/pages/start/documentation/user_guide/100_header/000_includes/tables/450_image_and_video_header_defaults.asciidoc +82 -0
- data/lib/starter_web/pages/start/documentation/user_guide/100_header/000_includes/tables/451_additional_image_and_video_header_defaults.asciidoc +23 -0
- data/lib/starter_web/pages/start/documentation/user_guide/100_header/100_header.adoc +452 -0
- data/lib/starter_web/pages/start/documentation/user_guide/240_auth_manager/000_includes/attributes.asciidoc +119 -0
- data/lib/starter_web/pages/start/documentation/user_guide/240_auth_manager/100_auth_manager.adoc +539 -0
- data/lib/starter_web/pages/start/downloads/quickstarter/000_includes/attributes.asciidoc +26 -0
- data/lib/starter_web/pages/start/downloads/quickstarter/000_includes/tables/100_quickstart_installation_packages.asciidoc +20 -0
- data/lib/starter_web/pages/start/downloads/quickstarter/100_linux_starter.adoc +566 -0
- data/lib/starter_web/pages/start/downloads/quickstarter/200_macos_starter.adoc +742 -0
- data/lib/starter_web/pages/start/downloads/quickstarter/300_windows_starter.adoc +742 -0
- data/lib/starter_web/pages/start/downloads/quickstarter/quickstart.adoc +104 -0
- data/lib/starter_web/pages/start/kickstarter/web_in_a_day/000_includes/attributes.asciidoc +24 -0
- data/lib/starter_web/pages/start/kickstarter/web_in_a_day/000_includes/documents/collections.adoc +268 -0
- data/lib/starter_web/pages/start/kickstarter/web_in_a_day/000_includes/documents/configuration.adoc +780 -0
- data/lib/starter_web/pages/start/kickstarter/web_in_a_day/000_includes/documents/directory_structure.adoc +106 -0
- data/lib/starter_web/pages/start/kickstarter/web_in_a_day/000_includes/documents/jekyll_commandline.adoc +94 -0
- data/lib/starter_web/pages/start/kickstarter/web_in_a_day/000_includes/documents/layout_inheritance.adoc +305 -0
- data/lib/starter_web/pages/start/kickstarter/web_in_a_day/000_includes/documents/manage_pages.adoc +365 -0
- data/lib/starter_web/pages/start/kickstarter/web_in_a_day/000_includes/documents/manage_posts.adoc +203 -0
- data/lib/starter_web/pages/start/kickstarter/web_in_a_day/000_includes/documents/pagination.adoc +228 -0
- data/lib/starter_web/pages/start/kickstarter/web_in_a_day/000_includes/documents/plugins.adoc +777 -0
- data/lib/starter_web/pages/start/kickstarter/web_in_a_day/000_includes/documents/templates.adoc +249 -0
- data/lib/starter_web/pages/start/kickstarter/web_in_a_day/000_includes/documents/variables.adoc +175 -0
- data/lib/starter_web/pages/start/kickstarter/web_in_a_day/100_introduction.adoc +169 -0
- data/lib/starter_web/pages/start/kickstarter/web_in_a_day/110_preparations.adoc +177 -0
- data/lib/starter_web/pages/start/kickstarter/web_in_a_day/120_getting_started.adoc +180 -0
- data/lib/starter_web/pages/start/kickstarter/web_in_a_day/_unused/20_j1_anatomy.asciidoc +97 -0
- data/lib/starter_web/pages/start/kickstarter/web_in_a_day/_unused/30_j1_configure_your_site.asciidoc +48 -0
- data/lib/starter_web/pages/start/kickstarter/web_in_a_day/_unused/40_j1_create_content.asciidoc +48 -0
- data/lib/starter_web/pages/start/kickstarter/web_in_a_day/_unused/50_j1_customize_your_pages.asciidoc +48 -0
- data/lib/starter_web/pages/start/read_me_first.adoc +102 -0
- data/lib/starter_web/pages/start/roundtrip/000_includes/attributes.asciidoc +49 -0
- data/lib/starter_web/pages/start/roundtrip/000_includes/documents/100_gistblock.asciidoc +27 -0
- data/lib/starter_web/pages/start/roundtrip/100_present_images.adoc +411 -0
- data/lib/starter_web/pages/start/roundtrip/200_cards.adoc +769 -0
- data/lib/starter_web/pages/start/roundtrip/300_typography.adoc +518 -0
- data/lib/starter_web/pages/start/roundtrip/400_icon_fonts.adoc +182 -0
- data/lib/starter_web/pages/start/roundtrip/500_asciidoc_extensions.adoc +462 -0
- data/lib/starter_web/pages/start/roundtrip/600_themes.adoc +75 -0
- data/lib/starter_web/pages/start/roundtrip/700_additional_modals.adoc +1369 -0
- data/lib/starter_web/pages/teaser/100_core.adoc +31 -0
- data/lib/starter_web/pages/teaser/200_components.adoc +30 -0
- data/lib/starter_web/pages/teaser/300_modules.adoc +32 -0
- data/screenshot.png +0 -0
- metadata +925 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["iframeResizer.contentWindow.js"],"names":["window","undefined","addEventListener","el","evt","func","attachEvent","removeEventListener","detachEvent","capitalizeFirstLetter","string","charAt","toUpperCase","slice","throttle","context","args","result","timeout","previous","later","getNow","apply","now","remaining","throttledTimer","this","arguments","clearTimeout","setTimeout","formatLogMsg","msg","msgID","myID","log","logging","console","warn","init","readDataFromParent","location","href","readDataFromPage","setMargin","setBodyStyle","bodyBackground","bodyPadding","injectClearFixIntoBodyElement","checkHeightMode","checkWidthMode","stopInfiniteResizingOfIFrame","setupPublicMethods","startEventListeners","inPageLinks","setupInPageLinks","sendSize","readyCallback","strBool","str","data","initMsg","substr","msgIdLen","split","bodyMargin","Number","calculateWidth","interval","autoResize","bodyMarginStr","heightCalcMode","tolerance","enable","resizeFrom","widthCalcMode","readData","iFrameResizer","JSON","stringify","messageCallback","targetOriginDefault","targetOrigin","heightCalculationMethod","widthCalculationMethod","setupCustomCalcMethods","calcMode","calcFunc","customCalcMethods","Object","constructor","chkCSS","attr","value","indexOf","document","body","style","documentElement","height","manageTriggerEvent","options","listener","add","eventName","handleEvent","eventType","eventHandlersByName","remove","eventNames","Array","prototype","map","method","manageEventListeners","checkCalcMode","calcModeDefault","modes","type","heightCalcModeDefault","getHeight","widthCalcModeDefault","getWidth","setupMutationObserver","stopMsgsToParent","sendPermit","removeMsgListener","receiver","disconnectMutationObserver","bodyObserver","disconnect","stopEventListeners","clearInterval","intervalTimer","teardown","clearFix","createElement","clear","display","appendChild","getPagePosition","x","pageXOffset","scrollLeft","y","pageYOffset","scrollTop","getElementPosition","elPosition","getBoundingClientRect","pagePosition","parseInt","left","top","findTarget","jumpToTarget","target","jumpPosition","hash","sendMsg","hashData","decodeURIComponent","getElementById","getElementsByName","checkLocationHash","bindAnchors","setupLink","linkClicked","e","preventDefault","getAttribute","forEach","call","querySelectorAll","bindLocationHash","initCheck","eventCancelTimer","enableInPageLinks","win","parentIFrame","resize","close","getId","getPageInfo","callback","pageInfoCallback","moveToAnchor","reset","resetIFrame","scrollTo","scrollToOffset","sendMessage","setHeightCalculationMethod","setWidthCalculationMethod","setTargetOrigin","size","customHeight","customWidth","valString","initInterval","setInterval","Math","abs","setupBodyMutationObserver","addImageLoadListners","mutation","addImageLoadListener","element","complete","src","imageLoaded","imageError","elements","push","attributeName","removeFromArray","splice","removeImageLoadListener","imageEventTriggered","event","typeDesc","mutationObserved","mutations","createMutationObserver","querySelector","config","attributes","attributeOldValue","characterData","characterDataOldValue","childList","subtree","observer","MutationObserver","observe","WebKitMutationObserver","forceIntervalTimer","getComputedStyle","prop","convertUnitsToPxForIE8","PIXEL","test","base","runtimeStyle","currentStyle","pixelLeft","retVal","defaultView","chkEventThottle","timer","getMaxElement","side","elementsLength","length","elVal","maxVal","Side","i","getAllMeasurements","dimention","bodyOffset","bodyScroll","documentElementOffset","documentElementScroll","getTaggedElements","tag","noTaggedElementsFound","getAllElements","sizeIFrame","triggerEvent","triggerEventDesc","resizeIFrame","currentHeight","width","currentWidth","isSizeChangeDetected","checkTolarance","a","b","isForceResizableEvent","isForceResizableCalcMode","resetRequiredMethods","logIgnored","checkDownSizing","lockTrigger","recordTrigger","resetPage","isDoubleFiredEvent","triggerLocked","doubleEventList","sizeIFrameThrottled","triggerLockedTimer","triggerReset","hcm","sendToParent","message","postMessage","isMessageForUs","getMessageType","getData","isMiddleTier","isInitMsg","true","false","callFromParent","messageType","processRequestFromParent","processMessage","firstRun","fireInit","source","initLock","initFromParent","inPageLink","pageInfo","msgBody","parse","chkLateLoaded","readyState","parent","click","max","min","offsetHeight","scrollWidth","Date","getTime","offset","scrollHeight","custom","grow","lowestElement","taggedElement","offsetWidth","scroll","rightMostElement"],"mappings":"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","file":"iframeResizer.contentWindow.min.js","sourcesContent":["/*\n * File: iframeResizer.contentWindow.js\n * Desc: Include this file in any page being loaded into an iframe\n * to force the iframe to resize to the content size.\n * Requires: iframeResizer.js on host page.\n * Doc: https://github.com/davidjbradshaw/iframe-resizer\n * Author: David J. Bradshaw - dave@bradshaw.net\n * Contributor: Jure Mav - jure.mav@gmail.com\n * Contributor: Ian Caunce - ian@hallnet.co.uk\n */\n\n\n;(function(window, undefined) {\n\t'use strict';\n\n\tvar\n\t\tautoResize = true,\n\t\tbase = 10,\n\t\tbodyBackground = '',\n\t\tbodyMargin = 0,\n\t\tbodyMarginStr = '',\n\t\tbodyObserver = null,\n\t\tbodyPadding = '',\n\t\tcalculateWidth = false,\n\t\tdoubleEventList = {'resize':1,'click':1},\n\t\teventCancelTimer = 128,\n\t\tfirstRun = true,\n\t\theight = 1,\n\t\theightCalcModeDefault = 'bodyOffset',\n\t\theightCalcMode = heightCalcModeDefault,\n\t\tinitLock = true,\n\t\tinitMsg = '',\n\t\tinPageLinks = {},\n\t\tinterval = 32,\n\t\tintervalTimer = null,\n\t\tlogging = false,\n\t\tmsgID = '[iFrameSizer]', //Must match host page msg ID\n\t\tmsgIdLen = msgID.length,\n\t\tmyID = '',\n\t\tobserver = null,\n\t\tresetRequiredMethods = {max:1,min:1,bodyScroll:1,documentElementScroll:1},\n\t\tresizeFrom = 'child',\n\t\tsendPermit = true,\n\t\ttarget = window.parent,\n\t\ttargetOriginDefault = '*',\n\t\ttolerance = 0,\n\t\ttriggerLocked = false,\n\t\ttriggerLockedTimer = null,\n\t\tthrottledTimer = 16,\n\t\twidth = 1,\n\t\twidthCalcModeDefault = 'scroll',\n\t\twidthCalcMode = widthCalcModeDefault,\n\t\twin = window,\n\t\tmessageCallback = function(){ warn('MessageCallback function not defined'); },\n\t\treadyCallback = function(){},\n\t\tpageInfoCallback = function(){},\n\t\tcustomCalcMethods = {\n\t\t\theight: function(){\n\t\t\t\twarn('Custom height calculation function not defined');\n\t\t\t\treturn document.documentElement.offsetHeight;\n\t\t\t},\n\t\t\twidth: function(){\n\t\t\t\twarn('Custom width calculation function not defined');\n\t\t\t\treturn document.body.scrollWidth;\n\t\t\t}\n\t\t},\n\t\teventHandlersByName = {};\n\n\n\tfunction addEventListener(el,evt,func){\n\t\t/* istanbul ignore else */ // Not testable in phantonJS\n\t\tif ('addEventListener' in window){\n\t\t\tel.addEventListener(evt,func, false);\n\t\t} else if ('attachEvent' in window){ //IE\n\t\t\tel.attachEvent('on'+evt,func);\n\t\t}\n\t}\n\n\tfunction removeEventListener(el,evt,func){\n\t\t/* istanbul ignore else */ // Not testable in phantonJS\n\t\tif ('removeEventListener' in window){\n\t\t\tel.removeEventListener(evt,func, false);\n\t\t} else if ('detachEvent' in window){ //IE\n\t\t\tel.detachEvent('on'+evt,func);\n\t\t}\n\t}\n\n\tfunction capitalizeFirstLetter(string) {\n\t\treturn string.charAt(0).toUpperCase() + string.slice(1);\n\t}\n\n\t//Based on underscore.js\n\tfunction throttle(func) {\n\t\tvar\n\t\t\tcontext, args, result,\n\t\t\ttimeout = null,\n\t\t\tprevious = 0,\n\t\t\tlater = function() {\n\t\t\t\tprevious = getNow();\n\t\t\t\ttimeout = null;\n\t\t\t\tresult = func.apply(context, args);\n\t\t\t\tif (!timeout) {\n\t\t\t\t\tcontext = args = null;\n\t\t\t\t}\n\t\t\t};\n\n\t\treturn function() {\n\t\t\tvar now = getNow();\n\n\t\t\tif (!previous) {\n\t\t\t\tprevious = now;\n\t\t\t}\n\n\t\t\tvar remaining = throttledTimer - (now - previous);\n\n\t\t\tcontext = this;\n\t\t\targs = arguments;\n\n\t\t\tif (remaining <= 0 || remaining > throttledTimer) {\n\t\t\t\tif (timeout) {\n\t\t\t\t\tclearTimeout(timeout);\n\t\t\t\t\ttimeout = null;\n\t\t\t\t}\n\n\t\t\t\tprevious = now;\n\t\t\t\tresult = func.apply(context, args);\n\n\t\t\t\tif (!timeout) {\n\t\t\t\t\tcontext = args = null;\n\t\t\t\t}\n\n\t\t\t} else if (!timeout) {\n\t\t\t\ttimeout = setTimeout(later, remaining);\n\t\t\t}\n\n\t\t\treturn result;\n\t\t};\n\t}\n\n\tvar getNow = Date.now || function() {\n\t\t/* istanbul ignore next */ // Not testable in PhantonJS\n\t\treturn new Date().getTime();\n\t};\n\n\tfunction formatLogMsg(msg){\n\t\treturn msgID + '[' + myID + ']' + ' ' + msg;\n\t}\n\n\tfunction log(msg){\n\t\tif (logging && ('object' === typeof window.console)){\n\t\t\tconsole.log(formatLogMsg(msg));\n\t\t}\n\t}\n\n\tfunction warn(msg){\n\t\tif ('object' === typeof window.console){\n\t\t\tconsole.warn(formatLogMsg(msg));\n\t\t}\n\t}\n\n\n\tfunction init(){\n\t\treadDataFromParent();\n\t\tlog('Initialising iFrame ('+location.href+')');\n\t\treadDataFromPage();\n\t\tsetMargin();\n\t\tsetBodyStyle('background',bodyBackground);\n\t\tsetBodyStyle('padding',bodyPadding);\n\t\tinjectClearFixIntoBodyElement();\n\t\tcheckHeightMode();\n\t\tcheckWidthMode();\n\t\tstopInfiniteResizingOfIFrame();\n\t\tsetupPublicMethods();\n\t\tstartEventListeners();\n\t\tinPageLinks = setupInPageLinks();\n\t\tsendSize('init','Init message from host page');\n\t\treadyCallback();\n\t}\n\n\tfunction readDataFromParent(){\n\n\t\tfunction strBool(str){\n\t\t\treturn 'true' === str ? true : false;\n\t\t}\n\n\t\tvar data = initMsg.substr(msgIdLen).split(':');\n\n\t\tmyID = data[0];\n\t\tbodyMargin = (undefined !== data[1]) ? Number(data[1]) : bodyMargin; //For V1 compatibility\n\t\tcalculateWidth = (undefined !== data[2]) ? strBool(data[2]) : calculateWidth;\n\t\tlogging = (undefined !== data[3]) ? strBool(data[3]) : logging;\n\t\tinterval = (undefined !== data[4]) ? Number(data[4]) : interval;\n\t\tautoResize = (undefined !== data[6]) ? strBool(data[6]) : autoResize;\n\t\tbodyMarginStr = data[7];\n\t\theightCalcMode = (undefined !== data[8]) ? data[8] : heightCalcMode;\n\t\tbodyBackground = data[9];\n\t\tbodyPadding = data[10];\n\t\ttolerance = (undefined !== data[11]) ? Number(data[11]) : tolerance;\n\t\tinPageLinks.enable = (undefined !== data[12]) ? strBool(data[12]): false;\n\t\tresizeFrom = (undefined !== data[13]) ? data[13] : resizeFrom;\n\t\twidthCalcMode = (undefined !== data[14]) ? data[14] : widthCalcMode;\n\t}\n\n\tfunction readDataFromPage(){\n\t\tfunction readData(){\n\t\t\tvar data = window.iFrameResizer;\n\n\t\t\tlog('Reading data from page: ' + JSON.stringify(data));\n\n\t\t\tmessageCallback = ('messageCallback' in data) ? data.messageCallback : messageCallback;\n\t\t\treadyCallback = ('readyCallback' in data) ? data.readyCallback : readyCallback;\n\t\t\ttargetOriginDefault = ('targetOrigin' in data) ? data.targetOrigin : targetOriginDefault;\n\t\t\theightCalcMode = ('heightCalculationMethod' in data) ? data.heightCalculationMethod : heightCalcMode;\n\t\t\twidthCalcMode = ('widthCalculationMethod' in data) ? data.widthCalculationMethod : widthCalcMode;\n\t\t}\n\n\t\tfunction setupCustomCalcMethods(calcMode, calcFunc){\n\t\t\tif ('function' === typeof calcMode) {\n\t\t\t\tlog('Setup custom ' + calcFunc + 'CalcMethod');\n\t\t\t\tcustomCalcMethods[calcFunc] = calcMode;\n\t\t\t\tcalcMode = 'custom';\n\t\t\t}\n\n\t\t\treturn calcMode;\n\t\t}\n\n\t\tif(('iFrameResizer' in window) && (Object === window.iFrameResizer.constructor)) {\n\t\t\treadData();\n\t\t\theightCalcMode = setupCustomCalcMethods(heightCalcMode, 'height');\n\t\t\twidthCalcMode = setupCustomCalcMethods(widthCalcMode, 'width');\n\t\t}\n\n\t\tlog('TargetOrigin for parent set to: ' + targetOriginDefault);\n\t}\n\n\n\tfunction chkCSS(attr,value){\n\t\tif (-1 !== value.indexOf('-')){\n\t\t\twarn('Negative CSS value ignored for '+attr);\n\t\t\tvalue='';\n\t\t}\n\t\treturn value;\n\t}\n\n\tfunction setBodyStyle(attr,value){\n\t\tif ((undefined !== value) && ('' !== value) && ('null' !== value)){\n\t\t\tdocument.body.style[attr] = value;\n\t\t\tlog('Body '+attr+' set to \"'+value+'\"');\n\t\t}\n\t}\n\n\tfunction setMargin(){\n\t\t//If called via V1 script, convert bodyMargin from int to str\n\t\tif (undefined === bodyMarginStr){\n\t\t\tbodyMarginStr = bodyMargin+'px';\n\t\t}\n\n\t\tsetBodyStyle('margin',chkCSS('margin',bodyMarginStr));\n\t}\n\n\tfunction stopInfiniteResizingOfIFrame(){\n\t\tdocument.documentElement.style.height = '';\n\t\tdocument.body.style.height = '';\n\t\tlog('HTML & body height set to \"auto\"');\n\t}\n\n\n\tfunction manageTriggerEvent(options){\n\n\t\tvar listener = {\n\t\t\tadd: function(eventName){\n\t\t\t\tfunction handleEvent(){\n\t\t\t\t\tsendSize(options.eventName,options.eventType);\n\t\t\t\t}\n\n\t\t\t\teventHandlersByName[eventName] = handleEvent;\n\n\t\t\t\taddEventListener(window,eventName,handleEvent);\n\t\t\t},\n\t\t\tremove: function(eventName){\n\t\t\t\tvar handleEvent = eventHandlersByName[eventName];\n\t\t\t\tdelete eventHandlersByName[eventName];\n\n\t\t\t\tremoveEventListener(window,eventName,handleEvent);\n\t\t\t}\n\t\t};\n\n\t\tif(options.eventNames && Array.prototype.map){\n\t\t\toptions.eventName = options.eventNames[0];\n\t\t\toptions.eventNames.map(listener[options.method]);\n\t\t} else {\n\t\t\tlistener[options.method](options.eventName);\n\t\t}\n\n\t\tlog(capitalizeFirstLetter(options.method) + ' event listener: ' + options.eventType);\n\t}\n\n\tfunction manageEventListeners(method){\n\t\tmanageTriggerEvent({method:method, eventType: 'Animation Start', eventNames: ['animationstart','webkitAnimationStart'] });\n\t\tmanageTriggerEvent({method:method, eventType: 'Animation Iteration', eventNames: ['animationiteration','webkitAnimationIteration'] });\n\t\tmanageTriggerEvent({method:method, eventType: 'Animation End', eventNames: ['animationend','webkitAnimationEnd'] });\n\t\tmanageTriggerEvent({method:method, eventType: 'Input', eventName: 'input' });\n\t\tmanageTriggerEvent({method:method, eventType: 'Mouse Up', eventName: 'mouseup' });\n\t\tmanageTriggerEvent({method:method, eventType: 'Mouse Down', eventName: 'mousedown' });\n\t\tmanageTriggerEvent({method:method, eventType: 'Orientation Change', eventName: 'orientationchange' });\n\t\tmanageTriggerEvent({method:method, eventType: 'Print', eventName: ['afterprint', 'beforeprint'] });\n\t\tmanageTriggerEvent({method:method, eventType: 'Ready State Change', eventName: 'readystatechange' });\n\t\tmanageTriggerEvent({method:method, eventType: 'Touch Start', eventName: 'touchstart' });\n\t\tmanageTriggerEvent({method:method, eventType: 'Touch End', eventName: 'touchend' });\n\t\tmanageTriggerEvent({method:method, eventType: 'Touch Cancel', eventName: 'touchcancel' });\n\t\tmanageTriggerEvent({method:method, eventType: 'Transition Start', eventNames: ['transitionstart','webkitTransitionStart','MSTransitionStart','oTransitionStart','otransitionstart'] });\n\t\tmanageTriggerEvent({method:method, eventType: 'Transition Iteration', eventNames: ['transitioniteration','webkitTransitionIteration','MSTransitionIteration','oTransitionIteration','otransitioniteration'] });\n\t\tmanageTriggerEvent({method:method, eventType: 'Transition End', eventNames: ['transitionend','webkitTransitionEnd','MSTransitionEnd','oTransitionEnd','otransitionend'] });\n\t\tif('child' === resizeFrom){\n\t\t\tmanageTriggerEvent({method:method, eventType: 'IFrame Resized', eventName: 'resize' });\n\t\t}\n\t}\n\n\tfunction checkCalcMode(calcMode,calcModeDefault,modes,type){\n\t\tif (calcModeDefault !== calcMode){\n\t\t\tif (!(calcMode in modes)){\n\t\t\t\twarn(calcMode + ' is not a valid option for '+type+'CalculationMethod.');\n\t\t\t\tcalcMode=calcModeDefault;\n\t\t\t}\n\t\t\tlog(type+' calculation method set to \"'+calcMode+'\"');\n\t\t}\n\n\t\treturn calcMode;\n\t}\n\n\tfunction checkHeightMode(){\n\t\theightCalcMode = checkCalcMode(heightCalcMode,heightCalcModeDefault,getHeight,'height');\n\t}\n\n\tfunction checkWidthMode(){\n\t\twidthCalcMode = checkCalcMode(widthCalcMode,widthCalcModeDefault,getWidth,'width');\n\t}\n\n\tfunction startEventListeners(){\n\t\tif ( true === autoResize ) {\n\t\t\tmanageEventListeners('add');\n\t\t\tsetupMutationObserver();\n\t\t}\n\t\telse {\n\t\t\tlog('Auto Resize disabled');\n\t\t}\n\t}\n\n\tfunction stopMsgsToParent(){\n\t\tlog('Disable outgoing messages');\n\t\tsendPermit = false;\n\t}\n\n\tfunction removeMsgListener(){\n\t\tlog('Remove event listener: Message');\n\t\tremoveEventListener(window, 'message', receiver);\n\t}\n\n\tfunction disconnectMutationObserver(){\n\t\tif (null !== bodyObserver){\n\t\t\t/* istanbul ignore next */ // Not testable in PhantonJS\n\t\t\tbodyObserver.disconnect();\n\t\t}\n\t}\n\n\tfunction stopEventListeners(){\n\t\tmanageEventListeners('remove');\n\t\tdisconnectMutationObserver();\n\t\tclearInterval(intervalTimer);\n\t}\n\n\tfunction teardown(){\n\t\tstopMsgsToParent();\n\t\tremoveMsgListener();\n\t\tif (true === autoResize) stopEventListeners();\n\t}\n\n\tfunction injectClearFixIntoBodyElement(){\n\t\tvar clearFix = document.createElement('div');\n\t\tclearFix.style.clear = 'both';\n\t\tclearFix.style.display = 'block'; //Guard against this having been globally redefined in CSS.\n\t\tdocument.body.appendChild(clearFix);\n\t}\n\n\tfunction setupInPageLinks(){\n\n\t\tfunction getPagePosition (){\n\t\t\treturn {\n\t\t\t\tx: (window.pageXOffset !== undefined) ? window.pageXOffset : document.documentElement.scrollLeft,\n\t\t\t\ty: (window.pageYOffset !== undefined) ? window.pageYOffset : document.documentElement.scrollTop\n\t\t\t};\n\t\t}\n\n\t\tfunction getElementPosition(el){\n\t\t\tvar\n\t\t\t\telPosition = el.getBoundingClientRect(),\n\t\t\t\tpagePosition = getPagePosition();\n\n\t\t\treturn {\n\t\t\t\tx: parseInt(elPosition.left,10) + parseInt(pagePosition.x,10),\n\t\t\t\ty: parseInt(elPosition.top,10) + parseInt(pagePosition.y,10)\n\t\t\t};\n\t\t}\n\n\t\tfunction findTarget(location){\n\t\t\tfunction jumpToTarget(target){\n\t\t\t\tvar jumpPosition = getElementPosition(target);\n\n\t\t\t\tlog('Moving to in page link (#'+hash+') at x: '+jumpPosition.x+' y: '+jumpPosition.y);\n\t\t\t\tsendMsg(jumpPosition.y, jumpPosition.x, 'scrollToOffset'); // X&Y reversed at sendMsg uses height/width\n\t\t\t}\n\n\t\t\tvar\n\t\t\t\thash = location.split('#')[1] || location, //Remove # if present\n\t\t\t\thashData = decodeURIComponent(hash),\n\t\t\t\ttarget = document.getElementById(hashData) || document.getElementsByName(hashData)[0];\n\n\t\t\tif (undefined !== target){\n\t\t\t\tjumpToTarget(target);\n\t\t\t} else {\n\t\t\t\tlog('In page link (#' + hash + ') not found in iFrame, so sending to parent');\n\t\t\t\tsendMsg(0,0,'inPageLink','#'+hash);\n\t\t\t}\n\t\t}\n\n\t\tfunction checkLocationHash(){\n\t\t\tif ('' !== location.hash && '#' !== location.hash){\n\t\t\t\tfindTarget(location.href);\n\t\t\t}\n\t\t}\n\n\t\tfunction bindAnchors(){\n\t\t\tfunction setupLink(el){\n\t\t\t\tfunction linkClicked(e){\n\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\t/*jshint validthis:true */\n\t\t\t\t\tfindTarget(this.getAttribute('href'));\n\t\t\t\t}\n\n\t\t\t\tif ('#' !== el.getAttribute('href')){\n\t\t\t\t\taddEventListener(el,'click',linkClicked);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tArray.prototype.forEach.call( document.querySelectorAll( 'a[href^=\"#\"]' ), setupLink );\n\t\t}\n\n\t\tfunction bindLocationHash(){\n\t\t\taddEventListener(window,'hashchange',checkLocationHash);\n\t\t}\n\n\t\tfunction initCheck(){ //check if page loaded with location hash after init resize\n\t\t\tsetTimeout(checkLocationHash,eventCancelTimer);\n\t\t}\n\n\t\tfunction enableInPageLinks(){\n\t\t\t/* istanbul ignore else */ // Not testable in phantonJS\n\t\t\tif(Array.prototype.forEach && document.querySelectorAll){\n\t\t\t\tlog('Setting up location.hash handlers');\n\t\t\t\tbindAnchors();\n\t\t\t\tbindLocationHash();\n\t\t\t\tinitCheck();\n\t\t\t} else {\n\t\t\t\twarn('In page linking not fully supported in this browser! (See README.md for IE8 workaround)');\n\t\t\t}\n\t\t}\n\n\t\tif(inPageLinks.enable){\n\t\t\tenableInPageLinks();\n\t\t} else {\n\t\t\tlog('In page linking not enabled');\n\t\t}\n\n\t\treturn {\n\t\t\tfindTarget:findTarget\n\t\t};\n\t}\n\n\tfunction setupPublicMethods(){\n\t\tlog('Enable public methods');\n\n\t\twin.parentIFrame = {\n\n\t\t\tautoResize: function autoResizeF(resize){\n\t\t\t\tif (true === resize && false === autoResize) {\n\t\t\t\t\tautoResize=true;\n\t\t\t\t\tstartEventListeners();\n\t\t\t\t\t//sendSize('autoResize','Auto Resize enabled');\n\t\t\t\t} else if (false === resize && true === autoResize) {\n\t\t\t\t\tautoResize=false;\n\t\t\t\t\tstopEventListeners();\n\t\t\t\t}\n\n\t\t\t\treturn autoResize;\n\t\t\t},\n\n\t\t\tclose: function closeF(){\n\t\t\t\tsendMsg(0,0,'close');\n\t\t\t\tteardown();\n\t\t\t},\n\n\t\t\tgetId: function getIdF(){\n\t\t\t\treturn myID;\n\t\t\t},\n\n\t\t\tgetPageInfo: function getPageInfoF(callback){\n\t\t\t\tif ('function' === typeof callback){\n\t\t\t\t\tpageInfoCallback = callback;\n\t\t\t\t\tsendMsg(0,0,'pageInfo');\n\t\t\t\t} else {\n\t\t\t\t\tpageInfoCallback = function(){};\n\t\t\t\t\tsendMsg(0,0,'pageInfoStop');\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tmoveToAnchor: function moveToAnchorF(hash){\n\t\t\t\tinPageLinks.findTarget(hash);\n\t\t\t},\n\n\t\t\treset: function resetF(){\n\t\t\t\tresetIFrame('parentIFrame.reset');\n\t\t\t},\n\n\t\t\tscrollTo: function scrollToF(x,y){\n\t\t\t\tsendMsg(y,x,'scrollTo'); // X&Y reversed at sendMsg uses height/width\n\t\t\t},\n\n\t\t\tscrollToOffset: function scrollToF(x,y){\n\t\t\t\tsendMsg(y,x,'scrollToOffset'); // X&Y reversed at sendMsg uses height/width\n\t\t\t},\n\n\t\t\tsendMessage: function sendMessageF(msg,targetOrigin){\n\t\t\t\tsendMsg(0,0,'message',JSON.stringify(msg),targetOrigin);\n\t\t\t},\n\n\t\t\tsetHeightCalculationMethod: function setHeightCalculationMethodF(heightCalculationMethod){\n\t\t\t\theightCalcMode = heightCalculationMethod;\n\t\t\t\tcheckHeightMode();\n\t\t\t},\n\n\t\t\tsetWidthCalculationMethod: function setWidthCalculationMethodF(widthCalculationMethod){\n\t\t\t\twidthCalcMode = widthCalculationMethod;\n\t\t\t\tcheckWidthMode();\n\t\t\t},\n\n\t\t\tsetTargetOrigin: function setTargetOriginF(targetOrigin){\n\t\t\t\tlog('Set targetOrigin: '+targetOrigin);\n\t\t\t\ttargetOriginDefault = targetOrigin;\n\t\t\t},\n\n\t\t\tsize: function sizeF(customHeight, customWidth){\n\t\t\t\tvar valString = ''+(customHeight?customHeight:'')+(customWidth?','+customWidth:'');\n\t\t\t\t//lockTrigger();\n\t\t\t\tsendSize('size','parentIFrame.size('+valString+')', customHeight, customWidth);\n\t\t\t}\n\t\t};\n\t}\n\n\tfunction initInterval(){\n\t\tif ( 0 !== interval ){\n\t\t\tlog('setInterval: '+interval+'ms');\n\t\t\tintervalTimer = setInterval(function(){\n\t\t\t\tsendSize('interval','setInterval: '+interval);\n\t\t\t},Math.abs(interval));\n\t\t}\n\t}\n\n\t/* istanbul ignore next */ //Not testable in PhantomJS\n\tfunction setupBodyMutationObserver(){\n\t\tfunction addImageLoadListners(mutation) {\n\t\t\tfunction addImageLoadListener(element){\n\t\t\t\tif (false === element.complete) {\n\t\t\t\t\tlog('Attach listeners to ' + element.src);\n\t\t\t\t\telement.addEventListener('load', imageLoaded, false);\n\t\t\t\t\telement.addEventListener('error', imageError, false);\n\t\t\t\t\telements.push(element);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (mutation.type === 'attributes' && mutation.attributeName === 'src'){\n\t\t\t\taddImageLoadListener(mutation.target);\n\t\t\t} else if (mutation.type === 'childList'){\n\t\t\t\tArray.prototype.forEach.call(\n\t\t\t\t\tmutation.target.querySelectorAll('img'),\n\t\t\t\t\taddImageLoadListener\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tfunction removeFromArray(element){\n\t\t\telements.splice(elements.indexOf(element),1);\n\t\t}\n\n\t\tfunction removeImageLoadListener(element){\n\t\t\tlog('Remove listeners from ' + element.src);\n\t\t\telement.removeEventListener('load', imageLoaded, false);\n\t\t\telement.removeEventListener('error', imageError, false);\n\t\t\tremoveFromArray(element);\n\t\t}\n\n\t\tfunction imageEventTriggered(event,type,typeDesc){\n\t\t\tremoveImageLoadListener(event.target);\n\t\t\tsendSize(type, typeDesc + ': ' + event.target.src, undefined, undefined);\n\t\t}\n\n\t\tfunction imageLoaded(event) {\n\t\t\timageEventTriggered(event,'imageLoad','Image loaded');\n\t\t}\n\n\t\tfunction imageError(event) {\n\t\t\timageEventTriggered(event,'imageLoadFailed','Image load failed');\n\t\t}\n\n\t\tfunction mutationObserved(mutations) {\n\t\t\tsendSize('mutationObserver','mutationObserver: ' + mutations[0].target + ' ' + mutations[0].type);\n\n\t\t\t//Deal with WebKit asyncing image loading when tags are injected into the page\n\t\t\tmutations.forEach(addImageLoadListners);\n\t\t}\n\n\t\tfunction createMutationObserver(){\n\t\t\tvar\n\t\t\t\ttarget = document.querySelector('body'),\n\n\t\t\t\tconfig = {\n\t\t\t\t\tattributes : true,\n\t\t\t\t\tattributeOldValue : false,\n\t\t\t\t\tcharacterData : true,\n\t\t\t\t\tcharacterDataOldValue : false,\n\t\t\t\t\tchildList : true,\n\t\t\t\t\tsubtree : true\n\t\t\t\t};\n\n\t\t\tobserver = new MutationObserver(mutationObserved);\n\n\t\t\tlog('Create body MutationObserver');\n\t\t\tobserver.observe(target, config);\n\n\t\t\treturn observer;\n\t\t}\n\n\t\tvar\n\t\t\telements = [],\n\t\t\tMutationObserver = window.MutationObserver || window.WebKitMutationObserver,\n\t\t\tobserver = createMutationObserver();\n\n\t\treturn {\n\t\t\tdisconnect: function (){\n\t\t\t\tif ('disconnect' in observer){\n\t\t\t\t\tlog('Disconnect body MutationObserver');\n\t\t\t\t\tobserver.disconnect();\n\t\t\t\t\telements.forEach(removeImageLoadListener);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n\n\tfunction setupMutationObserver(){\n\t\tvar\tforceIntervalTimer = 0 > interval;\n\n\t\t/* istanbul ignore if */ // Not testable in PhantomJS\n\t\tif (window.MutationObserver || window.WebKitMutationObserver){\n\t\t\tif (forceIntervalTimer) {\n\t\t\t\tinitInterval();\n\t\t\t} else {\n\t\t\t\tbodyObserver = setupBodyMutationObserver();\n\t\t\t}\n\t\t} else {\n\t\t\tlog('MutationObserver not supported in this browser!');\n\t\t\tinitInterval();\n\t\t}\n\t}\n\n\n\t// document.documentElement.offsetHeight is not reliable, so\n\t// we have to jump through hoops to get a better value.\n\tfunction getComputedStyle(prop,el) {\n\t\t/* istanbul ignore next */ //Not testable in PhantomJS\n\t\tfunction convertUnitsToPxForIE8(value) {\n\t\t\tvar PIXEL = /^\\d+(px)?$/i;\n\n\t\t\tif (PIXEL.test(value)) {\n\t\t\t\treturn parseInt(value,base);\n\t\t\t}\n\n\t\t\tvar\n\t\t\t\tstyle = el.style.left,\n\t\t\t\truntimeStyle = el.runtimeStyle.left;\n\n\t\t\tel.runtimeStyle.left = el.currentStyle.left;\n\t\t\tel.style.left = value || 0;\n\t\t\tvalue = el.style.pixelLeft;\n\t\t\tel.style.left = style;\n\t\t\tel.runtimeStyle.left = runtimeStyle;\n\n\t\t\treturn value;\n\t\t}\n\n\t\tvar retVal = 0;\n\t\tel = el || document.body;\n\n\t\t/* istanbul ignore else */ // Not testable in phantonJS\n\t\tif (('defaultView' in document) && ('getComputedStyle' in document.defaultView)) {\n\t\t\tretVal = document.defaultView.getComputedStyle(el, null);\n\t\t\tretVal = (null !== retVal) ? retVal[prop] : 0;\n\t\t} else {//IE8\n\t\t\tretVal = convertUnitsToPxForIE8(el.currentStyle[prop]);\n\t\t}\n\n\t\treturn parseInt(retVal,base);\n\t}\n\n\tfunction chkEventThottle(timer){\n\t\tif(timer > throttledTimer/2){\n\t\t\tthrottledTimer = 2*timer;\n\t\t\tlog('Event throttle increased to ' + throttledTimer + 'ms');\n\t\t}\n\t}\n\n\t//Idea from https://github.com/guardian/iframe-messenger\n\tfunction getMaxElement(side,elements) {\n\t\tvar\n\t\t\telementsLength = elements.length,\n\t\t\telVal = 0,\n\t\t\tmaxVal = 0,\n\t\t\tSide = capitalizeFirstLetter(side),\n\t\t\ttimer = getNow();\n\n\t\tfor (var i = 0; i < elementsLength; i++) {\n\t\t\telVal = elements[i].getBoundingClientRect()[side] + getComputedStyle('margin'+Side,elements[i]);\n\t\t\tif (elVal > maxVal) {\n\t\t\t\tmaxVal = elVal;\n\t\t\t}\n\t\t}\n\n\t\ttimer = getNow() - timer;\n\n\t\tlog('Parsed '+elementsLength+' HTML elements');\n\t\tlog('Element position calculated in ' + timer + 'ms');\n\n\t\tchkEventThottle(timer);\n\n\t\treturn maxVal;\n\t}\n\n\tfunction getAllMeasurements(dimention){\n\t\treturn [\n\t\t\tdimention.bodyOffset(),\n\t\t\tdimention.bodyScroll(),\n\t\t\tdimention.documentElementOffset(),\n\t\t\tdimention.documentElementScroll()\n\t\t];\n\t}\n\n\tfunction getTaggedElements(side,tag){\n\t\tfunction noTaggedElementsFound(){\n\t\t\twarn('No tagged elements ('+tag+') found on page');\n\t\t\treturn document.querySelectorAll('body *');\n\t\t}\n\n\t\tvar elements = document.querySelectorAll('['+tag+']');\n\n\t\tif (0 === elements.length) noTaggedElementsFound();\n\n\t\treturn getMaxElement(side,elements);\n\t}\n\n\tfunction getAllElements(){\n\t\treturn document.querySelectorAll('body *');\n\t}\n\n\tvar\n\t\tgetHeight = {\n\t\t\tbodyOffset: function getBodyOffsetHeight(){\n\t\t\t\treturn document.body.offsetHeight + getComputedStyle('marginTop') + getComputedStyle('marginBottom');\n\t\t\t},\n\n\t\t\toffset: function(){\n\t\t\t\treturn getHeight.bodyOffset(); //Backwards compatability\n\t\t\t},\n\n\t\t\tbodyScroll: function getBodyScrollHeight(){\n\t\t\t\treturn document.body.scrollHeight;\n\t\t\t},\n\n\t\t\tcustom: function getCustomWidth(){\n\t\t\t\treturn customCalcMethods.height();\n\t\t\t},\n\n\t\t\tdocumentElementOffset: function getDEOffsetHeight(){\n\t\t\t\treturn document.documentElement.offsetHeight;\n\t\t\t},\n\n\t\t\tdocumentElementScroll: function getDEScrollHeight(){\n\t\t\t\treturn document.documentElement.scrollHeight;\n\t\t\t},\n\n\t\t\tmax: function getMaxHeight(){\n\t\t\t\treturn Math.max.apply(null,getAllMeasurements(getHeight));\n\t\t\t},\n\n\t\t\tmin: function getMinHeight(){\n\t\t\t\treturn Math.min.apply(null,getAllMeasurements(getHeight));\n\t\t\t},\n\n\t\t\tgrow: function growHeight(){\n\t\t\t\treturn getHeight.max(); //Run max without the forced downsizing\n\t\t\t},\n\n\t\t\tlowestElement: function getBestHeight(){\n\t\t\t\treturn Math.max(getHeight.bodyOffset(), getMaxElement('bottom',getAllElements()));\n\t\t\t},\n\n\t\t\ttaggedElement: function getTaggedElementsHeight(){\n\t\t\t\treturn getTaggedElements('bottom','data-iframe-height');\n\t\t\t}\n\t\t},\n\n\t\tgetWidth = {\n\t\t\tbodyScroll: function getBodyScrollWidth(){\n\t\t\t\treturn document.body.scrollWidth;\n\t\t\t},\n\n\t\t\tbodyOffset: function getBodyOffsetWidth(){\n\t\t\t\treturn document.body.offsetWidth;\n\t\t\t},\n\n\t\t\tcustom: function getCustomWidth(){\n\t\t\t\treturn customCalcMethods.width();\n\t\t\t},\n\n\t\t\tdocumentElementScroll: function getDEScrollWidth(){\n\t\t\t\treturn document.documentElement.scrollWidth;\n\t\t\t},\n\n\t\t\tdocumentElementOffset: function getDEOffsetWidth(){\n\t\t\t\treturn document.documentElement.offsetWidth;\n\t\t\t},\n\n\t\t\tscroll: function getMaxWidth(){\n\t\t\t\treturn Math.max(getWidth.bodyScroll(), getWidth.documentElementScroll());\n\t\t\t},\n\n\t\t\tmax: function getMaxWidth(){\n\t\t\t\treturn Math.max.apply(null,getAllMeasurements(getWidth));\n\t\t\t},\n\n\t\t\tmin: function getMinWidth(){\n\t\t\t\treturn Math.min.apply(null,getAllMeasurements(getWidth));\n\t\t\t},\n\n\t\t\trightMostElement: function rightMostElement(){\n\t\t\t\treturn getMaxElement('right', getAllElements());\n\t\t\t},\n\n\t\t\ttaggedElement: function getTaggedElementsWidth(){\n\t\t\t\treturn getTaggedElements('right', 'data-iframe-width');\n\t\t\t}\n\t\t};\n\n\n\tfunction sizeIFrame(triggerEvent, triggerEventDesc, customHeight, customWidth){\n\n\t\tfunction resizeIFrame(){\n\t\t\theight = currentHeight;\n\t\t\twidth = currentWidth;\n\n\t\t\tsendMsg(height,width,triggerEvent);\n\t\t}\n\n\t\tfunction isSizeChangeDetected(){\n\t\t\tfunction checkTolarance(a,b){\n\t\t\t\tvar retVal = Math.abs(a-b) <= tolerance;\n\t\t\t\treturn !retVal;\n\t\t\t}\n\n\t\t\tcurrentHeight = (undefined !== customHeight) ? customHeight : getHeight[heightCalcMode]();\n\t\t\tcurrentWidth = (undefined !== customWidth ) ? customWidth : getWidth[widthCalcMode]();\n\n\t\t\treturn\tcheckTolarance(height,currentHeight) || (calculateWidth && checkTolarance(width,currentWidth));\n\t\t}\n\n\t\tfunction isForceResizableEvent(){\n\t\t\treturn !(triggerEvent in {'init':1,'interval':1,'size':1});\n\t\t}\n\n\t\tfunction isForceResizableCalcMode(){\n\t\t\treturn (heightCalcMode in resetRequiredMethods) || (calculateWidth && widthCalcMode in resetRequiredMethods);\n\t\t}\n\n\t\tfunction logIgnored(){\n\t\t\tlog('No change in size detected');\n\t\t}\n\n\t\tfunction checkDownSizing(){\n\t\t\tif (isForceResizableEvent() && isForceResizableCalcMode()){\n\t\t\t\tresetIFrame(triggerEventDesc);\n\t\t\t} else if (!(triggerEvent in {'interval':1})){\n\t\t\t\tlogIgnored();\n\t\t\t}\n\t\t}\n\n\t\tvar\tcurrentHeight,currentWidth;\n\n\t\tif (isSizeChangeDetected() || 'init' === triggerEvent){\n\t\t\tlockTrigger();\n\t\t\tresizeIFrame();\n\t\t} else {\n\t\t\tcheckDownSizing();\n\t\t}\n\t}\n\n\tvar sizeIFrameThrottled = throttle(sizeIFrame);\n\n\tfunction sendSize(triggerEvent, triggerEventDesc, customHeight, customWidth){\n\t\tfunction recordTrigger(){\n\t\t\tif (!(triggerEvent in {'reset':1,'resetPage':1,'init':1})){\n\t\t\t\tlog( 'Trigger event: ' + triggerEventDesc );\n\t\t\t}\n\t\t}\n\n\t\tfunction isDoubleFiredEvent(){\n\t\t\treturn triggerLocked && (triggerEvent in doubleEventList);\n\t\t}\n\n\t\tif (!isDoubleFiredEvent()){\n\t\t\trecordTrigger();\n\t\t\tsizeIFrameThrottled(triggerEvent, triggerEventDesc, customHeight, customWidth);\n\t\t} else {\n\t\t\tlog('Trigger event cancelled: '+triggerEvent);\n\t\t}\n\t}\n\n\tfunction lockTrigger(){\n\t\tif (!triggerLocked){\n\t\t\ttriggerLocked = true;\n\t\t\tlog('Trigger event lock on');\n\t\t}\n\t\tclearTimeout(triggerLockedTimer);\n\t\ttriggerLockedTimer = setTimeout(function(){\n\t\t\ttriggerLocked = false;\n\t\t\tlog('Trigger event lock off');\n\t\t\tlog('--');\n\t\t},eventCancelTimer);\n\t}\n\n\tfunction triggerReset(triggerEvent){\n\t\theight = getHeight[heightCalcMode]();\n\t\twidth = getWidth[widthCalcMode]();\n\n\t\tsendMsg(height,width,triggerEvent);\n\t}\n\n\tfunction resetIFrame(triggerEventDesc){\n\t\tvar hcm = heightCalcMode;\n\t\theightCalcMode = heightCalcModeDefault;\n\n\t\tlog('Reset trigger event: ' + triggerEventDesc);\n\t\tlockTrigger();\n\t\ttriggerReset('reset');\n\n\t\theightCalcMode = hcm;\n\t}\n\n\tfunction sendMsg(height,width,triggerEvent,msg,targetOrigin){\n\t\tfunction setTargetOrigin(){\n\t\t\tif (undefined === targetOrigin){\n\t\t\t\ttargetOrigin = targetOriginDefault;\n\t\t\t} else {\n\t\t\t\tlog('Message targetOrigin: '+targetOrigin);\n\t\t\t}\n\t\t}\n\n\t\tfunction sendToParent(){\n\t\t\tvar\n\t\t\t\tsize = height + ':' + width,\n\t\t\t\tmessage = myID + ':' + size + ':' + triggerEvent + (undefined !== msg ? ':' + msg : '');\n\n\t\t\tlog('Sending message to host page (' + message + ')');\n\t\t\ttarget.postMessage( msgID + message, targetOrigin);\n\t\t}\n\n\t\tif(true === sendPermit){\n\t\t\tsetTargetOrigin();\n\t\t\tsendToParent();\n\t\t}\n\t}\n\n\tfunction receiver(event) {\n\t\tvar processRequestFromParent = {\n\t\t\tinit: function initFromParent(){\n\t\t\t\tfunction fireInit(){\n\t\t\t\t\tinitMsg = event.data;\n\t\t\t\t\ttarget = event.source;\n\n\t\t\t\t\tinit();\n\t\t\t\t\tfirstRun = false;\n\t\t\t\t\tsetTimeout(function(){ initLock = false;},eventCancelTimer);\n\t\t\t\t}\n\n\t\t\t\tif (document.body){\n\t\t\t\t\tfireInit();\n\t\t\t\t} else {\n\t\t\t\t\tlog('Waiting for page ready');\n\t\t\t\t\taddEventListener(window,'readystatechange',processRequestFromParent.initFromParent);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\treset: function resetFromParent(){\n\t\t\t\tif (!initLock){\n\t\t\t\t\tlog('Page size reset by host page');\n\t\t\t\t\ttriggerReset('resetPage');\n\t\t\t\t} else {\n\t\t\t\t\tlog('Page reset ignored by init');\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tresize: function resizeFromParent(){\n\t\t\t\tsendSize('resizeParent','Parent window requested size check');\n\t\t\t},\n\n\t\t\tmoveToAnchor: function moveToAnchorF(){\n\t\t\t\tinPageLinks.findTarget(getData());\n\t\t\t},\n\t\t\tinPageLink: function inPageLinkF() {this.moveToAnchor();}, //Backward compatability\n\n\t\t\tpageInfo: function pageInfoFromParent(){\n\t\t\t\tvar msgBody = getData();\n\t\t\t\tlog('PageInfoFromParent called from parent: ' + msgBody );\n\t\t\t\tpageInfoCallback(JSON.parse(msgBody));\n\t\t\t\tlog(' --');\n\t\t\t},\n\n\t\t\tmessage: function messageFromParent(){\n\t\t\t\tvar msgBody = getData();\n\n\t\t\t\tlog('MessageCallback called from parent: ' + msgBody );\n\t\t\t\tmessageCallback(JSON.parse(msgBody));\n\t\t\t\tlog(' --');\n\t\t\t}\n\t\t};\n\n\t\tfunction isMessageForUs(){\n\t\t\treturn msgID === (''+event.data).substr(0,msgIdLen); //''+ Protects against non-string messages\n\t\t}\n\n\t\tfunction getMessageType(){\n\t\t\treturn event.data.split(']')[1].split(':')[0];\n\t\t}\n\n\t\tfunction getData(){\n\t\t\treturn event.data.substr(event.data.indexOf(':')+1);\n\t\t}\n\n\t\tfunction isMiddleTier(){\n\t\t\treturn ('iFrameResize' in window);\n\t\t}\n\n\t\tfunction isInitMsg(){\n\t\t\t//Test if this message is from a child below us. This is an ugly test, however, updating\n\t\t\t//the message format would break backwards compatibity.\n\t\t\treturn event.data.split(':')[2] in {'true':1,'false':1};\n\t\t}\n\n\t\tfunction callFromParent(){\n\t\t\tvar messageType = getMessageType();\n\n\t\t\tif (messageType in processRequestFromParent){\n\t\t\t\tprocessRequestFromParent[messageType]();\n\t\t\t} else if (!isMiddleTier() && !isInitMsg()){\n\t\t\t\twarn('Unexpected message ('+event.data+')');\n\t\t\t}\n\t\t}\n\n\t\tfunction processMessage(){\n\t\t\tif (false === firstRun) {\n\t\t\t\tcallFromParent();\n\t\t\t} else if (isInitMsg()) {\n\t\t\t\tprocessRequestFromParent.init();\n\t\t\t} else {\n\t\t\t\tlog('Ignored message of type \"' + getMessageType() + '\". Received before initialization.');\n\t\t\t}\n\t\t}\n\n\t\tif (isMessageForUs()){\n\t\t\tprocessMessage();\n\t\t}\n\t}\n\n\t//Normally the parent kicks things off when it detects the iFrame has loaded.\n\t//If this script is async-loaded, then tell parent page to retry init.\n\tfunction chkLateLoaded(){\n\t\tif('loading' !== document.readyState){\n\t\t\twindow.parent.postMessage('[iFrameResizerChild]Ready','*');\n\t\t}\n\t}\n\n\taddEventListener(window, 'message', receiver);\n\tchkLateLoaded();\n\n\t\n\n})(window || {});\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/*! iFrame Resizer (iframeSizer.contentWindow.min.js) - v3.5.7 - 2016-12-16
|
|
2
|
+
* Desc: Include this file in any page being loaded into an iframe
|
|
3
|
+
* to force the iframe to resize to the content size.
|
|
4
|
+
* Requires: iframeResizer.min.js on host page.
|
|
5
|
+
* Copyright: (c) 2016 David J. Bradshaw - dave@bradshaw.net
|
|
6
|
+
* License: MIT
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
!function(a,b){"use strict";function c(b,c,d){"addEventListener"in a?b.addEventListener(c,d,!1):"attachEvent"in a&&b.attachEvent("on"+c,d)}function d(b,c,d){"removeEventListener"in a?b.removeEventListener(c,d,!1):"detachEvent"in a&&b.detachEvent("on"+c,d)}function e(a){return a.charAt(0).toUpperCase()+a.slice(1)}function f(a){var b,c,d,e=null,f=0,g=function(){f=Ia(),e=null,d=a.apply(b,c),e||(b=c=null)};return function(){var h=Ia();f||(f=h);var i=ya-(h-f);return b=this,c=arguments,0>=i||i>ya?(e&&(clearTimeout(e),e=null),f=h,d=a.apply(b,c),e||(b=c=null)):e||(e=setTimeout(g,i)),d}}function g(a){return na+"["+pa+"] "+a}function h(b){ma&&"object"==typeof a.console&&console.log(g(b))}function i(b){"object"==typeof a.console&&console.warn(g(b))}function j(){k(),h("Initialising iFrame ("+location.href+")"),l(),o(),n("background",X),n("padding",_),B(),t(),u(),p(),D(),v(),ja=C(),O("init","Init message from host page"),Ea()}function k(){function a(a){return"true"===a?!0:!1}var c=ia.substr(oa).split(":");pa=c[0],Y=b!==c[1]?Number(c[1]):Y,aa=b!==c[2]?a(c[2]):aa,ma=b!==c[3]?a(c[3]):ma,ka=b!==c[4]?Number(c[4]):ka,V=b!==c[6]?a(c[6]):V,Z=c[7],ga=b!==c[8]?c[8]:ga,X=c[9],_=c[10],va=b!==c[11]?Number(c[11]):va,ja.enable=b!==c[12]?a(c[12]):!1,ra=b!==c[13]?c[13]:ra,Ba=b!==c[14]?c[14]:Ba}function l(){function b(){var b=a.iFrameResizer;h("Reading data from page: "+JSON.stringify(b)),Da="messageCallback"in b?b.messageCallback:Da,Ea="readyCallback"in b?b.readyCallback:Ea,ua="targetOrigin"in b?b.targetOrigin:ua,ga="heightCalculationMethod"in b?b.heightCalculationMethod:ga,Ba="widthCalculationMethod"in b?b.widthCalculationMethod:Ba}function c(a,b){return"function"==typeof a&&(h("Setup custom "+b+"CalcMethod"),Ga[b]=a,a="custom"),a}"iFrameResizer"in a&&Object===a.iFrameResizer.constructor&&(b(),ga=c(ga,"height"),Ba=c(Ba,"width")),h("TargetOrigin for parent set to: "+ua)}function m(a,b){return-1!==b.indexOf("-")&&(i("Negative CSS value ignored for "+a),b=""),b}function n(a,c){b!==c&&""!==c&&"null"!==c&&(document.body.style[a]=c,h("Body "+a+' set to "'+c+'"'))}function o(){b===Z&&(Z=Y+"px"),n("margin",m("margin",Z))}function p(){document.documentElement.style.height="",document.body.style.height="",h('HTML & body height set to "auto"')}function q(b){var f={add:function(d){function e(){O(b.eventName,b.eventType)}Ha[d]=e,c(a,d,e)},remove:function(b){var c=Ha[b];delete Ha[b],d(a,b,c)}};b.eventNames&&Array.prototype.map?(b.eventName=b.eventNames[0],b.eventNames.map(f[b.method])):f[b.method](b.eventName),h(e(b.method)+" event listener: "+b.eventType)}function r(a){q({method:a,eventType:"Animation Start",eventNames:["animationstart","webkitAnimationStart"]}),q({method:a,eventType:"Animation Iteration",eventNames:["animationiteration","webkitAnimationIteration"]}),q({method:a,eventType:"Animation End",eventNames:["animationend","webkitAnimationEnd"]}),q({method:a,eventType:"Input",eventName:"input"}),q({method:a,eventType:"Mouse Up",eventName:"mouseup"}),q({method:a,eventType:"Mouse Down",eventName:"mousedown"}),q({method:a,eventType:"Orientation Change",eventName:"orientationchange"}),q({method:a,eventType:"Print",eventName:["afterprint","beforeprint"]}),q({method:a,eventType:"Ready State Change",eventName:"readystatechange"}),q({method:a,eventType:"Touch Start",eventName:"touchstart"}),q({method:a,eventType:"Touch End",eventName:"touchend"}),q({method:a,eventType:"Touch Cancel",eventName:"touchcancel"}),q({method:a,eventType:"Transition Start",eventNames:["transitionstart","webkitTransitionStart","MSTransitionStart","oTransitionStart","otransitionstart"]}),q({method:a,eventType:"Transition Iteration",eventNames:["transitioniteration","webkitTransitionIteration","MSTransitionIteration","oTransitionIteration","otransitioniteration"]}),q({method:a,eventType:"Transition End",eventNames:["transitionend","webkitTransitionEnd","MSTransitionEnd","oTransitionEnd","otransitionend"]}),"child"===ra&&q({method:a,eventType:"IFrame Resized",eventName:"resize"})}function s(a,b,c,d){return b!==a&&(a in c||(i(a+" is not a valid option for "+d+"CalculationMethod."),a=b),h(d+' calculation method set to "'+a+'"')),a}function t(){ga=s(ga,fa,Ja,"height")}function u(){Ba=s(Ba,Aa,Ka,"width")}function v(){!0===V?(r("add"),G()):h("Auto Resize disabled")}function w(){h("Disable outgoing messages"),sa=!1}function x(){h("Remove event listener: Message"),d(a,"message",T)}function y(){null!==$&&$.disconnect()}function z(){r("remove"),y(),clearInterval(la)}function A(){w(),x(),!0===V&&z()}function B(){var a=document.createElement("div");a.style.clear="both",a.style.display="block",document.body.appendChild(a)}function C(){function d(){return{x:a.pageXOffset!==b?a.pageXOffset:document.documentElement.scrollLeft,y:a.pageYOffset!==b?a.pageYOffset:document.documentElement.scrollTop}}function e(a){var b=a.getBoundingClientRect(),c=d();return{x:parseInt(b.left,10)+parseInt(c.x,10),y:parseInt(b.top,10)+parseInt(c.y,10)}}function f(a){function c(a){var b=e(a);h("Moving to in page link (#"+d+") at x: "+b.x+" y: "+b.y),S(b.y,b.x,"scrollToOffset")}var d=a.split("#")[1]||a,f=decodeURIComponent(d),g=document.getElementById(f)||document.getElementsByName(f)[0];b!==g?c(g):(h("In page link (#"+d+") not found in iFrame, so sending to parent"),S(0,0,"inPageLink","#"+d))}function g(){""!==location.hash&&"#"!==location.hash&&f(location.href)}function j(){function a(a){function b(a){a.preventDefault(),f(this.getAttribute("href"))}"#"!==a.getAttribute("href")&&c(a,"click",b)}Array.prototype.forEach.call(document.querySelectorAll('a[href^="#"]'),a)}function k(){c(a,"hashchange",g)}function l(){setTimeout(g,ca)}function m(){Array.prototype.forEach&&document.querySelectorAll?(h("Setting up location.hash handlers"),j(),k(),l()):i("In page linking not fully supported in this browser! (See README.md for IE8 workaround)")}return ja.enable?m():h("In page linking not enabled"),{findTarget:f}}function D(){h("Enable public methods"),Ca.parentIFrame={autoResize:function(a){return!0===a&&!1===V?(V=!0,v()):!1===a&&!0===V&&(V=!1,z()),V},close:function(){S(0,0,"close"),A()},getId:function(){return pa},getPageInfo:function(a){"function"==typeof a?(Fa=a,S(0,0,"pageInfo")):(Fa=function(){},S(0,0,"pageInfoStop"))},moveToAnchor:function(a){ja.findTarget(a)},reset:function(){R("parentIFrame.reset")},scrollTo:function(a,b){S(b,a,"scrollTo")},scrollToOffset:function(a,b){S(b,a,"scrollToOffset")},sendMessage:function(a,b){S(0,0,"message",JSON.stringify(a),b)},setHeightCalculationMethod:function(a){ga=a,t()},setWidthCalculationMethod:function(a){Ba=a,u()},setTargetOrigin:function(a){h("Set targetOrigin: "+a),ua=a},size:function(a,b){var c=""+(a?a:"")+(b?","+b:"");O("size","parentIFrame.size("+c+")",a,b)}}}function E(){0!==ka&&(h("setInterval: "+ka+"ms"),la=setInterval(function(){O("interval","setInterval: "+ka)},Math.abs(ka)))}function F(){function c(a){function b(a){!1===a.complete&&(h("Attach listeners to "+a.src),a.addEventListener("load",g,!1),a.addEventListener("error",i,!1),l.push(a))}"attributes"===a.type&&"src"===a.attributeName?b(a.target):"childList"===a.type&&Array.prototype.forEach.call(a.target.querySelectorAll("img"),b)}function d(a){l.splice(l.indexOf(a),1)}function e(a){h("Remove listeners from "+a.src),a.removeEventListener("load",g,!1),a.removeEventListener("error",i,!1),d(a)}function f(a,c,d){e(a.target),O(c,d+": "+a.target.src,b,b)}function g(a){f(a,"imageLoad","Image loaded")}function i(a){f(a,"imageLoadFailed","Image load failed")}function j(a){O("mutationObserver","mutationObserver: "+a[0].target+" "+a[0].type),a.forEach(c)}function k(){var a=document.querySelector("body"),b={attributes:!0,attributeOldValue:!1,characterData:!0,characterDataOldValue:!1,childList:!0,subtree:!0};return n=new m(j),h("Create body MutationObserver"),n.observe(a,b),n}var l=[],m=a.MutationObserver||a.WebKitMutationObserver,n=k();return{disconnect:function(){"disconnect"in n&&(h("Disconnect body MutationObserver"),n.disconnect(),l.forEach(e))}}}function G(){var b=0>ka;a.MutationObserver||a.WebKitMutationObserver?b?E():$=F():(h("MutationObserver not supported in this browser!"),E())}function H(a,b){function c(a){var c=/^\d+(px)?$/i;if(c.test(a))return parseInt(a,W);var d=b.style.left,e=b.runtimeStyle.left;return b.runtimeStyle.left=b.currentStyle.left,b.style.left=a||0,a=b.style.pixelLeft,b.style.left=d,b.runtimeStyle.left=e,a}var d=0;return b=b||document.body,"defaultView"in document&&"getComputedStyle"in document.defaultView?(d=document.defaultView.getComputedStyle(b,null),d=null!==d?d[a]:0):d=c(b.currentStyle[a]),parseInt(d,W)}function I(a){a>ya/2&&(ya=2*a,h("Event throttle increased to "+ya+"ms"))}function J(a,b){for(var c=b.length,d=0,f=0,g=e(a),i=Ia(),j=0;c>j;j++)d=b[j].getBoundingClientRect()[a]+H("margin"+g,b[j]),d>f&&(f=d);return i=Ia()-i,h("Parsed "+c+" HTML elements"),h("Element position calculated in "+i+"ms"),I(i),f}function K(a){return[a.bodyOffset(),a.bodyScroll(),a.documentElementOffset(),a.documentElementScroll()]}function L(a,b){function c(){return i("No tagged elements ("+b+") found on page"),document.querySelectorAll("body *")}var d=document.querySelectorAll("["+b+"]");return 0===d.length&&c(),J(a,d)}function M(){return document.querySelectorAll("body *")}function N(a,c,d,e){function f(){ea=m,za=n,S(ea,za,a)}function g(){function a(a,b){var c=Math.abs(a-b)<=va;return!c}return m=b!==d?d:Ja[ga](),n=b!==e?e:Ka[Ba](),a(ea,m)||aa&&a(za,n)}function i(){return!(a in{init:1,interval:1,size:1})}function j(){return ga in qa||aa&&Ba in qa}function k(){h("No change in size detected")}function l(){i()&&j()?R(c):a in{interval:1}||k()}var m,n;g()||"init"===a?(P(),f()):l()}function O(a,b,c,d){function e(){a in{reset:1,resetPage:1,init:1}||h("Trigger event: "+b)}function f(){return wa&&a in ba}f()?h("Trigger event cancelled: "+a):(e(),La(a,b,c,d))}function P(){wa||(wa=!0,h("Trigger event lock on")),clearTimeout(xa),xa=setTimeout(function(){wa=!1,h("Trigger event lock off"),h("--")},ca)}function Q(a){ea=Ja[ga](),za=Ka[Ba](),S(ea,za,a)}function R(a){var b=ga;ga=fa,h("Reset trigger event: "+a),P(),Q("reset"),ga=b}function S(a,c,d,e,f){function g(){b===f?f=ua:h("Message targetOrigin: "+f)}function i(){var g=a+":"+c,i=pa+":"+g+":"+d+(b!==e?":"+e:"");h("Sending message to host page ("+i+")"),ta.postMessage(na+i,f)}!0===sa&&(g(),i())}function T(b){function d(){return na===(""+b.data).substr(0,oa)}function e(){return b.data.split("]")[1].split(":")[0]}function f(){return b.data.substr(b.data.indexOf(":")+1)}function g(){return"iFrameResize"in a}function k(){return b.data.split(":")[2]in{"true":1,"false":1}}function l(){var a=e();a in n?n[a]():g()||k()||i("Unexpected message ("+b.data+")")}function m(){!1===da?l():k()?n.init():h('Ignored message of type "'+e()+'". Received before initialization.')}var n={init:function(){function d(){ia=b.data,ta=b.source,j(),da=!1,setTimeout(function(){ha=!1},ca)}document.body?d():(h("Waiting for page ready"),c(a,"readystatechange",n.initFromParent))},reset:function(){ha?h("Page reset ignored by init"):(h("Page size reset by host page"),Q("resetPage"))},resize:function(){O("resizeParent","Parent window requested size check")},moveToAnchor:function(){ja.findTarget(f())},inPageLink:function(){this.moveToAnchor()},pageInfo:function(){var a=f();h("PageInfoFromParent called from parent: "+a),Fa(JSON.parse(a)),h(" --")},message:function(){var a=f();h("MessageCallback called from parent: "+a),Da(JSON.parse(a)),h(" --")}};d()&&m()}function U(){"loading"!==document.readyState&&a.parent.postMessage("[iFrameResizerChild]Ready","*")}var V=!0,W=10,X="",Y=0,Z="",$=null,_="",aa=!1,ba={resize:1,click:1},ca=128,da=!0,ea=1,fa="bodyOffset",ga=fa,ha=!0,ia="",ja={},ka=32,la=null,ma=!1,na="[iFrameSizer]",oa=na.length,pa="",qa={max:1,min:1,bodyScroll:1,documentElementScroll:1},ra="child",sa=!0,ta=a.parent,ua="*",va=0,wa=!1,xa=null,ya=16,za=1,Aa="scroll",Ba=Aa,Ca=a,Da=function(){i("MessageCallback function not defined")},Ea=function(){},Fa=function(){},Ga={height:function(){return i("Custom height calculation function not defined"),document.documentElement.offsetHeight},width:function(){return i("Custom width calculation function not defined"),document.body.scrollWidth}},Ha={},Ia=Date.now||function(){return(new Date).getTime()},Ja={bodyOffset:function(){return document.body.offsetHeight+H("marginTop")+H("marginBottom")},offset:function(){return Ja.bodyOffset()},bodyScroll:function(){return document.body.scrollHeight},custom:function(){return Ga.height()},documentElementOffset:function(){return document.documentElement.offsetHeight},documentElementScroll:function(){return document.documentElement.scrollHeight},max:function(){return Math.max.apply(null,K(Ja))},min:function(){return Math.min.apply(null,K(Ja))},grow:function(){return Ja.max()},lowestElement:function(){return Math.max(Ja.bodyOffset(),J("bottom",M()))},taggedElement:function(){return L("bottom","data-iframe-height")}},Ka={bodyScroll:function(){return document.body.scrollWidth},bodyOffset:function(){return document.body.offsetWidth},custom:function(){return Ga.width()},documentElementScroll:function(){return document.documentElement.scrollWidth},documentElementOffset:function(){return document.documentElement.offsetWidth},scroll:function(){return Math.max(Ka.bodyScroll(),Ka.documentElementScroll())},max:function(){return Math.max.apply(null,K(Ka))},min:function(){return Math.min.apply(null,K(Ka))},rightMostElement:function(){return J("right",M())},taggedElement:function(){return L("right","data-iframe-width")}},La=f(N);c(a,"message",T),U()}(window||{});
|
|
10
|
+
//# sourceMappingURL=iframeResizer.contentWindow.map
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Justified Gallery - v3.6.4
|
|
3
|
+
* http://miromannino.github.io/Justified-Gallery/
|
|
4
|
+
* Copyright (C) 2016 Miro Mannino
|
|
5
|
+
* Licensed under the MIT license.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
.justified-gallery {
|
|
9
|
+
width: 100%;
|
|
10
|
+
position: relative;
|
|
11
|
+
overflow: hidden;
|
|
12
|
+
}
|
|
13
|
+
.justified-gallery > a,
|
|
14
|
+
.justified-gallery > div,
|
|
15
|
+
.justified-gallery > figure {
|
|
16
|
+
position: absolute;
|
|
17
|
+
display: inline-block;
|
|
18
|
+
overflow: hidden;
|
|
19
|
+
/* background: #888888; To have gray placeholders while the gallery is loading with waitThumbnailsLoad = false */
|
|
20
|
+
filter: "alpha(opacity=10)";
|
|
21
|
+
opacity: 0.1;
|
|
22
|
+
margin: 0;
|
|
23
|
+
padding: 0;
|
|
24
|
+
}
|
|
25
|
+
.justified-gallery > a > img,
|
|
26
|
+
.justified-gallery > div > img,
|
|
27
|
+
.justified-gallery > figure > img,
|
|
28
|
+
.justified-gallery > a > a > img,
|
|
29
|
+
.justified-gallery > div > a > img,
|
|
30
|
+
.justified-gallery > figure > a > img {
|
|
31
|
+
position: absolute;
|
|
32
|
+
top: 50%;
|
|
33
|
+
left: 50%;
|
|
34
|
+
margin: 0;
|
|
35
|
+
padding: 0;
|
|
36
|
+
border: none;
|
|
37
|
+
filter: "alpha(opacity=0)";
|
|
38
|
+
opacity: 0;
|
|
39
|
+
}
|
|
40
|
+
.justified-gallery > a > .caption,
|
|
41
|
+
.justified-gallery > div > .caption,
|
|
42
|
+
.justified-gallery > figure > .caption {
|
|
43
|
+
display: none;
|
|
44
|
+
position: absolute;
|
|
45
|
+
bottom: 0;
|
|
46
|
+
padding: 5px;
|
|
47
|
+
background-color: #000000;
|
|
48
|
+
left: 0;
|
|
49
|
+
right: 0;
|
|
50
|
+
margin: 0;
|
|
51
|
+
color: white;
|
|
52
|
+
font-size: 12px;
|
|
53
|
+
font-weight: 300;
|
|
54
|
+
font-family: sans-serif;
|
|
55
|
+
}
|
|
56
|
+
.justified-gallery > a > .caption.caption-visible,
|
|
57
|
+
.justified-gallery > div > .caption.caption-visible,
|
|
58
|
+
.justified-gallery > figure > .caption.caption-visible {
|
|
59
|
+
display: initial;
|
|
60
|
+
filter: "alpha(opacity=70)";
|
|
61
|
+
opacity: 0.7;
|
|
62
|
+
-webkit-transition: opacity 500ms ease-in;
|
|
63
|
+
-moz-transition: opacity 500ms ease-in;
|
|
64
|
+
-o-transition: opacity 500ms ease-in;
|
|
65
|
+
transition: opacity 500ms ease-in;
|
|
66
|
+
}
|
|
67
|
+
.justified-gallery > .entry-visible {
|
|
68
|
+
filter: "alpha(opacity=100)";
|
|
69
|
+
opacity: 1;
|
|
70
|
+
background: none;
|
|
71
|
+
}
|
|
72
|
+
.justified-gallery > .entry-visible > img,
|
|
73
|
+
.justified-gallery > .entry-visible > a > img {
|
|
74
|
+
filter: "alpha(opacity=100)";
|
|
75
|
+
opacity: 1;
|
|
76
|
+
-webkit-transition: opacity 500ms ease-in;
|
|
77
|
+
-moz-transition: opacity 500ms ease-in;
|
|
78
|
+
-o-transition: opacity 500ms ease-in;
|
|
79
|
+
transition: opacity 500ms ease-in;
|
|
80
|
+
}
|
|
81
|
+
.justified-gallery > .jg-filtered {
|
|
82
|
+
display: none;
|
|
83
|
+
}
|
|
84
|
+
.justified-gallery > .spinner {
|
|
85
|
+
position: absolute;
|
|
86
|
+
bottom: 0;
|
|
87
|
+
margin-left: -24px;
|
|
88
|
+
padding: 10px 0 10px 0;
|
|
89
|
+
left: 50%;
|
|
90
|
+
filter: "alpha(opacity=100)";
|
|
91
|
+
opacity: 1;
|
|
92
|
+
overflow: initial;
|
|
93
|
+
}
|
|
94
|
+
.justified-gallery > .spinner > span {
|
|
95
|
+
display: inline-block;
|
|
96
|
+
filter: "alpha(opacity=0)";
|
|
97
|
+
opacity: 0;
|
|
98
|
+
width: 8px;
|
|
99
|
+
height: 8px;
|
|
100
|
+
margin: 0 4px 0 4px;
|
|
101
|
+
background-color: #000;
|
|
102
|
+
border-radius: 6px;
|
|
103
|
+
}
|
data/lib/starter_web/assets/themes/j1/extensions/justified_gallery/css/justifiedGallery.min.css
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Justified Gallery - v3.6.4
|
|
3
|
+
* http://miromannino.github.io/Justified-Gallery/
|
|
4
|
+
* Copyright (C) 2016 Miro Mannino
|
|
5
|
+
* Licensed under the MIT license.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
.justified-gallery{width:100%;position:relative;overflow:hidden}.justified-gallery>a,.justified-gallery>div,.justified-gallery>figure{position:absolute;display:inline-block;overflow:hidden;filter:"alpha(opacity=10)";opacity:.1;margin:0;padding:0}.justified-gallery>a>img,.justified-gallery>div>img,.justified-gallery>figure>img,.justified-gallery>a>a>img,.justified-gallery>div>a>img,.justified-gallery>figure>a>img{position:absolute;top:50%;left:50%;margin:0;padding:0;border:0;filter:"alpha(opacity=0)";opacity:0}.justified-gallery>a>.caption,.justified-gallery>div>.caption,.justified-gallery>figure>.caption{display:none;position:absolute;bottom:0;padding:5px;background-color:#000;left:0;right:0;margin:0;color:#fff;font-size:12px;font-weight:300;font-family:sans-serif}.justified-gallery>a>.caption.caption-visible,.justified-gallery>div>.caption.caption-visible,.justified-gallery>figure>.caption.caption-visible{display:initial;filter:"alpha(opacity=70)";opacity:.7;-webkit-transition:opacity 500ms ease-in;-moz-transition:opacity 500ms ease-in;-o-transition:opacity 500ms ease-in;transition:opacity 500ms ease-in}.justified-gallery>.entry-visible{filter:"alpha(opacity=100)";opacity:1;background:0 0}.justified-gallery>.entry-visible>img,.justified-gallery>.entry-visible>a>img{filter:"alpha(opacity=100)";opacity:1;-webkit-transition:opacity 500ms ease-in;-moz-transition:opacity 500ms ease-in;-o-transition:opacity 500ms ease-in;transition:opacity 500ms ease-in}.justified-gallery>.jg-filtered{display:none}.justified-gallery>.spinner{position:absolute;bottom:0;margin-left:-24px;padding:10px 0;left:50%;filter:"alpha(opacity=100)";opacity:1;overflow:initial}.justified-gallery>.spinner>span{display:inline-block;filter:"alpha(opacity=0)";opacity:0;width:8px;height:8px;margin:0 4px;background-color:#000;border-radius:6px}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/*
|
|
2
|
+
# -----------------------------------------------------------------------------
|
|
3
|
+
# ~/assets/themes/j1/extensions/justified_gallery/css/theme/uno.css
|
|
4
|
+
# Provides J1 JustifiedGallery styles for J1 Theme Uno
|
|
5
|
+
#
|
|
6
|
+
# Product/Info:
|
|
7
|
+
# https://jekyll-one.com
|
|
8
|
+
#
|
|
9
|
+
# Copyright (C) 2019 Juergen Adams
|
|
10
|
+
#
|
|
11
|
+
# J1 Template is licensed under the MIT License.
|
|
12
|
+
# See: https://github.com/jekyll-one/j1_template_mde/blob/master/LICENSE
|
|
13
|
+
#
|
|
14
|
+
# -----------------------------------------------------------------------------
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
/* Gallery title */
|
|
18
|
+
.jg-gallery-title {
|
|
19
|
+
font-style: italic;
|
|
20
|
+
font-weight: 400;
|
|
21
|
+
color: rgba(0, 0, 0, 0.5);
|
|
22
|
+
overflow: hidden;
|
|
23
|
+
}
|
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
---
|
|
2
|
+
regenerate: false
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
{% capture cache %}
|
|
6
|
+
|
|
7
|
+
{% comment %}
|
|
8
|
+
# -----------------------------------------------------------------------------
|
|
9
|
+
# ~/assets/themes/j1/extentions/justified_gallery/js/j1_adapter_justified_gallery.js
|
|
10
|
+
# Liquid template to create the J1 Adapter for Justified Gallery
|
|
11
|
+
#
|
|
12
|
+
# Product/Info:
|
|
13
|
+
# https://jekyll-one.com
|
|
14
|
+
#
|
|
15
|
+
# Copyright (C) 2019 Juergen Adams
|
|
16
|
+
#
|
|
17
|
+
# J1 Template is licensed under the MIT License.
|
|
18
|
+
# See: https://github.com/jekyll-one/j1_template_mde/blob/master/LICENSE
|
|
19
|
+
#
|
|
20
|
+
# -----------------------------------------------------------------------------
|
|
21
|
+
{% endcomment %}
|
|
22
|
+
|
|
23
|
+
/*
|
|
24
|
+
# -----------------------------------------------------------------------------
|
|
25
|
+
# ~/assets/themes/j1/extentions/justified_gallery/js/j1_adapter_justified_gallery.js
|
|
26
|
+
# JS Adapter for JustifiedGallery
|
|
27
|
+
#
|
|
28
|
+
# Product/Info:
|
|
29
|
+
# https://jekyll-one.com
|
|
30
|
+
# https://github.com/miromannino/Justified-Gallery
|
|
31
|
+
#
|
|
32
|
+
# Copyright (C) 2019 Juergen Adams
|
|
33
|
+
# Copyright (C) 2016 Miro Mannino
|
|
34
|
+
#
|
|
35
|
+
# J1 Template is licensed under the MIT License.
|
|
36
|
+
# See: https://github.com/jekyll-one/j1_template_mde/blob/master/LICENSE
|
|
37
|
+
# Justified Gallery is licensed under the MIT license
|
|
38
|
+
# See: https://github.com/miromannino/Justified-Gallery
|
|
39
|
+
#
|
|
40
|
+
# -----------------------------------------------------------------------------
|
|
41
|
+
# Adapter generated: {{site.time}}
|
|
42
|
+
# -----------------------------------------------------------------------------
|
|
43
|
+
*/
|
|
44
|
+
'use strict';
|
|
45
|
+
|
|
46
|
+
{% comment %} Liquid procedures
|
|
47
|
+
--------------------------------------------------------------- {% endcomment %}
|
|
48
|
+
|
|
49
|
+
{% comment %} Variables
|
|
50
|
+
--------------------------------------------------------------- {% endcomment %}
|
|
51
|
+
{% assign environment = site.environment %}
|
|
52
|
+
{% assign config = site.data.apps.j1_justified_gallery %}
|
|
53
|
+
|
|
54
|
+
{% comment %} Main
|
|
55
|
+
--------------------------------------------------------------- {% endcomment %}
|
|
56
|
+
j1.JustifiedGallery = (function (j1, window) {
|
|
57
|
+
var environment = '{{environment}}'; // Set environment
|
|
58
|
+
var state = 'unknown';
|
|
59
|
+
var logger;
|
|
60
|
+
var logText;
|
|
61
|
+
|
|
62
|
+
return {
|
|
63
|
+
// J1 J1JustifiedGallery
|
|
64
|
+
init: function ( options ) {
|
|
65
|
+
// Setup logger
|
|
66
|
+
logger = log4javascript.getLogger("j1.JustifiedGallery.init");
|
|
67
|
+
|
|
68
|
+
if ( options != null ) {
|
|
69
|
+
var lb_settings = $.extend({}, options);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
{% if environment == 'development' %}
|
|
73
|
+
logText = 'start gallery initialization';
|
|
74
|
+
logger.info(logText);
|
|
75
|
+
state = 'started';
|
|
76
|
+
logger.info('state: ' + state); // Set|Log status
|
|
77
|
+
{% endif %}
|
|
78
|
+
|
|
79
|
+
this.load( lb_settings );
|
|
80
|
+
|
|
81
|
+
},
|
|
82
|
+
// ---------------------------------------------------------------------
|
|
83
|
+
// Load AJAX data and initialize the jg gallery
|
|
84
|
+
// ---------------------------------------------------------------------
|
|
85
|
+
load: function ( options ) {
|
|
86
|
+
// Setup logger
|
|
87
|
+
logger = log4javascript.getLogger("j1.JustifiedGallery.load");
|
|
88
|
+
|
|
89
|
+
{% if environment == 'development' %}
|
|
90
|
+
state = 'running';
|
|
91
|
+
logger.info('state: ' + state); // Set|Log status
|
|
92
|
+
{% endif %}
|
|
93
|
+
|
|
94
|
+
{% for item in config.galleries %}
|
|
95
|
+
{% if item.gallery.enabled %}
|
|
96
|
+
|
|
97
|
+
{% assign lb_options = item.gallery.lightbox_options %}
|
|
98
|
+
{% assign jg_options = item.gallery.gallery_options %}
|
|
99
|
+
{% assign gallery_title = item.gallery.title %}
|
|
100
|
+
{% assign gallery_type = item.gallery.type %}
|
|
101
|
+
{% assign lightbox = item.gallery.lightbox_options.lightbox %}
|
|
102
|
+
{% assign css_classes = item.gallery.css_classes %}
|
|
103
|
+
{% assign show_delay = 250 %}
|
|
104
|
+
|
|
105
|
+
{% if lightbox == "lg" %}
|
|
106
|
+
{% assign lb_mode = "lg-fade" %}
|
|
107
|
+
{% assign lb_cssEasing = "cubic-bezier(0.25, 0, 0.25, 1)" %}
|
|
108
|
+
{% assign lb_thumbnails = true %}
|
|
109
|
+
{% assign lb_autoplay = false %}
|
|
110
|
+
{% assign lb_fullscreen = true %}
|
|
111
|
+
{% assign lb_pager = true %}
|
|
112
|
+
{% assign lb_zoomer = true %}
|
|
113
|
+
{% assign lb_hash = true %}
|
|
114
|
+
{% assign lb_video = false %}
|
|
115
|
+
{% assign lb_video_html5 = false %}
|
|
116
|
+
{% assign lb_video_online = false %}
|
|
117
|
+
{% assign lb_share = false %}
|
|
118
|
+
{% assign lb_share_facebook = false %}
|
|
119
|
+
{% assign lb_share_twitter = false %}
|
|
120
|
+
{% assign lb_share_googleplus = false %}
|
|
121
|
+
{% assign lb_share_pinterest = false %}
|
|
122
|
+
{% endif %}
|
|
123
|
+
|
|
124
|
+
{% assign container_id = item.gallery.id %}
|
|
125
|
+
{% capture gallery_id %}{{item.gallery.id}}_div{% endcapture %}
|
|
126
|
+
|
|
127
|
+
{% if item.gallery.show_delay %} {% assign show_delay = item.gallery.show_delay %} {% endif %}
|
|
128
|
+
{% if lb_options.mode %} {% assign lb_mode = lb_options.mode %} {% endif %}
|
|
129
|
+
{% if lb_options.cssEasing %} {% assign lb_cssEasing = lb_options.cssEasing %} {% endif %}
|
|
130
|
+
{% if lb_options.thumbnails %} {% assign lb_thumbnails = lb_options.thumbnails %} {% endif %}
|
|
131
|
+
{% if lb_options.autoplay %} {% assign lb_autoplay = lb_options.autoplay %} {% endif %}
|
|
132
|
+
{% if lb_options.fullscreen %} {% assign lb_fullscreen = lb_options.fullscreen %} {% endif %}
|
|
133
|
+
{% if lb_options.pager %} {% assign lb_pager = lb_options.pager %} {% endif %}
|
|
134
|
+
{% if lb_options.zoomer %} {% assign lb_zoomer = lb_options.zoomer %} {% endif %}
|
|
135
|
+
{% if lb_options.video.enabled %} {% assign lb_video = lb_options.video.enabled %} {% endif %}
|
|
136
|
+
|
|
137
|
+
{% if lb_options.video.enabled %}
|
|
138
|
+
logText = 'Video not supported';
|
|
139
|
+
logger.error(logText);
|
|
140
|
+
{% endif %}
|
|
141
|
+
|
|
142
|
+
// Create an gallery instance if id: {{ container_id }} exists
|
|
143
|
+
if ( $('#{{ container_id }}').length ) {
|
|
144
|
+
|
|
145
|
+
{% if environment == 'development' %}
|
|
146
|
+
logText = 'Gallery on ID #{{ container_id }} is being initialized';
|
|
147
|
+
logger.info(logText);
|
|
148
|
+
{% endif %}
|
|
149
|
+
|
|
150
|
+
// Place HTML markup for the title
|
|
151
|
+
{% if gallery_title %}
|
|
152
|
+
var gallery_title = '<div class="jg-gallery-title">{{ gallery_title }}</div>';
|
|
153
|
+
$('#{{ container_id }}').before( gallery_title );
|
|
154
|
+
{% endif %}
|
|
155
|
+
|
|
156
|
+
$('#{{ container_id }}').addClass("justifiedgallery ");
|
|
157
|
+
|
|
158
|
+
{% if gallery_type == "image" %}
|
|
159
|
+
// Collect image gallery data from data file (jsonPath)
|
|
160
|
+
$.getJSON( '{{config.jsonPath}}', function (data) {
|
|
161
|
+
var content = '';
|
|
162
|
+
var gallery_class = 'justified-gallery'
|
|
163
|
+
{% if lightbox == "lg" %}
|
|
164
|
+
gallery_class += ' light-gallery ';
|
|
165
|
+
{% endif %}
|
|
166
|
+
content += '<div id="{{ gallery_id }}" class="' +gallery_class+ '{{ css_classes }}">' + '\n';
|
|
167
|
+
|
|
168
|
+
for ( var i in data["{{item.gallery.id}}"] ) {
|
|
169
|
+
var img = data["{{item.gallery.id}}"][i].img;
|
|
170
|
+
var captions_gallery = data["{{item.gallery.id}}"][i].captions_gallery;
|
|
171
|
+
var captions_lightbox = data["{{item.gallery.id}}"][i].captions_lightbox;
|
|
172
|
+
var lightbox = "{{ lightbox }}";
|
|
173
|
+
|
|
174
|
+
if ( captions_lightbox != null && lightbox == 'lg' ) {
|
|
175
|
+
content += '<a data-sub-html="' +captions_lightbox+ '" ';
|
|
176
|
+
content += 'href="' +img+ '">' + '\n';
|
|
177
|
+
} else {
|
|
178
|
+
content += '<a href="' +img+ '">' + '\n';
|
|
179
|
+
}
|
|
180
|
+
content += ' <img src="' +img+ '" img alt="' +captions_gallery+ '">' + '\n';
|
|
181
|
+
//content += ' <img class="img-overlay" src="/assets/themes/j1/modules/lightboxes/light_gallery/img/icons/zoom.png">' + '\n';
|
|
182
|
+
content += '</a>' + '\n';
|
|
183
|
+
|
|
184
|
+
} // end for
|
|
185
|
+
content += '</div>';
|
|
186
|
+
{% endif %}
|
|
187
|
+
// Hide gallery container (until lightGallery is NOT initialized)
|
|
188
|
+
// and place HTML markup
|
|
189
|
+
$("#{{ container_id }}").hide().html(content);
|
|
190
|
+
// Initialize and run the gallery using individual gallery|lightbox options
|
|
191
|
+
{% if lightbox == "lg" %}
|
|
192
|
+
var gallery_selector = $("#{{ gallery_id }}");
|
|
193
|
+
if ( options !== undefined ) {
|
|
194
|
+
// lightbox initialized on COMPLETE event of justifiedGallery
|
|
195
|
+
gallery_selector.justifiedGallery().on('jg.complete', function () {
|
|
196
|
+
gallery_selector.lightGallery({
|
|
197
|
+
{% for option in item.gallery.lightbox_options %}
|
|
198
|
+
{{ option[0] | json }}: {{ option[1] | json }},
|
|
199
|
+
{% endfor %}
|
|
200
|
+
});
|
|
201
|
+
// Initialize instance variable of lightGallery (for later access)
|
|
202
|
+
j1["{{gallery_id}}"] = gallery_selector.data('lightGallery');
|
|
203
|
+
// Show gallery DIV element if jg has completed *and* the
|
|
204
|
+
// lightbox is initialized (delayed)
|
|
205
|
+
setTimeout(function() { $("#{{ container_id }}").show(); }, {{ show_delay }});
|
|
206
|
+
|
|
207
|
+
{% if environment == 'development' %}
|
|
208
|
+
logText = 'Gallery on ID #{{ container_id }} initializing completed';
|
|
209
|
+
logger.info(logText);
|
|
210
|
+
{% endif %}
|
|
211
|
+
|
|
212
|
+
});
|
|
213
|
+
} else {
|
|
214
|
+
gallery_selector.justifiedGallery({
|
|
215
|
+
{% for option in item.gallery.gallery_options %}
|
|
216
|
+
{{ option[0] | json }}: {{ option[1] | json }},
|
|
217
|
+
{% endfor %}
|
|
218
|
+
}).on('jg.complete', function () {
|
|
219
|
+
// lightbox initialized on COMPLETE event of justifiedGallery
|
|
220
|
+
gallery_selector.lightGallery({
|
|
221
|
+
{% for option in item.gallery.lightbox_options %}
|
|
222
|
+
{{ option[0] | json }}: {{ option[1] | json }},
|
|
223
|
+
{% endfor %}
|
|
224
|
+
});
|
|
225
|
+
// Initialize instance variable of lightGallery (for later access)
|
|
226
|
+
j1["{{gallery_id}}"] = gallery_selector.data('lightGallery');
|
|
227
|
+
// Show gallery DIV element if jg has completed *and* the
|
|
228
|
+
// lightbox is initialized (delayed)
|
|
229
|
+
setTimeout(function() { $("#{{ container_id }}").show(); }, {{ show_delay }});
|
|
230
|
+
|
|
231
|
+
{% if environment == 'development' %}
|
|
232
|
+
logText = 'Gallery on ID #{{ container_id }} initializing completed';
|
|
233
|
+
logger.info(logText);
|
|
234
|
+
{% endif %}
|
|
235
|
+
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
{% endif %} // endif lightbox "lg"
|
|
239
|
+
|
|
240
|
+
{% if lightbox == "cb" %}
|
|
241
|
+
// $(this).find('a').colorbox();
|
|
242
|
+
{% endif %} // endif lightbox "cb"
|
|
243
|
+
|
|
244
|
+
}); // end getJSON
|
|
245
|
+
} //end gallery
|
|
246
|
+
{% endif %} // endif gallery enabled
|
|
247
|
+
{% endfor %}
|
|
248
|
+
}, // end function load
|
|
249
|
+
|
|
250
|
+
// -------------------------------------------------------------------------
|
|
251
|
+
// returns the current (processing) state of the module
|
|
252
|
+
// -------------------------------------------------------------------------
|
|
253
|
+
state: function () {
|
|
254
|
+
return state;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
}; // end return
|
|
258
|
+
|
|
259
|
+
})(j1, window);
|
|
260
|
+
|
|
261
|
+
{% endcapture %}
|
|
262
|
+
{{ cache | strip_empty_lines }}
|
data/lib/starter_web/assets/themes/j1/extensions/justified_gallery/js/justifiedGallery.3.6.3.js
ADDED
|
@@ -0,0 +1,1145 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Justified Gallery - v3.6.3
|
|
3
|
+
* http://miromannino.github.io/Justified-Gallery/
|
|
4
|
+
* Copyright (C) 2016 Miro Mannino
|
|
5
|
+
* Licensed under the MIT license.
|
|
6
|
+
*/
|
|
7
|
+
(function($) {
|
|
8
|
+
|
|
9
|
+
function hasScrollBar() {
|
|
10
|
+
return $("body").height() > $(window).height();
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Justified Gallery controller constructor
|
|
14
|
+
*
|
|
15
|
+
* @param $gallery the gallery to build
|
|
16
|
+
* @param settings the settings (the defaults are in $.fn.justifiedGallery.defaults)
|
|
17
|
+
* @constructor
|
|
18
|
+
*/
|
|
19
|
+
var JustifiedGallery = function ($gallery, settings) {
|
|
20
|
+
|
|
21
|
+
this.settings = settings;
|
|
22
|
+
this.checkSettings();
|
|
23
|
+
|
|
24
|
+
this.imgAnalyzerTimeout = null;
|
|
25
|
+
this.entries = null;
|
|
26
|
+
this.buildingRow = {
|
|
27
|
+
entriesBuff : [],
|
|
28
|
+
width : 0,
|
|
29
|
+
height : 0,
|
|
30
|
+
aspectRatio : 0
|
|
31
|
+
};
|
|
32
|
+
this.lastFetchedEntry = null;
|
|
33
|
+
this.lastAnalyzedIndex = -1;
|
|
34
|
+
this.yield = {
|
|
35
|
+
every : 2, // do a flush every n flushes (must be greater than 1)
|
|
36
|
+
flushed : 0 // flushed rows without a yield
|
|
37
|
+
};
|
|
38
|
+
this.border = settings.border >= 0 ? settings.border : settings.margins;
|
|
39
|
+
this.maxRowHeight = this.retrieveMaxRowHeight();
|
|
40
|
+
this.suffixRanges = this.retrieveSuffixRanges();
|
|
41
|
+
this.offY = this.border;
|
|
42
|
+
this.rows = 0;
|
|
43
|
+
this.spinner = {
|
|
44
|
+
phase : 0,
|
|
45
|
+
timeSlot : 150,
|
|
46
|
+
$el : $('<div class="spinner"><span></span><span></span><span></span></div>'),
|
|
47
|
+
intervalId : null
|
|
48
|
+
};
|
|
49
|
+
this.checkWidthIntervalId = null;
|
|
50
|
+
this.galleryWidth = $gallery.width();
|
|
51
|
+
this.$gallery = $gallery;
|
|
52
|
+
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
/** @returns {String} the best suffix given the width and the height */
|
|
56
|
+
JustifiedGallery.prototype.getSuffix = function (width, height) {
|
|
57
|
+
var longestSide, i;
|
|
58
|
+
longestSide = (width > height) ? width : height;
|
|
59
|
+
for (i = 0; i < this.suffixRanges.length; i++) {
|
|
60
|
+
if (longestSide <= this.suffixRanges[i]) {
|
|
61
|
+
return this.settings.sizeRangeSuffixes[this.suffixRanges[i]];
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return this.settings.sizeRangeSuffixes[this.suffixRanges[i - 1]];
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Remove the suffix from the string
|
|
69
|
+
*
|
|
70
|
+
* @returns {string} a new string without the suffix
|
|
71
|
+
*/
|
|
72
|
+
JustifiedGallery.prototype.removeSuffix = function (str, suffix) {
|
|
73
|
+
return str.substring(0, str.length - suffix.length);
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* @returns {boolean} a boolean to say if the suffix is contained in the str or not
|
|
78
|
+
*/
|
|
79
|
+
JustifiedGallery.prototype.endsWith = function (str, suffix) {
|
|
80
|
+
return str.indexOf(suffix, str.length - suffix.length) !== -1;
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Get the used suffix of a particular url
|
|
85
|
+
*
|
|
86
|
+
* @param str
|
|
87
|
+
* @returns {String} return the used suffix
|
|
88
|
+
*/
|
|
89
|
+
JustifiedGallery.prototype.getUsedSuffix = function (str) {
|
|
90
|
+
for (var si in this.settings.sizeRangeSuffixes) {
|
|
91
|
+
if (this.settings.sizeRangeSuffixes.hasOwnProperty(si)) {
|
|
92
|
+
if (this.settings.sizeRangeSuffixes[si].length === 0) continue;
|
|
93
|
+
if (this.endsWith(str, this.settings.sizeRangeSuffixes[si])) return this.settings.sizeRangeSuffixes[si];
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return '';
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Given an image src, with the width and the height, returns the new image src with the
|
|
101
|
+
* best suffix to show the best quality thumbnail.
|
|
102
|
+
*
|
|
103
|
+
* @returns {String} the suffix to use
|
|
104
|
+
*/
|
|
105
|
+
JustifiedGallery.prototype.newSrc = function (imageSrc, imgWidth, imgHeight, image) {
|
|
106
|
+
var newImageSrc;
|
|
107
|
+
|
|
108
|
+
if (this.settings.thumbnailPath) {
|
|
109
|
+
newImageSrc = this.settings.thumbnailPath(imageSrc, imgWidth, imgHeight, image);
|
|
110
|
+
} else {
|
|
111
|
+
var matchRes = imageSrc.match(this.settings.extension);
|
|
112
|
+
var ext = (matchRes !== null) ? matchRes[0] : '';
|
|
113
|
+
newImageSrc = imageSrc.replace(this.settings.extension, '');
|
|
114
|
+
newImageSrc = this.removeSuffix(newImageSrc, this.getUsedSuffix(newImageSrc));
|
|
115
|
+
newImageSrc += this.getSuffix(imgWidth, imgHeight) + ext;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
return newImageSrc;
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Shows the images that is in the given entry
|
|
123
|
+
*
|
|
124
|
+
* @param $entry the entry
|
|
125
|
+
* @param callback the callback that is called when the show animation is finished
|
|
126
|
+
*/
|
|
127
|
+
JustifiedGallery.prototype.showImg = function ($entry, callback) {
|
|
128
|
+
if (this.settings.cssAnimation) {
|
|
129
|
+
$entry.addClass('entry-visible');
|
|
130
|
+
if (callback) callback();
|
|
131
|
+
} else {
|
|
132
|
+
$entry.stop().fadeTo(this.settings.imagesAnimationDuration, 1.0, callback);
|
|
133
|
+
$entry.find('> img, > a > img').stop().fadeTo(this.settings.imagesAnimationDuration, 1.0, callback);
|
|
134
|
+
}
|
|
135
|
+
};
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* Extract the image src form the image, looking from the 'safe-src', and if it can't be found, from the
|
|
139
|
+
* 'src' attribute. It saves in the image data the 'jg.originalSrc' field, with the extracted src.
|
|
140
|
+
*
|
|
141
|
+
* @param $image the image to analyze
|
|
142
|
+
* @returns {String} the extracted src
|
|
143
|
+
*/
|
|
144
|
+
JustifiedGallery.prototype.extractImgSrcFromImage = function ($image) {
|
|
145
|
+
var imageSrc = (typeof $image.data('safe-src') !== 'undefined') ? $image.data('safe-src') : $image.attr('src');
|
|
146
|
+
$image.data('jg.originalSrc', imageSrc);
|
|
147
|
+
return imageSrc;
|
|
148
|
+
};
|
|
149
|
+
|
|
150
|
+
/** @returns {jQuery} the image in the given entry */
|
|
151
|
+
JustifiedGallery.prototype.imgFromEntry = function ($entry) {
|
|
152
|
+
var $img = $entry.find('> img');
|
|
153
|
+
if ($img.length === 0) $img = $entry.find('> a > img');
|
|
154
|
+
return $img.length === 0 ? null : $img;
|
|
155
|
+
};
|
|
156
|
+
|
|
157
|
+
/** @returns {jQuery} the caption in the given entry */
|
|
158
|
+
JustifiedGallery.prototype.captionFromEntry = function ($entry) {
|
|
159
|
+
var $caption = $entry.find('> .caption');
|
|
160
|
+
return $caption.length === 0 ? null : $caption;
|
|
161
|
+
};
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* Display the entry
|
|
165
|
+
*
|
|
166
|
+
* @param {jQuery} $entry the entry to display
|
|
167
|
+
* @param {int} x the x position where the entry must be positioned
|
|
168
|
+
* @param y the y position where the entry must be positioned
|
|
169
|
+
* @param imgWidth the image width
|
|
170
|
+
* @param imgHeight the image height
|
|
171
|
+
* @param rowHeight the row height of the row that owns the entry
|
|
172
|
+
*/
|
|
173
|
+
JustifiedGallery.prototype.displayEntry = function ($entry, x, y, imgWidth, imgHeight, rowHeight) {
|
|
174
|
+
$entry.width(imgWidth);
|
|
175
|
+
$entry.height(rowHeight);
|
|
176
|
+
$entry.css('top', y);
|
|
177
|
+
$entry.css('left', x);
|
|
178
|
+
|
|
179
|
+
var $image = this.imgFromEntry($entry);
|
|
180
|
+
if ($image !== null) {
|
|
181
|
+
$image.css('width', imgWidth);
|
|
182
|
+
$image.css('height', imgHeight);
|
|
183
|
+
$image.css('margin-left', - imgWidth / 2);
|
|
184
|
+
$image.css('margin-top', - imgHeight / 2);
|
|
185
|
+
|
|
186
|
+
// Image reloading for an high quality of thumbnails
|
|
187
|
+
var imageSrc = $image.attr('src');
|
|
188
|
+
var newImageSrc = this.newSrc(imageSrc, imgWidth, imgHeight, $image[0]);
|
|
189
|
+
|
|
190
|
+
$image.one('error', function () {
|
|
191
|
+
$image.attr('src', $image.data('jg.originalSrc')); //revert to the original thumbnail, we got it.
|
|
192
|
+
});
|
|
193
|
+
|
|
194
|
+
var loadNewImage = function () {
|
|
195
|
+
if (imageSrc !== newImageSrc) { //load the new image after the fadeIn
|
|
196
|
+
$image.attr('src', newImageSrc);
|
|
197
|
+
}
|
|
198
|
+
};
|
|
199
|
+
|
|
200
|
+
if ($entry.data('jg.loaded') === 'skipped') {
|
|
201
|
+
this.onImageEvent(imageSrc, $.proxy(function() {
|
|
202
|
+
this.showImg($entry, loadNewImage);
|
|
203
|
+
$entry.data('jg.loaded', true);
|
|
204
|
+
}, this));
|
|
205
|
+
} else {
|
|
206
|
+
this.showImg($entry, loadNewImage);
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
} else {
|
|
210
|
+
this.showImg($entry);
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
this.displayEntryCaption($entry);
|
|
214
|
+
};
|
|
215
|
+
|
|
216
|
+
/**
|
|
217
|
+
* Display the entry caption. If the caption element doesn't exists, it creates the caption using the 'alt'
|
|
218
|
+
* or the 'title' attributes.
|
|
219
|
+
*
|
|
220
|
+
* @param {jQuery} $entry the entry to process
|
|
221
|
+
*/
|
|
222
|
+
JustifiedGallery.prototype.displayEntryCaption = function ($entry) {
|
|
223
|
+
var $image = this.imgFromEntry($entry);
|
|
224
|
+
if ($image !== null && this.settings.captions) {
|
|
225
|
+
var $imgCaption = this.captionFromEntry($entry);
|
|
226
|
+
|
|
227
|
+
// Create it if it doesn't exists
|
|
228
|
+
if ($imgCaption === null) {
|
|
229
|
+
var caption = $image.attr('alt');
|
|
230
|
+
if (!this.isValidCaption(caption)) caption = $entry.attr('title');
|
|
231
|
+
if (this.isValidCaption(caption)) { // Create only we found something
|
|
232
|
+
$imgCaption = $('<div class="caption">' + caption + '</div>');
|
|
233
|
+
$entry.append($imgCaption);
|
|
234
|
+
$entry.data('jg.createdCaption', true);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
// Create events (we check again the $imgCaption because it can be still inexistent)
|
|
239
|
+
if ($imgCaption !== null) {
|
|
240
|
+
if (!this.settings.cssAnimation) $imgCaption.stop().fadeTo(0, this.settings.captionSettings.nonVisibleOpacity);
|
|
241
|
+
this.addCaptionEventsHandlers($entry);
|
|
242
|
+
}
|
|
243
|
+
} else {
|
|
244
|
+
this.removeCaptionEventsHandlers($entry);
|
|
245
|
+
}
|
|
246
|
+
};
|
|
247
|
+
|
|
248
|
+
/**
|
|
249
|
+
* Validates the caption
|
|
250
|
+
*
|
|
251
|
+
* @param caption The caption that should be validated
|
|
252
|
+
* @return {boolean} Validation result
|
|
253
|
+
*/
|
|
254
|
+
JustifiedGallery.prototype.isValidCaption = function (caption) {
|
|
255
|
+
return (typeof caption !== 'undefined' && caption.length > 0);
|
|
256
|
+
};
|
|
257
|
+
|
|
258
|
+
/**
|
|
259
|
+
* The callback for the event 'mouseenter'. It assumes that the event currentTarget is an entry.
|
|
260
|
+
* It shows the caption using jQuery (or using CSS if it is configured so)
|
|
261
|
+
*
|
|
262
|
+
* @param {Event} eventObject the event object
|
|
263
|
+
*/
|
|
264
|
+
JustifiedGallery.prototype.onEntryMouseEnterForCaption = function (eventObject) {
|
|
265
|
+
var $caption = this.captionFromEntry($(eventObject.currentTarget));
|
|
266
|
+
if (this.settings.cssAnimation) {
|
|
267
|
+
$caption.addClass('caption-visible').removeClass('caption-hidden');
|
|
268
|
+
} else {
|
|
269
|
+
$caption.stop().fadeTo(this.settings.captionSettings.animationDuration,
|
|
270
|
+
this.settings.captionSettings.visibleOpacity);
|
|
271
|
+
}
|
|
272
|
+
};
|
|
273
|
+
|
|
274
|
+
/**
|
|
275
|
+
* The callback for the event 'mouseleave'. It assumes that the event currentTarget is an entry.
|
|
276
|
+
* It hides the caption using jQuery (or using CSS if it is configured so)
|
|
277
|
+
*
|
|
278
|
+
* @param {Event} eventObject the event object
|
|
279
|
+
*/
|
|
280
|
+
JustifiedGallery.prototype.onEntryMouseLeaveForCaption = function (eventObject) {
|
|
281
|
+
var $caption = this.captionFromEntry($(eventObject.currentTarget));
|
|
282
|
+
if (this.settings.cssAnimation) {
|
|
283
|
+
$caption.removeClass('caption-visible').removeClass('caption-hidden');
|
|
284
|
+
} else {
|
|
285
|
+
$caption.stop().fadeTo(this.settings.captionSettings.animationDuration,
|
|
286
|
+
this.settings.captionSettings.nonVisibleOpacity);
|
|
287
|
+
}
|
|
288
|
+
};
|
|
289
|
+
|
|
290
|
+
/**
|
|
291
|
+
* Add the handlers of the entry for the caption
|
|
292
|
+
*
|
|
293
|
+
* @param $entry the entry to modify
|
|
294
|
+
*/
|
|
295
|
+
JustifiedGallery.prototype.addCaptionEventsHandlers = function ($entry) {
|
|
296
|
+
var captionMouseEvents = $entry.data('jg.captionMouseEvents');
|
|
297
|
+
if (typeof captionMouseEvents === 'undefined') {
|
|
298
|
+
captionMouseEvents = {
|
|
299
|
+
mouseenter: $.proxy(this.onEntryMouseEnterForCaption, this),
|
|
300
|
+
mouseleave: $.proxy(this.onEntryMouseLeaveForCaption, this)
|
|
301
|
+
};
|
|
302
|
+
$entry.on('mouseenter', undefined, undefined, captionMouseEvents.mouseenter);
|
|
303
|
+
$entry.on('mouseleave', undefined, undefined, captionMouseEvents.mouseleave);
|
|
304
|
+
$entry.data('jg.captionMouseEvents', captionMouseEvents);
|
|
305
|
+
}
|
|
306
|
+
};
|
|
307
|
+
|
|
308
|
+
/**
|
|
309
|
+
* Remove the handlers of the entry for the caption
|
|
310
|
+
*
|
|
311
|
+
* @param $entry the entry to modify
|
|
312
|
+
*/
|
|
313
|
+
JustifiedGallery.prototype.removeCaptionEventsHandlers = function ($entry) {
|
|
314
|
+
var captionMouseEvents = $entry.data('jg.captionMouseEvents');
|
|
315
|
+
if (typeof captionMouseEvents !== 'undefined') {
|
|
316
|
+
$entry.off('mouseenter', undefined, captionMouseEvents.mouseenter);
|
|
317
|
+
$entry.off('mouseleave', undefined, captionMouseEvents.mouseleave);
|
|
318
|
+
$entry.removeData('jg.captionMouseEvents');
|
|
319
|
+
}
|
|
320
|
+
};
|
|
321
|
+
|
|
322
|
+
/**
|
|
323
|
+
* Justify the building row, preparing it to
|
|
324
|
+
*
|
|
325
|
+
* @param isLastRow
|
|
326
|
+
* @returns a boolean to know if the row has been justified or not
|
|
327
|
+
*/
|
|
328
|
+
JustifiedGallery.prototype.prepareBuildingRow = function (isLastRow) {
|
|
329
|
+
var i, $entry, imgAspectRatio, newImgW, newImgH, justify = true;
|
|
330
|
+
var minHeight = 0;
|
|
331
|
+
var availableWidth = this.galleryWidth - 2 * this.border - (
|
|
332
|
+
(this.buildingRow.entriesBuff.length - 1) * this.settings.margins);
|
|
333
|
+
var rowHeight = availableWidth / this.buildingRow.aspectRatio;
|
|
334
|
+
var defaultRowHeight = this.settings.rowHeight;
|
|
335
|
+
var justifiable = this.buildingRow.width / availableWidth > this.settings.justifyThreshold;
|
|
336
|
+
|
|
337
|
+
//Skip the last row if we can't justify it and the lastRow == 'hide'
|
|
338
|
+
if (isLastRow && this.settings.lastRow === 'hide' && !justifiable) {
|
|
339
|
+
for (i = 0; i < this.buildingRow.entriesBuff.length; i++) {
|
|
340
|
+
$entry = this.buildingRow.entriesBuff[i];
|
|
341
|
+
if (this.settings.cssAnimation)
|
|
342
|
+
$entry.removeClass('entry-visible');
|
|
343
|
+
else {
|
|
344
|
+
$entry.stop().fadeTo(0, 0.1);
|
|
345
|
+
$entry.find('> img, > a > img').fadeTo(0, 0);
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
return -1;
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
// With lastRow = nojustify, justify if is justificable (the images will not become too big)
|
|
352
|
+
if (isLastRow && !justifiable && this.settings.lastRow !== 'justify' && this.settings.lastRow !== 'hide') {
|
|
353
|
+
justify = false;
|
|
354
|
+
|
|
355
|
+
if (this.rows > 0) {
|
|
356
|
+
defaultRowHeight = (this.offY - this.border - this.settings.margins * this.rows) / this.rows;
|
|
357
|
+
justify = defaultRowHeight * this.buildingRow.aspectRatio / availableWidth > this.settings.justifyThreshold;
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
for (i = 0; i < this.buildingRow.entriesBuff.length; i++) {
|
|
362
|
+
$entry = this.buildingRow.entriesBuff[i];
|
|
363
|
+
imgAspectRatio = $entry.data('jg.width') / $entry.data('jg.height');
|
|
364
|
+
|
|
365
|
+
if (justify) {
|
|
366
|
+
newImgW = (i === this.buildingRow.entriesBuff.length - 1) ? availableWidth : rowHeight * imgAspectRatio;
|
|
367
|
+
newImgH = rowHeight;
|
|
368
|
+
} else {
|
|
369
|
+
newImgW = defaultRowHeight * imgAspectRatio;
|
|
370
|
+
newImgH = defaultRowHeight;
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
availableWidth -= Math.round(newImgW);
|
|
374
|
+
$entry.data('jg.jwidth', Math.round(newImgW));
|
|
375
|
+
$entry.data('jg.jheight', Math.ceil(newImgH));
|
|
376
|
+
if (i === 0 || minHeight > newImgH) minHeight = newImgH;
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
this.buildingRow.height = minHeight;
|
|
380
|
+
return justify;
|
|
381
|
+
};
|
|
382
|
+
|
|
383
|
+
/**
|
|
384
|
+
* Clear the building row data to be used for a new row
|
|
385
|
+
*/
|
|
386
|
+
JustifiedGallery.prototype.clearBuildingRow = function () {
|
|
387
|
+
this.buildingRow.entriesBuff = [];
|
|
388
|
+
this.buildingRow.aspectRatio = 0;
|
|
389
|
+
this.buildingRow.width = 0;
|
|
390
|
+
};
|
|
391
|
+
|
|
392
|
+
/**
|
|
393
|
+
* Flush a row: justify it, modify the gallery height accordingly to the row height
|
|
394
|
+
*
|
|
395
|
+
* @param isLastRow
|
|
396
|
+
*/
|
|
397
|
+
JustifiedGallery.prototype.flushRow = function (isLastRow) {
|
|
398
|
+
var settings = this.settings;
|
|
399
|
+
var $entry, buildingRowRes, offX = this.border, i;
|
|
400
|
+
|
|
401
|
+
buildingRowRes = this.prepareBuildingRow(isLastRow);
|
|
402
|
+
if (isLastRow && settings.lastRow === 'hide' && buildingRowRes === -1) {
|
|
403
|
+
this.clearBuildingRow();
|
|
404
|
+
return;
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
if (this.maxRowHeight) {
|
|
408
|
+
if (this.maxRowHeight.isPercentage && this.maxRowHeight.value * settings.rowHeight < this.buildingRow.height) {
|
|
409
|
+
this.buildingRow.height = this.maxRowHeight.value * settings.rowHeight;
|
|
410
|
+
} else if (this.maxRowHeight.value >= settings.rowHeight && this.maxRowHeight.value < this.buildingRow.height) {
|
|
411
|
+
this.buildingRow.height = this.maxRowHeight.value;
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
//Align last (unjustified) row
|
|
416
|
+
if (settings.lastRow === 'center' || settings.lastRow === 'right') {
|
|
417
|
+
var availableWidth = this.galleryWidth - 2 * this.border - (this.buildingRow.entriesBuff.length - 1) * settings.margins;
|
|
418
|
+
|
|
419
|
+
for (i = 0; i < this.buildingRow.entriesBuff.length; i++) {
|
|
420
|
+
$entry = this.buildingRow.entriesBuff[i];
|
|
421
|
+
availableWidth -= $entry.data('jg.jwidth');
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
if (settings.lastRow === 'center')
|
|
425
|
+
offX += availableWidth / 2;
|
|
426
|
+
else if (settings.lastRow === 'right')
|
|
427
|
+
offX += availableWidth;
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
for (i = 0; i < this.buildingRow.entriesBuff.length; i++) {
|
|
431
|
+
$entry = this.buildingRow.entriesBuff[i];
|
|
432
|
+
this.displayEntry($entry, offX, this.offY, $entry.data('jg.jwidth'), $entry.data('jg.jheight'), this.buildingRow.height);
|
|
433
|
+
offX += $entry.data('jg.jwidth') + settings.margins;
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
//Gallery Height
|
|
437
|
+
this.galleryHeightToSet = this.offY + this.buildingRow.height + this.border;
|
|
438
|
+
this.$gallery.height(this.galleryHeightToSet + this.getSpinnerHeight());
|
|
439
|
+
|
|
440
|
+
if (!isLastRow || (this.buildingRow.height <= settings.rowHeight && buildingRowRes)) {
|
|
441
|
+
//Ready for a new row
|
|
442
|
+
this.offY += this.buildingRow.height + settings.margins;
|
|
443
|
+
this.rows += 1;
|
|
444
|
+
this.clearBuildingRow();
|
|
445
|
+
this.$gallery.trigger('jg.rowflush');
|
|
446
|
+
}
|
|
447
|
+
};
|
|
448
|
+
|
|
449
|
+
/**
|
|
450
|
+
* Checks the width of the gallery container, to know if a new justification is needed
|
|
451
|
+
*/
|
|
452
|
+
var scrollBarOn = false;
|
|
453
|
+
JustifiedGallery.prototype.checkWidth = function () {
|
|
454
|
+
this.checkWidthIntervalId = setInterval($.proxy(function () {
|
|
455
|
+
var galleryWidth = parseFloat(this.$gallery.width());
|
|
456
|
+
if (hasScrollBar() === scrollBarOn) {
|
|
457
|
+
if (Math.abs(galleryWidth - this.galleryWidth) > this.settings.refreshSensitivity) {
|
|
458
|
+
this.galleryWidth = galleryWidth;
|
|
459
|
+
this.rewind();
|
|
460
|
+
|
|
461
|
+
// Restart to analyze
|
|
462
|
+
this.startImgAnalyzer(true);
|
|
463
|
+
}
|
|
464
|
+
} else {
|
|
465
|
+
scrollBarOn = hasScrollBar();
|
|
466
|
+
this.galleryWidth = galleryWidth;
|
|
467
|
+
}
|
|
468
|
+
}, this), this.settings.refreshTime);
|
|
469
|
+
};
|
|
470
|
+
|
|
471
|
+
/**
|
|
472
|
+
* @returns {boolean} a boolean saying if the spinner is active or not
|
|
473
|
+
*/
|
|
474
|
+
JustifiedGallery.prototype.isSpinnerActive = function () {
|
|
475
|
+
return this.spinner.intervalId !== null;
|
|
476
|
+
};
|
|
477
|
+
|
|
478
|
+
/**
|
|
479
|
+
* @returns {int} the spinner height
|
|
480
|
+
*/
|
|
481
|
+
JustifiedGallery.prototype.getSpinnerHeight = function () {
|
|
482
|
+
return this.spinner.$el.innerHeight();
|
|
483
|
+
};
|
|
484
|
+
|
|
485
|
+
/**
|
|
486
|
+
* Stops the spinner animation and modify the gallery height to exclude the spinner
|
|
487
|
+
*/
|
|
488
|
+
JustifiedGallery.prototype.stopLoadingSpinnerAnimation = function () {
|
|
489
|
+
clearInterval(this.spinner.intervalId);
|
|
490
|
+
this.spinner.intervalId = null;
|
|
491
|
+
this.$gallery.height(this.$gallery.height() - this.getSpinnerHeight());
|
|
492
|
+
this.spinner.$el.detach();
|
|
493
|
+
};
|
|
494
|
+
|
|
495
|
+
/**
|
|
496
|
+
* Starts the spinner animation
|
|
497
|
+
*/
|
|
498
|
+
JustifiedGallery.prototype.startLoadingSpinnerAnimation = function () {
|
|
499
|
+
var spinnerContext = this.spinner;
|
|
500
|
+
var $spinnerPoints = spinnerContext.$el.find('span');
|
|
501
|
+
clearInterval(spinnerContext.intervalId);
|
|
502
|
+
this.$gallery.append(spinnerContext.$el);
|
|
503
|
+
this.$gallery.height(this.offY + this.buildingRow.height + this.getSpinnerHeight());
|
|
504
|
+
spinnerContext.intervalId = setInterval(function () {
|
|
505
|
+
if (spinnerContext.phase < $spinnerPoints.length) {
|
|
506
|
+
$spinnerPoints.eq(spinnerContext.phase).fadeTo(spinnerContext.timeSlot, 1);
|
|
507
|
+
} else {
|
|
508
|
+
$spinnerPoints.eq(spinnerContext.phase - $spinnerPoints.length).fadeTo(spinnerContext.timeSlot, 0);
|
|
509
|
+
}
|
|
510
|
+
spinnerContext.phase = (spinnerContext.phase + 1) % ($spinnerPoints.length * 2);
|
|
511
|
+
}, spinnerContext.timeSlot);
|
|
512
|
+
};
|
|
513
|
+
|
|
514
|
+
/**
|
|
515
|
+
* Rewind the image analysis to start from the first entry.
|
|
516
|
+
*/
|
|
517
|
+
JustifiedGallery.prototype.rewind = function () {
|
|
518
|
+
this.lastFetchedEntry = null;
|
|
519
|
+
this.lastAnalyzedIndex = -1;
|
|
520
|
+
this.offY = this.border;
|
|
521
|
+
this.rows = 0;
|
|
522
|
+
this.clearBuildingRow();
|
|
523
|
+
};
|
|
524
|
+
|
|
525
|
+
/**
|
|
526
|
+
* Update the entries searching it from the justified gallery HTML element
|
|
527
|
+
*
|
|
528
|
+
* @param norewind if norewind only the new entries will be changed (i.e. randomized, sorted or filtered)
|
|
529
|
+
* @returns {boolean} true if some entries has been founded
|
|
530
|
+
*/
|
|
531
|
+
JustifiedGallery.prototype.updateEntries = function (norewind) {
|
|
532
|
+
var newEntries;
|
|
533
|
+
|
|
534
|
+
if (norewind && this.lastFetchedEntry != null) {
|
|
535
|
+
newEntries = $(this.lastFetchedEntry).nextAll(this.settings.selector).toArray();
|
|
536
|
+
} else {
|
|
537
|
+
this.entries = [];
|
|
538
|
+
newEntries = this.$gallery.children(this.settings.selector).toArray();
|
|
539
|
+
}
|
|
540
|
+
|
|
541
|
+
if (newEntries.length > 0) {
|
|
542
|
+
|
|
543
|
+
// Sort or randomize
|
|
544
|
+
if ($.isFunction(this.settings.sort)) {
|
|
545
|
+
newEntries = this.sortArray(newEntries);
|
|
546
|
+
} else if (this.settings.randomize) {
|
|
547
|
+
newEntries = this.shuffleArray(newEntries);
|
|
548
|
+
}
|
|
549
|
+
this.lastFetchedEntry = newEntries[newEntries.length - 1];
|
|
550
|
+
|
|
551
|
+
// Filter
|
|
552
|
+
if (this.settings.filter) {
|
|
553
|
+
newEntries = this.filterArray(newEntries);
|
|
554
|
+
} else {
|
|
555
|
+
this.resetFilters(newEntries);
|
|
556
|
+
}
|
|
557
|
+
|
|
558
|
+
}
|
|
559
|
+
|
|
560
|
+
this.entries = this.entries.concat(newEntries);
|
|
561
|
+
return true;
|
|
562
|
+
};
|
|
563
|
+
|
|
564
|
+
/**
|
|
565
|
+
* Apply the entries order to the DOM, iterating the entries and appending the images
|
|
566
|
+
*
|
|
567
|
+
* @param entries the entries that has been modified and that must be re-ordered in the DOM
|
|
568
|
+
*/
|
|
569
|
+
JustifiedGallery.prototype.insertToGallery = function (entries) {
|
|
570
|
+
var that = this;
|
|
571
|
+
$.each(entries, function () {
|
|
572
|
+
$(this).appendTo(that.$gallery);
|
|
573
|
+
});
|
|
574
|
+
};
|
|
575
|
+
|
|
576
|
+
/**
|
|
577
|
+
* Shuffle the array using the Fisher-Yates shuffle algorithm
|
|
578
|
+
*
|
|
579
|
+
* @param a the array to shuffle
|
|
580
|
+
* @return the shuffled array
|
|
581
|
+
*/
|
|
582
|
+
JustifiedGallery.prototype.shuffleArray = function (a) {
|
|
583
|
+
var i, j, temp;
|
|
584
|
+
for (i = a.length - 1; i > 0; i--) {
|
|
585
|
+
j = Math.floor(Math.random() * (i + 1));
|
|
586
|
+
temp = a[i];
|
|
587
|
+
a[i] = a[j];
|
|
588
|
+
a[j] = temp;
|
|
589
|
+
}
|
|
590
|
+
this.insertToGallery(a);
|
|
591
|
+
return a;
|
|
592
|
+
};
|
|
593
|
+
|
|
594
|
+
/**
|
|
595
|
+
* Sort the array using settings.comparator as comparator
|
|
596
|
+
*
|
|
597
|
+
* @param a the array to sort (it is sorted)
|
|
598
|
+
* @return the sorted array
|
|
599
|
+
*/
|
|
600
|
+
JustifiedGallery.prototype.sortArray = function (a) {
|
|
601
|
+
a.sort(this.settings.sort);
|
|
602
|
+
this.insertToGallery(a);
|
|
603
|
+
return a;
|
|
604
|
+
};
|
|
605
|
+
|
|
606
|
+
/**
|
|
607
|
+
* Reset the filters removing the 'jg-filtered' class from all the entries
|
|
608
|
+
*
|
|
609
|
+
* @param a the array to reset
|
|
610
|
+
*/
|
|
611
|
+
JustifiedGallery.prototype.resetFilters = function (a) {
|
|
612
|
+
for (var i = 0; i < a.length; i++) $(a[i]).removeClass('jg-filtered');
|
|
613
|
+
};
|
|
614
|
+
|
|
615
|
+
/**
|
|
616
|
+
* Filter the entries considering theirs classes (if a string has been passed) or using a function for filtering.
|
|
617
|
+
*
|
|
618
|
+
* @param a the array to filter
|
|
619
|
+
* @return the filtered array
|
|
620
|
+
*/
|
|
621
|
+
JustifiedGallery.prototype.filterArray = function (a) {
|
|
622
|
+
var settings = this.settings;
|
|
623
|
+
if ($.type(settings.filter) === 'string') {
|
|
624
|
+
// Filter only keeping the entries passed in the string
|
|
625
|
+
return a.filter(function (el) {
|
|
626
|
+
var $el = $(el);
|
|
627
|
+
if ($el.is(settings.filter)) {
|
|
628
|
+
$el.removeClass('jg-filtered');
|
|
629
|
+
return true;
|
|
630
|
+
} else {
|
|
631
|
+
$el.addClass('jg-filtered').removeClass('jg-visible');
|
|
632
|
+
return false;
|
|
633
|
+
}
|
|
634
|
+
});
|
|
635
|
+
} else if ($.isFunction(settings.filter)) {
|
|
636
|
+
// Filter using the passed function
|
|
637
|
+
var filteredArr = a.filter(settings.filter);
|
|
638
|
+
for (var i = 0; i < a.length; i++) {
|
|
639
|
+
if (filteredArr.indexOf(a[i]) == -1) {
|
|
640
|
+
$(a[i]).addClass('jg-filtered').removeClass('jg-visible');
|
|
641
|
+
} else {
|
|
642
|
+
$(a[i]).removeClass('jg-filtered');
|
|
643
|
+
}
|
|
644
|
+
}
|
|
645
|
+
return filteredArr;
|
|
646
|
+
}
|
|
647
|
+
};
|
|
648
|
+
|
|
649
|
+
/**
|
|
650
|
+
* Destroy the Justified Gallery instance.
|
|
651
|
+
*
|
|
652
|
+
* It clears all the css properties added in the style attributes. We doesn't backup the original
|
|
653
|
+
* values for those css attributes, because it costs (performance) and because in general one
|
|
654
|
+
* shouldn't use the style attribute for an uniform set of images (where we suppose the use of
|
|
655
|
+
* classes). Creating a backup is also difficult because JG could be called multiple times and
|
|
656
|
+
* with different style attributes.
|
|
657
|
+
*/
|
|
658
|
+
JustifiedGallery.prototype.destroy = function () {
|
|
659
|
+
clearInterval(this.checkWidthIntervalId);
|
|
660
|
+
|
|
661
|
+
$.each(this.entries, $.proxy(function(_, entry) {
|
|
662
|
+
var $entry = $(entry);
|
|
663
|
+
|
|
664
|
+
// Reset entry style
|
|
665
|
+
$entry.css('width', '');
|
|
666
|
+
$entry.css('height', '');
|
|
667
|
+
$entry.css('top', '');
|
|
668
|
+
$entry.css('left', '');
|
|
669
|
+
$entry.data('jg.loaded', undefined);
|
|
670
|
+
$entry.removeClass('jg-entry');
|
|
671
|
+
|
|
672
|
+
// Reset image style
|
|
673
|
+
var $img = this.imgFromEntry($entry);
|
|
674
|
+
$img.css('width', '');
|
|
675
|
+
$img.css('height', '');
|
|
676
|
+
$img.css('margin-left', '');
|
|
677
|
+
$img.css('margin-top', '');
|
|
678
|
+
$img.attr('src', $img.data('jg.originalSrc'));
|
|
679
|
+
$img.data('jg.originalSrc', undefined);
|
|
680
|
+
|
|
681
|
+
// Remove caption
|
|
682
|
+
this.removeCaptionEventsHandlers($entry);
|
|
683
|
+
var $caption = this.captionFromEntry($entry);
|
|
684
|
+
if ($entry.data('jg.createdCaption')) {
|
|
685
|
+
// remove also the caption element (if created by jg)
|
|
686
|
+
$entry.data('jg.createdCaption', undefined);
|
|
687
|
+
if ($caption !== null) $caption.remove();
|
|
688
|
+
} else {
|
|
689
|
+
if ($caption !== null) $caption.fadeTo(0, 1);
|
|
690
|
+
}
|
|
691
|
+
|
|
692
|
+
}, this));
|
|
693
|
+
|
|
694
|
+
this.$gallery.css('height', '');
|
|
695
|
+
this.$gallery.removeClass('justified-gallery');
|
|
696
|
+
this.$gallery.data('jg.controller', undefined);
|
|
697
|
+
};
|
|
698
|
+
|
|
699
|
+
/**
|
|
700
|
+
* Analyze the images and builds the rows. It returns if it found an image that is not loaded.
|
|
701
|
+
*
|
|
702
|
+
* @param isForResize if the image analyzer is called for resizing or not, to call a different callback at the end
|
|
703
|
+
*/
|
|
704
|
+
JustifiedGallery.prototype.analyzeImages = function (isForResize) {
|
|
705
|
+
for (var i = this.lastAnalyzedIndex + 1; i < this.entries.length; i++) {
|
|
706
|
+
var $entry = $(this.entries[i]);
|
|
707
|
+
if ($entry.data('jg.loaded') === true || $entry.data('jg.loaded') === 'skipped') {
|
|
708
|
+
var availableWidth = this.galleryWidth - 2 * this.border - (
|
|
709
|
+
(this.buildingRow.entriesBuff.length - 1) * this.settings.margins);
|
|
710
|
+
var imgAspectRatio = $entry.data('jg.width') / $entry.data('jg.height');
|
|
711
|
+
if (availableWidth / (this.buildingRow.aspectRatio + imgAspectRatio) < this.settings.rowHeight) {
|
|
712
|
+
this.flushRow(false);
|
|
713
|
+
if(++this.yield.flushed >= this.yield.every) {
|
|
714
|
+
this.startImgAnalyzer(isForResize);
|
|
715
|
+
return;
|
|
716
|
+
}
|
|
717
|
+
}
|
|
718
|
+
|
|
719
|
+
this.buildingRow.entriesBuff.push($entry);
|
|
720
|
+
this.buildingRow.aspectRatio += imgAspectRatio;
|
|
721
|
+
this.buildingRow.width += imgAspectRatio * this.settings.rowHeight;
|
|
722
|
+
this.lastAnalyzedIndex = i;
|
|
723
|
+
|
|
724
|
+
} else if ($entry.data('jg.loaded') !== 'error') {
|
|
725
|
+
return;
|
|
726
|
+
}
|
|
727
|
+
}
|
|
728
|
+
|
|
729
|
+
// Last row flush (the row is not full)
|
|
730
|
+
if (this.buildingRow.entriesBuff.length > 0) this.flushRow(true);
|
|
731
|
+
|
|
732
|
+
if (this.isSpinnerActive()) {
|
|
733
|
+
this.stopLoadingSpinnerAnimation();
|
|
734
|
+
}
|
|
735
|
+
|
|
736
|
+
/* Stop, if there is, the timeout to start the analyzeImages.
|
|
737
|
+
This is because an image can be set loaded, and the timeout can be set,
|
|
738
|
+
but this image can be analyzed yet.
|
|
739
|
+
*/
|
|
740
|
+
this.stopImgAnalyzerStarter();
|
|
741
|
+
|
|
742
|
+
//On complete callback
|
|
743
|
+
this.$gallery.trigger(isForResize ? 'jg.resize' : 'jg.complete');
|
|
744
|
+
this.$gallery.height(this.galleryHeightToSet);
|
|
745
|
+
};
|
|
746
|
+
|
|
747
|
+
/**
|
|
748
|
+
* Stops any ImgAnalyzer starter (that has an assigned timeout)
|
|
749
|
+
*/
|
|
750
|
+
JustifiedGallery.prototype.stopImgAnalyzerStarter = function () {
|
|
751
|
+
this.yield.flushed = 0;
|
|
752
|
+
if (this.imgAnalyzerTimeout !== null) clearTimeout(this.imgAnalyzerTimeout);
|
|
753
|
+
};
|
|
754
|
+
|
|
755
|
+
/**
|
|
756
|
+
* Starts the image analyzer. It is not immediately called to let the browser to update the view
|
|
757
|
+
*
|
|
758
|
+
* @param isForResize specifies if the image analyzer must be called for resizing or not
|
|
759
|
+
*/
|
|
760
|
+
JustifiedGallery.prototype.startImgAnalyzer = function (isForResize) {
|
|
761
|
+
var that = this;
|
|
762
|
+
this.stopImgAnalyzerStarter();
|
|
763
|
+
this.imgAnalyzerTimeout = setTimeout(function () {
|
|
764
|
+
that.analyzeImages(isForResize);
|
|
765
|
+
}, 0.001); // we can't start it immediately due to a IE different behaviour
|
|
766
|
+
};
|
|
767
|
+
|
|
768
|
+
/**
|
|
769
|
+
* Checks if the image is loaded or not using another image object. We cannot use the 'complete' image property,
|
|
770
|
+
* because some browsers, with a 404 set complete = true.
|
|
771
|
+
*
|
|
772
|
+
* @param imageSrc the image src to load
|
|
773
|
+
* @param onLoad callback that is called when the image has been loaded
|
|
774
|
+
* @param onError callback that is called in case of an error
|
|
775
|
+
*/
|
|
776
|
+
JustifiedGallery.prototype.onImageEvent = function (imageSrc, onLoad, onError) {
|
|
777
|
+
if (!onLoad && !onError) return;
|
|
778
|
+
|
|
779
|
+
var memImage = new Image();
|
|
780
|
+
var $memImage = $(memImage);
|
|
781
|
+
if (onLoad) {
|
|
782
|
+
$memImage.one('load', function () {
|
|
783
|
+
$memImage.off('load error');
|
|
784
|
+
onLoad(memImage);
|
|
785
|
+
});
|
|
786
|
+
}
|
|
787
|
+
if (onError) {
|
|
788
|
+
$memImage.one('error', function() {
|
|
789
|
+
$memImage.off('load error');
|
|
790
|
+
onError(memImage);
|
|
791
|
+
});
|
|
792
|
+
}
|
|
793
|
+
memImage.src = imageSrc;
|
|
794
|
+
};
|
|
795
|
+
|
|
796
|
+
/**
|
|
797
|
+
* Init of Justified Gallery controlled
|
|
798
|
+
* It analyzes all the entries starting theirs loading and calling the image analyzer (that works with loaded images)
|
|
799
|
+
*/
|
|
800
|
+
JustifiedGallery.prototype.init = function () {
|
|
801
|
+
var imagesToLoad = false, skippedImages = false, that = this;
|
|
802
|
+
$.each(this.entries, function (index, entry) {
|
|
803
|
+
var $entry = $(entry);
|
|
804
|
+
var $image = that.imgFromEntry($entry);
|
|
805
|
+
|
|
806
|
+
$entry.addClass('jg-entry');
|
|
807
|
+
|
|
808
|
+
if ($entry.data('jg.loaded') !== true && $entry.data('jg.loaded') !== 'skipped') {
|
|
809
|
+
|
|
810
|
+
// Link Rel global overwrite
|
|
811
|
+
if (that.settings.rel !== null) $entry.attr('rel', that.settings.rel);
|
|
812
|
+
|
|
813
|
+
// Link Target global overwrite
|
|
814
|
+
if (that.settings.target !== null) $entry.attr('target', that.settings.target);
|
|
815
|
+
|
|
816
|
+
if ($image !== null) {
|
|
817
|
+
|
|
818
|
+
// Image src
|
|
819
|
+
var imageSrc = that.extractImgSrcFromImage($image);
|
|
820
|
+
$image.attr('src', imageSrc);
|
|
821
|
+
|
|
822
|
+
/* If we have the height and the width, we don't wait that the image is loaded, but we start directly
|
|
823
|
+
* with the justification */
|
|
824
|
+
if (that.settings.waitThumbnailsLoad === false) {
|
|
825
|
+
var width = parseFloat($image.attr('width'));
|
|
826
|
+
var height = parseFloat($image.attr('height'));
|
|
827
|
+
if (!isNaN(width) && !isNaN(height)) {
|
|
828
|
+
$entry.data('jg.width', width);
|
|
829
|
+
$entry.data('jg.height', height);
|
|
830
|
+
$entry.data('jg.loaded', 'skipped');
|
|
831
|
+
skippedImages = true;
|
|
832
|
+
that.startImgAnalyzer(false);
|
|
833
|
+
return true; // continue
|
|
834
|
+
}
|
|
835
|
+
}
|
|
836
|
+
|
|
837
|
+
$entry.data('jg.loaded', false);
|
|
838
|
+
imagesToLoad = true;
|
|
839
|
+
|
|
840
|
+
// Spinner start
|
|
841
|
+
if (!that.isSpinnerActive()) that.startLoadingSpinnerAnimation();
|
|
842
|
+
|
|
843
|
+
that.onImageEvent(imageSrc, function (loadImg) { // image loaded
|
|
844
|
+
$entry.data('jg.width', loadImg.width);
|
|
845
|
+
$entry.data('jg.height', loadImg.height);
|
|
846
|
+
$entry.data('jg.loaded', true);
|
|
847
|
+
that.startImgAnalyzer(false);
|
|
848
|
+
}, function () { // image load error
|
|
849
|
+
$entry.data('jg.loaded', 'error');
|
|
850
|
+
that.startImgAnalyzer(false);
|
|
851
|
+
});
|
|
852
|
+
|
|
853
|
+
} else {
|
|
854
|
+
$entry.data('jg.loaded', true);
|
|
855
|
+
$entry.data('jg.width', $entry.width() | parseFloat($entry.css('width')) | 1);
|
|
856
|
+
$entry.data('jg.height', $entry.height() | parseFloat($entry.css('height')) | 1);
|
|
857
|
+
}
|
|
858
|
+
|
|
859
|
+
}
|
|
860
|
+
|
|
861
|
+
});
|
|
862
|
+
|
|
863
|
+
if (!imagesToLoad && !skippedImages) this.startImgAnalyzer(false);
|
|
864
|
+
this.checkWidth();
|
|
865
|
+
};
|
|
866
|
+
|
|
867
|
+
/**
|
|
868
|
+
* Checks that it is a valid number. If a string is passed it is converted to a number
|
|
869
|
+
*
|
|
870
|
+
* @param settingContainer the object that contains the setting (to allow the conversion)
|
|
871
|
+
* @param settingName the setting name
|
|
872
|
+
*/
|
|
873
|
+
JustifiedGallery.prototype.checkOrConvertNumber = function (settingContainer, settingName) {
|
|
874
|
+
if ($.type(settingContainer[settingName]) === 'string') {
|
|
875
|
+
settingContainer[settingName] = parseFloat(settingContainer[settingName]);
|
|
876
|
+
}
|
|
877
|
+
|
|
878
|
+
if ($.type(settingContainer[settingName]) === 'number') {
|
|
879
|
+
if (isNaN(settingContainer[settingName])) throw 'invalid number for ' + settingName;
|
|
880
|
+
} else {
|
|
881
|
+
throw settingName + ' must be a number';
|
|
882
|
+
}
|
|
883
|
+
};
|
|
884
|
+
|
|
885
|
+
/**
|
|
886
|
+
* Checks the sizeRangeSuffixes and, if necessary, converts
|
|
887
|
+
* its keys from string (e.g. old settings with 'lt100') to int.
|
|
888
|
+
*/
|
|
889
|
+
JustifiedGallery.prototype.checkSizeRangesSuffixes = function () {
|
|
890
|
+
if ($.type(this.settings.sizeRangeSuffixes) !== 'object') {
|
|
891
|
+
throw 'sizeRangeSuffixes must be defined and must be an object';
|
|
892
|
+
}
|
|
893
|
+
|
|
894
|
+
var suffixRanges = [];
|
|
895
|
+
for (var rangeIdx in this.settings.sizeRangeSuffixes) {
|
|
896
|
+
if (this.settings.sizeRangeSuffixes.hasOwnProperty(rangeIdx)) suffixRanges.push(rangeIdx);
|
|
897
|
+
}
|
|
898
|
+
|
|
899
|
+
var newSizeRngSuffixes = {0: ''};
|
|
900
|
+
for (var i = 0; i < suffixRanges.length; i++) {
|
|
901
|
+
if ($.type(suffixRanges[i]) === 'string') {
|
|
902
|
+
try {
|
|
903
|
+
var numIdx = parseInt(suffixRanges[i].replace(/^[a-z]+/, ''), 10);
|
|
904
|
+
newSizeRngSuffixes[numIdx] = this.settings.sizeRangeSuffixes[suffixRanges[i]];
|
|
905
|
+
} catch (e) {
|
|
906
|
+
throw 'sizeRangeSuffixes keys must contains correct numbers (' + e + ')';
|
|
907
|
+
}
|
|
908
|
+
} else {
|
|
909
|
+
newSizeRngSuffixes[suffixRanges[i]] = this.settings.sizeRangeSuffixes[suffixRanges[i]];
|
|
910
|
+
}
|
|
911
|
+
}
|
|
912
|
+
|
|
913
|
+
this.settings.sizeRangeSuffixes = newSizeRngSuffixes;
|
|
914
|
+
};
|
|
915
|
+
|
|
916
|
+
/**
|
|
917
|
+
* check and convert the maxRowHeight setting
|
|
918
|
+
*/
|
|
919
|
+
JustifiedGallery.prototype.retrieveMaxRowHeight = function () {
|
|
920
|
+
var newMaxRowHeight = { };
|
|
921
|
+
|
|
922
|
+
if ($.type(this.settings.maxRowHeight) === 'string') {
|
|
923
|
+
if (this.settings.maxRowHeight.match(/^[0-9]+%$/)) {
|
|
924
|
+
newMaxRowHeight.value = parseFloat(this.settings.maxRowHeight.match(/^([0-9]+)%$/)[1]) / 100;
|
|
925
|
+
newMaxRowHeight.isPercentage = false;
|
|
926
|
+
} else {
|
|
927
|
+
newMaxRowHeight.value = parseFloat(this.settings.maxRowHeight);
|
|
928
|
+
newMaxRowHeight.isPercentage = true;
|
|
929
|
+
}
|
|
930
|
+
} else if ($.type(this.settings.maxRowHeight) === 'number') {
|
|
931
|
+
newMaxRowHeight.value = this.settings.maxRowHeight;
|
|
932
|
+
newMaxRowHeight.isPercentage = false;
|
|
933
|
+
} else if (this.settings.maxRowHeight === false ||
|
|
934
|
+
this.settings.maxRowHeight === null ||
|
|
935
|
+
typeof this.settings.maxRowHeight == 'undefined') {
|
|
936
|
+
return null;
|
|
937
|
+
} else {
|
|
938
|
+
throw 'maxRowHeight must be a number or a percentage';
|
|
939
|
+
}
|
|
940
|
+
|
|
941
|
+
// check if the converted value is not a number
|
|
942
|
+
if (isNaN(newMaxRowHeight.value)) throw 'invalid number for maxRowHeight';
|
|
943
|
+
|
|
944
|
+
// check values
|
|
945
|
+
if (newMaxRowHeight.isPercentage) {
|
|
946
|
+
if (newMaxRowHeight.value < 100) newMaxRowHeight.value = 100;
|
|
947
|
+
}
|
|
948
|
+
|
|
949
|
+
return newMaxRowHeight;
|
|
950
|
+
};
|
|
951
|
+
|
|
952
|
+
/**
|
|
953
|
+
* Checks the settings
|
|
954
|
+
*/
|
|
955
|
+
JustifiedGallery.prototype.checkSettings = function () {
|
|
956
|
+
this.checkSizeRangesSuffixes();
|
|
957
|
+
|
|
958
|
+
this.checkOrConvertNumber(this.settings, 'rowHeight');
|
|
959
|
+
this.checkOrConvertNumber(this.settings, 'margins');
|
|
960
|
+
this.checkOrConvertNumber(this.settings, 'border');
|
|
961
|
+
|
|
962
|
+
var lastRowModes = [
|
|
963
|
+
'justify',
|
|
964
|
+
'nojustify',
|
|
965
|
+
'left',
|
|
966
|
+
'center',
|
|
967
|
+
'right',
|
|
968
|
+
'hide'
|
|
969
|
+
];
|
|
970
|
+
if (lastRowModes.indexOf(this.settings.lastRow) === -1) {
|
|
971
|
+
throw 'lastRow must be one of: ' + lastRowModes.join(', ');
|
|
972
|
+
}
|
|
973
|
+
|
|
974
|
+
this.checkOrConvertNumber(this.settings, 'justifyThreshold');
|
|
975
|
+
if (this.settings.justifyThreshold < 0 || this.settings.justifyThreshold > 1) {
|
|
976
|
+
throw 'justifyThreshold must be in the interval [0,1]';
|
|
977
|
+
}
|
|
978
|
+
if ($.type(this.settings.cssAnimation) !== 'boolean') {
|
|
979
|
+
throw 'cssAnimation must be a boolean';
|
|
980
|
+
}
|
|
981
|
+
|
|
982
|
+
if ($.type(this.settings.captions) !== 'boolean') throw 'captions must be a boolean';
|
|
983
|
+
this.checkOrConvertNumber(this.settings.captionSettings, 'animationDuration');
|
|
984
|
+
|
|
985
|
+
this.checkOrConvertNumber(this.settings.captionSettings, 'visibleOpacity');
|
|
986
|
+
if (this.settings.captionSettings.visibleOpacity < 0 ||
|
|
987
|
+
this.settings.captionSettings.visibleOpacity > 1) {
|
|
988
|
+
throw 'captionSettings.visibleOpacity must be in the interval [0, 1]';
|
|
989
|
+
}
|
|
990
|
+
|
|
991
|
+
this.checkOrConvertNumber(this.settings.captionSettings, 'nonVisibleOpacity');
|
|
992
|
+
if (this.settings.captionSettings.nonVisibleOpacity < 0 ||
|
|
993
|
+
this.settings.captionSettings.nonVisibleOpacity > 1) {
|
|
994
|
+
throw 'captionSettings.nonVisibleOpacity must be in the interval [0, 1]';
|
|
995
|
+
}
|
|
996
|
+
|
|
997
|
+
this.checkOrConvertNumber(this.settings, 'imagesAnimationDuration');
|
|
998
|
+
this.checkOrConvertNumber(this.settings, 'refreshTime');
|
|
999
|
+
this.checkOrConvertNumber(this.settings, 'refreshSensitivity');
|
|
1000
|
+
if ($.type(this.settings.randomize) !== 'boolean') throw 'randomize must be a boolean';
|
|
1001
|
+
if ($.type(this.settings.selector) !== 'string') throw 'selector must be a string';
|
|
1002
|
+
|
|
1003
|
+
if (this.settings.sort !== false && !$.isFunction(this.settings.sort)) {
|
|
1004
|
+
throw 'sort must be false or a comparison function';
|
|
1005
|
+
}
|
|
1006
|
+
|
|
1007
|
+
if (this.settings.filter !== false && !$.isFunction(this.settings.filter) &&
|
|
1008
|
+
$.type(this.settings.filter) !== 'string') {
|
|
1009
|
+
throw 'filter must be false, a string or a filter function';
|
|
1010
|
+
}
|
|
1011
|
+
};
|
|
1012
|
+
|
|
1013
|
+
/**
|
|
1014
|
+
* It brings all the indexes from the sizeRangeSuffixes and it orders them. They are then sorted and returned.
|
|
1015
|
+
* @returns {Array} sorted suffix ranges
|
|
1016
|
+
*/
|
|
1017
|
+
JustifiedGallery.prototype.retrieveSuffixRanges = function () {
|
|
1018
|
+
var suffixRanges = [];
|
|
1019
|
+
for (var rangeIdx in this.settings.sizeRangeSuffixes) {
|
|
1020
|
+
if (this.settings.sizeRangeSuffixes.hasOwnProperty(rangeIdx)) suffixRanges.push(parseInt(rangeIdx, 10));
|
|
1021
|
+
}
|
|
1022
|
+
suffixRanges.sort(function (a, b) { return a > b ? 1 : a < b ? -1 : 0; });
|
|
1023
|
+
return suffixRanges;
|
|
1024
|
+
};
|
|
1025
|
+
|
|
1026
|
+
/**
|
|
1027
|
+
* Update the existing settings only changing some of them
|
|
1028
|
+
*
|
|
1029
|
+
* @param newSettings the new settings (or a subgroup of them)
|
|
1030
|
+
*/
|
|
1031
|
+
JustifiedGallery.prototype.updateSettings = function (newSettings) {
|
|
1032
|
+
// In this case Justified Gallery has been called again changing only some options
|
|
1033
|
+
this.settings = $.extend({}, this.settings, newSettings);
|
|
1034
|
+
this.checkSettings();
|
|
1035
|
+
|
|
1036
|
+
// As reported in the settings: negative value = same as margins, 0 = disabled
|
|
1037
|
+
this.border = this.settings.border >= 0 ? this.settings.border : this.settings.margins;
|
|
1038
|
+
|
|
1039
|
+
this.maxRowHeight = this.retrieveMaxRowHeight();
|
|
1040
|
+
this.suffixRanges = this.retrieveSuffixRanges();
|
|
1041
|
+
};
|
|
1042
|
+
|
|
1043
|
+
/**
|
|
1044
|
+
* Justified Gallery plugin for jQuery
|
|
1045
|
+
*
|
|
1046
|
+
* Events
|
|
1047
|
+
* - jg.complete : called when all the gallery has been created
|
|
1048
|
+
* - jg.resize : called when the gallery has been resized
|
|
1049
|
+
* - jg.rowflush : when a new row appears
|
|
1050
|
+
*
|
|
1051
|
+
* @param arg the action (or the settings) passed when the plugin is called
|
|
1052
|
+
* @returns {*} the object itself
|
|
1053
|
+
*/
|
|
1054
|
+
$.fn.justifiedGallery = function (arg) {
|
|
1055
|
+
return this.each(function (index, gallery) {
|
|
1056
|
+
|
|
1057
|
+
var $gallery = $(gallery);
|
|
1058
|
+
$gallery.addClass('justified-gallery');
|
|
1059
|
+
|
|
1060
|
+
var controller = $gallery.data('jg.controller');
|
|
1061
|
+
if (typeof controller === 'undefined') {
|
|
1062
|
+
// Create controller and assign it to the object data
|
|
1063
|
+
if (typeof arg !== 'undefined' && arg !== null && $.type(arg) !== 'object') {
|
|
1064
|
+
if (arg === 'destroy') return; // Just a call to an unexisting object
|
|
1065
|
+
throw 'The argument must be an object';
|
|
1066
|
+
}
|
|
1067
|
+
controller = new JustifiedGallery($gallery, $.extend({}, $.fn.justifiedGallery.defaults, arg));
|
|
1068
|
+
$gallery.data('jg.controller', controller);
|
|
1069
|
+
} else if (arg === 'norewind') {
|
|
1070
|
+
// In this case we don't rewind: we analyze only the latest images (e.g. to complete the last unfinished row
|
|
1071
|
+
// ... left to be more readable
|
|
1072
|
+
} else if (arg === 'destroy') {
|
|
1073
|
+
controller.destroy();
|
|
1074
|
+
return;
|
|
1075
|
+
} else {
|
|
1076
|
+
// In this case Justified Gallery has been called again changing only some options
|
|
1077
|
+
controller.updateSettings(arg);
|
|
1078
|
+
controller.rewind();
|
|
1079
|
+
}
|
|
1080
|
+
|
|
1081
|
+
// Update the entries list
|
|
1082
|
+
if (!controller.updateEntries(arg === 'norewind')) return;
|
|
1083
|
+
|
|
1084
|
+
// Init justified gallery
|
|
1085
|
+
controller.init();
|
|
1086
|
+
|
|
1087
|
+
});
|
|
1088
|
+
};
|
|
1089
|
+
|
|
1090
|
+
// Default options
|
|
1091
|
+
$.fn.justifiedGallery.defaults = {
|
|
1092
|
+
sizeRangeSuffixes: { }, /* e.g. Flickr configuration
|
|
1093
|
+
{
|
|
1094
|
+
100: '_t', // used when longest is less than 100px
|
|
1095
|
+
240: '_m', // used when longest is between 101px and 240px
|
|
1096
|
+
320: '_n', // ...
|
|
1097
|
+
500: '',
|
|
1098
|
+
640: '_z',
|
|
1099
|
+
1024: '_b' // used as else case because it is the last
|
|
1100
|
+
}
|
|
1101
|
+
*/
|
|
1102
|
+
thumbnailPath: undefined, /* If defined, sizeRangeSuffixes is not used, and this function is used to determine the
|
|
1103
|
+
path relative to a specific thumbnail size. The function should accept respectively three arguments:
|
|
1104
|
+
current path, width and height */
|
|
1105
|
+
rowHeight: 120,
|
|
1106
|
+
maxRowHeight: false, // false or negative value to deactivate. Positive number to express the value in pixels,
|
|
1107
|
+
// A string '[0-9]+%' to express in percentage (e.g. 300% means that the row height
|
|
1108
|
+
// can't exceed 3 * rowHeight)
|
|
1109
|
+
margins: 1,
|
|
1110
|
+
border: -1, // negative value = same as margins, 0 = disabled, any other value to set the border
|
|
1111
|
+
|
|
1112
|
+
lastRow: 'nojustify', // … which is the same as 'left', or can be 'justify', 'center', 'right' or 'hide'
|
|
1113
|
+
|
|
1114
|
+
justifyThreshold: 0.90, /* if row width / available space > 0.90 it will be always justified
|
|
1115
|
+
* (i.e. lastRow setting is not considered) */
|
|
1116
|
+
waitThumbnailsLoad: true,
|
|
1117
|
+
captions: true,
|
|
1118
|
+
cssAnimation: true,
|
|
1119
|
+
imagesAnimationDuration: 500, // ignored with css animations
|
|
1120
|
+
captionSettings: { // ignored with css animations
|
|
1121
|
+
animationDuration: 500,
|
|
1122
|
+
visibleOpacity: 0.7,
|
|
1123
|
+
nonVisibleOpacity: 0.0
|
|
1124
|
+
},
|
|
1125
|
+
rel: null, // rewrite the rel of each analyzed links
|
|
1126
|
+
target: null, // rewrite the target of all links
|
|
1127
|
+
extension: /\.[^.\\/]+$/, // regexp to capture the extension of an image
|
|
1128
|
+
refreshTime: 200, // time interval (in ms) to check if the page changes its width
|
|
1129
|
+
refreshSensitivity: 0, // change in width allowed (in px) without re-building the gallery
|
|
1130
|
+
randomize: false,
|
|
1131
|
+
sort: false, /*
|
|
1132
|
+
- false: to do not sort
|
|
1133
|
+
- function: to sort them using the function as comparator (see Array.prototype.sort())
|
|
1134
|
+
*/
|
|
1135
|
+
filter: false, /*
|
|
1136
|
+
- false, null or undefined: for a disabled filter
|
|
1137
|
+
- a string: an entry is kept if entry.is(filter string) returns true
|
|
1138
|
+
see jQuery's .is() function for further information
|
|
1139
|
+
- a function: invoked with arguments (entry, index, array). Return true to keep the entry, false otherwise.
|
|
1140
|
+
It follows the specifications of the Array.prototype.filter() function of JavaScript.
|
|
1141
|
+
*/
|
|
1142
|
+
selector: 'a, div:not(.spinner)' // The selector that is used to know what are the entries of the gallery
|
|
1143
|
+
};
|
|
1144
|
+
|
|
1145
|
+
}(jQuery));
|