UNPKG

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
'use strict'; 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