@elaraai/e3-ui-components

中文文档
1.0.107发布于 2026/11/13AGPL-3.0-or-laterTypeScriptESM + CJS构建来源已验证近 30 天下载 3486

反应 e3 API 的查询钩和预览组件

中文使用文档
文档目录20 节
  1. 特征
  2. 安装
  3. 钩子
  4. 快速启动
  5. 查询覆盖
  6. 投票
  7. 恢复失败的读取
  8. 正在外部渲染用户界面 UITaskPreview
  9. 构成部分
  10. 任务审查
  11. 数据集审查
  12. 输入审查
  13. 虚拟化LogViewer
  14. 状态说明
  15. 发展
  16. Claude 代码插件
  17. 许可证
  18. 生态系统
  19. 链接
  20. 关于埃拉拉

E3 UI 组件

反应 e3 API 的查询钩和预览组件

License Node Version

E3 UI 组件 为所有人提供反应查询钩 e3- api- 客户端 函数和用于任务、输入和日志的可再使用的预览组件.

特征

  • 重复查询钩 - 说吧 useQuery 财务报告和审定财务报表 useMutation 所有 e3 API 客户端功能的包装器
  • 任务预览 - 查看任务执行产出和日志的组件
  • 输入预览 - 查看数据集输入值的组件
  • 虚拟日志查看器 - 有搜索和自动滚动的表演日志显示
  • 类型安全 - 完整类型脚本支持,并有适当的返回类型推论

安装

npm install @elaraai/e3-ui-components @elaraai/e3-api-client @tanstack/react-query

钩子

为每个e3 API 域提供了反应查询钩:

域名钩子
还原useRepoList, (中文(简体) ), useRepoStatus, (中文(简体) ), useRepoGc, (中文(简体) ), useRepoGcStart, (中文(简体) ), useRepoGcStatus, (中文(简体) ), useRepoCreate, (中文(简体) ), useRepoRemove
软件包usePackageList, (中文(简体) ), usePackageGet, (中文(简体) ), usePackageImport, (中文(简体) ), usePackageExport, (中文(简体) ), usePackageRemove
工作空间useWorkspaceList, (中文(简体) ), useWorkspaceCreate, (中文(简体) ), useWorkspaceCopy, (中文(简体) ), useWorkspaceGet, (中文(简体) ), useWorkspaceStatus, (中文(简体) ), useWorkspaceRemove, (中文(简体) ), useWorkspaceDeploy, (中文(简体) ), useWorkspaceExport
数据集useDatasetList, (中文(简体) ), useDatasetListAt, (中文(简体) ), useDatasetListRecursive, (中文(简体) ), useDatasetGet, (中文(简体) ), useDatasetSet
任务useTaskList, (中文(简体) ), useTaskGet, (中文(简体) ), useTaskExecutionList
处决useDataflowExecute, (中文(简体) ), useDataflowStart, (中文(简体) ), useDataflowGraph, (中文(简体) ), useDataflowExecution, (中文(简体) ), useDataflowCancel, (中文(简体) ), useTaskLogs

快速启动

import { useWorkspaceList, useTaskList } from '@elaraai/e3-ui-components';

function WorkspaceView({ apiUrl, repo }: { apiUrl: string; repo: string }) {
    const { data: workspaces, isLoading } = useWorkspaceList(apiUrl, repo);

    if (isLoading) return <div>Loading...</div>;

    return (
        <ul>
            {workspaces?.map(ws => <li key={ws.name}>{ws.name}</li>)}
        </ul>
    );
}

查询覆盖

所有查询钩子接受可选 QueryOverrides 用于控制查询行为的参数 :

const { data } = useTaskList(apiUrl, repo, workspace, requestOptions, {
    refetchInterval: 5000,
    staleTime: 10000,
    enabled: isReady,
});

投票

屏幕左侧打开时, 服务器的成本尽可能小 :

  • 民意测验会尝试一个请求. useWorkspaceStatus, (中文(简体) ), useDataflowExecution, (中文(简体) ), useTaskLogs, (中文(简体) ), useDatasetStatus 和数据集 缓存状态民意调查用e3 -api -客户端发送请求 pollRequestOptions,所以一个短暂的失败 留给下一次民意调查 而不是互相重复三次.
  • 数据集缓存有条件地询问 . <ReactiveDatasetProvider>是因为 缓存民调 工作空间状况 pollIntervalMs 1 000 ms),同时什么 它显示变化,后退到 pollBackoffMs (5000ms) 曾经什么都没有 有;每个民意测验都发出最后的答案 ETag 背数( r)workspaceStatusSince, (中文(简体) ), 而一个仍然持有这种状态的服务器却什么也没有回答. 每半个 一分钟它问满, 所以一个跑者死了 显示为 stale 获取失败, 新建手表或刷新, 所以没有有条件的答案 会离开,因为它是保持。 虽然 页面被隐藏——其标签在背景中——它没有进行民意测验和民意测验 当页面再次显示时,每个工作空间一次。 A 类 UITaskPreview 缩短间隔 pollInterval 和背靠边 pollBackoff。 。 。 .
  • 数据集的状况每30秒调查一次 (单位:千美元)DATASET_STATUS_POLL_MS: useDatasetStatus是因为 pollInterval预览 pollInterval (单位:千美元)DatasetPreview, (中文(简体) ), InputPreview和 statusPollInterval (单位:千美元)TaskPreview, (中文(简体) ), DataTaskPreview· ; UITaskPreview是因为 outputPollInterval)缩短.
  • 任务日志在生长时被调查: 当它改变时, 退到5秒 而不退 任务完成后每半分钟 执行已终止, 并读取日志, 对于任务的另一个执行, 这又开始了投票 记录了剩下的景色——另一条溪流, 另一项任务——保留在读到的地方,因此可以追溯到 从那里开始读. TaskPreview是因为 logPollInterval 财务报告和审定财务报表 logPollBackoff 设置间隔.
  • 任务的细节读取一次. useTaskDetails 财务报告和审定财务报表 useTaskGet 份额 一个查询密钥, 所以预览和打开它的主机读取任务 一次;一个持有细节的宿主把它们交给 TaskPreview是因为 details,预览则不提出请求.

恢复失败的读取

在无人触摸的屏幕上看到的景色,如"亭"等,没有人可以重新装入. useQueryRecovery 在视图中再次尝试失败的查询 安装,作为 UITaskPreview 已经 它等待一个随机点在 后半段从1s到30s(recoveryDelay,并显示 每一次尝试中最近的失败, 不再装入 .

import { StatusDisplay, useQueryRecovery, useTaskGet } from '@elaraai/e3-ui-components';

const details = useTaskGet(apiUrl, repo, workspace, task);
const failure = useQueryRecovery(details); // null once it reads
if (failure !== null) return <StatusDisplay variant="error" title="Error" message={failure.message} />;

正在外部渲染用户界面 UITaskPreview

使 UI 功能随平台解码的主机 UITaskPreview 列表。 每一个都是用名字出口的: 东-ui-组件自己的, Decision.bind其数(DecisionBindPlatform),并绑定了UI的范围 显出. 预装清单 paths 与 usePreloadReactiveDatasets 在UI第一次阅读之前.

import { decodeBeast2For } from '@elaraai/east';
import { UIComponentType } from '@elaraai/east-ui';
import {
    StateImpl, SliceImpl, SliceApplyImpl, OverlayImpl, ClipboardImpl, DownloadImpl, ShareImpl,
} from '@elaraai/east-ui-components';
import { RecordSliceImpl } from '@elaraai/east-ui-components/platform';
import {
    DecisionBindPlatform, createScopedBindPlatform, createScopedPagedPlatform,
    createScopedFuncPlatform, createScopedRecordPlatform,
} from '@elaraai/e3-ui-components';

const platforms = [
    ...StateImpl, ...SliceImpl, ...RecordSliceImpl, ...SliceApplyImpl, ...OverlayImpl,
    ...ClipboardImpl, ...DownloadImpl, ...ShareImpl, ...DecisionBindPlatform,
    ...createScopedBindPlatform(manifest),
    ...createScopedPagedPlatform(manifest.pages),
    ...createScopedFuncPlatform(manifest.functions),
    ...createScopedRecordPlatform(manifest.records),
];
const ui = decodeBeast2For(UIComponentType, { platform: platforms })(bytes);

构成部分

任务审查

按任务预览任务: a ui() 任务使其UI; 数据任务显示其 输出(Output)及其日志(Logs)在一个带下,持有Out/Logs开关. 产出之上是它的密钥搜索、大小和下载,之上是它的树 折叠全部并展开全部; 在日志之上, 其 stdout/ stderr 标签, 搜索 复制副本.

import { TaskPreview } from '@elaraai/e3-ui-components';

<TaskPreview apiUrl={url} repo="default" workspace={ws} task={taskName} />
Prop含义
apiUrl, (中文(简体) ), repo, (中文(简体) ), workspace, (中文(简体) ), task所需经费 ——要预览的任务
requestOptions标志,和 fetch 每一次请求都会通过
bare没有任务名标题, a ui() 任务输出边缘到边缘——用于站台
toolbarfalse 在数据任务预览中任何地方都不要画出波段——没有开关,没有在输出或它的树上划出波段,没有在日志上划出波段,这样可以将视图边缘填充到边缘;主机绘制控件. 默认 true
view, (中文(简体) ), onViewChange一个数据任务标签, 'output' 或者说 'logs'控件
search, (中文(简体) ), onSearchChange输出的密钥搜索, 控制: 给定 search 查找并滚动到( a)'' ),而预览没有绘制自己的搜索框;否则 onSearchChange 听到预览的自有框
logStream, (中文(简体) ), onLogStreamChange木头的溪流, 'stdout' 或者说 'stderr'控件
logSearch, (中文(简体) ), onLogSearchChange日志的搜索, 控制: 给定 logSearch 标出其火柴,无论如何,并滚动到第一个('' ),日志没有绘制自己的搜索框、计数或切入;否则 onLogSearchChange 听到日志的自有框
onLogMatchesChange告诉 { current, count } ——日志的匹配显示,从0开始,以及有多少数据——无论何时改变
controls处理主机自己的按钮 usePreviewControls()
details任务的细节, 当主机持有时: 预览从主机而不是服务器读取
statusPollInterval产出的状态被调查的频率,以毫秒计。 默认 30 000
logPollInterval, (中文(简体) ), logPollBackoff数据任务日志在变化时的民意调查频率是多少,最长时间的则无所作为,以毫秒计。 默认 1000和 5000

其框架控制在标题中的宿主 自己画出并隐藏 乐队:

import {
    TaskPreview, downloadDataset, formatSize, usePreviewControls, useDatasetStatus, useTaskDetails, type LogMatches,
} from '@elaraai/e3-ui-components';

const [view, setView] = useState<'output' | 'logs'>('output');
const [search, setSearch] = useState('');
const [stream, setStream] = useState<'stdout' | 'stderr'>('stdout');
const [logSearch, setLogSearch] = useState('');
const [matches, setMatches] = useState<LogMatches>({ current: 0, count: 0 });
const controls = usePreviewControls();
const details = useTaskDetails(url, 'default', ws, taskName);
const output = details.data?.output.path.map((step) => step.value).join('.') ?? null;
const status = useDatasetStatus(url, 'default', ws, output);

// In the header, at the header's size: the tab; on Output, the search, the size,
// Download, and Collapse all and Expand all; on Logs, the stream, the search,
// `${matches.current + 1}/${matches.count}`, the chevrons and Copy.
// In the body:
<TaskPreview apiUrl={url} repo="default" workspace={ws} task={taskName} bare
    toolbar={false} view={view} onViewChange={setView} search={search}
    logStream={stream} onLogStreamChange={setStream} logSearch={logSearch}
    onLogMatchesChange={setMatches} controls={controls} />
// Download: downloadDataset(url, 'default', ws, output); the size: formatSize(status.data.sizeBytes)
// Collapse all: controls.collapseAll(); Expand all: controls.expandAll()
// The chevrons: controls.previousMatch(), controls.nextMatch(); Copy: controls.copyLog()

search 被读取为预览自己的搜索框读取其文本 : 前缀,一个结构键的主要字段(press, 2页:1 from..to 范围,或 全键在 .east 语法.

usePreviewControls() 使手柄. collapseAll() 财务报告和审定财务报表 expandAll() 动作 在输出的树上; nextMatch() 财务报告和审定财务报表 previousMatch() 步骤通过 log 匹配,从最后一轮到第一回合和后一轮;以及 copyLog() 复制显示的日志, 解析 true 一旦它在剪贴板上 false 当剪贴板拒绝时。 每个人在未显示其观点时都无所作为—— 输出选项卡没有日志,一个值太大而无法显示的值没有树。 A 类 手柄一次服务一个预览,没有查询,所以外面有一个信头 <E3Provider> 可以做到这一点.

数据集审查

显示一个数据集的值: 树, 当它很小时内置, 一个页面 用于只读的集合,以及用于显示太大值的下载. editable 写入可变输入的编辑回放. toolbar, (中文(简体) ), search, (中文(简体) ), onSearchChange 财务报告和审定财务报表 controls 为: TaskPreview光是价值就够了.

import { DatasetPreview } from '@elaraai/e3-ui-components';

<DatasetPreview apiUrl={url} repo="default" workspace={ws} path="inputs.threshold" editable />

输入审查

在命名输入的带下显示输入值,可编辑.

import { InputPreview } from '@elaraai/e3-ui-components';

<InputPreview apiUrl={url} repo="default" workspace={ws} path=".inputs.threshold" />

bare 不绘制带命名输入, 对于一个主机的框名 toolbar, (中文(简体) ), search, (中文(简体) ), onSearchChange, (中文(简体) ), controls 财务报告和审定财务报表 pollInterval 到达 数值 DatasetPreview。 。 。 .

虚拟化LogViewer

一个日志,它的行已虚拟化,在一个带下, 持有 stdout/stderr 标签, a 搜索标记它的匹配和步骤 通过它们,复制。 它跟随 日志在它存在时结束,并说当新行到达时它不在.

import { useTabs } from '@chakra-ui/react';
import { VirtualizedLogViewer } from '@elaraai/e3-ui-components';

const tabs = useTabs({ defaultValue: 'stdout' });

<VirtualizedLogViewer content={tabs.value === 'stderr' ? stderr : stdout} tabs={tabs} />
Prop含义
content, (中文(简体) ), tabs所需经费 ——日志文本和标签 useTabs 制造
toolbarfalse 画出无带,而日志将取景边缘填充到边缘,没有内设,角或边框. 默认 true
search, (中文(简体) ), onSearchChange搜索,控制,作为 TaskPreview是因为 logSearch
onMatchesChange告诉 { current, count } 任何改变
controlsRef给定 LogViewerControls —— 说 nextMatch(), (中文(简体) ), previousMatch() 财务报告和审定财务报表 copy() - 当视图挂起时

状态说明

状态反馈组件有出错,警告,信息和加载变体.

import { StatusDisplay } from '@elaraai/e3-ui-components';

<StatusDisplay variant="error" title="Failed" message={error.message} />

发展

npm run build     # Build library
npm run lint      # Check code quality

Claude 代码插件

东方生态系统也运载a 克劳德代码 插件 — East 语言技能, 实例搜索, 以及 East 代码的先发制人诊断 elaraai 市场:

# Inside Claude Code
/plugin marketplace add elaraai/east-workspace
/plugin install east@elaraai
# From a terminal
claude plugin marketplace add elaraai/east-workspace
claude plugin install east@elaraai

许可证

双重许可证:

生态系统

  • 东: statical地打出,以表达为主的语言有可序列的IR. 运行跨 TypeScript, Python, C 等运行时间的可移植逻辑.

    • @elaraai/东边: 有类型系统、表达式和参考JS编译器的核心语言SDK
  • 东节点: Node.js 平台用于I/O,数据库和系统操作的功能.

  • 东 C: C11本土运行时间用于执行东IR. 被压死 linux-x64 财务报告和审定财务报表 linux-arm64,附于每个 GitHub 发布.

    • east-c: Core 运行时间 — 类型系统, IR 解释器, 200+内置, 序列化( Beast2, JSON, CSV, East text)
    • east-c-std: 控制台、 文件系统、 获取、 加密、 时间、 路径、 随机
    • east-c-cli: 用于在本地运行 East IR 程序的 CLI
  • 东 Py: Python 运行时间,标准平台,I/O,以及数据科学平台功能. 发布至PyPI.

    • 东平: Core Python 运行时间——类型系统,IR编译器,212+内建,Cython加速热路
    • 东平-上: 控制台、 文件系统、 获取、 加密、 时间、 路径、 随机
    • 东比欧: SQLite, PostgreSQL, MySQL, MongoDB, Redis, S3, FTP, SFTP, XLSX, XML, 压缩
    • 东-平-克利: 用于在 Python 运行 East IR 程序的 CLI
    • 东平数据科学 (平价)+ @elaraai/东平数据科学 (npm):优化(MADS, Optuna, ALNS, GoogleOR),ML(XGBoost, LightGBM, NGBoost, PyTorch, Lightning, GP), 贝叶斯推论(PyMC),可解释性(SHAP),相通性预测(MAPIE)
  • 东方大学:已打入UI组件定义和React渲染器,外加VS代码预览.

  • e3——东行发动机: 大规模运行东方管线的持久执行引擎。 类似Git的内容可处理存储,自动记忆,反应数据流,实时监测.

关于埃拉拉

东方由 Elara AI Pty有限公司一个由AI驱动的平台 创造经济数字双胞胎 企业优化业绩。 Elara将业务目标、决定和数据结合起来,以帮助各组织在业务、采购、销售和客户参与以及项目和投资规划方面作出由数据驱动的决定。 东能给以埃拉拉解决方案的计算层,使得复杂的商业逻辑和数据能够以简单,类型安全和可移植的语言来表达.


开发者 Elara AI Pty有限公司。 。 。 .


开发者 Elara AI Pty有限公司 - 为AI驱动的商业优化的计算层提供动力.

版本与发布记录

@elaraai/e3-ui-components 共发布 125 个版本,首次发布于 2026/02/15;过去 12 个月发布了 125 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
1.0.107latest2026/11/13今天
1.0.1062026/11/094 天前
1.0.1052026/11/085 天前
1.0.1042026/11/067 天前
1.0.1032026/11/049 天前
1.0.1022026/11/0310 天前

其他发布通道:beta → 0.0.1-beta.18。

关于 @elaraai/e3-ui-components 的常见问题

@elaraai/e3-ui-components 是什么?

反应 e3 API 的查询钩和预览组件

如何安装 @elaraai/e3-ui-components?

在项目目录运行 npm install @elaraai/e3-ui-components,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:react(^19.0.0)、react-dom(^19.0.0)、@elaraai/east(1.0.107)、@elaraai/e3-ui(1.0.107)、@chakra-ui/react(^3.0.0)、@elaraai/east-ui(1.0.107)、@elaraai/e3-types(1.0.107)、@tanstack/react-query(^5.62.0)、@elaraai/e3-api-client(1.0.107)、@elaraai/east-ui-components(1.0.107)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@elaraai/e3-ui-components 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@elaraai/e3-ui-components 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@elaraai/e3-ui-components 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=22.0.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@elaraai/e3-ui-components 可以商用吗?

@elaraai/e3-ui-components 使用 AGPL-3.0-or-later 许可。最严格的 Copyleft:除分发外,通过网络向用户提供基于它的服务也需要开源对应源码。闭源 SaaS 使用前务必评估。以上为概括,不构成法律意见,请以许可原文为准。

@elaraai/e3-ui-components 的下载量有多少?

根据 npm 官方下载统计,@elaraai/e3-ui-components 在 2026/10/13 – 2026/11/11 这 30 天内被下载 3,486 次,日均约 116 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@elaraai/e3-ui-components 还在维护吗?

最新版本 1.0.107 发布于 2026/11/13(今天);至今共发布 125 个版本,其中过去 12 个月发布了 125 个;首次发布于 2026/02/15。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。