mirror of
https://github.com/john-okeefe/foliate-js.git
synced 2026-10-24 22:59:51 -04:00
chore: vendor ML/CV libraries for panel detection
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.
This commit is contained in:
1 parent
7971ad7996
commit
bd79aae3d5
3 files changed
+3
-584
No files matched your search
Vendored
+3
-33
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* @license
|
||||
* Copyright 2018 Google LLC. All Rights Reserved.
|
||||
* Copyright 2024 Google LLC. All Rights Reserved.
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
@@ -14,35 +14,5 @@
|
||||
* limitations under the License.
|
||||
* =============================================================================
|
||||
*/
|
||||
import '@tensorflow/tfjs-core';
|
||||
// tslint:disable-next-line: no-imports-from-dist
|
||||
import '@tensorflow/tfjs-core/dist/register_all_gradients';
|
||||
// tslint:disable-next-line: no-imports-from-dist
|
||||
import '@tensorflow/tfjs-core/dist/public/chained_ops/register_all_chained_ops';
|
||||
export * from '@tensorflow/tfjs-core';
|
||||
export * from '@tensorflow/tfjs-layers';
|
||||
export * from '@tensorflow/tfjs-converter';
|
||||
// Export data api as tf.data
|
||||
import * as data from '@tensorflow/tfjs-data';
|
||||
export { data };
|
||||
// Import and register backends.
|
||||
export * from '@tensorflow/tfjs-backend-cpu';
|
||||
export * from '@tensorflow/tfjs-backend-webgl';
|
||||
// Import versions of all sub-packages.
|
||||
import { version_core } from '@tensorflow/tfjs-core';
|
||||
import { version_cpu } from '@tensorflow/tfjs-backend-cpu';
|
||||
import { version_webgl } from '@tensorflow/tfjs-backend-webgl';
|
||||
import { version_data } from '@tensorflow/tfjs-data';
|
||||
import { version_layers } from '@tensorflow/tfjs-layers';
|
||||
import { version_converter } from '@tensorflow/tfjs-converter';
|
||||
import { version as version_union } from './version';
|
||||
export const version = {
|
||||
'tfjs-core': version_core,
|
||||
'tfjs-backend-cpu': version_cpu,
|
||||
'tfjs-backend-webgl': version_webgl,
|
||||
'tfjs-data': version_data,
|
||||
'tfjs-layers': version_layers,
|
||||
'tfjs-converter': version_converter,
|
||||
'tfjs': version_union
|
||||
};
|
||||
//# sourceMappingURL=index.js.map
|
||||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).tf=e.tf||{})}(this,(function(e){"use strict";function t(e,t){return t.forEach((function(t){t&&"string"!=typeof t&&!Array.isArray(t)&&Object.keys(t).forEach((function(n){if("default"!==n&&!(n in e)){var r=Object.getOwnPropertyDescriptor(t,n);Object.defineProperty(e,n,r.get?r:{enumerable:!0,get:function(){return t[n]}})}}))})),e}var n="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function r(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function a(e){var t,n;function r(t,n){try{var o=e[t](n),s=o.value,u=s instanceof i;Promise.resolve(u?s.v:s).then((function(n){if(u){var i="return"===t?"return":"next";if(!s.k||n.done)return r(i,n);n=e[i](n).value}a(o.done?"return":"normal",n)}),(function(e){r("throw",e)}))}catch(e){a("throw",e)}}function a(e,a){switch(e){case"return":t.resolve({value:a,done:!0});break;case"throw":t.reject(a);break;default:t.resolve({value:a,done:!1})}(t=t.next)?r(t.key,t.arg):n=null}this._invoke=function(e,a){return new Promise((function(i,o){var s={key:e,arg:a,resolve:i,reject:o,next:null};n?n=n.next=s:(t=n=s,r(e,a))}))},"function"!=typeof e.return&&(this.return=void 0)}function i(e,t){this.v=e,this.k=t}function o(){o=function(){return e};var e={},t=Object.prototype,n=t.hasOwnProperty,r=Object.defineProperty||function(e,t,n){e[t]=n.value},a="function"==typeof Symbol?Symbol:{},i=a.iterator||"@@iterator",s=a.asyncIterator||"@@asyncIterator",u=a.toStringTag||"@@toStringTag";function c(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{c({},"")}catch(e){c=function(e,t,n){return e[t]=n}}function l(e,t,n,a){var i=t&&t.prototype instanceof f?t:f,o=Object.create(i.prototype),s=new T(a||[]);return r(o,"_invoke",{value:w(e,n,s)}),o}function h(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}e.wrap=l;var p={};function f(){}function d(){}function v(){}var m={};c(m,i,(function(){return this}));var g=Object.getPrototypeOf,y=g&&g(g(E([])));y&&y!==t&&n.call(y,i)&&(m=y);var b=v.prototype=f.prototype=Object.create(m);function x(e){["next","throw","return"].forEach((function(t){c(e,t,(function(e){return this._invoke(t,e)}))}))}function k(e,t){function a(r,i,o,s){var u=h(e[r],e,i);if("throw"!==u.type){var c=u.arg,l=c.value;return l&&"object"==typeof l&&n.call(l,"__await")?t.resolve(l.__await).then((function(e){a("next",e,o,s)}),(function(e){a("throw",e,o,s)})):t.resolve(l).then((function(e){c.value=e,o(c)}),(function(e){return a("throw",e,o,s)}))}s(u.arg)}var i;r(this,"_invoke",{value:function(e,n){function r(){return new t((function(t,r){a(e,n,t,r)}))}return i=i?i.then(r,r):r()}})}function w(e,t,n){var r="suspendedStart";return function(a,i){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===a)throw i;return C()}for(n.method=a,n.arg=i;;){var o=n.delegate;if(o){var s=I(o,n);if(s){if(s===p)continue;return s}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var u=h(e,t,n);if("normal"===u.type){if(r=n.done?"completed":"suspendedYield",u.arg===p)continue;return{value:u.arg,done:n.done}}"throw"===u.type&&(r="completed",n.method="throw",n.arg=u.arg)}}}function I(e,t){var n=t.method,r=e.iterator[n];if(void 0===r)return t.delegate=null,"throw"===n&&e.iterator.return&&(t.method="return",t.arg=void 0,I(e,t),"throw"===t.method)||"return"!==n&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+n+"' method")),p;var a=h(r,e.iterator,t.arg);if("throw"===a.type)return t.method="throw",t.arg=a.arg,t.delegate=null,p;var i=a.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,p):i:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,p)}function N(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function S(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function T(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(N,this),this.reset(!0)}function E(e){if(e){var t=e[i];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,a=function t(){for(;++r<e.length;)if(n.call(e,r))return t.value=e[r],t.done=!1,t;return t.value=void 0,t.done=!0,t};return a.next=a}}return{next:C}}function C(){return{value:void 0,done:!0}}return d.prototype=v,r(b,"constructor",{value:v,configurable:!0}),r(v,"constructor",{value:d,configurable:!0}),d.displayName=c(v,u,"GeneratorFunction")Line truncated
|
||||
//# sourceMappingURL=tf.min.js.map
|
||||
Reference in new issue
Block a user