Add machine learning and computer vision libraries to vendor/ directory
to support panel detection feature. Following foliate-js's existing pattern
of vendoring large dependencies (similar to pdf.js at 13MB).
Vendored libraries (~12.5MB):
- vendor/tfjs/tf.min.js (1.5MB): TensorFlow.js UMD build
* Downloaded from unpkg.com during build via custom Rollup plugin
* Required runtime for COCO-SSD model
- vendor/opencv/opencv.js (~11MB): OpenCV.js UMD build
* Copied from @techstark/opencv-js npm package
* Provides edge detection and image processing
* Requires 'unsafe-eval' CSP directive due to eval() usage
- vendor/coco-ssd/coco-ssd.min.js (~9KB): COCO-SSD model
* Copied from @tensorflow-models/coco-ssd npm package
* Pre-trained object detection for irregular panel layouts
Total vendor size: ~25MB (was 13MB, added 12.5MB)
These UMD/global builds ensure browser compatibility without requiring
ES module imports, which would cause bare specifier errors in browsers.
All libraries are loaded dynamically via script injection when panel
detection is first used, minimizing initial load time.
Add pre-built panel detection libraries to vendor directory.
These are copied from node_modules during the build process and
included with the application for panel detection functionality.
Included libraries:
- vendor/opencv/opencv.js - OpenCV.js for image processing
- vendor/tfjs/tf.min.js - TensorFlow.js for ML inference
- vendor/coco-ssd/coco-ssd.min.js - COCO-SSD model for object detection
These files enable the panel mode feature in the reader.
Previously, zip.js and fflate were built from the main Foliate repo.
And PDF.js files were copied manually. Now they all build here.
Unfortunately, two CSS files still need to be copied manually.
The fixed-layout renderer now accepts an object for the return value of
`load()` (on the `book.sections` items). If it's an object, the `src`
is the URL of the section, and `onZoom`, if present, will be called
when the viewport is zoomed. With this you can scale the page yourself
rather than relying on the renderer's own scaling with CSS transform.
Also upgraded to PDF.js 4.6.82. And now internal links are broken...
Don't know how to fix that yet.