{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/App.vue?34da","webpack:///./src/Flipbook.vue?c689","webpack:///./src/App.vue?8cb4","webpack:///./src/Flipbook.vue?7681","webpack:///./src/matrix.coffee","webpack:///./src/Flipbook.vue?b3c0","webpack:///./src/Flipbook.vue","webpack:///./src/App.vue?a950","webpack:///./src/App.vue?04f3","webpack:///./src/App.vue","webpack:///./src/main.coffee","webpack:///./src/App.vue?1a17","webpack:///./src/Flipbook.vue?d226","webpack:///./src/Flipbook.vue?cd88","webpack:///./src/Flipbook.vue?6e50","webpack:///./src/spinner.svg","webpack:///./src/App.vue?ade9"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","_vm","this","_h","$createElement","_c","_self","class","hasMouse","attrs","on","$event","ref","staticClass","pages","pagesHiRes","pageNum","onFlipLeftStart","onFlipLeftEnd","onFlipRightStart","onFlipRightEnd","onZoomStart","onZoomEnd","scopedSlots","_u","fn","flipbook","disabled","canFlipLeft","flipLeft","canZoomIn","zoomIn","_v","_s","page","numPages","canZoomOut","zoomOut","canFlipRight","flipRight","staticRenderFns","_t","zoom","zooming","dragToScroll","style","cursor","onTouchMove","onPointerMove","onMouseMove","onTouchEnd","onPointerUp","onMouseUp","onWheel","transform","centerOffsetSmoothed","width","pageWidth","height","pageHeight","left","xMargin","top","yMargin","pageUrlLoading","leftPage","didLoadImage","_e","viewWidth","rightPage","opacity","flip","_l","bgImage","lighting","bgPos","z","blank","backgroundImage","loadImage","backgroundSize","polygonBgSize","backgroundPosition","polygonWidth","polygonHeight","zIndex","directives","rawName","expression","boundingLeft","boundingRight","onTouchStart","onPointerDown","onMouseDown","arg","Matrix","x","easeIn","Math","easeOut","easeInOut","IE","test","navigator","props","type","required","default","flipDuration","zoomDuration","zooms","perspective","nPolygons","ambient","gloss","swipeMin","singlePage","forwardDirection","validator","val","centering","startPage","loadingImage","clickToZoom","dragToFlip","viewHeight","imageWidth","imageHeight","displayedPages","nImageLoad","nImageLoadTrigger","imageLoadCallback","currentPage","firstPage","secondPage","zoomIndex","touchStartX","touchStartY","maxMove","activeCursor","hasTouchEvents","hasPointerEvents","minX","maxX","preloadedImages","progress","direction","frontImage","backImage","auto","currentCenterOffset","animatingCenter","startScrollLeft","startScrollTop","scrollLeft","scrollTop","loadedImages","computed","zooms_","canGoForward","canGoBack","showLeftPage","showRightPage","pageScale","vw","xScale","yScale","scale","w","polygonArray","centerOffset","retval","scrollLeftMin","scrollLeftMax","scrollTopMin","h","scrollTopMax","scrollLeftLimited","scrollTopLimited","mounted","passive","beforeDestroy","methods","onResize","viewport","$refs","clientWidth","clientHeight","fixFirstPage","pageUrl","hiRes","url","makePolygonArray","image","face","pageX","originRight","pageMatrix","pageRotation","theta","radius","radian","dRadian","rotate","dRotate","rad","x0","x1","computeLighting","gradients","lightingPoints","blackness","diffuse","rot","DEG","POW","specular","flipStart","requestAnimationFrame","flipAuto","t0","Date","duration","startRatio","ratio","ease","flipRevert","onImageLoad","trigger","cb","ev","path","naturalWidth","naturalHeight","zoomTo","start","end","startX","startY","fixedX","fixedY","containerFixedX","containerFixedY","endX","endY","zoomAt","rect","touch","y","swipeStart","pageY","swipeMove","swipeEnd","changedTouches","target","dragScroll","deltaX","deltaY","preloadImages","src","goToPage","img","Image","watch","rate","diff","before","after","component","components","Flipbook","LeftIcon","RightIcon","PlusIcon","MinusIcon","Ribbon","console","location","setPageFromHash","parseInt","hash","isFinite","setTimeout","config","render","App","content","locals","add","___CSS_LOADER_API_IMPORT___"],"mappings":"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","file":"js/app.9f2661e6.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([\"1430\",\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","export * from \"-!../node_modules/vue-style-loader/index.js??ref--5-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--5-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--5-oneOf-1-2!../node_modules/postcss-loader/src/index.js??ref--5-oneOf-1-3!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=css&\"","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Matrix from './matrix'\nimport spinner from './spinner.svg'\n\neaseIn = (x) -> Math.pow(x, 2)\neaseOut = (x) -> 1 - easeIn(1 - x)\neaseInOut = (x) ->\n if (x < 0.5) then easeIn(x * 2) / 2 else 0.5 + easeOut((x - 0.5) * 2) / 2\n\nIE = /Trident/.test navigator.userAgent\n\nexport default\n props:\n pages:\n type: Array\n required: true\n pagesHiRes:\n type: Array\n default: -> []\n flipDuration:\n type: Number\n default: 1000\n zoomDuration:\n type: Number\n default: 500\n zooms:\n type: Array\n default: -> [1, 2, 4]\n perspective:\n type: Number\n default: 2400\n nPolygons:\n type: Number\n default: 10\n ambient:\n type: Number\n default: 0.4\n gloss:\n type: Number\n default: 0.6\n swipeMin:\n type: Number\n default: 3\n singlePage:\n type: Boolean\n default: false\n forwardDirection:\n validator: (val) -> val == 'right' or val == 'left'\n default: 'right'\n centering:\n type: Boolean\n default: true\n startPage:\n type: Number\n default: null\n loadingImage:\n type: String\n default: spinner\n clickToZoom:\n type: Boolean\n default: true\n dragToFlip:\n type: Boolean\n default: true\n\n data: ->\n viewWidth: 0\n viewHeight: 0\n imageWidth: null\n imageHeight: null\n displayedPages: 1\n nImageLoad: 0\n nImageLoadTrigger: 0\n imageLoadCallback: null\n currentPage: 0\n firstPage: 0\n secondPage: 1\n zoomIndex: 0\n zoom: 1\n zooming: false\n touchStartX: null\n touchStartY: null\n maxMove: 0\n activeCursor: null\n hasTouchEvents: false\n hasPointerEvents: false\n minX: Infinity\n maxX: -Infinity\n preloadedImages: {}\n flip:\n progress: 0\n direction: null\n frontImage: null\n backImage: null\n auto: false\n opacity: 1\n currentCenterOffset: null\n animatingCenter: false\n startScrollLeft: 0\n startScrollTop: 0\n scrollLeft: 0\n scrollTop: 0\n loadedImages: {}\n\n computed:\n canFlipLeft: ->\n if @forwardDirection == 'left' then @canGoForward else @canGoBack\n canFlipRight: ->\n if @forwardDirection == 'right' then @canGoForward else @canGoBack\n canZoomIn: -> not @zooming and @zoomIndex < @zooms_.length - 1\n canZoomOut: -> not @zooming and @zoomIndex > 0\n numPages: -> if @pages[0] == null then @pages.length - 1 else @pages.length\n page: ->\n if @pages[0] != null\n @currentPage + 1\n else\n Math.max 1, @currentPage\n\n zooms_: -> @zooms or [1]\n\n canGoForward: ->\n not @flip.direction and @currentPage < @pages.length - @displayedPages\n canGoBack: ->\n not @flip.direction and @currentPage >= @displayedPages and\n not (@displayedPages == 1 and not @pageUrl(@firstPage - 1))\n leftPage: ->\n if @forwardDirection == 'right' or @displayedPages == 1\n @firstPage\n else\n @secondPage\n rightPage: ->\n if @forwardDirection == 'left' then @firstPage else @secondPage\n showLeftPage: ->\n @pageUrl(@leftPage)\n showRightPage: ->\n @pageUrl(@rightPage) and @displayedPages == 2\n\n cursor: ->\n if @activeCursor\n @activeCursor\n else if IE\n 'auto'\n else if @clickToZoom and @canZoomIn\n 'zoom-in'\n else if @clickToZoom and @canZoomOut\n 'zoom-out'\n else if @dragToFlip\n 'grab'\n else\n 'auto'\n\n pageScale: ->\n vw = @viewWidth / @displayedPages\n xScale = vw / @imageWidth\n yScale = @viewHeight / @imageHeight\n scale = if xScale < yScale then xScale else yScale\n if scale < 1 then scale else 1\n pageWidth: -> Math.round(@imageWidth * @pageScale)\n pageHeight: -> Math.round(@imageHeight * @pageScale)\n xMargin: -> (@viewWidth - @pageWidth * @displayedPages) / 2\n yMargin: -> (@viewHeight - @pageHeight) / 2\n polygonWidth: ->\n w = @pageWidth / @nPolygons\n w = Math.ceil(w + 1 / @zoom)\n w + 'px'\n polygonHeight: -> @pageHeight + 'px'\n polygonBgSize: -> \"#{@pageWidth}px #{@pageHeight}px\"\n polygonArray: ->\n @makePolygonArray('front').concat(@makePolygonArray('back'))\n boundingLeft: ->\n if @displayedPages == 1\n @xMargin\n else\n x =\n if @pageUrl(@leftPage)\n @xMargin\n else\n @viewWidth / 2\n if x < @minX then x else @minX\n boundingRight: ->\n if @displayedPages == 1\n @viewWidth - @xMargin\n else\n x =\n if @pageUrl(@rightPage)\n @viewWidth - @xMargin\n else\n @viewWidth / 2\n if x > @maxX then x else @maxX\n centerOffset: ->\n retval =\n if @centering\n Math.round(@viewWidth / 2 - (@boundingLeft + @boundingRight) / 2)\n else\n 0\n if @currentCenterOffset == null and @imageWidth != null\n @currentCenterOffset = retval\n retval\n\n centerOffsetSmoothed: -> Math.round(@currentCenterOffset)\n\n dragToScroll: -> not @hasTouchEvents\n\n scrollLeftMin: ->\n w = (@boundingRight - @boundingLeft) * @zoom\n if w < @viewWidth\n (@boundingLeft + @centerOffsetSmoothed) * @zoom - (@viewWidth - w) / 2\n else\n (@boundingLeft + @centerOffsetSmoothed) * @zoom\n\n scrollLeftMax: ->\n w = (@boundingRight - @boundingLeft) * @zoom\n if w < @viewWidth\n (@boundingLeft + @centerOffsetSmoothed) * @zoom - (@viewWidth - w) / 2\n else\n (@boundingRight + @centerOffsetSmoothed)* @zoom - @viewWidth\n\n scrollTopMin: ->\n h = @pageHeight * @zoom\n if h < @viewHeight\n @yMargin * @zoom - (@viewHeight - h) / 2\n else\n @yMargin * @zoom\n\n scrollTopMax: ->\n h = @pageHeight * @zoom\n if h < @viewHeight\n @yMargin * @zoom - (@viewHeight - h) / 2\n else\n (@yMargin + @pageHeight) * @zoom - @viewHeight\n\n scrollLeftLimited: ->\n Math.min(@scrollLeftMax, Math.max(@scrollLeftMin, @scrollLeft))\n\n scrollTopLimited: ->\n Math.min(@scrollTopMax, Math.max(@scrollTopMin, @scrollTop))\n\n mounted: ->\n window.addEventListener 'resize', @onResize, passive: true\n @onResize()\n @zoom = @zooms_[0]\n @goToPage @startPage\n\n beforeDestroy: ->\n window.removeEventListener 'resize', @onResize, passive: true\n\n methods:\n onResize: ->\n viewport = @$refs.viewport\n return unless viewport\n @viewWidth = viewport.clientWidth\n @viewHeight = viewport.clientHeight\n @displayedPages =\n if @viewWidth > @viewHeight and not @singlePage then 2 else 1\n @currentPage &= ~1 if @displayedPages == 2\n @fixFirstPage()\n @minX = Infinity\n @maxX = -Infinity\n\n fixFirstPage: ->\n @currentPage++ if @displayedPages == 1 and\n @currentPage == 0 and\n @pages.length and\n not @pageUrl(0)\n\n pageUrl: (page, hiRes=false) ->\n if hiRes and @zoom > 1 and not @zooming\n url = @pagesHiRes[page]\n return url if url\n @pages[page] or null\n\n pageUrlLoading: (page, hiRes=false) ->\n url = @pageUrl(page, hiRes)\n # High-res image doesn't use 'loading'\n return url if hiRes and @zoom > 1 and not @zooming\n url and @loadImage url\n\n flipLeft: ->\n return unless @canFlipLeft\n @flipStart 'left', true\n\n flipRight: ->\n return unless @canFlipRight\n @flipStart 'right', true\n\n makePolygonArray: (face) ->\n return [] unless @flip.direction\n\n progress = @flip.progress\n direction = @flip.direction\n\n if @displayedPages == 1 and direction != @forwardDirection\n progress = 1 - progress\n direction = @forwardDirection\n\n @flip.opacity =\n if @displayedPages == 1 and progress > .7\n 1 - (progress - .7) / .3\n else\n 1\n\n image =\n if face == 'front'\n @flip.frontImage\n else\n @flip.backImage\n\n polygonWidth = @pageWidth / @nPolygons\n\n pageX = @xMargin\n originRight = false\n if @displayedPages == 1\n if @forwardDirection == 'right'\n if face == 'back'\n originRight = true\n pageX = @xMargin - @pageWidth\n else\n if direction == 'left'\n if face == 'back'\n pageX = @pageWidth - @xMargin\n else\n originRight = true\n else\n if face == 'front'\n pageX = @pageWidth - @xMargin\n else\n originRight = true\n else\n if direction == 'left'\n if face == 'back'\n pageX = @viewWidth / 2\n else\n originRight = true\n else\n if face == 'front'\n pageX = @viewWidth / 2\n else\n originRight = true\n\n pageMatrix = new Matrix\n pageMatrix.translate @viewWidth / 2\n pageMatrix.perspective @perspective\n pageMatrix.translate -@viewWidth / 2\n pageMatrix.translate pageX, @yMargin\n\n pageRotation = 0\n if progress > 0.5\n pageRotation = -(progress - 0.5) * 2 * 180\n if direction == 'left'\n pageRotation = -pageRotation\n pageRotation += 180 if face == 'back'\n\n if pageRotation\n pageMatrix.translate @pageWidth if originRight\n pageMatrix.rotateY pageRotation\n pageMatrix.translate -@pageWidth if originRight\n\n if progress < 0.5\n theta = progress * 2 * Math.PI\n else\n theta = (1 - (progress - 0.5) * 2) * Math.PI\n if theta == 0\n theta = 1e-9\n radius = @pageWidth / theta\n\n radian = 0\n dRadian = theta / @nPolygons\n rotate = dRadian / 2 / Math.PI * 180\n dRotate = dRadian / Math.PI * 180\n\n if originRight\n rotate = -theta / Math.PI * 180 + dRotate / 2\n\n if face == 'back'\n rotate = -rotate\n dRotate = -dRotate\n\n @minX = Infinity\n @maxX = -Infinity\n for i in [0...@nPolygons]\n bgPos = \"#{i / (@nPolygons - 1) * 100}% 0px\"\n\n m = pageMatrix.clone()\n rad = if originRight then theta - radian else radian\n x = Math.sin(rad) * radius\n x = @pageWidth - x if originRight\n z = (1 - Math.cos(rad)) * radius\n z = -z if face == 'back'\n\n m.translate3d x, 0, z\n m.rotateY -rotate\n\n x0 = m.transformX 0\n x1 = m.transformX polygonWidth\n @maxX = Math.max Math.max(x0, x1), @maxX\n @minX = Math.min Math.min(x0, x1), @minX\n\n lighting = @computeLighting(pageRotation - rotate, dRotate)\n\n radian += dRadian\n rotate += dRotate\n [face+i, image, lighting, bgPos, m.toString(), Math.abs(Math.round(z))]\n\n computeLighting: (rot, dRotate) ->\n gradients = []\n lightingPoints = [-0.5, -0.25, 0, 0.25, 0.5]\n if @ambient < 1\n blackness = 1 - @ambient\n diffuse = lightingPoints.map (d) =>\n (1 - Math.cos((rot - dRotate * d) / 180 * Math.PI)) * blackness\n gradients.push \"\"\"\n linear-gradient(to right,\n rgba(0, 0, 0, #{diffuse[0]}),\n rgba(0, 0, 0, #{diffuse[1]}) 25%,\n rgba(0, 0, 0, #{diffuse[2]}) 50%,\n rgba(0, 0, 0, #{diffuse[3]}) 75%,\n rgba(0, 0, 0, #{diffuse[4]}))\n \"\"\"\n\n if @gloss > 0 and not IE\n DEG = 30\n POW = 200\n specular = lightingPoints.map (d) =>\n Math.max(\n Math.cos((rot + DEG - dRotate * d) / 180 * Math.PI) ** POW,\n Math.cos((rot - DEG - dRotate * d) / 180 * Math.PI) ** POW\n )\n gradients.push \"\"\"\n linear-gradient(to right,\n rgba(255, 255, 255, #{specular[0] * @gloss}),\n rgba(255, 255, 255, #{specular[1] * @gloss}) 25%,\n rgba(255, 255, 255, #{specular[2] * @gloss}) 50%,\n rgba(255, 255, 255, #{specular[3] * @gloss}) 75%,\n rgba(255, 255, 255, #{specular[4] * @gloss}))\n \"\"\"\n gradients.join(',')\n\n flipStart: (direction, auto) ->\n if direction != @forwardDirection\n if @displayedPages == 1\n @flip.frontImage = @pageUrl(@currentPage - 1)\n @flip.backImage = null\n else\n @flip.frontImage = @pageUrl(@firstPage)\n @flip.backImage = @pageUrl(@currentPage - @displayedPages + 1)\n else\n if @displayedPages == 1\n @flip.frontImage = @pageUrl(@currentPage)\n @flip.backImage = null\n else\n @flip.frontImage = @pageUrl(@secondPage)\n @flip.backImage = @pageUrl(@currentPage + @displayedPages)\n\n @flip.direction = direction\n @flip.progress = 0\n requestAnimationFrame => requestAnimationFrame =>\n if @flip.direction != @forwardDirection\n if @displayedPages == 2\n @firstPage = @currentPage - @displayedPages\n else\n if @displayedPages == 1\n @firstPage = @currentPage + @displayedPages\n else\n @secondPage = @currentPage + 1 + @displayedPages\n @flipAuto(true) if auto\n\n flipAuto: (ease) ->\n t0 = Date.now()\n duration = @flipDuration * (1 - @flip.progress)\n startRatio = @flip.progress\n @flip.auto = true\n @$emit \"flip-#{@flip.direction}-start\", @page\n animate = => requestAnimationFrame =>\n t = Date.now() - t0\n ratio = startRatio + t / duration\n ratio = 1 if ratio > 1\n @flip.progress = if ease then easeInOut ratio else ratio\n if ratio < 1\n animate()\n else\n if @flip.direction != @forwardDirection\n @currentPage -= @displayedPages\n else\n @currentPage += @displayedPages\n @$emit \"flip-#{@flip.direction}-end\", @page\n if @displayedPages == 1 and @flip.direction == @forwardDirection\n @flip.direction = null\n else\n @onImageLoad 1, => @flip.direction = null\n @flip.auto = false\n animate()\n\n flipRevert: ->\n t0 = Date.now()\n duration = @flipDuration * @flip.progress\n startRatio = @flip.progress\n @flip.auto = true\n animate = => requestAnimationFrame =>\n t = Date.now() - t0\n ratio = startRatio - startRatio * t / duration\n ratio = 0 if ratio < 0\n @flip.progress = ratio\n if ratio > 0\n animate()\n else\n @firstPage = @currentPage\n @secondPage = @currentPage + 1\n if @displayedPages == 1 and @flip.direction != @forwardDirection\n @flip.direction = null\n else\n @onImageLoad 1, => @flip.direction = null\n @flip.auto = false\n animate()\n\n onImageLoad: (trigger, cb) ->\n @nImageLoad = 0\n @nImageLoadTrigger = trigger\n @imageLoadCallback = cb\n\n didLoadImage: (ev) ->\n if @imageWidth == null\n @imageWidth = (ev.target or ev.path[0]).naturalWidth\n @imageHeight = (ev.target or ev.path[0]).naturalHeight\n @preloadImages()\n return unless @imageLoadCallback\n if ++@nImageLoad >= @nImageLoadTrigger\n @imageLoadCallback()\n @imageLoadCallback = null\n\n zoomIn: ->\n return unless @canZoomIn\n @zoomIndex += 1\n @zoomTo @zooms_[@zoomIndex]\n\n zoomOut: ->\n return unless @canZoomOut\n @zoomIndex -= 1\n @zoomTo @zooms_[@zoomIndex]\n\n zoomTo: (zoom, fixedX, fixedY) ->\n start = @zoom\n end = zoom\n viewport = @$refs.viewport\n startX = viewport.scrollLeft\n startY = viewport.scrollTop\n fixedX or= viewport.clientWidth / 2\n fixedY or= viewport.clientHeight / 2\n containerFixedX = fixedX + startX\n containerFixedY = fixedY + startY\n endX = containerFixedX / start * end - fixedX\n endY = containerFixedY / start * end - fixedY\n\n t0 = Date.now()\n @zooming = true\n @$emit 'zoom-start', zoom\n animate = => requestAnimationFrame =>\n t = Date.now() - t0\n ratio = t / @zoomDuration\n ratio = 1 if ratio > 1 or IE\n ratio = easeInOut(ratio)\n @zoom = start + (end - start) * ratio\n @scrollLeft = startX + (endX - startX) * ratio\n @scrollTop = startY + (endY - startY) * ratio\n if t < @zoomDuration\n animate()\n else\n @$emit 'zoom-end', zoom\n @zooming = false\n @zoom = zoom\n @scrollLeft = endX\n @scrollTop = endY\n animate()\n if end > 1\n @preloadImages true\n\n zoomAt: (touch) ->\n rect = @$refs.viewport.getBoundingClientRect()\n x = touch.pageX - rect.left\n y = touch.pageY - rect.top\n @zoomIndex = (@zoomIndex + 1) % @zooms_.length\n @zoomTo @zooms_[@zoomIndex], x, y\n\n swipeStart: (touch) ->\n @touchStartX = touch.pageX\n @touchStartY = touch.pageY\n @maxMove = 0\n if @zoom <= 1\n if @dragToFlip\n @activeCursor = 'grab'\n else\n @startScrollLeft = @$refs.viewport.scrollLeft\n @startScrollTop = @$refs.viewport.scrollTop\n @activeCursor = 'all-scroll'\n\n swipeMove: (touch) ->\n return unless @dragToFlip\n return unless @touchStartX?\n x = touch.pageX - @touchStartX\n y = touch.pageY - @touchStartY\n @maxMove = Math.max(@maxMove, Math.abs(x))\n @maxMove = Math.max(@maxMove, Math.abs(y))\n if @zoom > 1\n @dragScroll x, y if @dragToScroll\n return\n return if Math.abs(y) > Math.abs(x)\n @activeCursor = 'grabbing'\n if x > 0\n if @flip.direction == null and @canFlipLeft and x >= @swipeMin\n @flipStart 'left', false\n if @flip.direction == 'left'\n @flip.progress = x / @pageWidth\n @flip.progress = 1 if @flip.progress > 1\n else\n if @flip.direction == null && @canFlipRight and x <= -@swipeMin\n @flipStart 'right', false\n if @flip.direction == 'right'\n @flip.progress = -x / @pageWidth\n @flip.progress = 1 if @flip.progress > 1\n true\n\n swipeEnd: (touch) ->\n return unless @touchStartX?\n @zoomAt touch if @clickToZoom and @maxMove < @swipeMin\n if @flip.direction != null and not @flip.auto\n if @flip.progress > 1/4\n @flipAuto(false)\n else\n @flipRevert()\n @touchStartX = null\n @activeCursor = null\n\n onTouchStart: (ev) ->\n @hasTouchEvents = true\n @swipeStart ev.changedTouches[0]\n onTouchMove: (ev) ->\n if @swipeMove ev.changedTouches[0]\n ev.preventDefault() if ev.cancelable\n onTouchEnd: (ev) -> @swipeEnd ev.changedTouches[0]\n\n onPointerDown: (ev) ->\n @hasPointerEvents = true\n return if @hasTouchEvents\n return if ev.which and ev.which != 1 # Ignore right-click\n @swipeStart ev\n try\n ev.target.setPointerCapture ev.pointerId\n catch\n\n onPointerMove: (ev) -> @swipeMove ev unless @hasTouchEvents\n\n onPointerUp: (ev) ->\n return if @hasTouchEvents\n @swipeEnd ev\n try\n ev.target.releasePointerCapture ev.pointerId\n catch\n\n onMouseDown: (ev) ->\n return if @hasTouchEvents or @hasPointerEvents\n return if ev.which and ev.which != 1 # Ignore right-click\n @swipeStart ev\n onMouseMove: (ev) ->\n @swipeMove ev unless @hasTouchEvents or @hasPointerEvents\n onMouseUp: (ev) ->\n @swipeEnd ev unless @hasTouchEvents or @hasPointerEvents\n\n dragScroll: (x, y) ->\n @scrollLeft = @startScrollLeft - x\n @scrollTop = @startScrollTop - y\n\n onWheel: (ev) ->\n if @zoom > 1 and @dragToScroll\n @scrollLeft = @$refs.viewport.scrollLeft + ev.deltaX\n @scrollTop = @$refs.viewport.scrollTop + ev.deltaY\n ev.preventDefault() if ev.cancelable\n\n preloadImages: (hiRes = false) ->\n for i in [@currentPage - 3 .. @currentPage + 3]\n @pageUrlLoading i # this preloads image\n if hiRes\n for i in [@currentPage ... @currentPage + @displayedPages]\n src = @pagesHiRes[i]\n if src\n (new Image).src = src\n return\n\n goToPage: (p) ->\n return if p == null or p == @page\n if @pages[0] == null\n if @displayedPages == 2 and p == 1\n @currentPage = 0\n else\n @currentPage = p\n else\n @currentPage = p - 1\n @minX = Infinity\n @maxX = -Infinity\n @currentCenterOffset = @centerOffset\n\n loadImage: (url) ->\n if @imageWidth == null\n # First loaded image defines the image width and height.\n # So it must be true image, not 'loading' image.\n url\n else\n if @loadedImages[url]\n url\n else\n img = new Image\n img.onload = => @$set @loadedImages, url, true\n img.src = url\n @loadingImage\n\n watch:\n currentPage: ->\n @firstPage = @currentPage\n @secondPage = @currentPage + 1\n @preloadImages()\n\n centerOffset: ->\n return if @animatingCenter\n animate = => requestAnimationFrame =>\n rate = 0.1\n diff = @centerOffset - @currentCenterOffset\n if Math.abs(diff) < 0.5\n @currentCenterOffset = @centerOffset\n @animatingCenter = false\n else\n @currentCenterOffset += diff * rate\n animate()\n @animatingCenter = true\n animate()\n\n scrollLeftLimited: (val) ->\n if IE\n requestAnimationFrame => @$refs.viewport.scrollLeft = val\n else\n @$refs.viewport.scrollLeft = val\n\n scrollTopLimited: (val) ->\n if IE\n requestAnimationFrame => @$refs.viewport.scrollTop = val\n else\n @$refs.viewport.scrollTop = val\n\n pages: (after, before) ->\n @fixFirstPage()\n if not before?.length and after?.length\n if @startPage > 1 and after[0] == null\n @currentPage++\n\n startPage: (p) -> @goToPage p\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:{ 'has-mouse': _vm.hasMouse },attrs:{\"id\":\"app\"},on:{\"touchstart\":function($event){_vm.hasMouse = false}}},[_c('Flipbook',{ref:\"flipbook\",staticClass:\"flipbook\",attrs:{\"pages\":_vm.pages,\"pagesHiRes\":_vm.pagesHiRes,\"startPage\":_vm.pageNum},on:{\"flip-left-start\":_vm.onFlipLeftStart,\"flip-left-end\":_vm.onFlipLeftEnd,\"flip-right-start\":_vm.onFlipRightStart,\"flip-right-end\":_vm.onFlipRightEnd,\"zoom-start\":_vm.onZoomStart,\"zoom-end\":_vm.onZoomEnd},scopedSlots:_vm._u([{key:\"default\",fn:function(flipbook){return [_c('div',{staticClass:\"action-bar\"},[_c('left-icon',{staticClass:\"btn left\",class:{ disabled: !flipbook.canFlipLeft },on:{\"click\":flipbook.flipLeft}}),_c('plus-icon',{staticClass:\"btn plus\",class:{ disabled: !flipbook.canZoomIn },on:{\"click\":flipbook.zoomIn}}),_c('span',{staticClass:\"page-num\"},[_vm._v(\" Page \"+_vm._s(flipbook.page)+\" of \"+_vm._s(flipbook.numPages)+\" \")]),_c('minus-icon',{staticClass:\"btn minus\",class:{ disabled: !flipbook.canZoomOut },on:{\"click\":flipbook.zoomOut}}),_c('right-icon',{staticClass:\"btn right\",class:{ disabled: !flipbook.canFlipRight },on:{\"click\":flipbook.flipRight}})],1)]}}])})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_vm._t(\"default\",null,null,{\n canFlipLeft: _vm.canFlipLeft,\n canFlipRight: _vm.canFlipRight,\n canZoomIn: _vm.canZoomIn,\n canZoomOut: _vm.canZoomOut,\n page: _vm.page,\n numPages: _vm.numPages,\n flipLeft: _vm.flipLeft,\n flipRight: _vm.flipRight,\n zoomIn: _vm.zoomIn,\n zoomOut: _vm.zoomOut,\n }),_c('div',{ref:\"viewport\",staticClass:\"viewport\",class:{\n zoom: _vm.zooming || _vm.zoom > 1,\n 'drag-to-scroll': _vm.dragToScroll,\n },style:({ cursor: _vm.cursor == 'grabbing' ? 'grabbing' : 'auto' }),on:{\"touchmove\":_vm.onTouchMove,\"pointermove\":_vm.onPointerMove,\"mousemove\":_vm.onMouseMove,\"touchend\":_vm.onTouchEnd,\"touchcancel\":_vm.onTouchEnd,\"pointerup\":_vm.onPointerUp,\"pointercancel\":_vm.onPointerUp,\"mouseup\":_vm.onMouseUp,\"wheel\":_vm.onWheel}},[_c('div',{staticClass:\"flipbook-container\",style:({ transform: (\"scale(\" + _vm.zoom + \")\") })},[_c('div',{staticClass:\"click-to-flip left\",style:({ cursor: _vm.canFlipLeft ? 'pointer' : 'auto' }),on:{\"click\":_vm.flipLeft}}),_c('div',{staticClass:\"click-to-flip right\",style:({ cursor: _vm.canFlipRight ? 'pointer' : 'auto' }),on:{\"click\":_vm.flipRight}}),_c('div',{style:({ transform: (\"translateX(\" + _vm.centerOffsetSmoothed + \"px)\") })},[(_vm.showLeftPage)?_c('img',{staticClass:\"page fixed\",style:({\n width: _vm.pageWidth + 'px',\n height: _vm.pageHeight + 'px',\n left: _vm.xMargin + 'px',\n top: _vm.yMargin + 'px',\n }),attrs:{\"src\":_vm.pageUrlLoading(_vm.leftPage, true)},on:{\"load\":function($event){return _vm.didLoadImage($event)}}}):_vm._e(),(_vm.showRightPage)?_c('img',{staticClass:\"page fixed\",style:({\n width: _vm.pageWidth + 'px',\n height: _vm.pageHeight + 'px',\n left: _vm.viewWidth / 2 + 'px',\n top: _vm.yMargin + 'px',\n }),attrs:{\"src\":_vm.pageUrlLoading(_vm.rightPage, true)},on:{\"load\":function($event){return _vm.didLoadImage($event)}}}):_vm._e(),_c('div',{style:({ opacity: _vm.flip.opacity })},_vm._l((_vm.polygonArray),function(ref){\n var key = ref[0];\n var bgImage = ref[1];\n var lighting = ref[2];\n var bgPos = ref[3];\n var transform = ref[4];\n var z = ref[5];\nreturn _c('div',{key:key,staticClass:\"polygon\",class:{ blank: !bgImage },style:({\n backgroundImage: bgImage && (\"url(\" + (_vm.loadImage(bgImage)) + \")\"),\n backgroundSize: _vm.polygonBgSize,\n backgroundPosition: bgPos,\n width: _vm.polygonWidth,\n height: _vm.polygonHeight,\n transform: transform,\n zIndex: z,\n })},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(lighting.length),expression:\"lighting.length\"}],staticClass:\"lighting\",style:({ backgroundImage: lighting })})])}),0),_c('div',{staticClass:\"bounding-box\",style:({\n left: _vm.boundingLeft + 'px',\n top: _vm.yMargin + 'px',\n width: _vm.boundingRight - _vm.boundingLeft + 'px',\n height: _vm.pageHeight + 'px',\n cursor: _vm.cursor,\n }),on:{\"touchstart\":_vm.onTouchStart,\"pointerdown\":_vm.onPointerDown,\"mousedown\":_vm.onMouseDown}})])])])],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import {\n identity\n multiply\n perspective\n translate\n translate3d\n rotateY\n toString\n} from 'rematrix'\n\nexport default class Matrix\n constructor: (arg) ->\n if arg\n if arg.m\n @m = [arg.m...]\n else\n @m = [arg...]\n else\n @m = identity()\n\n clone: -> new Matrix @\n\n multiply: (m) -> @m = multiply @m, m\n\n perspective: (d) -> @multiply perspective d\n\n transformX: (x) -> (x * @m[0] + @m[12]) / (x * @m[3] + @m[15])\n\n translate: (x, y) -> @multiply translate x, y\n\n translate3d: (x, y, z) -> @multiply translate3d x, y, z\n\n rotateY: (deg) -> @multiply rotateY deg\n\n toString: -> toString @m\n","import mod from \"-!../node_modules/babel-loader/lib/index.js!../node_modules/coffee-loader/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./Flipbook.vue?vue&type=script&lang=coffee&\"; export default mod; export * from \"-!../node_modules/babel-loader/lib/index.js!../node_modules/coffee-loader/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./Flipbook.vue?vue&type=script&lang=coffee&\"","import { render, staticRenderFns } from \"./Flipbook.vue?vue&type=template&id=0cfa48dc&scoped=true&\"\nimport script from \"./Flipbook.vue?vue&type=script&lang=coffee&\"\nexport * from \"./Flipbook.vue?vue&type=script&lang=coffee&\"\nimport style0 from \"./Flipbook.vue?vue&type=style&index=0&id=0cfa48dc&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0cfa48dc\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport 'vue-material-design-icons/styles.css'\nimport Ribbon from 'vue-ribbon'\nimport LeftIcon from 'vue-material-design-icons/ChevronLeftCircle'\nimport RightIcon from 'vue-material-design-icons/ChevronRightCircle'\nimport PlusIcon from 'vue-material-design-icons/PlusCircle'\nimport MinusIcon from 'vue-material-design-icons/MinusCircle'\nimport Flipbook from './Flipbook'\n\nexport default\n name: 'app'\n components: { Flipbook, LeftIcon, RightIcon, PlusIcon, MinusIcon, Ribbon }\n data: ->\n pages: [],\n pagesHiRes: [],\n hasMouse: true\n pageNum: null\n methods:\n onFlipLeftStart: (page) -> console.log 'flip-left-start', page\n onFlipLeftEnd: (page) ->\n console.log 'flip-left-end', page\n window.location.hash = '#' + page\n onFlipRightStart: (page) -> console.log 'flip-right-start', page\n onFlipRightEnd: (page) ->\n console.log 'flip-right-end', page\n window.location.hash = '#' + page\n onZoomStart: (zoom) -> console.log 'zoom-start', zoom\n onZoomEnd: (zoom) -> console.log 'zoom-end', zoom\n setPageFromHash: ->\n n = parseInt window.location.hash.slice(1), 10\n @pageNum = n if isFinite n\n mounted: ->\n window.addEventListener 'keydown', (ev) =>\n flipbook = @$refs.flipbook\n return unless flipbook\n flipbook.flipLeft() if ev.keyCode == 37 and flipbook.canFlipLeft\n flipbook.flipRight() if ev.keyCode == 39 and flipbook.canFlipRight\n\n # Simulate asynchronous pages initialization\n setTimeout (=>\n @pages = [\n null\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-001.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-002.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-003.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-004.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-005.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-006.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-007.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-008.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-009.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-010.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-011.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-012.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-013.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-014.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-015.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-016.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-017.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-018.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-019.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-020.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-021.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-022.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-023.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-024.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-025.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-026.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-027.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-028.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-029.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-030.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-031.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-032.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-033.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-034.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-035.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-036.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-037.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-038.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-039.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-040.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-041.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-042.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-043.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-044.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-045.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-046.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-047.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-048.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-049.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-050.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-051.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-052.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-053.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-054.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-055.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-056.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-057.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-058.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-059.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-060.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-061.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-062.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-063.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-064.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-065.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-066.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-067.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-068.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-069.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-070.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-071.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-072.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-073.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-074.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-075.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-076.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-077.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-078.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-079.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-080.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-081.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-082.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-083.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-084.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-085.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-086.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-087.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-088.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-089.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-090.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-091.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-092.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-093.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-094.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-095.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-096.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-097.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-098.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-099.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-100.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-101.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-102.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-103.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-104.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-105.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-106.jpg'\n ]\n @pagesHiRes = [\n null\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-001.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-002.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-003.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-004.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-005.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-006.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-007.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-008.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-009.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-010.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-011.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-012.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-013.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-014.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-015.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-016.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-017.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-018.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-019.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-020.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-021.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-022.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-023.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-024.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-025.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-026.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-027.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-028.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-029.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-030.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-031.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-032.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-033.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-034.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-035.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-036.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-037.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-038.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-039.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-040.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-041.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-042.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-043.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-044.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-045.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-046.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-047.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-048.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-049.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-050.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-051.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-052.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-053.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-054.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-055.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-056.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-057.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-058.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-059.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-060.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-061.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-062.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-063.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-064.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-065.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-066.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-067.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-068.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-069.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-070.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-071.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-072.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-073.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-074.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-075.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-076.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-077.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-078.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-079.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-080.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-081.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-082.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-083.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-084.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-085.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-086.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-087.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-088.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-089.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-090.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-091.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-092.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-093.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-094.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-095.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-096.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-097.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-098.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-099.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-100.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-101.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-102.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-103.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-104.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-105.jpg'\n 'tatics/24 days - Luyen Nghe TacticsForListening-Basic-StudentBook-106.jpg'\n ]\n ), 1\n\n window.addEventListener 'hashchange', @setPageFromHash\n @setPageFromHash()\n","import mod from \"-!../node_modules/babel-loader/lib/index.js!../node_modules/coffee-loader/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=coffee&\"; export default mod; export * from \"-!../node_modules/babel-loader/lib/index.js!../node_modules/coffee-loader/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=coffee&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=14ee15aa&\"\nimport script from \"./App.vue?vue&type=script&lang=coffee&\"\nexport * from \"./App.vue?vue&type=script&lang=coffee&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Vue from 'vue'\nimport App from './App.vue'\n\nVue.config.productionTip = false\n\nnew Vue\n render: (h) -> h(App)\n.$mount('#app')\n","// style-loader: Adds some css to the DOM by adding a