exlement-react
Version:
React components for Exlement - a revolutionary web development framework that extends React with powerful, AI-ready custom components.
63 lines (56 loc) • 3.71 kB
JavaScript
Object.defineProperty(exports, '__esModule', { value: true });
var React = require('react');
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
var PageTXGenerator = function (_a) {
var _b = _a.model, model = _b === void 0 ? "Xenova/all-MiniLM-L6-v2" : _b, _c = _a.task, task = _c === void 0 ? "feature-extraction" : _c, _d = _a.options, options = _d === void 0 ? {} : _d, onResult = _a.onResult, onError = _a.onError, setProcessFunction = _a.setProcessFunction;
var _e = React.useState(""), status = _e[0], setStatus = _e[1];
var workerRef = React.useRef(null);
React.useEffect(function () {
initializeWorker();
if (setProcessFunction) {
setProcessFunction(process);
}
return function () {
if (workerRef.current) {
workerRef.current.terminate();
}
};
}, [model, task, options, setProcessFunction]);
var initializeWorker = function () {
var workerScript = "\n import { pipeline, env } from 'https://cdn.jsdelivr.net/npm/@xenova/transformers@2.17.2';\n\n env.allowLocalModels = false;\n env.useBrowserCache = true;\n env.remoteModelPath = \"https://huggingface.co/\";\n\n let pipe;\n\n async function initializePipeline(task, model, options) {\n pipe = await pipeline(task, model, options);\n }\n\n self.onmessage = async function(e) {\n if (e.data.type === 'init') {\n self.postMessage({ type: 'status', message: 'Initializing model...' });\n try {\n await initializePipeline(e.data.task, e.data.model, e.data.options);\n self.postMessage({ type: 'status', message: 'Model ready' });\n } catch (error) {\n self.postMessage({ type: 'error', message: error.message });\n }\n } else if (e.data.type === 'process') {\n try {\n const result = await pipe(e.data.input, e.data.options);\n self.postMessage({ type: 'result', data: result });\n } catch (error) {\n self.postMessage({ type: 'error', message: error.message });\n }\n }\n };\n ";
var blob = new Blob([workerScript], { type: "application/javascript" });
workerRef.current = new Worker(URL.createObjectURL(blob), {
type: "module",
});
workerRef.current.onmessage = function (e) {
if (e.data.type === "status") {
setStatus(e.data.message);
}
else if (e.data.type === "result") {
onResult && onResult(e.data.data);
}
else if (e.data.type === "error") {
setStatus("Error: ".concat(e.data.message));
onError && onError(e.data.message);
}
};
workerRef.current.postMessage({ type: "init", model: model, task: task, options: options });
};
var process = function (input, processOptions) {
if (processOptions === void 0) { processOptions = {}; }
if (!workerRef.current) {
throw new Error("Worker not initialized");
}
workerRef.current.postMessage({
type: "process",
input: input,
options: processOptions,
});
};
return (React__default["default"].createElement("div", null,
React__default["default"].createElement("div", { id: "status" }, status)));
};
exports.PageTXGenerator = PageTXGenerator;
//# sourceMappingURL=index.js.map
;