@react-pdf-viewer/print
Advanced tools
Comparing version 3.5.0 to 3.6.0
@@ -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" | ||
} |
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 1 instance in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 1 instance in 1 package
37072
506
6
+ Added@react-pdf-viewer/core@3.6.0(transitive)
- Removed@react-pdf-viewer/core@3.5.0(transitive)
Updated@react-pdf-viewer/core@3.6.0