Join our webinar on Wednesday, June 26, at 1pm EDTHow Chia Mitigates Risk in the Crypto Industry.Register
Socket
Socket
Sign inDemoInstall

@react-pdf-viewer/print

Package Overview
Dependencies
91
Maintainers
1
Versions
42
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 3.5.0 to 3.6.0

156

lib/cjs/print.js

@@ -29,2 +29,50 @@ 'use strict';

var getAllPagesNumbers = function (doc) {
return Array(doc.numPages)
.fill(0)
.map(function (_, i) { return i; });
};
var generateRange = function (min, max) {
return Array(max - min + 1)
.fill(0)
.map(function (_, i) { return min + i; });
};
var removeDuplicate = function (arr) { return arr.filter(function (i) { return arr.indexOf(i) === arr.lastIndexOf(i); }); };
var getCustomPagesNumbers = function (customPages) {
return function (doc) {
var results = [];
customPages
.replace(/\s+/g, '')
.split(',')
.forEach(function (part) {
var range = part
.split('-')
.map(function (c) { return parseInt(c, 10); })
.filter(function (c) { return Number.isInteger(c); });
if (range.length === 1) {
results.push(range[0] - 1);
}
else if (range.length === 2) {
results.push.apply(results, generateRange(range[0] - 1, range[1] - 1));
}
});
return removeDuplicate(results).filter(function (i) { return i >= 0 && i < doc.numPages; });
};
};
var getEvenPagesNumbers = function (doc) {
return Array(doc.numPages)
.fill(0)
.map(function (_, i) { return i; })
.filter(function (i) { return (i + 1) % 2 === 0; });
};
var getOddPagesNumbers = function (doc) {
return Array(doc.numPages)
.fill(0)
.map(function (_, i) { return i; })
.filter(function (i) { return (i + 1) % 2 === 1; });
};
var PrintIcon = function () { return (React__namespace.createElement(core.Icon, { size: 16 },

@@ -137,6 +185,15 @@ React__namespace.createElement("path", { d: "M7.5,19.499h9 M7.5,16.499h9 M5.5,16.5h-3c-1.103-0.003-1.997-0.897-2-2v-6c0.003-1.103,0.897-1.997,2-2h19\n c1.103,0.003,1.997,0.897,2,2v6c-0.003,1.103-0.897,1.997-2,2h-3\n M5.5,4.5v-4h9.586c0.265,0,0.52,0.105,0.707,0.293l2.414,2.414\n C18.395,3.394,18.5,3.649,18.5,3.914V4.5\n M18.5,22.5c0,0.552-0.448,1-1,1h-11c-0.552,0-1-0.448-1-1v-9h13V22.5z\n M3.5,8.499\n c0.552,0,1,0.448,1,1s-0.448,1-1,1s-1-0.448-1-1S2.948,8.499,3.5,8.499z\n M14.5,0.499v4h4" }))); };

var isRunningInJest = function () { return typeof process !== 'undefined' && process.env.JEST_WORKER_ID !== undefined; };
var PageThumbnail = function (_a) {
var canvas = _a.canvas, page = _a.page, pageHeight = _a.pageHeight, pageWidth = _a.pageWidth, rotation = _a.rotation, onLoad = _a.onLoad;
var canvas = _a.canvas, page = _a.page, pageHeight = _a.pageHeight, pageIndex = _a.pageIndex, pageWidth = _a.pageWidth, rotation = _a.rotation, onLoad = _a.onLoad;
var isMounted = core.useIsMounted();
var renderTask = React__namespace.useRef();
var _b = React__namespace.useState(''), src = _b[0], setSrc = _b[1];
var testWithJest = React__namespace.useMemo(function () { return isRunningInJest(); }, []);
var handleImageLoad = function () {
if (!testWithJest) {
onLoad();
}
};
React__namespace.useEffect(function () {

@@ -163,7 +220,12 @@ var task = renderTask.current;

renderTask.current.promise.then(function () {
'toBlob' in canvas
? canvas.toBlob(function (blob) {
setSrc(URL.createObjectURL(blob));
})
: setSrc(canvas.toDataURL());
if ('toBlob' in canvas && 'createObjectURL' in URL) {
canvas.toBlob(function (blob) {
isMounted.current && setSrc(URL.createObjectURL(blob));
testWithJest && onLoad();
});
}
else {
isMounted.current && setSrc(canvas.toDataURL());
testWithJest && onLoad();
}
}, function () {

@@ -173,7 +235,8 @@ });

return (src && (React__namespace.createElement("div", { className: "rpv-print__page" },
React__namespace.createElement("img", { src: src, onLoad: function () { return onLoad(); } }))));
React__namespace.createElement("img", { "data-testid": "print__thumbnail-".concat(pageIndex), src: src, onLoad: handleImageLoad }))));
};
var PageThumbnailContainer = function (_a) {
var canvas = _a.canvas, doc = _a.doc, pageHeight = _a.pageHeight, pageIndex = _a.pageIndex, pageRotation = _a.pageRotation, pageWidth = _a.pageWidth, rotation = _a.rotation, onLoad = _a.onLoad;
var canvas = _a.canvas, doc = _a.doc, pageHeight = _a.pageHeight, pageIndex = _a.pageIndex, pageRotation = _a.pageRotation, pageWidth = _a.pageWidth, rotation = _a.rotation, shouldRender = _a.shouldRender, onLoad = _a.onLoad;
var isMounted = core.useIsMounted();
var _b = React__namespace.useState({

@@ -188,18 +251,21 @@ height: pageHeight,

React__namespace.useEffect(function () {
core.getPage(doc, pageIndex).then(function (pdfPage) {
var viewport = pdfPage.getViewport({ scale: 1 });
setPageSize({
height: viewport.height,
page: pdfPage,
viewportRotation: viewport.rotation,
width: viewport.width,
if (shouldRender) {
core.getPage(doc, pageIndex).then(function (pdfPage) {
var viewport = pdfPage.getViewport({ scale: 1 });
isMounted.current &&
setPageSize({
height: viewport.height,
page: pdfPage,
viewportRotation: viewport.rotation,
width: viewport.width,
});
});
});
}, []);
}
}, [shouldRender]);
var rotationNumber = (pageSize.viewportRotation + rotation + pageRotation) % 360;
return (page && (React__namespace.createElement(PageThumbnail, { canvas: canvas, page: page, pageHeight: isVertical ? height : width, pageWidth: isVertical ? width : height, rotation: rotationNumber, onLoad: onLoad })));
return (page && (React__namespace.createElement(PageThumbnail, { canvas: canvas, page: page, pageHeight: isVertical ? height : width, pageIndex: pageIndex, pageWidth: isVertical ? width : height, rotation: rotationNumber, onLoad: onLoad })));
};
var PrintZone = function (_a) {
var doc = _a.doc, numLoadedPages = _a.numLoadedPages, pagesRotation = _a.pagesRotation, pageHeight = _a.pageHeight, pageWidth = _a.pageWidth, printStatus = _a.printStatus, rotation = _a.rotation, onCancel = _a.onCancel, onLoad = _a.onLoad;
var doc = _a.doc, numLoadedPages = _a.numLoadedPages, pagesRotation = _a.pagesRotation, pageHeight = _a.pageHeight, pageWidth = _a.pageWidth, printPages = _a.printPages, printStatus = _a.printStatus, rotation = _a.rotation, onCancel = _a.onCancel, onLoad = _a.onLoad;
var canvas = React__namespace.useMemo(function () { return document.createElement('canvas'); }, []);

@@ -213,2 +279,3 @@ var container = React__namespace.useMemo(function () {

div.classList.add('rpv-print__zone');
div.setAttribute('data-testid', 'print__zone');
document.body.appendChild(div);

@@ -243,5 +310,3 @@ return div;

return reactDom.createPortal(React__namespace.createElement(React__namespace.Fragment, null,
Array(Math.min(numLoadedPages + 1, doc.numPages))
.fill(0)
.map(function (_, index) { return (React__namespace.createElement(PageThumbnailContainer, { key: index, canvas: canvas, doc: doc, pageHeight: pageHeight, pageIndex: index, pageRotation: pagesRotation.has(index) ? pagesRotation.get(index) : 0, pageWidth: pageWidth, rotation: rotation, onLoad: onLoad })); }),
printPages.map(function (pageIndex, loopIndex) { return (React__namespace.createElement(PageThumbnailContainer, { key: pageIndex, canvas: canvas, doc: doc, pageHeight: pageHeight, pageIndex: pageIndex, pageRotation: pagesRotation.has(pageIndex) ? pagesRotation.get(pageIndex) : 0, pageWidth: pageWidth, rotation: rotation, shouldRender: loopIndex === numLoadedPages, onLoad: onLoad })); }),
React__namespace.createElement("style", { dangerouslySetInnerHTML: {

@@ -253,5 +318,10 @@ __html: "@page { size: ".concat(pageWidth, "pt ").concat(pageHeight, "pt }"),

var PrintContainer = function (_a) {
var doc = _a.doc, pagesRotation = _a.pagesRotation, pageHeight = _a.pageHeight, pageWidth = _a.pageWidth, rotation = _a.rotation, store = _a.store;
var doc = _a.doc, pagesRotation = _a.pagesRotation, pageHeight = _a.pageHeight, pageWidth = _a.pageWidth, renderProgressBar = _a.renderProgressBar, rotation = _a.rotation, setPages = _a.setPages, store = _a.store;
var _b = React__namespace.useState(PrintStatus.Inactive), printStatus = _b[0], setPrintStatus = _b[1];
var _c = React__namespace.useState(0), numLoadedPagesForPrint = _c[0], setNumLoadedPagesForPrint = _c[1];
var printPages = React__namespace.useMemo(function () {
var numPages = doc.numPages;
return setPages(doc).filter(function (index) { return index >= 0 && index < numPages; });
}, [doc, setPages]);
var numPrintPages = printPages.length;
var cancelPrinting = function () {

@@ -264,5 +334,5 @@ setNumLoadedPagesForPrint(0);

var total = numLoadedPagesForPrint + 1;
if (total <= doc.numPages) {
if (total <= numPrintPages) {
setNumLoadedPagesForPrint(total);
total === doc.numPages && setPrintStatus(PrintStatus.Ready);
total === numPrintPages && setPrintStatus(PrintStatus.Ready);
}

@@ -278,5 +348,6 @@ };

printStatus === PrintStatus.CheckingPermission && React__namespace.createElement(CheckPrintPermission, { doc: doc, store: store }),
printStatus === PrintStatus.Preparing && (React__namespace.createElement(PrintProgress, { numLoadedPages: numLoadedPagesForPrint, numPages: doc.numPages, onCancel: cancelPrinting })),
printStatus === PrintStatus.Preparing &&
(renderProgressBar ? (renderProgressBar(numLoadedPagesForPrint, numPrintPages, cancelPrinting)) : (React__namespace.createElement(PrintProgress, { numLoadedPages: numLoadedPagesForPrint, numPages: numPrintPages, onCancel: cancelPrinting }))),
(printStatus === PrintStatus.Preparing || printStatus === PrintStatus.Ready) &&
numLoadedPagesForPrint <= doc.numPages && (React__namespace.createElement(PrintZone, { doc: doc, numLoadedPages: numLoadedPagesForPrint, pagesRotation: pagesRotation, pageHeight: pageHeight, pageWidth: pageWidth, printStatus: printStatus, rotation: rotation, onCancel: cancelPrinting, onLoad: onLoadPage }))));
numLoadedPagesForPrint <= numPrintPages && (React__namespace.createElement(PrintZone, { doc: doc, numLoadedPages: numLoadedPagesForPrint, pagesRotation: pagesRotation, pageHeight: pageHeight, pageWidth: pageWidth, printPages: printPages, printStatus: printStatus, rotation: rotation, onCancel: cancelPrinting, onLoad: onLoadPage }))));
};

@@ -322,3 +393,12 @@

var printPlugin = function (props) {
var printPluginProps = React__namespace.useMemo(function () { return Object.assign({}, { enableShortcuts: true }, props); }, []);
var printPluginProps = React__namespace.useMemo(function () {
return Object.assign({}, {
enableShortcuts: true,
setPages: function (doc) {
return Array(doc.numPages)
.fill(0)
.map(function (_, i) { return i; });
},
}, props);
}, []);
var store = React__namespace.useMemo(function () {

@@ -329,2 +409,5 @@ return core.createStore({

}, []);
var print = function () {
store.update('printStatus', PrintStatus.CheckingPermission);
};
var PrintDecorator = function (props) { return (React__namespace.createElement(Print, __assign({ enableShortcuts: printPluginProps.enableShortcuts }, props, { store: store }))); };

@@ -336,8 +419,8 @@ var PrintButtonDecorator = function () { return React__namespace.createElement(PrintDecorator, null, function (props) { return React__namespace.createElement(PrintButton, __assign({}, props)); }); };

} })); })); };
var renderViewer = function (props) {
var slot = props.slot;
var renderViewer = function (renderViewerProps) {
var slot = renderViewerProps.slot;
var updateSlot = {
children: (React__namespace.createElement(React__namespace.Fragment, null,
printPluginProps.enableShortcuts && (React__namespace.createElement(ShortcutHandler, { containerRef: props.containerRef, store: store })),
React__namespace.createElement(PrintContainer, { doc: props.doc, pagesRotation: props.pagesRotation, pageHeight: props.pageHeight, pageWidth: props.pageWidth, rotation: props.rotation, store: store }),
printPluginProps.enableShortcuts && (React__namespace.createElement(ShortcutHandler, { containerRef: renderViewerProps.containerRef, store: store })),
React__namespace.createElement(PrintContainer, { doc: renderViewerProps.doc, pagesRotation: renderViewerProps.pagesRotation, pageHeight: renderViewerProps.pageHeight, pageWidth: renderViewerProps.pageWidth, renderProgressBar: props === null || props === void 0 ? void 0 : props.renderProgressBar, rotation: renderViewerProps.rotation, setPages: printPluginProps.setPages, store: store }),
slot.children)),

@@ -347,3 +430,7 @@ };

};
var setPages = function (printPages) {
printPluginProps.setPages = printPages;
};
return {
print: print,
renderViewer: renderViewer,

@@ -353,2 +440,3 @@ Print: PrintDecorator,

PrintMenuItem: PrintMenuItemDecorator,
setPages: setPages,
};

@@ -358,2 +446,6 @@ };

exports.PrintIcon = PrintIcon;
exports.getAllPagesNumbers = getAllPagesNumbers;
exports.getCustomPagesNumbers = getCustomPagesNumbers;
exports.getEvenPagesNumbers = getEvenPagesNumbers;
exports.getOddPagesNumbers = getOddPagesNumbers;
exports.printPlugin = printPlugin;

@@ -1,1 +0,1 @@

"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@react-pdf-viewer/core"),t=require("react"),n=require("react-dom");function r(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(n){if("default"!==n){var r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:function(){return e[n]}})}})),t.default=e,Object.freeze(t)}var o,a=r(t),i=function(){return a.createElement(e.Icon,{size:16},a.createElement("path",{d:"M7.5,19.499h9 M7.5,16.499h9 M5.5,16.5h-3c-1.103-0.003-1.997-0.897-2-2v-6c0.003-1.103,0.897-1.997,2-2h19\n c1.103,0.003,1.997,0.897,2,2v6c-0.003,1.103-0.897,1.997-2,2h-3\n M5.5,4.5v-4h9.586c0.265,0,0.52,0.105,0.707,0.293l2.414,2.414\n C18.395,3.394,18.5,3.649,18.5,3.914V4.5\n M18.5,22.5c0,0.552-0.448,1-1,1h-11c-0.552,0-1-0.448-1-1v-9h13V22.5z\n M3.5,8.499\n c0.552,0,1,0.448,1,1s-0.448,1-1,1s-1-0.448-1-1S2.948,8.499,3.5,8.499z\n M14.5,0.499v4h4"}))},c=function(){return c=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e},c.apply(this,arguments)},u={left:0,top:8},s=function(t){var n=t.enableShortcuts,r=t.onClick,o=a.useContext(e.LocalizationContext).l10n,c=o&&o.print?o.print.print:"Print",s=n?e.isMac()?"Meta+P":"Ctrl+P":"";return a.createElement(e.Tooltip,{ariaControlsSuffix:"print",position:e.Position.BottomCenter,target:a.createElement(e.MinimalButton,{ariaKeyShortcuts:s,ariaLabel:c,testId:"print__button",onClick:r},a.createElement(i,null)),content:function(){return c},offset:u})};!function(e){e.CheckingPermission="CheckingPermission",e.Inactive="Inactive",e.Preparing="Preparing",e.Cancelled="Cancelled",e.Ready="Ready"}(o||(o={}));var l=function(e){var t=e.children,n=e.enableShortcuts,r=e.store;return(t||s)({enableShortcuts:n,onClick:function(){r.update("printStatus",o.CheckingPermission)}})},p=function(t){var n=t.doc,r=t.store,i=a.useContext(e.LocalizationContext).l10n,c=a.useState(!0),u=c[0],s=c[1];return a.useEffect((function(){n.getPermissions().then((function(e){null===e||e.includes(4)||e.includes(2048)?r.update("printStatus",o.Preparing):s(!1)}))}),[]),u?a.createElement(a.Fragment,null):a.createElement(e.Modal,{ariaControlsSuffix:"print-permission",closeOnClickOutside:!1,closeOnEscape:!1,content:function(t){return a.createElement(a.Fragment,null,a.createElement("div",{className:"rpv-print__permission-body"},i&&i.print?i.print.disallowPrint:"The document does not allow to print"),a.createElement("div",{className:"rpv-print__permission-footer"},a.createElement(e.Button,{onClick:function(){t(),r.update("printStatus",o.Cancelled)}},i&&i.print?i.print.close:"Close")))},isOpened:!0})},d=function(t){var n=t.numLoadedPages,r=t.numPages,o=t.onCancel,i=a.useContext(e.LocalizationContext).l10n,c=a.useContext(e.ThemeContext).direction===e.TextDirection.RightToLeft,u=Math.floor(100*n/r);return a.createElement("div",{className:"rpv-print__progress"},a.createElement("div",{className:e.classNames({"rpv-print__progress-body":!0,"rpv-print__progress-body--rtl":c})},a.createElement("div",{className:"rpv-print__progress-message"},i&&i.print?i.print.preparingDocument:"Preparing document ..."),a.createElement("div",{className:"rpv-print__progress-bar"},a.createElement(e.ProgressBar,{progress:u})),a.createElement(e.Button,{onClick:o},i&&i.print?i.print.cancel:"Cancel")))},m=function(e){var t=e.canvas,n=e.page,r=e.pageHeight,o=e.pageWidth,i=e.rotation,c=e.onLoad,u=a.useRef(),s=a.useState(""),l=s[0],p=s[1];return a.useEffect((function(){var e=u.current;e&&e.cancel();var a=150/72;t.height=Math.floor(r*a),t.width=Math.floor(o*a);var c=t.getContext("2d");c.save(),c.fillStyle="rgb(255, 255, 255)",c.fillRect(0,0,t.width,t.height),c.restore();var s=n.getViewport({rotation:i,scale:1});u.current=n.render({canvasContext:c,intent:"print",transform:[a,0,0,a,0,0],viewport:s}),u.current.promise.then((function(){"toBlob"in t?t.toBlob((function(e){p(URL.createObjectURL(e))})):p(t.toDataURL())}),(function(){}))}),[]),l&&a.createElement("div",{className:"rpv-print__page"},a.createElement("img",{src:l,onLoad:function(){return c()}}))},g=function(t){var n=t.canvas,r=t.doc,o=t.pageHeight,i=t.pageIndex,c=t.pageRotation,u=t.pageWidth,s=t.rotation,l=t.onLoad,p=a.useState({height:o,page:null,viewportRotation:0,width:u}),d=p[0],g=p[1],f=d.page,v=d.height,h=d.width,E=Math.abs(s+c)%180==0;a.useEffect((function(){e.getPage(r,i).then((function(e){var t=e.getViewport({scale:1});g({height:t.height,page:e,viewportRotation:t.rotation,width:t.width})}))}),[]);var C=(d.viewportRotation+s+c)%360;return f&&a.createElement(m,{canvas:n,page:f,pageHeight:E?v:h,pageWidth:E?h:v,rotation:C,onLoad:l})},f=function(e){var t=e.doc,r=e.numLoadedPages,i=e.pagesRotation,c=e.pageHeight,u=e.pageWidth,s=e.printStatus,l=e.rotation,p=e.onCancel,d=e.onLoad,m=a.useMemo((function(){return document.createElement("canvas")}),[]),f=a.useMemo((function(){var e=document.querySelector(".rpv-print__zone");if(e)return e;var t=document.createElement("div");return t.classList.add("rpv-print__zone"),document.body.appendChild(t),t}),[]);return a.useEffect((function(){s===o.Ready&&(document.documentElement.classList.add("rpv-print__html-printing"),document.body.classList.add("rpv-print__body-printing"),window.print());var e=function(){if(s===o.Ready){document.documentElement.classList.remove("rpv-print__html-printing"),document.body.classList.remove("rpv-print__body-printing");var t=document.querySelectorAll(".rpv-print__zone");t&&t.forEach((function(e){e.parentElement.removeChild(e)})),m.height=0,m.width=0,document.removeEventListener("mousemove",e),p()}};return document.addEventListener("mousemove",e),function(){return document.removeEventListener("mousemove",e)}}),[s]),n.createPortal(a.createElement(a.Fragment,null,Array(Math.min(r+1,t.numPages)).fill(0).map((function(e,n){return a.createElement(g,{key:n,canvas:m,doc:t,pageHeight:c,pageIndex:n,pageRotation:i.has(n)?i.get(n):0,pageWidth:u,rotation:l,onLoad:d})})),a.createElement("style",{dangerouslySetInnerHTML:{__html:"@page { size: ".concat(u,"pt ").concat(c,"pt }")}})),f)},v=function(e){var t=e.doc,n=e.pagesRotation,r=e.pageHeight,i=e.pageWidth,c=e.rotation,u=e.store,s=a.useState(o.Inactive),l=s[0],m=s[1],g=a.useState(0),v=g[0],h=g[1],E=function(){h(0),m(o.Inactive)},C=function(e){return m(e)};return a.useEffect((function(){return u.subscribe("printStatus",C),function(){u.unsubscribe("printStatus",C)}}),[]),a.createElement(a.Fragment,null,l===o.CheckingPermission&&a.createElement(p,{doc:t,store:u}),l===o.Preparing&&a.createElement(d,{numLoadedPages:v,numPages:t.numPages,onCancel:E}),(l===o.Preparing||l===o.Ready)&&v<=t.numPages&&a.createElement(f,{doc:t,numLoadedPages:v,pagesRotation:n,pageHeight:r,pageWidth:i,printStatus:l,rotation:c,onCancel:E,onLoad:function(){var e=v+1;e<=t.numPages&&(h(e),e===t.numPages&&m(o.Ready))}}))},h=function(t){var n=t.onClick,r=a.useContext(e.LocalizationContext).l10n,o=r&&r.print?r.print.print:"Print";return a.createElement(e.MenuItem,{icon:a.createElement(i,null),testId:"print__menu",onClick:n},o)},E=function(t){var n=t.containerRef,r=t.store,i=function(t){if(!t.shiftKey&&!t.altKey&&"p"===t.key&&(e.isMac()?t.metaKey:t.ctrlKey)){var a=n.current;a&&document.activeElement&&a.contains(document.activeElement)&&(t.preventDefault(),r.update("printStatus",o.Preparing))}};return a.useEffect((function(){if(n.current)return document.addEventListener("keydown",i),function(){document.removeEventListener("keydown",i)}}),[n.current]),a.createElement(a.Fragment,null)};exports.PrintIcon=i,exports.printPlugin=function(t){var n=a.useMemo((function(){return Object.assign({},{enableShortcuts:!0},t)}),[]),r=a.useMemo((function(){return e.createStore({printStatus:o.Inactive})}),[]),i=function(e){return a.createElement(l,c({enableShortcuts:n.enableShortcuts},e,{store:r}))};return{renderViewer:function(e){var t=e.slot,o={children:a.createElement(a.Fragment,null,n.enableShortcuts&&a.createElement(E,{containerRef:e.containerRef,store:r}),a.createElement(v,{doc:e.doc,pagesRotation:e.pagesRotation,pageHeight:e.pageHeight,pageWidth:e.pageWidth,rotation:e.rotation,store:r}),t.children)};return c(c({},t),o)},Print:i,PrintButton:function(){return a.createElement(i,null,(function(e){return a.createElement(s,c({},e))}))},PrintMenuItem:function(e){return a.createElement(i,null,(function(t){return a.createElement(h,{onClick:function(){t.onClick(),e.onClick()}})}))}}};
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@react-pdf-viewer/core"),t=require("react"),n=require("react-dom");function r(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(n){if("default"!==n){var r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:function(){return e[n]}})}})),t.default=e,Object.freeze(t)}var o,a=r(t),i=function(){return a.createElement(e.Icon,{size:16},a.createElement("path",{d:"M7.5,19.499h9 M7.5,16.499h9 M5.5,16.5h-3c-1.103-0.003-1.997-0.897-2-2v-6c0.003-1.103,0.897-1.997,2-2h19\n c1.103,0.003,1.997,0.897,2,2v6c-0.003,1.103-0.897,1.997-2,2h-3\n M5.5,4.5v-4h9.586c0.265,0,0.52,0.105,0.707,0.293l2.414,2.414\n C18.395,3.394,18.5,3.649,18.5,3.914V4.5\n M18.5,22.5c0,0.552-0.448,1-1,1h-11c-0.552,0-1-0.448-1-1v-9h13V22.5z\n M3.5,8.499\n c0.552,0,1,0.448,1,1s-0.448,1-1,1s-1-0.448-1-1S2.948,8.499,3.5,8.499z\n M14.5,0.499v4h4"}))},c=function(){return c=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e},c.apply(this,arguments)},u={left:0,top:8},s=function(t){var n=t.enableShortcuts,r=t.onClick,o=a.useContext(e.LocalizationContext).l10n,c=o&&o.print?o.print.print:"Print",s=n?e.isMac()?"Meta+P":"Ctrl+P":"";return a.createElement(e.Tooltip,{ariaControlsSuffix:"print",position:e.Position.BottomCenter,target:a.createElement(e.MinimalButton,{ariaKeyShortcuts:s,ariaLabel:c,testId:"print__button",onClick:r},a.createElement(i,null)),content:function(){return c},offset:u})};!function(e){e.CheckingPermission="CheckingPermission",e.Inactive="Inactive",e.Preparing="Preparing",e.Cancelled="Cancelled",e.Ready="Ready"}(o||(o={}));var l=function(e){var t=e.children,n=e.enableShortcuts,r=e.store;return(t||s)({enableShortcuts:n,onClick:function(){r.update("printStatus",o.CheckingPermission)}})},p=function(t){var n=t.doc,r=t.store,i=a.useContext(e.LocalizationContext).l10n,c=a.useState(!0),u=c[0],s=c[1];return a.useEffect((function(){n.getPermissions().then((function(e){null===e||e.includes(4)||e.includes(2048)?r.update("printStatus",o.Preparing):s(!1)}))}),[]),u?a.createElement(a.Fragment,null):a.createElement(e.Modal,{ariaControlsSuffix:"print-permission",closeOnClickOutside:!1,closeOnEscape:!1,content:function(t){return a.createElement(a.Fragment,null,a.createElement("div",{className:"rpv-print__permission-body"},i&&i.print?i.print.disallowPrint:"The document does not allow to print"),a.createElement("div",{className:"rpv-print__permission-footer"},a.createElement(e.Button,{onClick:function(){t(),r.update("printStatus",o.Cancelled)}},i&&i.print?i.print.close:"Close")))},isOpened:!0})},d=function(t){var n=t.numLoadedPages,r=t.numPages,o=t.onCancel,i=a.useContext(e.LocalizationContext).l10n,c=a.useContext(e.ThemeContext).direction===e.TextDirection.RightToLeft,u=Math.floor(100*n/r);return a.createElement("div",{className:"rpv-print__progress"},a.createElement("div",{className:e.classNames({"rpv-print__progress-body":!0,"rpv-print__progress-body--rtl":c})},a.createElement("div",{className:"rpv-print__progress-message"},i&&i.print?i.print.preparingDocument:"Preparing document ..."),a.createElement("div",{className:"rpv-print__progress-bar"},a.createElement(e.ProgressBar,{progress:u})),a.createElement(e.Button,{onClick:o},i&&i.print?i.print.cancel:"Cancel")))},m=function(t){var n=t.canvas,r=t.page,o=t.pageHeight,i=t.pageIndex,c=t.pageWidth,u=t.rotation,s=t.onLoad,l=e.useIsMounted(),p=a.useRef(),d=a.useState(""),m=d[0],f=d[1],g=a.useMemo((function(){return"undefined"!=typeof process&&void 0!==process.env.JEST_WORKER_ID}),[]);return a.useEffect((function(){var e=p.current;e&&e.cancel();var t=150/72;n.height=Math.floor(o*t),n.width=Math.floor(c*t);var a=n.getContext("2d");a.save(),a.fillStyle="rgb(255, 255, 255)",a.fillRect(0,0,n.width,n.height),a.restore();var i=r.getViewport({rotation:u,scale:1});p.current=r.render({canvasContext:a,intent:"print",transform:[t,0,0,t,0,0],viewport:i}),p.current.promise.then((function(){"toBlob"in n&&"createObjectURL"in URL?n.toBlob((function(e){l.current&&f(URL.createObjectURL(e)),g&&s()})):(l.current&&f(n.toDataURL()),g&&s())}),(function(){}))}),[]),m&&a.createElement("div",{className:"rpv-print__page"},a.createElement("img",{"data-testid":"print__thumbnail-".concat(i),src:m,onLoad:function(){g||s()}}))},f=function(t){var n=t.canvas,r=t.doc,o=t.pageHeight,i=t.pageIndex,c=t.pageRotation,u=t.pageWidth,s=t.rotation,l=t.shouldRender,p=t.onLoad,d=e.useIsMounted(),f=a.useState({height:o,page:null,viewportRotation:0,width:u}),g=f[0],v=f[1],h=g.page,E=g.height,P=g.width,_=Math.abs(s+c)%180==0;a.useEffect((function(){l&&e.getPage(r,i).then((function(e){var t=e.getViewport({scale:1});d.current&&v({height:t.height,page:e,viewportRotation:t.rotation,width:t.width})}))}),[l]);var b=(g.viewportRotation+s+c)%360;return h&&a.createElement(m,{canvas:n,page:h,pageHeight:_?E:P,pageIndex:i,pageWidth:_?P:E,rotation:b,onLoad:p})},g=function(e){var t=e.doc,r=e.numLoadedPages,i=e.pagesRotation,c=e.pageHeight,u=e.pageWidth,s=e.printPages,l=e.printStatus,p=e.rotation,d=e.onCancel,m=e.onLoad,g=a.useMemo((function(){return document.createElement("canvas")}),[]),v=a.useMemo((function(){var e=document.querySelector(".rpv-print__zone");if(e)return e;var t=document.createElement("div");return t.classList.add("rpv-print__zone"),t.setAttribute("data-testid","print__zone"),document.body.appendChild(t),t}),[]);return a.useEffect((function(){l===o.Ready&&(document.documentElement.classList.add("rpv-print__html-printing"),document.body.classList.add("rpv-print__body-printing"),window.print());var e=function(){if(l===o.Ready){document.documentElement.classList.remove("rpv-print__html-printing"),document.body.classList.remove("rpv-print__body-printing");var t=document.querySelectorAll(".rpv-print__zone");t&&t.forEach((function(e){e.parentElement.removeChild(e)})),g.height=0,g.width=0,document.removeEventListener("mousemove",e),d()}};return document.addEventListener("mousemove",e),function(){return document.removeEventListener("mousemove",e)}}),[l]),n.createPortal(a.createElement(a.Fragment,null,s.map((function(e,n){return a.createElement(f,{key:e,canvas:g,doc:t,pageHeight:c,pageIndex:e,pageRotation:i.has(e)?i.get(e):0,pageWidth:u,rotation:p,shouldRender:n===r,onLoad:m})})),a.createElement("style",{dangerouslySetInnerHTML:{__html:"@page { size: ".concat(u,"pt ").concat(c,"pt }")}})),v)},v=function(e){var t=e.doc,n=e.pagesRotation,r=e.pageHeight,i=e.pageWidth,c=e.renderProgressBar,u=e.rotation,s=e.setPages,l=e.store,m=a.useState(o.Inactive),f=m[0],v=m[1],h=a.useState(0),E=h[0],P=h[1],_=a.useMemo((function(){var e=t.numPages;return s(t).filter((function(t){return t>=0&&t<e}))}),[t,s]),b=_.length,C=function(){P(0),v(o.Inactive)},y=function(e){return v(e)};return a.useEffect((function(){return l.subscribe("printStatus",y),function(){l.unsubscribe("printStatus",y)}}),[]),a.createElement(a.Fragment,null,f===o.CheckingPermission&&a.createElement(p,{doc:t,store:l}),f===o.Preparing&&(c?c(E,b,C):a.createElement(d,{numLoadedPages:E,numPages:b,onCancel:C})),(f===o.Preparing||f===o.Ready)&&E<=b&&a.createElement(g,{doc:t,numLoadedPages:E,pagesRotation:n,pageHeight:r,pageWidth:i,printPages:_,printStatus:f,rotation:u,onCancel:C,onLoad:function(){var e=E+1;e<=b&&(P(e),e===b&&v(o.Ready))}}))},h=function(t){var n=t.onClick,r=a.useContext(e.LocalizationContext).l10n,o=r&&r.print?r.print.print:"Print";return a.createElement(e.MenuItem,{icon:a.createElement(i,null),testId:"print__menu",onClick:n},o)},E=function(t){var n=t.containerRef,r=t.store,i=function(t){if(!t.shiftKey&&!t.altKey&&"p"===t.key&&(e.isMac()?t.metaKey:t.ctrlKey)){var a=n.current;a&&document.activeElement&&a.contains(document.activeElement)&&(t.preventDefault(),r.update("printStatus",o.Preparing))}};return a.useEffect((function(){if(n.current)return document.addEventListener("keydown",i),function(){document.removeEventListener("keydown",i)}}),[n.current]),a.createElement(a.Fragment,null)};exports.PrintIcon=i,exports.getAllPagesNumbers=function(e){return Array(e.numPages).fill(0).map((function(e,t){return t}))},exports.getCustomPagesNumbers=function(e){return function(t){var n,r=[];return e.replace(/\s+/g,"").split(",").forEach((function(e){var t,n,o=e.split("-").map((function(e){return parseInt(e,10)})).filter((function(e){return Number.isInteger(e)}));1===o.length?r.push(o[0]-1):2===o.length&&r.push.apply(r,(t=o[0]-1,n=o[1]-1,Array(n-t+1).fill(0).map((function(e,n){return t+n}))))})),(n=r,n.filter((function(e){return n.indexOf(e)===n.lastIndexOf(e)}))).filter((function(e){return e>=0&&e<t.numPages}))}},exports.getEvenPagesNumbers=function(e){return Array(e.numPages).fill(0).map((function(e,t){return t})).filter((function(e){return(e+1)%2==0}))},exports.getOddPagesNumbers=function(e){return Array(e.numPages).fill(0).map((function(e,t){return t})).filter((function(e){return(e+1)%2==1}))},exports.printPlugin=function(t){var n=a.useMemo((function(){return Object.assign({},{enableShortcuts:!0,setPages:function(e){return Array(e.numPages).fill(0).map((function(e,t){return t}))}},t)}),[]),r=a.useMemo((function(){return e.createStore({printStatus:o.Inactive})}),[]),i=function(e){return a.createElement(l,c({enableShortcuts:n.enableShortcuts},e,{store:r}))};return{print:function(){r.update("printStatus",o.CheckingPermission)},renderViewer:function(e){var o=e.slot,i={children:a.createElement(a.Fragment,null,n.enableShortcuts&&a.createElement(E,{containerRef:e.containerRef,store:r}),a.createElement(v,{doc:e.doc,pagesRotation:e.pagesRotation,pageHeight:e.pageHeight,pageWidth:e.pageWidth,renderProgressBar:null==t?void 0:t.renderProgressBar,rotation:e.rotation,setPages:n.setPages,store:r}),o.children)};return c(c({},o),i)},Print:i,PrintButton:function(){return a.createElement(i,null,(function(e){return a.createElement(s,c({},e))}))},PrintMenuItem:function(e){return a.createElement(i,null,(function(t){return a.createElement(h,{onClick:function(){t.onClick(),e.onClick()}})}))},setPages:function(e){n.setPages=e}}};

@@ -9,3 +9,3 @@ /**

import type { Plugin } from '@react-pdf-viewer/core';
import type { PdfJs, Plugin } from '@react-pdf-viewer/core';
import * as React from 'react';

@@ -29,5 +29,7 @@

export interface PrintPlugin extends Plugin {
print: () => void;
Print: (props: PrintProps) => React.ReactElement;
PrintButton: () => React.ReactElement;
PrintMenuItem: (props: PrintMenuItemProps) => React.ReactElement;
setPages: (printPages: (doc: PdfJs.PdfDocument) => number[]) => void;
}

@@ -37,2 +39,4 @@

enableShortcuts?: boolean;
renderProgressBar?(numLoadedPages: number, numPages: number, onCancel: () => void): React.ReactElement;
setPages?: (doc: PdfJs.PdfDocument) => number[];
}

@@ -42,3 +46,8 @@

export function getAllPagesNumbers(doc: PdfJs.PdfDocument): number[];
export function getCustomPagesNumbers(customPages: string): (doc: PdfJs.PdfDocument) => number[];
export function getEvenPagesNumbers(doc: PdfJs.PdfDocument): number[];
export function getOddPagesNumbers(doc: PdfJs.PdfDocument): number[];
// Components
export class PrintIcon extends React.Component {}
{
"name": "@react-pdf-viewer/print",
"version": "3.5.0",
"version": "3.6.0",
"description": "A React component to view a PDF document",

@@ -36,3 +36,3 @@ "license": "https://react-pdf-viewer.dev/license",

"dependencies": {
"@react-pdf-viewer/core": "3.5.0"
"@react-pdf-viewer/core": "3.6.0"
},

@@ -52,3 +52,3 @@ "peerDependencies": {

},
"gitHead": "ef310dae187c20927b4856de77ac6a32226d802b"
"gitHead": "2658c3cc3b4bfd1fd47fa8ae27516dd0f7bae6c5"
}
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc