'use strict'; /*@ Ox.PDFViewer <f> PDF Viewer options <o> Options center <[n]|s|'auto'> Center ([x, y] or 'auto') height <n|384> Viewer height in px maxZoom <n|16> Maximum zoom (minimum zoom is 'fit') pdfjsURL <s|'/static/pdf.js/'> URL to pdf.js url <s|''> PDF URL width <n|512> Viewer width in px zoom <n|s|'fit'> Zoom (number or 'fit' or 'fill') self <o> Shared private variable ([options[, self]]) -> <o:OxElement> PDF Viewer center <!> Center changed center <[n]|s> Center zoom <!> Zoom changed zoom <n|s> Zoom page <!> Page changed page <n|s> Page @*/ Ox.PDFViewer = function(options, self) { self = self || {}; var that = Ox.Element({}, self) .defaults({ center: 'auto', height: 384, pdfjsURL: '/static/pdf.js/', page: 1, maxZoom: 16, url: '', width: 512, zoom: 'fit' }) .options(options || {}) .update({ center: function() { setCenterAndZoom(); }, page: updatePage, // allow for setting height and width at the same time height: updateSize, url: function() { self.$iframe.postMessage('pdf', {pdf: self.options.url}); }, width: updateSize, zoom: function() { setCenterAndZoom(); } }) .addClass('OxPDFViewer') .on({ }) .bindEvent({ }); self.$iframe = Ox.Element('<iframe>') .attr({ frameborder: 0, height: self.options.height + 'px', src: self.options.pdfjsURL + '?file=' + encodeURIComponent(self.options.url) + '#page=' + self.options.page, width: self.options.width + 'px' }) .onMessage(function(data, event) { that.triggerEvent(event, data); }) .appendTo(that); updateSize(); function setCenterAndZoom() { } function updatePage() { self.$iframe.postMessage('page', {page: self.options.page}); } function updateSize() { that.css({ height: self.options.height + 'px', width: self.options.width + 'px', }); self.$iframe.css({ height: self.options.height + 'px', width: self.options.width + 'px', }); } /*@ postMessage <f> postMessage (event, data) -> <o> post message to pdf.js @*/ that.postMessage = function(event, data) { self.$iframe.postMessage(event, data); } return that; };