Skip to content

Commit

Permalink
Don't bundle the FakeMLManager class in regular builds
Browse files Browse the repository at this point in the history
Given that this functionality is only used in the development viewer and in TESTING builds, there's no reason to include this in the regular builds.
  • Loading branch information
Snuffleupagus committed Feb 27, 2025
1 parent 50c573d commit b5ac96d
Showing 1 changed file with 80 additions and 75 deletions.
155 changes: 80 additions & 75 deletions web/genericcom.js
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,12 @@ class ExternalServices extends BaseExternalServices {
}

class MLManager {
static {
if (typeof PDFJSDev === "undefined" || PDFJSDev.test("TESTING")) {
this.getFakeMLManager = options => new FakeMLManager(options);
}
}

async isEnabledFor(_name) {
return false;
}
Expand All @@ -68,83 +74,82 @@ class MLManager {
guess(_data) {}

toggleService(_name, _enabled) {}

static getFakeMLManager(options) {
return new FakeMLManager(options);
}
}

class FakeMLManager {
eventBus = null;

hasProgress = false;

constructor({ enableGuessAltText, enableAltTextModelDownload }) {
this.enableGuessAltText = enableGuessAltText;
this.enableAltTextModelDownload = enableAltTextModelDownload;
}

setEventBus(eventBus, abortSignal) {
this.eventBus = eventBus;
}

async isEnabledFor(_name) {
return this.enableGuessAltText;
}

async deleteModel(_name) {
this.enableAltTextModelDownload = false;
return null;
}

async loadModel(_name) {}

async downloadModel(_name) {
// Simulate downloading the model but with progress.
// The progress can be seen in the new alt-text dialog.
this.hasProgress = true;

const { promise, resolve } = Promise.withResolvers();
const total = 1e8;
const end = 1.5 * total;
const increment = 5e6;
let loaded = 0;
const id = setInterval(() => {
loaded += increment;
if (loaded <= end) {
this.eventBus.dispatch("loadaiengineprogress", {
source: this,
detail: {
total,
totalLoaded: loaded,
finished: loaded + increment >= end,
},
});
return;
}
clearInterval(id);
this.hasProgress = false;
this.enableAltTextModelDownload = true;
resolve(true);
}, 900);
return promise;
}

isReady(_name) {
return this.enableAltTextModelDownload;
}

guess({ request: { data } }) {
return new Promise(resolve => {
setTimeout(() => {
resolve(data ? { output: "Fake alt text." } : { error: true });
}, 3000);
});
}

toggleService(_name, enabled) {
this.enableGuessAltText = enabled;
}
if (typeof PDFJSDev === "undefined" || PDFJSDev.test("TESTING")) {
// eslint-disable-next-line no-var
var FakeMLManager = class {
eventBus = null;

hasProgress = false;

constructor({ enableGuessAltText, enableAltTextModelDownload }) {
this.enableGuessAltText = enableGuessAltText;
this.enableAltTextModelDownload = enableAltTextModelDownload;
}

setEventBus(eventBus, abortSignal) {
this.eventBus = eventBus;
}

async isEnabledFor(_name) {
return this.enableGuessAltText;
}

async deleteModel(_name) {
this.enableAltTextModelDownload = false;
return null;
}

async loadModel(_name) {}

async downloadModel(_name) {
// Simulate downloading the model but with progress.
// The progress can be seen in the new alt-text dialog.
this.hasProgress = true;

const { promise, resolve } = Promise.withResolvers();
const total = 1e8;
const end = 1.5 * total;
const increment = 5e6;
let loaded = 0;
const id = setInterval(() => {
loaded += increment;
if (loaded <= end) {
this.eventBus.dispatch("loadaiengineprogress", {
source: this,
detail: {
total,
totalLoaded: loaded,
finished: loaded + increment >= end,
},
});
return;
}
clearInterval(id);
this.hasProgress = false;
this.enableAltTextModelDownload = true;
resolve(true);
}, 900);
return promise;
}

isReady(_name) {
return this.enableAltTextModelDownload;
}

guess({ request: { data } }) {
return new Promise(resolve => {
setTimeout(() => {
resolve(data ? { output: "Fake alt text." } : { error: true });
}, 3000);
});
}

toggleService(_name, enabled) {
this.enableGuessAltText = enabled;
}
};
}

export { ExternalServices, initCom, MLManager, Preferences };

0 comments on commit b5ac96d

Please sign in to comment.