@react-pdf-viewer/search
Advanced tools
Comparing version 2.6.0 to 2.6.1
@@ -84,5 +84,3 @@ 'use strict'; | ||
var normalizeFlagKeyword = function (flagKeyword) { | ||
var source = flagKeyword.wholeWords | ||
? " " + flagKeyword.keyword + " " | ||
: flagKeyword.keyword; | ||
var source = flagKeyword.wholeWords ? " " + flagKeyword.keyword + " " : flagKeyword.keyword; | ||
var flags = flagKeyword.matchCase ? 'g' : 'gi'; | ||
@@ -114,5 +112,5 @@ return new RegExp(source, flags); | ||
var useDocument = function (store) { | ||
var _a = React__namespace.useState(store.get('doc')), currentDoc = _a[0], setCurrentDoc = _a[1]; | ||
var currentDocRef = React__namespace.useRef(store.get('doc')); | ||
var handleDocumentChanged = function (doc) { | ||
setCurrentDoc(doc); | ||
currentDocRef.current = doc; | ||
}; | ||
@@ -125,3 +123,3 @@ React__namespace.useEffect(function () { | ||
}, []); | ||
return { currentDoc: currentDoc }; | ||
return { currentDoc: currentDocRef.current }; | ||
}; | ||
@@ -179,5 +177,3 @@ | ||
var search = function () { return searchFor(keywords, matchCase, wholeWords); }; | ||
var setKeyword = function (keyword) { | ||
return setKeywords(keyword === '' ? [] : [keyword]); | ||
}; | ||
var setKeyword = function (keyword) { return setKeywords(keyword === '' ? [] : [keyword]); }; | ||
var getTextContents = function () { | ||
@@ -196,5 +192,3 @@ if (!currentDoc) { | ||
.then(function (content) { | ||
var pageContent = content.items | ||
.map(function (item) { return item.str || ''; }) | ||
.join(''); | ||
var pageContent = content.items.map(function (item) { return item.str || ''; }).join(''); | ||
return Promise.resolve({ | ||
@@ -228,5 +222,3 @@ pageContent: pageContent, | ||
var searchFor = function (keywordParam, matchCaseParam, wholeWordsParam) { | ||
var keywords = keywordParam.map(function (k) { | ||
return normalizeSingleKeyword(k, matchCaseParam, wholeWordsParam); | ||
}); | ||
var keywords = keywordParam.map(function (k) { return normalizeSingleKeyword(k, matchCaseParam, wholeWordsParam); }); | ||
store.update('keyword', keywords); | ||
@@ -244,5 +236,3 @@ setCurrentMatch(0); | ||
response.forEach(function (item, pageIndex) { | ||
var numMatches = keywords | ||
.map(function (k) { return (item.match(k) || []).length; }) | ||
.reduce(function (a, b) { return a + b; }, 0); | ||
var numMatches = keywords.map(function (k) { return (item.match(k) || []).length; }).reduce(function (a, b) { return a + b; }, 0); | ||
for (var matchIndex = 0; matchIndex < numMatches; matchIndex++) { | ||
@@ -292,5 +282,3 @@ arr.push({ | ||
var currentDoc = useDocument(store).currentDoc; | ||
return (currentDoc | ||
? React__namespace.createElement(Inner, { store: store }, children) | ||
: React__namespace.createElement(React__namespace.Fragment, null)); | ||
return currentDoc ? React__namespace.createElement(Inner, { store: store }, children) : React__namespace.createElement(React__namespace.Fragment, null); | ||
}; | ||
@@ -319,25 +307,25 @@ | ||
}; | ||
return (React__namespace.createElement("div", { className: 'rpv-search__popover' }, | ||
React__namespace.createElement("div", { className: 'rpv-search__popover-input-counter' }, | ||
React__namespace.createElement(core.TextBox, { placeholder: (l10n && l10n.search ? l10n.search.enterToSearch : 'Enter to search'), type: 'text', value: keyword, onChange: setKeyword, onKeyDown: onKeydownSearch }), | ||
React__namespace.createElement("div", { className: 'rpv-search__popover-counter' }, | ||
return (React__namespace.createElement("div", { className: "rpv-search__popover" }, | ||
React__namespace.createElement("div", { className: "rpv-search__popover-input-counter" }, | ||
React__namespace.createElement(core.TextBox, { placeholder: (l10n && l10n.search ? l10n.search.enterToSearch : 'Enter to search'), type: "text", value: keyword, onChange: setKeyword, onKeyDown: onKeydownSearch }), | ||
React__namespace.createElement("div", { className: "rpv-search__popover-counter" }, | ||
currentMatch, | ||
"/", | ||
numberOfMatches)), | ||
React__namespace.createElement("label", { className: 'rpv-search__popover-label' }, | ||
React__namespace.createElement("input", { className: 'rpv-search__popover-label-checkbox', checked: matchCase, type: 'checkbox', onChange: onChangeMatchCase }), | ||
" ", | ||
React__namespace.createElement("label", { className: "rpv-search__popover-label" }, | ||
React__namespace.createElement("input", { className: "rpv-search__popover-label-checkbox", checked: matchCase, type: "checkbox", onChange: onChangeMatchCase }), | ||
' ', | ||
l10n && l10n.search ? l10n.search.matchCase : 'Match case'), | ||
React__namespace.createElement("label", { className: 'rpv-search__popover-label' }, | ||
React__namespace.createElement("input", { className: 'rpv-search__popover-label-checkbox', checked: wholeWords, type: 'checkbox', onChange: onChangeWholeWords }), | ||
" ", | ||
React__namespace.createElement("label", { className: "rpv-search__popover-label" }, | ||
React__namespace.createElement("input", { className: "rpv-search__popover-label-checkbox", checked: wholeWords, type: "checkbox", onChange: onChangeWholeWords }), | ||
' ', | ||
l10n && l10n.search ? l10n.search.wholeWords : 'Whole words'), | ||
React__namespace.createElement("div", { className: 'rpv-search__popover-footer' }, | ||
React__namespace.createElement("div", { className: 'rpv-search__popover-footer-item' }, | ||
React__namespace.createElement("div", { className: "rpv-search__popover-footer" }, | ||
React__namespace.createElement("div", { className: "rpv-search__popover-footer-item" }, | ||
React__namespace.createElement(core.Tooltip, { position: core.Position.BottomCenter, target: React__namespace.createElement(core.MinimalButton, { onClick: jumpToPreviousMatch }, | ||
React__namespace.createElement(PreviousIcon, null)), content: function () { return (l10n && l10n.search ? l10n.search.previousMatch : 'Previous match'); }, offset: PORTAL_OFFSET$1 })), | ||
React__namespace.createElement("div", { className: 'rpv-search__popover-footer-item' }, | ||
React__namespace.createElement("div", { className: "rpv-search__popover-footer-item" }, | ||
React__namespace.createElement(core.Tooltip, { position: core.Position.BottomCenter, target: React__namespace.createElement(core.MinimalButton, { onClick: jumpToNextMatch }, | ||
React__namespace.createElement(NextIcon, null)), content: function () { return (l10n && l10n.search ? l10n.search.nextMatch : 'Next match'); }, offset: PORTAL_OFFSET$1 })), | ||
React__namespace.createElement("div", { className: 'rpv-search__popover-footer-button' }, | ||
React__namespace.createElement("div", { className: "rpv-search__popover-footer-button" }, | ||
React__namespace.createElement(core.Button, { onClick: onClose }, l10n && l10n.search ? l10n.search.close : 'Close'))))); | ||
@@ -364,9 +352,9 @@ }; | ||
var currentDoc = useDocument(store).currentDoc; | ||
var defaultChildren = function (props) { return (React__namespace.createElement(ShowSearchPopoverButton, __assign({}, props))); }; | ||
var defaultChildren = function (props) { return React__namespace.createElement(ShowSearchPopoverButton, __assign({}, props)); }; | ||
var render = children || defaultChildren; | ||
return (currentDoc | ||
? (React__namespace.createElement(core.Popover, { position: core.Position.BottomLeft, target: function (toggle) { return render({ | ||
return currentDoc ? (React__namespace.createElement(core.Popover, { position: core.Position.BottomLeft, target: function (toggle) { | ||
return render({ | ||
onClick: toggle, | ||
}); }, content: function (toggle) { return React__namespace.createElement(SearchPopover, { store: store, onToggle: toggle }); }, offset: PORTAL_OFFSET, closeOnClickOutside: false, closeOnEscape: true })) | ||
: React__namespace.createElement(React__namespace.Fragment, null)); | ||
}); | ||
}, content: function (toggle) { return React__namespace.createElement(SearchPopover, { store: store, onToggle: toggle }); }, offset: PORTAL_OFFSET, closeOnClickOutside: false, closeOnEscape: true })) : (React__namespace.createElement(React__namespace.Fragment, null)); | ||
}; | ||
@@ -442,5 +430,3 @@ | ||
var startOffset = charIndexSpan[0].charIndexInSpan; | ||
var endOffset = charIndexSpan.length === 1 | ||
? startOffset | ||
: charIndexSpan[charIndexSpan.length - 1].charIndexInSpan; | ||
var endOffset = charIndexSpan.length === 1 ? startOffset : charIndexSpan[charIndexSpan.length - 1].charIndexInSpan; | ||
range.setStart(firstChild, startOffset); | ||
@@ -454,6 +440,6 @@ range.setEnd(firstChild, endOffset + 1); | ||
containerEle.appendChild(highlightEle); | ||
highlightEle.style.left = 100 * (wrapperRect.left - containerRect.left) / containerRect.width + "%"; | ||
highlightEle.style.top = 100 * (wrapperRect.top - containerRect.top) / containerRect.height + "%"; | ||
highlightEle.style.width = 100 * (wrapperRect.width) / containerRect.width + "%"; | ||
highlightEle.style.height = 100 * (wrapperRect.height) / containerRect.height + "%"; | ||
highlightEle.style.left = (100 * (wrapperRect.left - containerRect.left)) / containerRect.width + "%"; | ||
highlightEle.style.top = (100 * (wrapperRect.top - containerRect.top)) / containerRect.height + "%"; | ||
highlightEle.style.width = (100 * wrapperRect.width) / containerRect.width + "%"; | ||
highlightEle.style.height = (100 * wrapperRect.height) / containerRect.height + "%"; | ||
highlightEle.classList.add('rpv-search__highlight'); | ||
@@ -491,6 +477,8 @@ highlightEle.setAttribute('title', keyword.source.trim()); | ||
} | ||
matches.map(function (item) { return ({ | ||
matches | ||
.map(function (item) { return ({ | ||
keyword: item.keyword, | ||
indexes: charIndexes.slice(item.startIndex, item.endIndex) | ||
}); }).forEach(function (item) { | ||
indexes: charIndexes.slice(item.startIndex, item.endIndex), | ||
}); }) | ||
.forEach(function (item) { | ||
var spanIndexes = item.indexes.reduce(function (acc, item) { | ||
@@ -528,5 +516,9 @@ acc[item.spanIndex] = __spreadArray(__spreadArray([], (acc[item.spanIndex] || [])), [item]); | ||
}; | ||
var isEmptyKeyword = function () { return keywordRegexp.length === 0 || (keywordRegexp.length === 1 && keywordRegexp[0].source.trim() === ''); }; | ||
var isEmptyKeyword = function () { | ||
return keywordRegexp.length === 0 || (keywordRegexp.length === 1 && keywordRegexp[0].source.trim() === ''); | ||
}; | ||
React__namespace.useEffect(function () { | ||
if (isEmptyKeyword() || renderStatus.status !== core.LayerRenderStatus.DidRender || characterIndexesRef.current.length) { | ||
if (isEmptyKeyword() || | ||
renderStatus.status !== core.LayerRenderStatus.DidRender || | ||
characterIndexesRef.current.length) { | ||
return; | ||
@@ -536,8 +528,11 @@ } | ||
var spans = [].slice.call(containerEle.querySelectorAll('.rpv-core__text-layer-text')); | ||
var charIndexes = spans.map(function (span) { return span.textContent; }) | ||
.reduce(function (prev, curr, index) { return prev.concat(curr.split('').map(function (c, i) { return ({ | ||
char: c, | ||
charIndexInSpan: i, | ||
spanIndex: index, | ||
}); })); }, [ | ||
var charIndexes = spans | ||
.map(function (span) { return span.textContent; }) | ||
.reduce(function (prev, curr, index) { | ||
return prev.concat(curr.split('').map(function (c, i) { return ({ | ||
char: c, | ||
charIndexInSpan: i, | ||
spanIndex: index, | ||
}); })); | ||
}, [ | ||
{ | ||
@@ -547,3 +542,3 @@ char: '', | ||
spanIndex: 0, | ||
} | ||
}, | ||
]) | ||
@@ -601,8 +596,10 @@ .slice(1); | ||
var searchPlugin = function (props) { | ||
var onHighlightKeyword = React__namespace.useMemo(function () { return props && props.onHighlightKeyword ? props.onHighlightKeyword : function () { }; }, []); | ||
var store = React__namespace.useMemo(function () { return core.createStore({ | ||
renderStatus: new Map(), | ||
}); }, []); | ||
var onHighlightKeyword = React__namespace.useMemo(function () { return (props && props.onHighlightKeyword ? props.onHighlightKeyword : function () { }); }, []); | ||
var store = React__namespace.useMemo(function () { | ||
return core.createStore({ | ||
renderStatus: new Map(), | ||
}); | ||
}, []); | ||
var _a = useSearch(store), clearKeyword = _a.clearKeyword, jumpToNextMatch = _a.jumpToNextMatch, jumpToPreviousMatch = _a.jumpToPreviousMatch, searchFor = _a.searchFor, setKeywords = _a.setKeywords; | ||
var SearchDecorator = function (props) { return (React__namespace.createElement(Search, __assign({}, props, { store: store }))); }; | ||
var SearchDecorator = function (props) { return React__namespace.createElement(Search, __assign({}, props, { store: store })); }; | ||
var ShowSearchPopoverDecorator = function (props) { return (React__namespace.createElement(ShowSearchPopover, __assign({}, props, { store: store }))); }; | ||
@@ -614,3 +611,5 @@ var ShowSearchPopoverButtonDecorator = function () { return (React__namespace.createElement(ShowSearchPopoverDecorator, null, function (props) { return React__namespace.createElement(ShowSearchPopoverButton, __assign({}, props)); })); }; | ||
currentSlot.subSlot.children = (React__namespace.createElement(React__namespace.Fragment, null, | ||
Array(renderViewerProps.doc.numPages).fill(0).map(function (_, index) { return (React__namespace.createElement(Tracker, { key: index, pageIndex: index, store: store, onHighlightKeyword: onHighlightKeyword })); }), | ||
Array(renderViewerProps.doc.numPages) | ||
.fill(0) | ||
.map(function (_, index) { return (React__namespace.createElement(Tracker, { key: index, pageIndex: index, store: store, onHighlightKeyword: onHighlightKeyword })); }), | ||
currentSlot.subSlot.children)); | ||
@@ -620,5 +619,5 @@ } | ||
}; | ||
var normalizeKeywords = function (keyword) { return (Array.isArray(keyword) | ||
? keyword.map(function (k) { return normalizeSingleKeyword(k); }) | ||
: [normalizeSingleKeyword(keyword)]); }; | ||
var normalizeKeywords = function (keyword) { | ||
return Array.isArray(keyword) ? keyword.map(function (k) { return normalizeSingleKeyword(k); }) : [normalizeSingleKeyword(keyword)]; | ||
}; | ||
return { | ||
@@ -625,0 +624,0 @@ install: function (pluginFunctions) { |
@@ -1,1 +0,1 @@ | ||
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("@react-pdf-viewer/core");function n(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 r=n(e),o=function(){return r.createElement(t.Icon,{size:16},r.createElement("path",{d:"M0.541,5.627L11.666,18.2c0.183,0.207,0.499,0.226,0.706,0.043c0.015-0.014,0.03-0.028,0.043-0.043\n L23.541,5.627"}))},c=function(){return r.createElement(t.Icon,{size:16},r.createElement("path",{d:"M23.535,18.373L12.409,5.8c-0.183-0.207-0.499-0.226-0.706-0.043C11.688,5.77,11.674,5.785,11.66,5.8\n L0.535,18.373"}))},a=function(){return r.createElement(t.Icon,{size:16},r.createElement("path",{d:"M10.5,0.5c5.523,0,10,4.477,10,10s-4.477,10-10,10s-10-4.477-10-10S4.977,0.5,10.5,0.5z\n M23.5,23.5\n l-5.929-5.929"}))},u=function(){return(u=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}).apply(this,arguments)};function s(e,t,n){if(n||2===arguments.length)for(var r,o=0,c=t.length;o<c;o++)!r&&o in t||(r||(r=Array.prototype.slice.call(t,0,o)),r[o]=t[o]);return e.concat(r||t)}var i=new RegExp(" "),l=function(e){var t=e.wholeWords?" "+e.keyword+" ":e.keyword,n=e.matchCase?"g":"gi";return new RegExp(t,n)},h=function(e,t,n){return e instanceof RegExp?e:"string"==typeof e?""===e?i:l({keyword:e,matchCase:t||!1,wholeWords:n||!1}):(void 0!==t&&(e.matchCase=t),void 0!==n&&(e.wholeWords=n),l(e))},f=function(e){var t=r.useState(e.get("doc")),n=t[0],o=t[1],c=function(e){o(e)};return r.useEffect((function(){return e.subscribe("doc",c),function(){e.unsubscribe("doc",c)}}),[]),{currentDoc:n}},d=function(e){var t,n=f(e).currentDoc,o=r.useState([]),c=o[0],a=o[1],u=r.useState([]),s=u[0],l=u[1],d=r.useState(0),p=d[0],m=d[1],g=r.useState(!1),v=g[0],x=g[1],y=r.useRef([]),E=r.useState(!1),w=E[0],b=E[1],C=function(e){return a(""===e?[]:[e])},S=function(t){var n=e.get("jumpToPage");n&&n(t.pageIndex),e.update("match",t)},k=function(t,r,o){var c=t.map((function(e){return h(e,r,o)}));e.update("keyword",c),m(0),l([]),(0===y.current.length?function(){if(!n)return Promise.resolve([]);var e=Array(n.numPages).fill(0).map((function(e,t){return n.getPage(t+1).then((function(e){return e.getTextContent()})).then((function(e){var n=e.items.map((function(e){return e.str||""})).join("");return Promise.resolve({pageContent:n,pageIndex:t})}))}));return Promise.all(e).then((function(e){return e.sort((function(e,t){return e.pageIndex-t.pageIndex})),Promise.resolve(e.map((function(e){return e.pageContent})))}))}().then((function(e){return y.current=e,Promise.resolve(e)})):Promise.resolve(y.current)).then((function(e){var t=[];e.forEach((function(e,n){for(var r=c.map((function(t){return(e.match(t)||[]).length})).reduce((function(e,t){return e+t}),0),o=0;o<r;o++)t.push({matchIndex:o,pageIndex:n})})),l(t),t.length>0&&(m(1),S(t[0]))}))};return r.useEffect((function(){y.current=[]}),[n]),{clearKeyword:function(){0!==c.length&&(e.update("keyword",[i]),C(""),m(0),l([]),x(!1),b(!1))},changeMatchCase:function(e){x(e),c.length>0&&k(c,e,w)},changeWholeWords:function(e){b(e),c.length>0&&k(c,v,e)},currentMatch:p,jumpToNextMatch:function(){if(0!==c.length&&0!==s.length){var e=p+1,t=e<=s.length?e:1;m(t),S(s[t-1])}},jumpToPreviousMatch:function(){if(0!==c.length&&0!==s.length){var e=p-1,t=e>0?e:s.length;m(t),S(s[t-1])}},keywords:c,matchCase:v,numberOfMatches:s.length,wholeWords:w,search:function(){return k(c,v,w)},searchFor:k,setKeywords:a,keyword:0===c.length?"":(t=c[0],t instanceof RegExp?t.source:"string"==typeof t?t:t.keyword),setKeyword:C}},p=function(e){var t=e.children,n=e.store,r=d(n);return t(u({},r))},m=function(e){var t=e.children,n=e.store;return f(n).currentDoc?r.createElement(p,{store:n},t):r.createElement(r.Fragment,null)},g={left:0,top:8},v=function(e){var n=e.store,a=e.onToggle,u=r.useContext(t.LocalizationContext),s=d(n),i=s.clearKeyword,l=s.changeMatchCase,h=s.changeWholeWords,f=s.currentMatch,p=s.jumpToNextMatch,m=s.jumpToPreviousMatch,v=s.keyword,x=s.matchCase,y=s.numberOfMatches,E=s.wholeWords,w=s.search,b=s.setKeyword;return r.createElement("div",{className:"rpv-search__popover"},r.createElement("div",{className:"rpv-search__popover-input-counter"},r.createElement(t.TextBox,{placeholder:u&&u.search?u.search.enterToSearch:"Enter to search",type:"text",value:v,onChange:b,onKeyDown:function(e){13===e.keyCode&&v&&w()}}),r.createElement("div",{className:"rpv-search__popover-counter"},f,"/",y)),r.createElement("label",{className:"rpv-search__popover-label"},r.createElement("input",{className:"rpv-search__popover-label-checkbox",checked:x,type:"checkbox",onChange:function(e){l(e.target.checked)}})," ",u&&u.search?u.search.matchCase:"Match case"),r.createElement("label",{className:"rpv-search__popover-label"},r.createElement("input",{className:"rpv-search__popover-label-checkbox",checked:E,type:"checkbox",onChange:function(e){h(e.target.checked)}})," ",u&&u.search?u.search.wholeWords:"Whole words"),r.createElement("div",{className:"rpv-search__popover-footer"},r.createElement("div",{className:"rpv-search__popover-footer-item"},r.createElement(t.Tooltip,{position:t.Position.BottomCenter,target:r.createElement(t.MinimalButton,{onClick:m},r.createElement(c,null)),content:function(){return u&&u.search?u.search.previousMatch:"Previous match"},offset:g})),r.createElement("div",{className:"rpv-search__popover-footer-item"},r.createElement(t.Tooltip,{position:t.Position.BottomCenter,target:r.createElement(t.MinimalButton,{onClick:p},r.createElement(o,null)),content:function(){return u&&u.search?u.search.nextMatch:"Next match"},offset:g})),r.createElement("div",{className:"rpv-search__popover-footer-button"},r.createElement(t.Button,{onClick:function(){a(),i()}},u&&u.search?u.search.close:"Close"))))},x=function(e){var n=e.children,o=e.onClick,c=r.useContext(t.LocalizationContext),u=c&&c.search?c.search.search:"Search";return n({icon:r.createElement(a,null),label:u,onClick:o})},y={left:0,top:8},E=function(e){var n=e.onClick;return r.createElement(x,{onClick:n},(function(e){return r.createElement(t.Tooltip,{position:t.Position.BottomCenter,target:r.createElement(t.MinimalButton,{onClick:n},e.icon),content:function(){return e.label},offset:y})}))},w={left:0,top:8},b=function(e){var n=e.children,o=e.store,c=f(o).currentDoc,a=n||function(e){return r.createElement(E,u({},e))};return c?r.createElement(t.Popover,{position:t.Position.BottomLeft,target:function(e){return a({onClick:e})},content:function(e){return r.createElement(v,{store:o,onToggle:e})},offset:w,closeOnClickOutside:!1,closeOnEscape:!0}):r.createElement(r.Fragment,null)},C=function(e){var t=e.parentNode;t&&t.removeChild(e)},S=function(e){var t=e.parentNode;if(t){var n=document.createRange();n.selectNodeContents(e),function(e,t){C(e);var n=t.parentNode;n&&n.insertBefore(e,t),C(t)}(n.extractContents(),e),t.normalize()}},k=function(e){var n=e.pageIndex,o=e.store,c=e.onHighlightKeyword,a=r.useState({matchIndex:-1,pageIndex:-1}),u=a[0],l=a[1],h=r.useState([i]),f=h[0],d=h[1],p=r.useState({pageIndex:n,scale:1,status:t.LayerRenderStatus.PreRender}),m=p[0],g=p[1],v=r.useRef(null),x=r.useRef([]),y=function(e){for(var t=e.querySelectorAll("span.rpv-search__highlight"),n=t.length,r=0;r<n;r++)t[r].parentElement.removeChild(t[r])},E=function(e){var t=x.current;if(0!==t.length){var n=[].slice.call(e.querySelectorAll(".rpv-core__text-layer-text")),r=t.map((function(e){return e.char})).join("");f.forEach((function(o){if(o.source.trim()){for(var a,u=-1===o.flags.indexOf("g")?new RegExp(o,o.flags+"g"):o,i=[];null!==(a=u.exec(r));)i.push({keyword:u,startIndex:a.index,endIndex:u.lastIndex});i.map((function(e){return{keyword:e.keyword,indexes:t.slice(e.startIndex,e.endIndex)}})).forEach((function(t){var r=t.indexes.reduce((function(e,t){return e[t.spanIndex]=s(s([],e[t.spanIndex]||[]),[t]),e}),{});Object.values(r).forEach((function(r){!function(e,t,n,r){var o=document.createRange(),a=n.firstChild;if(a){var u=r[0].charIndexInSpan,s=1===r.length?u:r[r.length-1].charIndexInSpan;o.setStart(a,u),o.setEnd(a,s+1);var i=document.createElement("span");o.surroundContents(i);var l=i.getBoundingClientRect(),h=t.getBoundingClientRect(),f=document.createElement("span");t.appendChild(f),f.style.left=100*(l.left-h.left)/h.width+"%",f.style.top=100*(l.top-h.top)/h.height+"%",f.style.width=100*l.width/h.width+"%",f.style.height=100*l.height/h.height+"%",f.classList.add("rpv-search__highlight"),f.setAttribute("title",e.source.trim()),S(i),c&&c({highlightEle:f,keyword:e})}}(t.keyword,e,n[r[0].spanIndex],r)}))}))}}))}},w=function(e){e&&e.length>0&&d(e)},b=function(e){l(e)},C=function(e){if(e.has(n)){var t=e.get(n);t&&g({ele:t.ele,pageIndex:n,scale:t.scale,status:t.status})}},k=function(){return 0===f.length||1===f.length&&""===f[0].source.trim()};r.useEffect((function(){if(!k()&&m.status===t.LayerRenderStatus.DidRender&&!x.current.length){var e=m.ele,n=[].slice.call(e.querySelectorAll(".rpv-core__text-layer-text")).map((function(e){return e.textContent})).reduce((function(e,t,n){return e.concat(t.split("").map((function(e,t){return{char:e,charIndexInSpan:t,spanIndex:n}})))}),[{char:"",charIndexInSpan:0,spanIndex:0}]).slice(1);x.current=n}}),[f,m.status]),r.useEffect((function(){if(!k()&&m.ele&&m.status===t.LayerRenderStatus.DidRender){var e=m.ele;y(e),E(e),I()}}),[f,u,m.status,x.current]),r.useEffect((function(){k()&&m.ele&&m.status===t.LayerRenderStatus.DidRender&&y(m.ele)}),[f,m.status]);var I=function(){if(u.pageIndex===n&&m.ele&&m.status===t.LayerRenderStatus.DidRender){var e=m.ele,r=e.querySelectorAll(".rpv-search__highlight");if(u.matchIndex<r.length){var c=r[u.matchIndex],a=function(e,t){for(var n=e.offsetTop,r=e.offsetLeft,o=e.parentElement;o&&o!==t;)n+=o.offsetTop,r+=o.offsetLeft,o=o.parentElement;return{left:r,top:n}}(c,e),s=a.left,i=a.top,l=o.get("jumpToDestination");l&&(l(n,(e.getBoundingClientRect().height-i)/m.scale,s/m.scale,m.scale),v.current&&v.current.classList.remove("rpv-search__highlight--current"),v.current=c,c.classList.add("rpv-search__highlight--current"))}}};return r.useEffect((function(){return o.subscribe("keyword",w),o.subscribe("match",b),o.subscribe("renderStatus",C),function(){o.unsubscribe("keyword",w),o.unsubscribe("match",b),o.unsubscribe("renderStatus",C)}}),[]),r.createElement(r.Fragment,null)};exports.NextIcon=o,exports.PreviousIcon=c,exports.SearchIcon=a,exports.searchPlugin=function(e){var n=r.useMemo((function(){return e&&e.onHighlightKeyword?e.onHighlightKeyword:function(){}}),[]),o=r.useMemo((function(){return t.createStore({renderStatus:new Map})}),[]),c=d(o),a=c.clearKeyword,s=c.jumpToNextMatch,l=c.jumpToPreviousMatch,f=c.searchFor,p=c.setKeywords,g=function(e){return r.createElement(b,u({},e,{store:o}))};return{install:function(t){var n=e&&e.keyword?function(e){return Array.isArray(e)?e.map((function(e){return h(e)})):[h(e)]}(e.keyword):[i];o.update("jumpToDestination",t.jumpToDestination),o.update("jumpToPage",t.jumpToPage),o.update("keyword",n)},renderViewer:function(e){var t=e.slot;return t.subSlot&&(t.subSlot.children=r.createElement(r.Fragment,null,Array(e.doc.numPages).fill(0).map((function(e,t){return r.createElement(k,{key:t,pageIndex:t,store:o,onHighlightKeyword:n})})),t.subSlot.children)),t},uninstall:function(e){var t=o.get("renderStatus");t&&t.clear()},onDocumentLoad:function(e){o.update("doc",e.doc)},onTextLayerRender:function(e){var t=o.get("renderStatus");t&&(t=t.set(e.pageIndex,e),o.update("renderStatus",t))},Search:function(e){return r.createElement(m,u({},e,{store:o}))},ShowSearchPopover:g,ShowSearchPopoverButton:function(){return r.createElement(g,null,(function(e){return r.createElement(E,u({},e))}))},clearHighlights:function(){a()},highlight:function(e){var t=Array.isArray(e)?e:[e];p(t),f(t)},jumpToNextMatch:s,jumpToPreviousMatch:l}}; | ||
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("@react-pdf-viewer/core");function n(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 r=n(e),o=function(){return r.createElement(t.Icon,{size:16},r.createElement("path",{d:"M0.541,5.627L11.666,18.2c0.183,0.207,0.499,0.226,0.706,0.043c0.015-0.014,0.03-0.028,0.043-0.043\n L23.541,5.627"}))},c=function(){return r.createElement(t.Icon,{size:16},r.createElement("path",{d:"M23.535,18.373L12.409,5.8c-0.183-0.207-0.499-0.226-0.706-0.043C11.688,5.77,11.674,5.785,11.66,5.8\n L0.535,18.373"}))},a=function(){return r.createElement(t.Icon,{size:16},r.createElement("path",{d:"M10.5,0.5c5.523,0,10,4.477,10,10s-4.477,10-10,10s-10-4.477-10-10S4.977,0.5,10.5,0.5z\n M23.5,23.5\n l-5.929-5.929"}))},u=function(){return(u=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}).apply(this,arguments)};function s(e,t,n){if(n||2===arguments.length)for(var r,o=0,c=t.length;o<c;o++)!r&&o in t||(r||(r=Array.prototype.slice.call(t,0,o)),r[o]=t[o]);return e.concat(r||t)}var i=new RegExp(" "),l=function(e){var t=e.wholeWords?" "+e.keyword+" ":e.keyword,n=e.matchCase?"g":"gi";return new RegExp(t,n)},h=function(e,t,n){return e instanceof RegExp?e:"string"==typeof e?""===e?i:l({keyword:e,matchCase:t||!1,wholeWords:n||!1}):(void 0!==t&&(e.matchCase=t),void 0!==n&&(e.wholeWords=n),l(e))},f=function(e){var t=r.useRef(e.get("doc")),n=function(e){t.current=e};return r.useEffect((function(){return e.subscribe("doc",n),function(){e.unsubscribe("doc",n)}}),[]),{currentDoc:t.current}},d=function(e){var t,n=f(e).currentDoc,o=r.useState([]),c=o[0],a=o[1],u=r.useState([]),s=u[0],l=u[1],d=r.useState(0),p=d[0],m=d[1],g=r.useState(!1),v=g[0],x=g[1],y=r.useRef([]),E=r.useState(!1),w=E[0],b=E[1],C=function(e){return a(""===e?[]:[e])},S=function(t){var n=e.get("jumpToPage");n&&n(t.pageIndex),e.update("match",t)},k=function(t,r,o){var c=t.map((function(e){return h(e,r,o)}));e.update("keyword",c),m(0),l([]),(0===y.current.length?function(){if(!n)return Promise.resolve([]);var e=Array(n.numPages).fill(0).map((function(e,t){return n.getPage(t+1).then((function(e){return e.getTextContent()})).then((function(e){var n=e.items.map((function(e){return e.str||""})).join("");return Promise.resolve({pageContent:n,pageIndex:t})}))}));return Promise.all(e).then((function(e){return e.sort((function(e,t){return e.pageIndex-t.pageIndex})),Promise.resolve(e.map((function(e){return e.pageContent})))}))}().then((function(e){return y.current=e,Promise.resolve(e)})):Promise.resolve(y.current)).then((function(e){var t=[];e.forEach((function(e,n){for(var r=c.map((function(t){return(e.match(t)||[]).length})).reduce((function(e,t){return e+t}),0),o=0;o<r;o++)t.push({matchIndex:o,pageIndex:n})})),l(t),t.length>0&&(m(1),S(t[0]))}))};return r.useEffect((function(){y.current=[]}),[n]),{clearKeyword:function(){0!==c.length&&(e.update("keyword",[i]),C(""),m(0),l([]),x(!1),b(!1))},changeMatchCase:function(e){x(e),c.length>0&&k(c,e,w)},changeWholeWords:function(e){b(e),c.length>0&&k(c,v,e)},currentMatch:p,jumpToNextMatch:function(){if(0!==c.length&&0!==s.length){var e=p+1,t=e<=s.length?e:1;m(t),S(s[t-1])}},jumpToPreviousMatch:function(){if(0!==c.length&&0!==s.length){var e=p-1,t=e>0?e:s.length;m(t),S(s[t-1])}},keywords:c,matchCase:v,numberOfMatches:s.length,wholeWords:w,search:function(){return k(c,v,w)},searchFor:k,setKeywords:a,keyword:0===c.length?"":(t=c[0],t instanceof RegExp?t.source:"string"==typeof t?t:t.keyword),setKeyword:C}},p=function(e){var t=e.children,n=e.store,r=d(n);return t(u({},r))},m=function(e){var t=e.children,n=e.store;return f(n).currentDoc?r.createElement(p,{store:n},t):r.createElement(r.Fragment,null)},g={left:0,top:8},v=function(e){var n=e.store,a=e.onToggle,u=r.useContext(t.LocalizationContext),s=d(n),i=s.clearKeyword,l=s.changeMatchCase,h=s.changeWholeWords,f=s.currentMatch,p=s.jumpToNextMatch,m=s.jumpToPreviousMatch,v=s.keyword,x=s.matchCase,y=s.numberOfMatches,E=s.wholeWords,w=s.search,b=s.setKeyword;return r.createElement("div",{className:"rpv-search__popover"},r.createElement("div",{className:"rpv-search__popover-input-counter"},r.createElement(t.TextBox,{placeholder:u&&u.search?u.search.enterToSearch:"Enter to search",type:"text",value:v,onChange:b,onKeyDown:function(e){13===e.keyCode&&v&&w()}}),r.createElement("div",{className:"rpv-search__popover-counter"},f,"/",y)),r.createElement("label",{className:"rpv-search__popover-label"},r.createElement("input",{className:"rpv-search__popover-label-checkbox",checked:x,type:"checkbox",onChange:function(e){l(e.target.checked)}})," ",u&&u.search?u.search.matchCase:"Match case"),r.createElement("label",{className:"rpv-search__popover-label"},r.createElement("input",{className:"rpv-search__popover-label-checkbox",checked:E,type:"checkbox",onChange:function(e){h(e.target.checked)}})," ",u&&u.search?u.search.wholeWords:"Whole words"),r.createElement("div",{className:"rpv-search__popover-footer"},r.createElement("div",{className:"rpv-search__popover-footer-item"},r.createElement(t.Tooltip,{position:t.Position.BottomCenter,target:r.createElement(t.MinimalButton,{onClick:m},r.createElement(c,null)),content:function(){return u&&u.search?u.search.previousMatch:"Previous match"},offset:g})),r.createElement("div",{className:"rpv-search__popover-footer-item"},r.createElement(t.Tooltip,{position:t.Position.BottomCenter,target:r.createElement(t.MinimalButton,{onClick:p},r.createElement(o,null)),content:function(){return u&&u.search?u.search.nextMatch:"Next match"},offset:g})),r.createElement("div",{className:"rpv-search__popover-footer-button"},r.createElement(t.Button,{onClick:function(){a(),i()}},u&&u.search?u.search.close:"Close"))))},x=function(e){var n=e.children,o=e.onClick,c=r.useContext(t.LocalizationContext),u=c&&c.search?c.search.search:"Search";return n({icon:r.createElement(a,null),label:u,onClick:o})},y={left:0,top:8},E=function(e){var n=e.onClick;return r.createElement(x,{onClick:n},(function(e){return r.createElement(t.Tooltip,{position:t.Position.BottomCenter,target:r.createElement(t.MinimalButton,{onClick:n},e.icon),content:function(){return e.label},offset:y})}))},w={left:0,top:8},b=function(e){var n=e.children,o=e.store,c=f(o).currentDoc,a=n||function(e){return r.createElement(E,u({},e))};return c?r.createElement(t.Popover,{position:t.Position.BottomLeft,target:function(e){return a({onClick:e})},content:function(e){return r.createElement(v,{store:o,onToggle:e})},offset:w,closeOnClickOutside:!1,closeOnEscape:!0}):r.createElement(r.Fragment,null)},C=function(e){var t=e.parentNode;t&&t.removeChild(e)},S=function(e){var t=e.parentNode;if(t){var n=document.createRange();n.selectNodeContents(e),function(e,t){C(e);var n=t.parentNode;n&&n.insertBefore(e,t),C(t)}(n.extractContents(),e),t.normalize()}},k=function(e){var n=e.pageIndex,o=e.store,c=e.onHighlightKeyword,a=r.useState({matchIndex:-1,pageIndex:-1}),u=a[0],l=a[1],h=r.useState([i]),f=h[0],d=h[1],p=r.useState({pageIndex:n,scale:1,status:t.LayerRenderStatus.PreRender}),m=p[0],g=p[1],v=r.useRef(null),x=r.useRef([]),y=function(e){for(var t=e.querySelectorAll("span.rpv-search__highlight"),n=t.length,r=0;r<n;r++)t[r].parentElement.removeChild(t[r])},E=function(e){var t=x.current;if(0!==t.length){var n=[].slice.call(e.querySelectorAll(".rpv-core__text-layer-text")),r=t.map((function(e){return e.char})).join("");f.forEach((function(o){if(o.source.trim()){for(var a,u=-1===o.flags.indexOf("g")?new RegExp(o,o.flags+"g"):o,i=[];null!==(a=u.exec(r));)i.push({keyword:u,startIndex:a.index,endIndex:u.lastIndex});i.map((function(e){return{keyword:e.keyword,indexes:t.slice(e.startIndex,e.endIndex)}})).forEach((function(t){var r=t.indexes.reduce((function(e,t){return e[t.spanIndex]=s(s([],e[t.spanIndex]||[]),[t]),e}),{});Object.values(r).forEach((function(r){!function(e,t,n,r){var o=document.createRange(),a=n.firstChild;if(a){var u=r[0].charIndexInSpan,s=1===r.length?u:r[r.length-1].charIndexInSpan;o.setStart(a,u),o.setEnd(a,s+1);var i=document.createElement("span");o.surroundContents(i);var l=i.getBoundingClientRect(),h=t.getBoundingClientRect(),f=document.createElement("span");t.appendChild(f),f.style.left=100*(l.left-h.left)/h.width+"%",f.style.top=100*(l.top-h.top)/h.height+"%",f.style.width=100*l.width/h.width+"%",f.style.height=100*l.height/h.height+"%",f.classList.add("rpv-search__highlight"),f.setAttribute("title",e.source.trim()),S(i),c&&c({highlightEle:f,keyword:e})}}(t.keyword,e,n[r[0].spanIndex],r)}))}))}}))}},w=function(e){e&&e.length>0&&d(e)},b=function(e){l(e)},C=function(e){if(e.has(n)){var t=e.get(n);t&&g({ele:t.ele,pageIndex:n,scale:t.scale,status:t.status})}},k=function(){return 0===f.length||1===f.length&&""===f[0].source.trim()};r.useEffect((function(){if(!k()&&m.status===t.LayerRenderStatus.DidRender&&!x.current.length){var e=m.ele,n=[].slice.call(e.querySelectorAll(".rpv-core__text-layer-text")).map((function(e){return e.textContent})).reduce((function(e,t,n){return e.concat(t.split("").map((function(e,t){return{char:e,charIndexInSpan:t,spanIndex:n}})))}),[{char:"",charIndexInSpan:0,spanIndex:0}]).slice(1);x.current=n}}),[f,m.status]),r.useEffect((function(){if(!k()&&m.ele&&m.status===t.LayerRenderStatus.DidRender){var e=m.ele;y(e),E(e),I()}}),[f,u,m.status,x.current]),r.useEffect((function(){k()&&m.ele&&m.status===t.LayerRenderStatus.DidRender&&y(m.ele)}),[f,m.status]);var I=function(){if(u.pageIndex===n&&m.ele&&m.status===t.LayerRenderStatus.DidRender){var e=m.ele,r=e.querySelectorAll(".rpv-search__highlight");if(u.matchIndex<r.length){var c=r[u.matchIndex],a=function(e,t){for(var n=e.offsetTop,r=e.offsetLeft,o=e.parentElement;o&&o!==t;)n+=o.offsetTop,r+=o.offsetLeft,o=o.parentElement;return{left:r,top:n}}(c,e),s=a.left,i=a.top,l=o.get("jumpToDestination");l&&(l(n,(e.getBoundingClientRect().height-i)/m.scale,s/m.scale,m.scale),v.current&&v.current.classList.remove("rpv-search__highlight--current"),v.current=c,c.classList.add("rpv-search__highlight--current"))}}};return r.useEffect((function(){return o.subscribe("keyword",w),o.subscribe("match",b),o.subscribe("renderStatus",C),function(){o.unsubscribe("keyword",w),o.unsubscribe("match",b),o.unsubscribe("renderStatus",C)}}),[]),r.createElement(r.Fragment,null)};exports.NextIcon=o,exports.PreviousIcon=c,exports.SearchIcon=a,exports.searchPlugin=function(e){var n=r.useMemo((function(){return e&&e.onHighlightKeyword?e.onHighlightKeyword:function(){}}),[]),o=r.useMemo((function(){return t.createStore({renderStatus:new Map})}),[]),c=d(o),a=c.clearKeyword,s=c.jumpToNextMatch,l=c.jumpToPreviousMatch,f=c.searchFor,p=c.setKeywords,g=function(e){return r.createElement(b,u({},e,{store:o}))};return{install:function(t){var n=e&&e.keyword?function(e){return Array.isArray(e)?e.map((function(e){return h(e)})):[h(e)]}(e.keyword):[i];o.update("jumpToDestination",t.jumpToDestination),o.update("jumpToPage",t.jumpToPage),o.update("keyword",n)},renderViewer:function(e){var t=e.slot;return t.subSlot&&(t.subSlot.children=r.createElement(r.Fragment,null,Array(e.doc.numPages).fill(0).map((function(e,t){return r.createElement(k,{key:t,pageIndex:t,store:o,onHighlightKeyword:n})})),t.subSlot.children)),t},uninstall:function(e){var t=o.get("renderStatus");t&&t.clear()},onDocumentLoad:function(e){o.update("doc",e.doc)},onTextLayerRender:function(e){var t=o.get("renderStatus");t&&(t=t.set(e.pageIndex,e),o.update("renderStatus",t))},Search:function(e){return r.createElement(m,u({},e,{store:o}))},ShowSearchPopover:g,ShowSearchPopoverButton:function(){return r.createElement(g,null,(function(e){return r.createElement(E,u({},e))}))},clearHighlights:function(){a()},highlight:function(e){var t=Array.isArray(e)?e:[e];p(t),f(t)},jumpToNextMatch:s,jumpToPreviousMatch:l}}; |
{ | ||
"name": "@react-pdf-viewer/search", | ||
"version": "2.6.0", | ||
"version": "2.6.1", | ||
"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": "2.6.0" | ||
"@react-pdf-viewer/core": "2.6.1" | ||
}, | ||
@@ -53,3 +53,3 @@ "peerDependencies": { | ||
}, | ||
"gitHead": "91d6279570bd3d4672b131100392afd6e8658892" | ||
"gitHead": "500247f24514da033bf92266f6903decaffebb68" | ||
} |
Sorry, the diff of this file is not supported yet
45926
743
+ Added@react-pdf-viewer/core@2.6.1(transitive)
- Removed@react-pdf-viewer/core@2.6.0(transitive)
Updated@react-pdf-viewer/core@2.6.1