@bible-strong/avatar-core (英语)
框架独立验证、语义回放和渲染器中性 SVG 场景生成 《圣经》 严正的程序造型 软件包没有反应、 DOM、 Motion 或浏览器存储 依赖性.
安装和验证
pnpm add @bible-strong/avatar-core
使用 parseAvatarDefinition 对于不信任的JSON文本。 它执行256KiB/深度限制
在对 v1 方案进行校验前, 检测重复对象密钥。 使用
validateAvatarDefinition 当数值已经实现时.
import { parseAvatarDefinition } from '@bible-strong/avatar-core'
const parsed = parseAvatarDefinition(jsonText)
if (!parsed.ok) {
throw new Error(`${parsed.errors[0].path}: ${parsed.errors[0].message}`)
}
const definition = parsed.value
这两种职能都产生一种不加改变的歧视性结果。 成功的价值观被深深地冻结;
错误包括RFC 6901 JSON指针,代码和消息. 承诺的 JSON Schema 作为导出
@bible-strong/avatar-core/schema。 。 。 .
较早的放行前出口中的定义可能仍然包含
standardAnimationSet: 1; 在兼容性上接受标记,但不添加任何
隐含动画.
语义检索和回放
公用电话只使用语义键. resolveExpression 财务报告和审定财务报表 resolveAnimation 返回已键入错误
用于验证定义中没有的密钥。 每个动画都清晰地出现在
定义,所以JSON仍然是一个假人能够演奏的真理的唯一来源.
import {
advanceAvatarPlayback,
playAvatarAnimation,
renderAvatarFrame,
} from '@bible-strong/avatar-core'
const started = playAvatarAnimation(definition, 'idle', 0)
if (!started.ok) throw new Error(started.error.message)
const state = advanceAvatarPlayback(definition, started.value, 500, {
random: () => 0.5,
})
const scene = renderAvatarFrame(definition, state, 500, {
random: () => 0.5,
reduceMotion: false,
})
advanceAvatarPlayback 由单调时间戳驱动并注入的纯状态过渡
随机源. 每一步的时间是过渡,然后保持. pauseAvatarPlayback 财务报告和审定财务报表
resumeAvatarPlayback 保持确切的进展。 与 reduceMotion: true、过渡和环境
动作跳跃确定到目标,而所配置的闪烁仍然有效.
renderAvatarDefinition 使静态语义表达. renderAvatarFrame 制作一个
动画相框. 两种回路,能见度和已解析的颜色都不创建 DOM 节点.
入境点
@bible-strong/avatar-core:合同,验证,语义目录,回放和场景API.@bible-strong/avatar-core/schema: v1 草案 2020-12 JSON Schema.@bible-strong/avatar-core/geometry, (中文(简体) ),/body, (中文(简体) ),/surfaces, (中文(简体) ),/ambient-motion: 高级纯度 原始的制作者.
应用程序集成保存在单独的包中 : @bible-strong/avatar-react 使用
反应19,同时 @bible-strong/avatar-web 将同一定义直接挂入 DOM。 两者
依赖于此软件包,并使用相同的回放和场景执行.
软件包遵循语义版. 虽然它仍然低于 1.0.0,打破 API 更改
增量小版本并增量补丁版本.