@ eraserlabs/ 解析
导言
@eraserlabs/resolve 将作者的图表文档转换成完全解析的元素数据。 它根据模板库验证标记,应用衍生的道具规范化器,对文本进行消毒,内含图标,并发出分割 { entities, connections } 有效载荷 @eraserlabs/render。没有自己的服务器、文件系统或网络:呼叫者注入图标加载和类似的I/O.
它拥有作者输入语法. 文档是一个对象信封—— 也可以 { elements } 或分割 { entities, connections } 需要两个键。 拒绝一个赤裸的JSON阵列(E_ENVELOPE) 被授权类型脚本形状(AuthoredEntity, (中文(简体) ), AuthoredConnection, (中文(简体) ), DiagramInput从此包中导出; @eraserlabs/protocol 拥有已解决的合同.
所有被写入的维度在解析过程中被四舍五入到最近的整数:每个元素的 x编号 :y编号 :width编号 :height,每个连接方式 points,则 labelPlacement 框中输入。 布局引擎在整数网格上工作,因此分数坐标(从app输出出浮出尘来或被测量出来回行走)是被能动化而不是被携带.
为什么
分辨率必须在节点运行,在CLI运行,在浏览器游乐场运行,结果相同. 将它与铬或一个框架相接会迫使每个消费者接受这种依赖。 失败的图书库或模板检查 createResolver,所以没有解析器存在于引擎尚未证明可以运行的词汇上.
使用量
import { createResolver } from '@eraserlabs/resolve';
import { stockLibrary } from '@eraserlabs/diagram-templates';
import { stockNormalizers } from '@eraserlabs/diagram-templates/normalizers';
const resolver = await createResolver({
library: stockLibrary,
normalizers: stockNormalizers,
});
const result = await resolver.resolve({
entities: [
{ tag: 'Shape', id: 'a', x: 0, y: 0 },
{ tag: 'Shape', id: 'b', x: 200, y: 0 },
],
connections: [{ from: 'a', to: 'b' }],
});
createResolver 编译了一次库. resolve 返回时 { ok, entities, connections, icons, warnings, errors }· ; validate 运行同一管道而不内置图标字节。 供应 iconLoader 以名称获取 SVG; onUnknownIcon 实值 'placeholder' 或者说 'error'。装入的SVG通过一个允许列表 sanitizer,通过浏览器的HTML规则来解析:静态绘图元素和仅本地引用. 任何其它的都拒绝这个图标,它就落在下面 onUnknownIcon,但编辑器元数据除外(Inkscape/Sodipodi, <metadata>,额外命名空间声明),过滤效果,以及许可列表外的样式属性,这些属性被删除.
可移植文件、组件、字体和模拟合同 @eraserlabs/protocol。兼容性再出口保持在 @eraserlabs/resolve/schema。组件作者在 计算机化.md。 。 。 .
子集和同步解析
resolve(input, { partial: true }) 财务报告和审定财务报表 validate(input, { partial: true }) 允许引用省略元素。 Schema出错,重复的ID,包括错误的目标,封存周期仍然是出错. 默认呼叫严格;部分结果不会提供缺失的路由几何.
resolveForLayout(input, options?) 返回与占位符图标同步,而不加载图标或检查其存在。 所有其他解决阶段都是共同的。 它支持在模板给出真实和占位符图标相同界限时在资产加载前进行测量.
主题和内部油漆
过 { theme: 'dark' } 用于任何一种解析方法。 调色板的外观和常态器首先运行,然后每个被宣布的图案颜色会一次被改变,包括巢色和内色. 授权输入保持不变 。 渲染器自动应用由此产生的主题元数据;改变主题需要再次解析原始输入.
常态器计算出光-空涂. 宣布2003年新的内部产出 library.renderProps,比如说. renderProps: { Card: { fillColor: CssColor } }。这些授权模板绑定和规范化后的内容/颜色政策,而无需在撰写计划中出现。 在正常化前,对已提交的内部田地进行警告并剥离。 名称不能与作者字段相重叠; 派生颜色使用 CssColor没有 PaletteColor。规范化器本身具有结构有效性;使声明不适用默认或重复全面计划验证.
自定义 CSS 需要主题意识默认; 股票 CSS 提供 --er-text, (中文(简体) ), --er-surface, (中文(简体) ), --er-line,以及代码/语法符号。 固定颜色的艺术品没有变化. currentColor 保留继承; 使用混凝土颜色来保存锡的转换.
图表标记
块文本支持段落,标题(被封为第三级),平面列表,简单的引文,规则,出击,和有栅栏的代码. 标签使用内线 Markdown. 被嵌入的块,表格,图像,和生的HTML在演示文稿合同之外;生的HTML被逃脱. 这些规则也影响到现有的文件.
Prose新行画出分行符;空白行会分出段落. 保留了附加和后行的空行 。 四相相相入入入入还作是道相. 被标记的手柄有代码的跨度和链接;被栅栏的代码保存了内部的白空间并包裹了长的符号. 可选 highlightCode 返回必须准确复制输入的文本/类运行;失败返回到普通代码.