art-bd-ui 1.0.41 → 1.0.43
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/cjs/_virtual/index3.js +4 -4
- package/dist/cjs/_virtual/index4.js +8 -2
- package/dist/cjs/_virtual/index5.js +2 -2
- package/dist/cjs/_virtual/index6.js +2 -8
- package/dist/cjs/_virtual/index7.js +4 -4
- package/dist/cjs/_virtual/index8.js +8 -2
- package/dist/cjs/_virtual/index9.js +2 -8
- package/dist/cjs/components/ui/pdf-content/hooks/use-page-layout.js +25 -31
- package/dist/cjs/components/ui/pdf-content/pdf-content.js +125 -34
- package/dist/cjs/components/ui/pdf-content/pdf-page.js +7 -10
- package/dist/cjs/components/ui/pdf-viewer/pdf-viewer.js +3 -2
- package/dist/cjs/components/ui/pdf-viewer/pdf.worker.js +37951 -1314
- package/dist/cjs/components/ui/pdf-viewer/use-filled-pdf.js +4 -2
- package/dist/cjs/components/ui/pdf-viewer/utils.js +271 -23
- package/dist/cjs/components/ui/rich-editor/bubble-menus/block-drag-handle-controls.js +1 -1
- package/dist/cjs/components/ui/rich-editor/bubble-menus/box-bubble-menu.js +116 -0
- package/dist/cjs/components/ui/rich-editor/bubble-menus/columns-bubble-menu.js +5 -1
- package/dist/cjs/components/ui/rich-editor/bubble-menus/floating-bubble-controls.js +4 -1
- package/dist/cjs/components/ui/rich-editor/bubble-menus/layout-bubble-menu.js +159 -0
- package/dist/cjs/components/ui/rich-editor/bubble-menus/layout-item-bubble-menu.js +126 -0
- package/dist/cjs/components/ui/rich-editor/bubble-menus/shared.js +6 -0
- package/dist/cjs/components/ui/rich-editor/extensions/box/editor.js +28 -0
- package/dist/cjs/components/ui/rich-editor/extensions/box/extension.js +70 -0
- package/dist/cjs/components/ui/rich-editor/extensions/box/node-view.js +13 -0
- package/dist/cjs/components/ui/rich-editor/extensions/box/utils.js +37 -0
- package/dist/cjs/components/ui/rich-editor/extensions/carousel/node-view.js +3 -3
- package/dist/cjs/components/ui/rich-editor/extensions/image/extension.js +96 -0
- package/dist/cjs/components/ui/rich-editor/extensions/image/image-node-view.js +59 -0
- package/dist/cjs/components/ui/rich-editor/extensions/layout/editor.js +93 -0
- package/dist/cjs/components/ui/rich-editor/extensions/layout/extension.js +189 -0
- package/dist/cjs/components/ui/rich-editor/extensions/layout/node-view.js +61 -0
- package/dist/cjs/components/ui/rich-editor/extensions/layout/utils.js +73 -0
- package/dist/cjs/components/ui/rich-editor/extensions/slash/default-suggestions.js +24 -0
- package/dist/cjs/components/ui/rich-editor/extensions/slash/slash-menu.js +1 -1
- package/dist/cjs/components/ui/rich-editor/extensions/slash/slash-suggestion-renderer.js +1 -0
- package/dist/cjs/components/ui/rich-editor/extensions/slash/slash.js +5 -2
- package/dist/cjs/components/ui/rich-editor/extensions.js +19 -9
- package/dist/cjs/components/ui/rich-editor/rich-editor.js +0 -11
- package/dist/cjs/components/ui/rich-editor/toolbar.js +1 -1
- package/dist/cjs/components/ui/rich-editor/views/resize-handle.js +17 -4
- package/dist/cjs/components/ui/rich-editor/views/use-node-resize.js +71 -9
- package/dist/cjs/index.js +2 -0
- package/dist/cjs/node_modules/@ckeditor/ckeditor5-mention/dist/index.js +1 -1
- package/dist/cjs/node_modules/@ckeditor/ckeditor5-paragraph/dist/index.js +1 -1
- package/dist/cjs/node_modules/@ckeditor/ckeditor5-ui/dist/index.js +1 -1
- package/dist/cjs/node_modules/@pdf-lib/fontkit/dist/fontkit.es.js +36480 -0
- package/dist/cjs/node_modules/@pdf-lib/standard-fonts/es/utils.js +1 -1
- package/dist/cjs/node_modules/@pdf-lib/upng/UPNG.js +1 -1
- package/dist/cjs/node_modules/attr-accept/dist/es/index.js +1 -1
- package/dist/cjs/node_modules/color-parse/index.js +1 -1
- package/dist/cjs/node_modules/pdf-lib/es/core/PDFContext.js +1 -1
- package/dist/cjs/node_modules/pdf-lib/es/core/operators/PDFOperatorNames.js +5 -2
- package/dist/cjs/node_modules/pdf-lib/es/core/structures/PDFFlateStream.js +1 -1
- package/dist/cjs/node_modules/pdf-lib/es/core/syntax/CharCodes.js +5 -2
- package/dist/cjs/node_modules/pdf-lib/es/index.js +2 -8
- package/dist/cjs/node_modules/prop-types/index.js +1 -1
- package/dist/cjs/node_modules/react-dropzone/dist/es/utils/index.js +1 -1
- package/dist/cjs/node_modules/react-window/dist/react-window.js +608 -0
- package/dist/cjs/node_modules/use-sync-external-store/shim/index.js +1 -1
- package/dist/esm/_virtual/index3.js +4 -4
- package/dist/esm/_virtual/index4.js +6 -2
- package/dist/esm/_virtual/index5.js +2 -2
- package/dist/esm/_virtual/index6.js +2 -6
- package/dist/esm/_virtual/index7.js +4 -4
- package/dist/esm/_virtual/index8.js +6 -2
- package/dist/esm/_virtual/index9.js +2 -6
- package/dist/esm/components/ui/pdf-content/hooks/use-page-layout.js +26 -32
- package/dist/esm/components/ui/pdf-content/pdf-content.js +126 -35
- package/dist/esm/components/ui/pdf-content/pdf-page.js +7 -10
- package/dist/esm/components/ui/pdf-viewer/pdf-viewer.js +3 -2
- package/dist/esm/components/ui/pdf-viewer/pdf.worker.js +37951 -1314
- package/dist/esm/components/ui/pdf-viewer/use-filled-pdf.js +4 -2
- package/dist/esm/components/ui/pdf-viewer/utils.js +271 -24
- package/dist/esm/components/ui/rich-editor/bubble-menus/block-drag-handle-controls.js +1 -1
- package/dist/esm/components/ui/rich-editor/bubble-menus/box-bubble-menu.js +114 -0
- package/dist/esm/components/ui/rich-editor/bubble-menus/columns-bubble-menu.js +5 -1
- package/dist/esm/components/ui/rich-editor/bubble-menus/floating-bubble-controls.js +4 -1
- package/dist/esm/components/ui/rich-editor/bubble-menus/layout-bubble-menu.js +157 -0
- package/dist/esm/components/ui/rich-editor/bubble-menus/layout-item-bubble-menu.js +124 -0
- package/dist/esm/components/ui/rich-editor/bubble-menus/shared.js +4 -1
- package/dist/esm/components/ui/rich-editor/extensions/box/editor.js +26 -0
- package/dist/esm/components/ui/rich-editor/extensions/box/extension.js +68 -0
- package/dist/esm/components/ui/rich-editor/extensions/box/node-view.js +11 -0
- package/dist/esm/components/ui/rich-editor/extensions/box/utils.js +32 -0
- package/dist/esm/components/ui/rich-editor/extensions/carousel/node-view.js +3 -3
- package/dist/esm/components/ui/rich-editor/extensions/image/extension.js +90 -0
- package/dist/esm/components/ui/rich-editor/extensions/image/image-node-view.js +57 -0
- package/dist/esm/components/ui/rich-editor/extensions/layout/editor.js +90 -0
- package/dist/esm/components/ui/rich-editor/extensions/layout/extension.js +186 -0
- package/dist/esm/components/ui/rich-editor/extensions/layout/node-view.js +58 -0
- package/dist/esm/components/ui/rich-editor/extensions/layout/utils.js +68 -0
- package/dist/esm/components/ui/rich-editor/extensions/slash/default-suggestions.js +24 -0
- package/dist/esm/components/ui/rich-editor/extensions/slash/slash-menu.js +1 -1
- package/dist/esm/components/ui/rich-editor/extensions/slash/slash-suggestion-renderer.js +1 -0
- package/dist/esm/components/ui/rich-editor/extensions/slash/slash.js +5 -2
- package/dist/esm/components/ui/rich-editor/extensions.js +12 -2
- package/dist/esm/components/ui/rich-editor/rich-editor.js +0 -11
- package/dist/esm/components/ui/rich-editor/toolbar.js +1 -1
- package/dist/esm/components/ui/rich-editor/views/resize-handle.js +18 -5
- package/dist/esm/components/ui/rich-editor/views/use-node-resize.js +71 -9
- package/dist/esm/index.js +1 -1
- package/dist/esm/node_modules/@ckeditor/ckeditor5-mention/dist/index.js +1 -1
- package/dist/esm/node_modules/@ckeditor/ckeditor5-paragraph/dist/index.js +1 -1
- package/dist/esm/node_modules/@ckeditor/ckeditor5-ui/dist/index.js +1 -1
- package/dist/esm/node_modules/@pdf-lib/fontkit/dist/fontkit.es.js +36476 -0
- package/dist/esm/node_modules/@pdf-lib/standard-fonts/es/utils.js +1 -1
- package/dist/esm/node_modules/@pdf-lib/upng/UPNG.js +1 -1
- package/dist/esm/node_modules/attr-accept/dist/es/index.js +1 -1
- package/dist/esm/node_modules/color-parse/index.js +1 -1
- package/dist/esm/node_modules/pdf-lib/es/api/PDFDocument.js +2 -2
- package/dist/esm/node_modules/pdf-lib/es/api/form/PDFButton.js +1 -1
- package/dist/esm/node_modules/pdf-lib/es/api/form/PDFField.js +1 -1
- package/dist/esm/node_modules/pdf-lib/es/api/form/PDFTextField.js +1 -1
- package/dist/esm/node_modules/pdf-lib/es/api/form/appearances.js +1 -1
- package/dist/esm/node_modules/pdf-lib/es/api/operations.js +1 -1
- package/dist/esm/node_modules/pdf-lib/es/api/operators.js +44 -44
- package/dist/esm/node_modules/pdf-lib/es/api/text/layout.js +1 -1
- package/dist/esm/node_modules/pdf-lib/es/core/PDFContext.js +4 -4
- package/dist/esm/node_modules/pdf-lib/es/core/embedders/PDFPageEmbedder.js +1 -1
- package/dist/esm/node_modules/pdf-lib/es/core/objects/PDFName.js +1 -1
- package/dist/esm/node_modules/pdf-lib/es/core/operators/PDFOperatorNames.js +2 -1
- package/dist/esm/node_modules/pdf-lib/es/core/parser/PDFParser.js +1 -1
- package/dist/esm/node_modules/pdf-lib/es/core/structures/PDFCrossRefStream.js +1 -1
- package/dist/esm/node_modules/pdf-lib/es/core/structures/PDFFlateStream.js +1 -1
- package/dist/esm/node_modules/pdf-lib/es/core/syntax/CharCodes.js +2 -1
- package/dist/esm/node_modules/prop-types/index.js +1 -1
- package/dist/esm/node_modules/react-dropzone/dist/es/utils/index.js +1 -1
- package/dist/esm/node_modules/react-window/dist/react-window.js +606 -0
- package/dist/esm/node_modules/use-sync-external-store/shim/index.js +1 -1
- package/dist/styles.css +148 -244
- package/dist/types/index.d.ts +56 -24
- package/package.json +3 -1
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
var _commonjsHelpers = require('./_commonjsHelpers.js');
|
|
6
|
-
var index = require('../node_modules/
|
|
6
|
+
var index = require('../node_modules/pako/index.js');
|
|
7
7
|
|
|
8
|
-
var
|
|
9
|
-
var
|
|
8
|
+
var pakoExports = index.__require();
|
|
9
|
+
var pako = /*@__PURE__*/_commonjsHelpers.getDefaultExportFromCjs(pakoExports);
|
|
10
10
|
|
|
11
|
-
exports.default =
|
|
11
|
+
exports.default = pako;
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
var _commonjsHelpers = require('./_commonjsHelpers.js');
|
|
6
|
+
var index = require('../node_modules/attr-accept/dist/es/index.js');
|
|
7
|
+
|
|
8
|
+
var esExports = index.__require();
|
|
9
|
+
var _accepts = /*@__PURE__*/_commonjsHelpers.getDefaultExportFromCjs(esExports);
|
|
10
|
+
|
|
11
|
+
exports.default = _accepts;
|
|
@@ -1,11 +1,5 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
var propTypes = {exports: {}};
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
var index = require('../node_modules/color-name/index.js');
|
|
7
|
-
|
|
8
|
-
var colorNameExports = index.__require();
|
|
9
|
-
var names = /*@__PURE__*/_commonjsHelpers.getDefaultExportFromCjs(colorNameExports);
|
|
10
|
-
|
|
11
|
-
exports.default = names;
|
|
5
|
+
exports.__module = propTypes;
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
var _commonjsHelpers = require('./_commonjsHelpers.js');
|
|
6
|
-
var index
|
|
6
|
+
var index = require('../node_modules/color-name/index.js');
|
|
7
7
|
|
|
8
|
-
var
|
|
9
|
-
var
|
|
8
|
+
var colorNameExports = index.__require();
|
|
9
|
+
var names = /*@__PURE__*/_commonjsHelpers.getDefaultExportFromCjs(colorNameExports);
|
|
10
10
|
|
|
11
|
-
exports.default =
|
|
11
|
+
exports.default = names;
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
var _commonjsHelpers = require('./_commonjsHelpers.js');
|
|
6
|
+
var index$1 = require('../node_modules/color-convert/index.js');
|
|
7
|
+
|
|
8
|
+
var colorConvertExports = index$1.__require();
|
|
9
|
+
var index = /*@__PURE__*/_commonjsHelpers.getDefaultExportFromCjs(colorConvertExports);
|
|
10
|
+
|
|
11
|
+
exports.default = index;
|
|
@@ -1,11 +1,5 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
var es = {};
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
var index = require('../node_modules/pako/index.js');
|
|
7
|
-
|
|
8
|
-
var pakoExports = index.__require();
|
|
9
|
-
var pako = /*@__PURE__*/_commonjsHelpers.getDefaultExportFromCjs(pakoExports);
|
|
10
|
-
|
|
11
|
-
exports.default = pako;
|
|
5
|
+
exports.__exports = es;
|
|
@@ -2,48 +2,42 @@
|
|
|
2
2
|
|
|
3
3
|
var React = require('react');
|
|
4
4
|
|
|
5
|
-
const
|
|
5
|
+
const DEFAULT_PAGE_SIZE = { width: 612, height: 792 };
|
|
6
6
|
const PAGE_GAP = 16;
|
|
7
|
-
function usePageLayout({ numPages, scale }) {
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
// Use nearest known height as a better estimate
|
|
23
|
-
for (const [, dim] of pageDims.current)
|
|
24
|
-
return dim.height;
|
|
25
|
-
return DEFAULT_PAGE_HEIGHT * scale;
|
|
26
|
-
}, [scale]);
|
|
7
|
+
function usePageLayout({ numPages, pageSizes, containerWidth, scale }) {
|
|
8
|
+
const fallbackSize = React.useMemo(() => {
|
|
9
|
+
const firstKnownPage = pageSizes.values().next();
|
|
10
|
+
if (!firstKnownPage.done)
|
|
11
|
+
return firstKnownPage.value;
|
|
12
|
+
return DEFAULT_PAGE_SIZE;
|
|
13
|
+
}, [pageSizes]);
|
|
14
|
+
const pageHeights = React.useMemo(() => Array.from({ length: numPages }, (_, index) => {
|
|
15
|
+
var _a;
|
|
16
|
+
const pageNumber = index + 1;
|
|
17
|
+
const baseSize = (_a = pageSizes.get(pageNumber)) !== null && _a !== void 0 ? _a : fallbackSize;
|
|
18
|
+
const effectiveWidth = containerWidth > 0 ? containerWidth : baseSize.width;
|
|
19
|
+
const scaleFromWidth = effectiveWidth / baseSize.width;
|
|
20
|
+
return baseSize.height * scaleFromWidth * scale;
|
|
21
|
+
}), [numPages, pageSizes, fallbackSize, containerWidth, scale]);
|
|
27
22
|
const pageOffsets = React.useMemo(() => {
|
|
23
|
+
var _a;
|
|
28
24
|
const offsets = [];
|
|
29
25
|
let y = 0;
|
|
30
26
|
for (let i = 0; i < numPages; i++) {
|
|
31
27
|
offsets.push(y);
|
|
32
|
-
y +=
|
|
28
|
+
y += (_a = pageHeights[i]) !== null && _a !== void 0 ? _a : 0;
|
|
29
|
+
if (i < numPages - 1)
|
|
30
|
+
y += PAGE_GAP;
|
|
33
31
|
}
|
|
34
32
|
return offsets;
|
|
35
|
-
|
|
36
|
-
}, [numPages, estimatePageHeight, layoutVersion]);
|
|
33
|
+
}, [numPages, pageHeights]);
|
|
37
34
|
const totalHeight = React.useMemo(() => {
|
|
35
|
+
var _a;
|
|
38
36
|
if (numPages === 0 || pageOffsets.length === 0)
|
|
39
37
|
return 0;
|
|
40
|
-
return pageOffsets[numPages - 1] +
|
|
41
|
-
}, [numPages, pageOffsets,
|
|
42
|
-
|
|
43
|
-
pageDims.current.clear();
|
|
44
|
-
setLayoutVersion(0);
|
|
45
|
-
}, []);
|
|
46
|
-
return { pageOffsets, totalHeight, estimatePageHeight, onPageMeasured, resetLayout };
|
|
38
|
+
return pageOffsets[numPages - 1] + ((_a = pageHeights[numPages - 1]) !== null && _a !== void 0 ? _a : 0);
|
|
39
|
+
}, [numPages, pageOffsets, pageHeights]);
|
|
40
|
+
return { pageOffsets, pageHeights, totalHeight };
|
|
47
41
|
}
|
|
48
42
|
|
|
49
43
|
exports.usePageLayout = usePageLayout;
|
|
@@ -1,17 +1,21 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
var tslib_es6 = require('../../../node_modules/tslib/tslib.es6.js');
|
|
3
4
|
var jsxRuntime = require('react/jsx-runtime');
|
|
4
5
|
var React = require('react');
|
|
5
6
|
require('../../../node_modules/react-pdf/dist/index.js');
|
|
7
|
+
var reactWindow = require('../../../node_modules/react-window/dist/react-window.js');
|
|
6
8
|
var pdfPage = require('./pdf-page.js');
|
|
7
9
|
var usePdfScale = require('./hooks/use-pdf-scale.js');
|
|
8
10
|
var usePageLayout = require('./hooks/use-page-layout.js');
|
|
9
|
-
var useVirtualPages = require('./hooks/use-virtual-pages.js');
|
|
10
11
|
var utils$1 = require('./utils.js');
|
|
11
12
|
var empty = require('../../utility/empty/empty.js');
|
|
12
13
|
var icon = require('../../media/icon/icon.js');
|
|
13
14
|
var skeleton = require('../../utility/skeleton/skeleton.js');
|
|
15
|
+
var useUpdateEffect = require('../../../hooks/use-update-effect.js');
|
|
14
16
|
var useResizeObserver = require('../../../hooks/use-resize-observer.js');
|
|
17
|
+
require('../../../_virtual/throttle.js');
|
|
18
|
+
require('../../../_virtual/isEqual.js');
|
|
15
19
|
var utils = require('../../../lib/utils.js');
|
|
16
20
|
require('../../../node_modules/react-pdf/dist/Page/AnnotationLayer.css.js');
|
|
17
21
|
require('../../../node_modules/react-pdf/dist/Page/TextLayer.css.js');
|
|
@@ -21,48 +25,128 @@ var pdf = require('../../../node_modules/pdfjs-dist/build/pdf.js');
|
|
|
21
25
|
var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
|
|
22
26
|
pdf.GlobalWorkerOptions.workerSrc = new URL("pdfjs-dist/build/pdf.worker.min.mjs", (typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('components/ui/pdf-content/pdf-content.js', document.baseURI).href))).toString();
|
|
23
27
|
const PAGE_GAP = 16;
|
|
28
|
+
const OVERSCAN = 3;
|
|
29
|
+
const PAGE_SIZE_BATCH = 100;
|
|
30
|
+
function getPageGap(index, numPages) {
|
|
31
|
+
return index < numPages - 1 ? PAGE_GAP : 0;
|
|
32
|
+
}
|
|
33
|
+
function getSafePageNumber(page, numPages) {
|
|
34
|
+
return utils$1.clamp(Number.isFinite(page) ? page : 1, 1, Math.max(1, numPages));
|
|
35
|
+
}
|
|
36
|
+
function createEmptyPageSizes() {
|
|
37
|
+
return new Map();
|
|
38
|
+
}
|
|
39
|
+
function findMostVisiblePage(firstIndex, lastIndex, viewportMid, pageOffsets, pageHeights) {
|
|
40
|
+
var _a, _b;
|
|
41
|
+
let bestPage = firstIndex + 1;
|
|
42
|
+
let bestDist = Number.POSITIVE_INFINITY;
|
|
43
|
+
for (let i = firstIndex; i <= lastIndex; i++) {
|
|
44
|
+
const pageHeight = (_a = pageHeights[i]) !== null && _a !== void 0 ? _a : 0;
|
|
45
|
+
const pageMid = ((_b = pageOffsets[i]) !== null && _b !== void 0 ? _b : 0) + pageHeight / 2;
|
|
46
|
+
const dist = Math.abs(viewportMid - pageMid);
|
|
47
|
+
if (dist < bestDist) {
|
|
48
|
+
bestDist = dist;
|
|
49
|
+
bestPage = i + 1;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return bestPage;
|
|
53
|
+
}
|
|
54
|
+
function loadPageSizes(pdf) {
|
|
55
|
+
return tslib_es6.__awaiter(this, void 0, void 0, function* () {
|
|
56
|
+
try {
|
|
57
|
+
const nextPageSizes = createEmptyPageSizes();
|
|
58
|
+
for (let startPage = 1; startPage <= pdf.numPages; startPage += PAGE_SIZE_BATCH) {
|
|
59
|
+
const endPage = Math.min(startPage + PAGE_SIZE_BATCH - 1, pdf.numPages);
|
|
60
|
+
const pages = yield Promise.all(Array.from({ length: endPage - startPage + 1 }, (_, offset) => pdf.getPage(startPage + offset)));
|
|
61
|
+
pages.forEach((page) => {
|
|
62
|
+
const { width, height } = page.getViewport({ scale: 1 });
|
|
63
|
+
nextPageSizes.set(page.pageNumber, { width, height });
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
return nextPageSizes;
|
|
67
|
+
}
|
|
68
|
+
catch (_a) {
|
|
69
|
+
return createEmptyPageSizes();
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
function PDFVirtualRow({ index, style, ariaAttributes, containerWidth, numPages, pageHeights, scale, renderTextLayer, renderAnnotationLayer, }) {
|
|
74
|
+
var _a;
|
|
75
|
+
const gap = getPageGap(index, numPages);
|
|
76
|
+
return (jsxRuntime.jsx(pdfPage.PDFPage, { pageNumber: index + 1, containerWidth: containerWidth, scale: scale, renderTextLayer: renderTextLayer, renderAnnotationLayer: renderAnnotationLayer, placeholderHeight: (_a = pageHeights[index]) !== null && _a !== void 0 ? _a : 0, ariaAttributes: ariaAttributes, style: Object.assign(Object.assign({}, style), { boxSizing: "border-box", paddingBottom: gap }) }));
|
|
77
|
+
}
|
|
24
78
|
function PDFSkeleton() {
|
|
25
79
|
return (jsxRuntime.jsxs("div", { className: "flex flex-col gap-4 p-6", children: [jsxRuntime.jsx(skeleton.Skeleton, { className: "h-6 w-1/3" }), jsxRuntime.jsx(skeleton.Skeleton, { className: "h-4 w-3/4" }), jsxRuntime.jsx(skeleton.Skeleton, { className: "h-4 w-full" }), jsxRuntime.jsx(skeleton.Skeleton, { className: "h-4 w-5/6" }), jsxRuntime.jsx(skeleton.Skeleton, { className: "h-4 w-2/3" }), jsxRuntime.jsx(skeleton.Skeleton, { className: "h-4 w-full" }), jsxRuntime.jsx(skeleton.Skeleton, { className: "h-4 w-4/5" })] }));
|
|
26
80
|
}
|
|
27
81
|
function PDFEmptyState({ icon: icon$1, title, description }) {
|
|
28
82
|
return (jsxRuntime.jsxs(empty.EmptyState, { className: "py-12", children: [jsxRuntime.jsx(empty.EmptyMedia, { variant: "icon", children: jsxRuntime.jsx(icon.Icon, { name: icon$1 }) }), jsxRuntime.jsxs(empty.EmptyHeader, { children: [jsxRuntime.jsx(empty.EmptyTitle, { children: title }), jsxRuntime.jsx(empty.EmptyDescription, { children: description })] })] }));
|
|
29
83
|
}
|
|
30
|
-
const
|
|
84
|
+
const NO_DATA_PLACEHOLDER = (jsxRuntime.jsx(PDFEmptyState, { icon: "file-text", title: "No PDF to display", description: "Provide a PDF file to preview it here." }));
|
|
85
|
+
const LOADING_PLACEHOLDER = jsxRuntime.jsx(PDFSkeleton, {});
|
|
86
|
+
const ERROR_PLACEHOLDER = (jsxRuntime.jsx(PDFEmptyState, { icon: "alert-circle", title: "Failed to load PDF", description: "The PDF file could not be loaded." }));
|
|
87
|
+
const PDFContent = React.forwardRef(function PDFContent({ file, renderTextLayer = true, renderAnnotationLayer = true, initialScale = 1, minScale = 0.5, maxScale = 3, height, onDocumentLoad, onPageChange, onScaleChange, className, }, ref) {
|
|
31
88
|
var _a;
|
|
32
89
|
const containerRef = React.useRef(null);
|
|
90
|
+
const listRef = React.useRef(null);
|
|
91
|
+
const pageSizesRequestIdRef = React.useRef(0);
|
|
33
92
|
const rect = useResizeObserver.useResizeObserver(containerRef);
|
|
34
93
|
const containerWidth = (_a = rect === null || rect === void 0 ? void 0 : rect.width) !== null && _a !== void 0 ? _a : 0;
|
|
35
94
|
const [numPages, setNumPages] = React.useState(0);
|
|
95
|
+
const [visiblePage, setVisiblePage] = React.useState(1);
|
|
96
|
+
const [isLayoutReady, setIsLayoutReady] = React.useState(false);
|
|
97
|
+
const [pageSizes, setPageSizes] = React.useState(createEmptyPageSizes);
|
|
36
98
|
const { scale, setScale } = usePdfScale.usePdfScale({ initialScale, minScale, maxScale, onScaleChange });
|
|
37
|
-
const { pageOffsets,
|
|
99
|
+
const { pageOffsets, pageHeights } = usePageLayout.usePageLayout({
|
|
38
100
|
numPages,
|
|
101
|
+
pageSizes,
|
|
102
|
+
containerWidth,
|
|
39
103
|
scale,
|
|
40
104
|
});
|
|
41
|
-
const
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
estimatePageHeight,
|
|
46
|
-
scale,
|
|
47
|
-
});
|
|
48
|
-
// Notify parent of page changes
|
|
49
|
-
React.useEffect(() => {
|
|
105
|
+
const setVisiblePageIfNeeded = React.useCallback((nextPage) => {
|
|
106
|
+
setVisiblePage((currentPage) => (currentPage === nextPage ? currentPage : nextPage));
|
|
107
|
+
}, []);
|
|
108
|
+
useUpdateEffect.useUpdateEffect(() => {
|
|
50
109
|
onPageChange === null || onPageChange === void 0 ? void 0 : onPageChange(visiblePage);
|
|
51
110
|
}, [visiblePage, onPageChange]);
|
|
52
|
-
|
|
53
|
-
const scrollToPage = React.useCallback((page) => {
|
|
111
|
+
const handleRowsRendered = React.useCallback(({ startIndex, stopIndex }) => {
|
|
54
112
|
var _a;
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
113
|
+
if (numPages === 0)
|
|
114
|
+
return;
|
|
115
|
+
const maxIndex = numPages - 1;
|
|
116
|
+
const first = utils$1.clamp(startIndex, 0, maxIndex);
|
|
117
|
+
const last = utils$1.clamp(stopIndex, first, maxIndex);
|
|
118
|
+
const listElement = (_a = listRef.current) === null || _a === void 0 ? void 0 : _a.element;
|
|
119
|
+
if (!listElement) {
|
|
120
|
+
setVisiblePageIfNeeded(first + 1);
|
|
58
121
|
return;
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
122
|
+
}
|
|
123
|
+
const viewportMid = listElement.scrollTop + listElement.clientHeight / 2;
|
|
124
|
+
const next = findMostVisiblePage(first, last, viewportMid, pageOffsets, pageHeights);
|
|
125
|
+
setVisiblePageIfNeeded(next);
|
|
126
|
+
}, [numPages, pageOffsets, pageHeights, setVisiblePageIfNeeded]);
|
|
127
|
+
const rowHeight = React.useCallback((index) => {
|
|
128
|
+
var _a;
|
|
129
|
+
const baseHeight = (_a = pageHeights[index]) !== null && _a !== void 0 ? _a : 0;
|
|
130
|
+
const gap = getPageGap(index, numPages);
|
|
131
|
+
return baseHeight + gap;
|
|
132
|
+
}, [numPages, pageHeights]);
|
|
133
|
+
const rowProps = React.useMemo(() => ({
|
|
134
|
+
containerWidth,
|
|
135
|
+
numPages,
|
|
136
|
+
pageHeights,
|
|
137
|
+
scale,
|
|
138
|
+
renderTextLayer,
|
|
139
|
+
renderAnnotationLayer,
|
|
140
|
+
}), [containerWidth, numPages, pageHeights, scale, renderTextLayer, renderAnnotationLayer]);
|
|
141
|
+
const scrollToPage = React.useCallback((page) => {
|
|
142
|
+
var _a;
|
|
143
|
+
const safePage = getSafePageNumber(page, numPages);
|
|
144
|
+
(_a = listRef.current) === null || _a === void 0 ? void 0 : _a.scrollToRow({
|
|
145
|
+
index: safePage - 1,
|
|
146
|
+
align: "start",
|
|
62
147
|
behavior: "smooth",
|
|
63
148
|
});
|
|
64
|
-
}, [numPages
|
|
65
|
-
// Expose imperative API
|
|
149
|
+
}, [numPages]);
|
|
66
150
|
React.useImperativeHandle(ref, () => ({
|
|
67
151
|
scrollToPage,
|
|
68
152
|
getState: () => ({
|
|
@@ -72,21 +156,28 @@ const PDFContent = React.forwardRef(function PDFContent({ file, renderTextLayer
|
|
|
72
156
|
}),
|
|
73
157
|
setScale,
|
|
74
158
|
}), [scrollToPage, visiblePage, numPages, scale, setScale]);
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
159
|
+
const resetDocumentState = React.useCallback(() => {
|
|
160
|
+
pageSizesRequestIdRef.current += 1;
|
|
161
|
+
setIsLayoutReady(false);
|
|
162
|
+
setVisiblePage(1);
|
|
79
163
|
setNumPages(0);
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
164
|
+
setPageSizes(createEmptyPageSizes());
|
|
165
|
+
}, []);
|
|
166
|
+
useUpdateEffect.useUpdateEffect(() => {
|
|
167
|
+
resetDocumentState();
|
|
168
|
+
}, [file, resetDocumentState]);
|
|
169
|
+
const handleDocumentLoadSuccess = React.useCallback((pdf) => {
|
|
170
|
+
const requestId = ++pageSizesRequestIdRef.current;
|
|
84
171
|
onDocumentLoad === null || onDocumentLoad === void 0 ? void 0 : onDocumentLoad(pdf.numPages);
|
|
172
|
+
void loadPageSizes(pdf).then((nextPageSizes) => {
|
|
173
|
+
if (requestId !== pageSizesRequestIdRef.current)
|
|
174
|
+
return;
|
|
175
|
+
setPageSizes(nextPageSizes);
|
|
176
|
+
setNumPages(pdf.numPages);
|
|
177
|
+
setIsLayoutReady(true);
|
|
178
|
+
});
|
|
85
179
|
}, [onDocumentLoad]);
|
|
86
|
-
return (jsxRuntime.jsx("div", { ref: containerRef, "data-pdf-stage": "root", className: utils.cn("relative overflow-auto bg-muted/40", className),
|
|
87
|
-
var _a;
|
|
88
|
-
return (jsxRuntime.jsx(pdfPage.PDFPage, { pageNumber: pageNumber, offsetY: (_a = pageOffsets[pageNumber - 1]) !== null && _a !== void 0 ? _a : 0, containerWidth: containerWidth, scale: scale, renderTextLayer: renderTextLayer, renderAnnotationLayer: renderAnnotationLayer, placeholderHeight: estimatePageHeight(pageNumber), onMeasured: onPageMeasured }, pageNumber));
|
|
89
|
-
}) }) }) }));
|
|
180
|
+
return (jsxRuntime.jsx("div", { ref: containerRef, "data-pdf-stage": "root", className: utils.cn("relative h-full min-h-0 overflow-auto bg-muted/40", className), style: height !== undefined ? { height } : undefined, children: jsxRuntime.jsx(Document.default, { file: file, onLoadSuccess: handleDocumentLoadSuccess, loading: LOADING_PLACEHOLDER, error: ERROR_PLACEHOLDER, noData: NO_DATA_PLACEHOLDER, children: isLayoutReady ? (jsxRuntime.jsx(reactWindow.List, { listRef: listRef, rowCount: numPages, rowHeight: rowHeight, rowComponent: PDFVirtualRow, rowProps: rowProps, overscanCount: OVERSCAN, onRowsRendered: handleRowsRendered, className: "h-full w-full" })) : (LOADING_PLACEHOLDER) }) }));
|
|
90
181
|
});
|
|
91
182
|
|
|
92
183
|
exports.PDFContent = PDFContent;
|
|
@@ -1,20 +1,17 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
-
var React = require('react');
|
|
5
4
|
require('../../../node_modules/react-pdf/dist/index.js');
|
|
6
5
|
var skeleton = require('../../utility/skeleton/skeleton.js');
|
|
6
|
+
var utils = require('../../../lib/utils.js');
|
|
7
7
|
var Page = require('../../../node_modules/react-pdf/dist/Page.js');
|
|
8
8
|
|
|
9
|
-
function
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
return;
|
|
16
|
-
onMeasured(pageNumber, { width: el.offsetWidth, height: el.offsetHeight });
|
|
17
|
-
}, loading: jsxRuntime.jsxs("div", { className: "flex w-full flex-col gap-3 p-6", style: { height: placeholderHeight }, children: [jsxRuntime.jsx(skeleton.Skeleton, { className: "h-4 w-3/4" }), jsxRuntime.jsx(skeleton.Skeleton, { className: "h-4 w-full" }), jsxRuntime.jsx(skeleton.Skeleton, { className: "h-4 w-5/6" }), jsxRuntime.jsx(skeleton.Skeleton, { className: "h-4 w-2/3" }), jsxRuntime.jsx(skeleton.Skeleton, { className: "h-4 w-full" }), jsxRuntime.jsx(skeleton.Skeleton, { className: "h-4 w-4/5" })] }) }) }));
|
|
9
|
+
function PDFPageLoadingState({ placeholderHeight }) {
|
|
10
|
+
return (jsxRuntime.jsxs("div", { className: "flex w-full flex-col gap-3 p-6", style: { height: placeholderHeight }, children: [jsxRuntime.jsx(skeleton.Skeleton, { className: "h-4 w-3/4" }), jsxRuntime.jsx(skeleton.Skeleton, { className: "h-4 w-full" }), jsxRuntime.jsx(skeleton.Skeleton, { className: "h-4 w-5/6" }), jsxRuntime.jsx(skeleton.Skeleton, { className: "h-4 w-2/3" }), jsxRuntime.jsx(skeleton.Skeleton, { className: "h-4 w-full" }), jsxRuntime.jsx(skeleton.Skeleton, { className: "h-4 w-4/5" })] }));
|
|
11
|
+
}
|
|
12
|
+
function PDFPage({ pageNumber, containerWidth, scale, renderTextLayer, renderAnnotationLayer, placeholderHeight, className, style, ariaAttributes, }) {
|
|
13
|
+
const pageWidth = containerWidth > 0 ? containerWidth : undefined;
|
|
14
|
+
return (jsxRuntime.jsx("div", Object.assign({ "data-page-num": pageNumber, className: utils.cn("flex justify-center", className), style: style }, ariaAttributes, { children: jsxRuntime.jsx(Page.default, { pageNumber: pageNumber, width: pageWidth, scale: scale, renderTextLayer: renderTextLayer, renderAnnotationLayer: renderAnnotationLayer, loading: jsxRuntime.jsx(PDFPageLoadingState, { placeholderHeight: placeholderHeight }) }) })));
|
|
18
15
|
}
|
|
19
16
|
|
|
20
17
|
exports.PDFPage = PDFPage;
|
|
@@ -10,7 +10,7 @@ var utils = require('../pdf-content/utils.js');
|
|
|
10
10
|
var utils$1 = require('../../../lib/utils.js');
|
|
11
11
|
var file = require('../../../utils/file.js');
|
|
12
12
|
|
|
13
|
-
function PDFViewer({ file: file$1, formData, flatten = true, initialScale = 1, minScale = 0.5, maxScale = 3, scaleStep = 0.1, renderTextLayer = true, renderAnnotationLayer = true, className, style, }) {
|
|
13
|
+
function PDFViewer({ file: file$1, formData, styles, flatten = true, initialScale = 1, minScale = 0.5, maxScale = 3, scaleStep = 0.1, renderTextLayer = true, renderAnnotationLayer = true, height, className, style, }) {
|
|
14
14
|
const contentRef = React.useRef(null);
|
|
15
15
|
const [scale, setScale] = React.useState(initialScale);
|
|
16
16
|
const [numPages, setNumPages] = React.useState(0);
|
|
@@ -18,6 +18,7 @@ function PDFViewer({ file: file$1, formData, flatten = true, initialScale = 1, m
|
|
|
18
18
|
const { pdfBlob, isProcessing } = useFilledPdf.useFilledPdf({
|
|
19
19
|
file: file$1,
|
|
20
20
|
formData,
|
|
21
|
+
styles,
|
|
21
22
|
flatten,
|
|
22
23
|
});
|
|
23
24
|
const goToPage = React.useCallback((p) => {
|
|
@@ -43,7 +44,7 @@ function PDFViewer({ file: file$1, formData, flatten = true, initialScale = 1, m
|
|
|
43
44
|
return;
|
|
44
45
|
file.printBlob(pdfBlob);
|
|
45
46
|
}, [pdfBlob]);
|
|
46
|
-
return (jsxRuntime.jsxs("div", { className: utils$1.cn("flex flex-col overflow-hidden rounded-xl border", className), style: style, children: [jsxRuntime.jsx(toolbar.Toolbar, { scale: scale, minScale: minScale, maxScale: maxScale, onZoomIn: zoomIn, onZoomOut: zoomOut, pageNumber: visiblePage, numPages: numPages, onPageChange: goToPage, onPrev: prev, onNext: next, canDownload: !isProcessing, onDownload: download, canPrint: !isProcessing, onPrint: print, isBusy: isProcessing }), jsxRuntime.jsx(pdfContent.PDFContent, { ref: contentRef, file: pdfBlob, initialScale: initialScale, minScale: minScale, maxScale: maxScale, renderTextLayer: renderTextLayer, renderAnnotationLayer: renderAnnotationLayer, onDocumentLoad: handleDocumentLoad, onPageChange: setVisiblePage, onScaleChange: setScale })] }));
|
|
47
|
+
return (jsxRuntime.jsxs("div", { className: utils$1.cn("flex min-h-0 flex-col overflow-hidden rounded-xl border", className), style: Object.assign({ height }, style), children: [jsxRuntime.jsx(toolbar.Toolbar, { scale: scale, minScale: minScale, maxScale: maxScale, onZoomIn: zoomIn, onZoomOut: zoomOut, pageNumber: visiblePage, numPages: numPages, onPageChange: goToPage, onPrev: prev, onNext: next, canDownload: !isProcessing, onDownload: download, canPrint: !isProcessing, onPrint: print, isBusy: isProcessing }), jsxRuntime.jsx(pdfContent.PDFContent, { ref: contentRef, file: pdfBlob, className: "flex-1 min-h-0", initialScale: initialScale, minScale: minScale, maxScale: maxScale, renderTextLayer: renderTextLayer, renderAnnotationLayer: renderAnnotationLayer, onDocumentLoad: handleDocumentLoad, onPageChange: setVisiblePage, onScaleChange: setScale })] }));
|
|
47
48
|
}
|
|
48
49
|
|
|
49
50
|
exports.PDFViewer = PDFViewer;
|