{"version":3,"sources":["webpack://@internetarchive/bookreader/./src/js/plugins/plugin.mobile_nav.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/array-for-each.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.array.for-each.js"],"names":["super_","FILTERLIST","filter","label","jQuery","extend","BookReader","defaultOptions","enableMobileNav","mobileNavTitle","mobileNavFullscreenOnly","prototype","setup","options","call","this","refs","$mmenu","initToolbar","mode","ui","$mmenuEl","$drawerEl","buildMobileDrawerElement","$br","append","buildInfoDiv","$","buildShareDiv","mmenu","navbars","navbar","add","title","titleLink","extensions","offCanvas","wrapPageIfNeeded","zposition","pageSelector","el","$BRpageviewField","find","data","bind","length","val","window","location","href","click","applyFilters","switchMode","constMode1up","constMode2up","constModeThumb","document","body","addClass","apply","arguments","getInstance","vars","opened","close","open","trigger","closeMobileMenu","e","width","addEventListener","utils","buildToolbarElement","$el","escapedTitle","util","escapeHTML","bookTitle","toolbar","prepend","experimentalHtml","enableExperimentalControls","forEach","i","checkboxHtml","concat","settingsSection","imagesBaseURL","moreInfo","share","navMenu","arg","$results","drawerEl","br","filterStr","each","removeClass","is","attr","filtersSheet","createElement","id","innerHTML","appendChild","$forEach","arrayMethodIsStrict","arrayMethodUsesToLength","STRICT_METHOD","USES_TO_LENGTH","module","exports","callbackfn","undefined","target","proto","forced"],"mappings":"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","file":"plugins/plugin.mobile_nav.js","sourcesContent":["/* global BookReader */\n/**\n * Adds mobile navigation at responsive breakpoint\n * NOTE additional script and style tags must be included.\n *\n * \n * \n * \n * \n */\n\nimport * as utils from '../BookReader/utils.js';\n\n//contains all filters and labels for checkboxs\nconst FILTERLIST = [\n {\n filter: \"grayscale(100%)\",\n label: \"Grayscale\"\n },\n {\n filter: \"brightness(120%)\",\n label: \"High brightness\"\n },\n {\n filter: \"invert(100%)\",\n label: \"Inverted (dark mode)\"\n },\n {\n filter: \"contrast(120%)\",\n label: \"High contrast\"\n },\n]\n\njQuery.extend(BookReader.defaultOptions, {\n enableMobileNav: true,\n mobileNavTitle: 'Internet Archive',\n mobileNavFullscreenOnly: false,\n});\n\nBookReader.prototype.setup = (function(super_) {\n return function (options) {\n super_.call(this, options);\n\n this.enableMobileNav = options.enableMobileNav;\n this.mobileNavTitle = options.mobileNavTitle;\n this.mobileNavFullscreenOnly = options.mobileNavFullscreenOnly;\n\n this.refs.$mmenu = null;\n };\n})(BookReader.prototype.setup);\n\n\n// Extend initToolbar\nBookReader.prototype.initToolbar = (function (super_) {\n return function (mode, ui) {\n let $mmenuEl;\n if (this.enableMobileNav) {\n const $drawerEl = this.buildMobileDrawerElement();\n this.refs.$br.append($drawerEl);\n\n // Render info into mobile info before mmenu\n this.buildInfoDiv(this.$('.BRmobileInfo'));\n this.buildShareDiv(this.$('.BRmobileShare'));\n\n $mmenuEl = $drawerEl;\n $mmenuEl.mmenu({\n navbars: [\n { \"position\": \"top\" },\n ],\n navbar: {\n add: true,\n title: this.mobileNavTitle,\n titleLink: 'panel'\n },\n extensions: [ \"panelshadow\" ],\n }, {\n offCanvas: {\n wrapPageIfNeeded: false,\n zposition: 'next',\n pageSelector: this.el,\n }\n });\n\n const $BRpageviewField = $mmenuEl.find('.BRpageviewValue');\n $mmenuEl.data('mmenu').bind('opened', () => {\n // Update \"Link to this page view\" link\n if ($BRpageviewField.length) {\n $BRpageviewField.val(window.location.href);\n }\n });\n\n //apply filters when checkboxs clicked\n $drawerEl.find('.BRcheckbox-filters').click(() => applyFilters($drawerEl, this));\n\n // Bind mobile switch buttons\n $drawerEl.find('.DrawerLayoutButton.one_page_mode').click(\n () => this.switchMode(this.constMode1up));\n $drawerEl.find('.DrawerLayoutButton.two_page_mode').click(\n () => this.switchMode(this.constMode2up));\n $drawerEl.find('.DrawerLayoutButton.thumbnail_mode').click(\n () => this.switchMode(this.constModeThumb));\n\n if (this.mobileNavFullscreenOnly) {\n $(document.body).addClass('BRbodyMobileNavEnabledFullscreen');\n } else {\n $(document.body).addClass('BRbodyMobileNavEnabled');\n }\n\n this.refs.$mmenu = $mmenuEl;\n\n }\n\n // Call the parent method at the end, because it binds events to DOM\n super_.apply(this, arguments);\n\n\n if (this.enableMobileNav) {\n // Need to bind more, console after toolbar is initialized\n this.$('.BRmobileHamburger').click(() => {\n if ($mmenuEl.data('mmenu').getInstance().vars.opened) {\n $mmenuEl.data('mmenu').close();\n } else {\n $mmenuEl.data('mmenu').open();\n this.trigger(\"mobileNavOpen\");\n }\n });\n\n\n const closeMobileMenu = (e) => {\n // Need to close the mobile menu to reset DOM & Style\n // driven by menu plugin\n const width = $( window ).width();\n const mobileMenuIsOpen = $mmenuEl.data('mmenu').getInstance().vars.opened;\n // $brBreakPointMobile: 800px;\n if (mobileMenuIsOpen && (width >= 800)) {\n $mmenuEl.data('mmenu').close ();\n }\n };\n\n window.addEventListener('resize', utils.debounce(closeMobileMenu, 900));\n }\n };\n})(BookReader.prototype.initToolbar);\n\n\nBookReader.prototype.buildToolbarElement = (function (super_) {\n return function () {\n const $el = super_.call(this);\n if (this.enableMobileNav) {\n const escapedTitle = BookReader.util.escapeHTML(this.bookTitle);\n const toolbar = `\n \n \n ${escapedTitle}\n \n `;\n $el\n .addClass('responsive')\n .prepend($(toolbar));\n }\n return $el;\n };\n})(BookReader.prototype.buildToolbarElement);\n\n/**\n * This method builds the html for the mobile drawer. It can be decorated to\n * extend the default drawer.\n * @return {jqueryElement}\n */\nBookReader.prototype.buildMobileDrawerElement = function() {\n let experimentalHtml = '';\n //builds filters checkbox html\n if (this.enableExperimentalControls) {\n experimentalHtml = `\n

Visual Adjustment

\n
\n `;\n FILTERLIST.forEach( (el, i) => {\n const checkboxHtml = `\n \n
\n \n `;\n experimentalHtml = experimentalHtml.concat(checkboxHtml);\n })\n experimentalHtml = experimentalHtml.concat(\"
\");\n }\n\n\n const settingsSection = `\n \n \n \"settings-icon\"/\n \n Settings\n \n
\n
\n \n \n \n
\n
\n
Zoom
\n \n \n


\n ${experimentalHtml}\n
\n `;\n const moreInfo = `\n \n \n \"info-icon\"/\n \n About This Book\n \n
\n `;\n const share = `\n \n \n \"info-share\"/\n \n Share This Book\n \n
\n `;\n const navMenu = `\n \n `;\n\n const $el = $(navMenu);\n return $el;\n};\n\n/**\n * Mmenu moves itself out side of the root BookReader element, so we need to\n * include it in the scoped $ function.\n */\nBookReader.prototype.$ = (function (super_) {\n return function (arg) {\n let $results = super_.call(this, arg);\n if (this.refs.$mmenu) {\n $results = $results.add(this.refs.$mmenu.find(arg));\n }\n return $results;\n };\n})(BookReader.prototype.$);\n\n/**\n* Dynamically creates styles combining different filters for BookReaders imgs\n* based on filters checkbox\n*/\nconst applyFilters = (drawerEl, br) => {\n let filterStr = \"\";\n\n $('.BRcheckbox-filters').each(\n (i, el) => {\n br.refs.$br.removeClass(\"filter-applied\");\n if ($(el).is(':checked')) {\n br.refs.$br.addClass($(el).attr(\"filter-applied\"));\n filterStr = filterStr + FILTERLIST[i].filter;\n }\n }\n );\n const filtersSheet = $(\"#filtersStyle\")[0] || document.createElement('style');\n filtersSheet.id = \"filtersStyle\";\n filtersSheet.innerHTML = `.BRpagecontainer img {\n filter: ${filterStr};\n -webkit-filter: ${filterStr};}`;\n document.body.appendChild(filtersSheet);\n}\n","'use strict';\nvar $forEach = require('../internals/array-iteration').forEach;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.foreach\nmodule.exports = (!STRICT_METHOD || !USES_TO_LENGTH) ? function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n} : [].forEach;\n","'use strict';\nvar $ = require('../internals/export');\nvar forEach = require('../internals/array-for-each');\n\n// `Array.prototype.forEach` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.foreach\n$({ target: 'Array', proto: true, forced: [].forEach != forEach }, {\n forEach: forEach\n});\n"],"sourceRoot":""}