@nypl/web-reader 4.3.4 → 4.3.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +12 -9
- package/dist/index.js +60 -30
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +60 -30
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -423,14 +423,14 @@ declare type HTMLActiveReader = CommonReader & {
|
|
|
423
423
|
};
|
|
424
424
|
declare type ActiveReader = PDFActiveReader | HTMLActiveReader;
|
|
425
425
|
declare type ReaderReturn = InactiveReader | LoadingReader | ActiveReader;
|
|
426
|
-
declare type GetContent = (href: string) => Promise<
|
|
426
|
+
declare type GetContent<T extends string | Uint8Array> = (href: string, proxyUrl?: string) => Promise<T>;
|
|
427
427
|
declare type ReaderManagerArguments = {
|
|
428
428
|
headerLeft?: JSX.Element;
|
|
429
429
|
};
|
|
430
|
-
declare type UseWebReaderArguments = {
|
|
430
|
+
declare type UseWebReaderArguments<T extends string | Uint8Array> = {
|
|
431
431
|
webpubManifestUrl: string;
|
|
432
432
|
proxyUrl?: string;
|
|
433
|
-
getContent?: GetContent
|
|
433
|
+
getContent?: GetContent<T>;
|
|
434
434
|
pdfWorkerSrc?: string;
|
|
435
435
|
injectablesReflowable?: Injectable[];
|
|
436
436
|
injectablesFixed?: Injectable[];
|
|
@@ -470,20 +470,23 @@ declare type UseWebReaderArguments = {
|
|
|
470
470
|
*/
|
|
471
471
|
persistSettings?: boolean;
|
|
472
472
|
};
|
|
473
|
-
declare type ActiveReaderArguments = UseWebReaderArguments & {
|
|
473
|
+
declare type ActiveReaderArguments<T extends string | Uint8Array> = UseWebReaderArguments<T> & {
|
|
474
474
|
manifest: WebpubManifest;
|
|
475
475
|
};
|
|
476
476
|
declare type InactiveReaderArguments = undefined;
|
|
477
|
-
declare type ReaderArguments = ActiveReaderArguments | InactiveReaderArguments;
|
|
478
477
|
|
|
479
478
|
/**
|
|
480
479
|
* The React hook that exposes the main API into the reader. It
|
|
481
480
|
* will determine the type of the webpub, and then use the correct reader
|
|
482
481
|
* for that type.
|
|
483
482
|
*/
|
|
484
|
-
declare function useWebReader(args: UseWebReaderArguments): HTMLActiveReader | PDFActiveReader | LoadingReader;
|
|
483
|
+
declare function useWebReader(args: UseWebReaderArguments<string | Uint8Array>): HTMLActiveReader | PDFActiveReader | LoadingReader;
|
|
485
484
|
|
|
486
|
-
declare
|
|
485
|
+
declare type HtmlReaderArguments = ActiveReaderArguments<string> | InactiveReaderArguments;
|
|
486
|
+
|
|
487
|
+
declare function useHtmlReader(args: HtmlReaderArguments): ReaderReturn;
|
|
488
|
+
|
|
489
|
+
declare type PdfReaderArguments = ActiveReaderArguments<Uint8Array> | InactiveReaderArguments;
|
|
487
490
|
|
|
488
491
|
/**
|
|
489
492
|
* The PDF reader
|
|
@@ -494,7 +497,7 @@ declare function useHtmlReader(args: ReaderArguments): ReaderReturn;
|
|
|
494
497
|
* @param args T
|
|
495
498
|
* @returns
|
|
496
499
|
*/
|
|
497
|
-
declare function usePdfReader(args:
|
|
500
|
+
declare function usePdfReader(args: PdfReaderArguments): ReaderReturn;
|
|
498
501
|
|
|
499
502
|
declare type Dict<T = any> = Record<string, T>;
|
|
500
503
|
|
|
@@ -526,7 +529,7 @@ declare function addTocToManifest(manifest: WebpubManifest, getResource: (url: s
|
|
|
526
529
|
/**
|
|
527
530
|
* The main React component export.
|
|
528
531
|
*/
|
|
529
|
-
declare type WebReaderProps = UseWebReaderArguments & ReaderManagerArguments;
|
|
532
|
+
declare type WebReaderProps = UseWebReaderArguments<string | Uint8Array> & ReaderManagerArguments;
|
|
530
533
|
declare const WebReaderWithoutBoundary: FC<WebReaderProps>;
|
|
531
534
|
declare const WebReader: FC<WebReaderProps>;
|
|
532
535
|
|
package/dist/index.js
CHANGED
|
@@ -6720,7 +6720,7 @@ var getResourceUrl = (index, readingOrder) => {
|
|
|
6720
6720
|
}
|
|
6721
6721
|
return readingOrder[index].href;
|
|
6722
6722
|
};
|
|
6723
|
-
var
|
|
6723
|
+
var fetchAsUint8Array = (resourceUrl, proxyUrl) => __async(void 0, null, function* () {
|
|
6724
6724
|
const url = proxyUrl ? `${proxyUrl}${encodeURIComponent(resourceUrl)}` : resourceUrl;
|
|
6725
6725
|
const response = yield fetch(url, { mode: "cors" });
|
|
6726
6726
|
const array = new Uint8Array(yield response.arrayBuffer());
|
|
@@ -6874,6 +6874,12 @@ function makePdfReducer(args) {
|
|
|
6874
6874
|
// end of the PDF that was just parsed
|
|
6875
6875
|
pageNumber: state2.pageNumber === -1 ? action.numPages : state2.pageNumber
|
|
6876
6876
|
});
|
|
6877
|
+
case "PDF_LOAD_ERROR":
|
|
6878
|
+
return __spreadProps(__spreadValues({}, state2), {
|
|
6879
|
+
state: "ERROR",
|
|
6880
|
+
error: action.error,
|
|
6881
|
+
settings: DEFAULT_SETTINGS
|
|
6882
|
+
});
|
|
6877
6883
|
case "SET_SCROLL":
|
|
6878
6884
|
if (state2.state !== "ACTIVE") {
|
|
6879
6885
|
return handleInvalidTransition(state2, action);
|
|
@@ -6929,7 +6935,7 @@ function usePdfReader(args) {
|
|
|
6929
6935
|
webpubManifestUrl,
|
|
6930
6936
|
manifest,
|
|
6931
6937
|
proxyUrl,
|
|
6932
|
-
getContent,
|
|
6938
|
+
getContent = fetchAsUint8Array,
|
|
6933
6939
|
injectablesReflowable,
|
|
6934
6940
|
injectablesFixed,
|
|
6935
6941
|
height = DEFAULT_HEIGHT,
|
|
@@ -6985,17 +6991,22 @@ function usePdfReader(args) {
|
|
|
6985
6991
|
if (!manifest.readingOrder || !manifest.readingOrder.length) {
|
|
6986
6992
|
throw new Error("Manifest has no Reading Order");
|
|
6987
6993
|
}
|
|
6988
|
-
const
|
|
6994
|
+
const currentResource = getResourceUrl(
|
|
6989
6995
|
state2.resourceIndex,
|
|
6990
6996
|
manifest.readingOrder
|
|
6991
6997
|
);
|
|
6992
|
-
|
|
6993
|
-
|
|
6994
|
-
|
|
6995
|
-
|
|
6998
|
+
const fetchResource = () => __async(this, null, function* () {
|
|
6999
|
+
getContent(currentResource, proxyUrl).then((data) => {
|
|
7000
|
+
dispatch({
|
|
7001
|
+
type: "RESOURCE_FETCH_SUCCESS",
|
|
7002
|
+
resource: { data }
|
|
7003
|
+
});
|
|
6996
7004
|
});
|
|
6997
7005
|
});
|
|
6998
|
-
|
|
7006
|
+
if (manifest.readingOrder && manifest.readingOrder.length) {
|
|
7007
|
+
fetchResource();
|
|
7008
|
+
}
|
|
7009
|
+
}, [state2.resourceIndex, manifest, proxyUrl, getContent]);
|
|
6999
7010
|
const resizePage = React34.useCallback(
|
|
7000
7011
|
(pdfWidth, pdfHeight, containerSize2) => {
|
|
7001
7012
|
const wRatio = pdfWidth / containerSize2.width;
|
|
@@ -7084,12 +7095,20 @@ function usePdfReader(args) {
|
|
|
7084
7095
|
state: null
|
|
7085
7096
|
};
|
|
7086
7097
|
}
|
|
7098
|
+
if (state2.state === "ERROR")
|
|
7099
|
+
throw state2.error;
|
|
7087
7100
|
const onDocumentLoadSuccess = ({ numPages }) => {
|
|
7088
7101
|
dispatch({
|
|
7089
7102
|
type: "PDF_PARSED",
|
|
7090
7103
|
numPages
|
|
7091
7104
|
});
|
|
7092
7105
|
};
|
|
7106
|
+
const onDocumentLoadError = (error2) => {
|
|
7107
|
+
dispatch({
|
|
7108
|
+
type: "PDF_LOAD_ERROR",
|
|
7109
|
+
error: error2
|
|
7110
|
+
});
|
|
7111
|
+
};
|
|
7093
7112
|
function onRenderSuccess(page) {
|
|
7094
7113
|
if (!page.height || !page.width)
|
|
7095
7114
|
throw new Error(
|
|
@@ -7129,28 +7148,36 @@ function usePdfReader(args) {
|
|
|
7129
7148
|
overflow-y: auto;
|
|
7130
7149
|
}
|
|
7131
7150
|
`),
|
|
7132
|
-
/* @__PURE__ */ React34.createElement(
|
|
7133
|
-
|
|
7151
|
+
/* @__PURE__ */ React34.createElement(
|
|
7152
|
+
import_react_pdf2.Document,
|
|
7134
7153
|
{
|
|
7135
|
-
|
|
7136
|
-
|
|
7137
|
-
|
|
7138
|
-
|
|
7139
|
-
|
|
7140
|
-
|
|
7141
|
-
|
|
7142
|
-
|
|
7143
|
-
|
|
7144
|
-
|
|
7145
|
-
|
|
7146
|
-
|
|
7147
|
-
|
|
7148
|
-
|
|
7149
|
-
|
|
7150
|
-
|
|
7151
|
-
|
|
7152
|
-
|
|
7153
|
-
|
|
7154
|
+
file: state2.resource,
|
|
7155
|
+
onLoadSuccess: onDocumentLoadSuccess,
|
|
7156
|
+
onLoadError: onDocumentLoadError
|
|
7157
|
+
},
|
|
7158
|
+
isParsed && state2.numPages && /* @__PURE__ */ React34.createElement(React34.Fragment, null, state2.settings.isScrolling && Array.from(new Array(state2.numPages), (_, index) => /* @__PURE__ */ React34.createElement(
|
|
7159
|
+
ScrollPage_default,
|
|
7160
|
+
{
|
|
7161
|
+
key: `page_${index + 1}`,
|
|
7162
|
+
width: containerSize.width,
|
|
7163
|
+
placeholderHeight: state2.pdfHeight,
|
|
7164
|
+
placeholderWidth: state2.pdfWidth,
|
|
7165
|
+
scale: state2.scale,
|
|
7166
|
+
pageNumber: index + 1,
|
|
7167
|
+
onLoadSuccess: onRenderSuccess
|
|
7168
|
+
}
|
|
7169
|
+
)), !state2.settings.isScrolling && /* @__PURE__ */ React34.createElement(
|
|
7170
|
+
ChakraPage_default,
|
|
7171
|
+
{
|
|
7172
|
+
pageNumber: state2.pageNumber,
|
|
7173
|
+
onLoadSuccess: onRenderSuccess,
|
|
7174
|
+
width: state2.pageWidth,
|
|
7175
|
+
height: state2.pageHeight,
|
|
7176
|
+
scale: state2.scale,
|
|
7177
|
+
loading: /* @__PURE__ */ React34.createElement(React34.Fragment, null)
|
|
7178
|
+
}
|
|
7179
|
+
))
|
|
7180
|
+
)
|
|
7154
7181
|
),
|
|
7155
7182
|
state: state2,
|
|
7156
7183
|
manifest,
|
|
@@ -8389,11 +8416,13 @@ function useWebReader(args) {
|
|
|
8389
8416
|
const readerType = getReaderType(
|
|
8390
8417
|
manifest ? manifest.metadata.conformsTo : null
|
|
8391
8418
|
);
|
|
8419
|
+
const getContentHtml = getContent;
|
|
8420
|
+
const getContentPdf = getContent;
|
|
8392
8421
|
const htmlReader = useHtmlReader(
|
|
8393
8422
|
readerType === "HTML" && manifest ? {
|
|
8394
8423
|
webpubManifestUrl,
|
|
8395
8424
|
manifest,
|
|
8396
|
-
getContent,
|
|
8425
|
+
getContent: getContentHtml,
|
|
8397
8426
|
injectablesReflowable,
|
|
8398
8427
|
injectablesFixed,
|
|
8399
8428
|
height,
|
|
@@ -8406,6 +8435,7 @@ function useWebReader(args) {
|
|
|
8406
8435
|
readerType === "PDF" && manifest ? {
|
|
8407
8436
|
webpubManifestUrl,
|
|
8408
8437
|
manifest,
|
|
8438
|
+
getContent: getContentPdf,
|
|
8409
8439
|
proxyUrl,
|
|
8410
8440
|
pdfWorkerSrc,
|
|
8411
8441
|
height,
|