@ edux- design/ utils
共享 Edux 类组成和 React 儿童助手.
import { cx, filterChildrenByDisplayName, getSlot } from "@edux-design/utils";
cx("p-8 text-sm", condition && "px-24", "text-fg-base");
// p-8 text-sm px-24 text-fg-base
cx("px-24 py-8", "p-16");
// p-16
cx(...inputs) 保留现有的有条件输入合同:字符串,有条件
对象、数字和嵌入的数组; 粗体输入被省略。 然后适用
独立编写 Edux 输入平调器和工具冲突解决器.
也没有 clsx 也没有 tailwind-merge 是一个运行时间或声明的依赖.
平板机对嵌入式阵列使用显式堆放,保存继承
假设对象键,并忽略不支持的原始输入.
Cyclic 阵列是无效的输入并抛出而不是无限循环;
支持在不同的位置重新使用数组.
声明接受未知输入,只保留可读的拖曳和值
现在的正态化忽略了而不是引入一个只类型
限制.
其他出口没有变化:
filterChildrenByDisplayName(children, displayName)选择匹配的直接 反应儿童,包括被命名为还原部件.getSlot(children, slotComponent)返回匹配的直接孩子的内容.
包根需要回放和回放 DOM ^19.1.0 因为它
输出反应儿童助手。 类解析器本身不导入反应或 DOM
API和运行在服务器渲染时没有浏览器环球. 无害环境管理、CJS和自有
严格公开声明在一揽子政策中提供。 深度进口不是
a 支持的API.
冲突语义
在同一修饰和重要范围内,最后的效用将因其
声明组。 短手替换为方向性:稍后 p-16 替换
刚才 px-24 py-8,而稍后时间 px-24 保留垂直部分 p-16。 。 。 .
逻辑边缘和物理边缘在写法与模式差异时保持独立
问题。 宽度/高度,字体大小/颜色,边框宽度/颜色,阴影大小/颜色,
梯度停止,过滤器和口罩有单独的声明组.
普通的伪类在选取地段内通勤. 修道士们,
通配符变体和任意选择子变体保持了相对顺序.
两者 !p-4 财务报告和审定财务报表 p-4! 重要和普通的声明
单独的瞄准镜。 任意值、 输入自定义属性、 任意 CSS
属性、负公用设施和现有的 Edux 语义色彩类
承认。 任意的CSS财产与同一财产相冲突,不
猜想它会超越一个无关的普通用途.
保留未知的应用程序和自定义主题类,包括重复
课程。 例如,自定义 animate-drawer-* 财务报告和审定财务报表 cursor-pagination-* 类
不得推断为推翻标准动画/校准公用事业。 解决者
不装入消费者的 Tailwind 配置或检查浏览器样式表.
引入自定义工具名的消费者保留既定默认
cx 而不是去除投机性冲突.
已设定的颜色和字体家族命名空间被故意打开: a
bg-custom 例如,名称仍然是一种颜色工具。 未知类别保留
不推翻现有的默认名称空间规则.
相容性包括一个历史重要前缀字体/行-高:
!text-lg/8 财务报告和审定财务报表 text-lg/8! 在既定的冲突模式中仍具有独特性.
后缀形式遵循了普通的字体大小/行高分组. 这个可以保留
所接受的先前公共API的产出; 这不是建议
混合重要的语法.
所有权和审定
解析器来自CSS财产关系、Edux要求和 独立的公共黑盒观察. 没有第三方合并执行, 声明或测试代码被读取、复制或翻译。 保留依赖关系 仍然有他们自己的许可条款.
独立接受书涵盖32 757份有条件、遵守和
扩大Tailwind 4 个案例,加上大量/深入的对抗性投入。 它的便携式
存储库和单独记录的可选有效载荷快照是
在验收收据中有所区别。 本地生成的 CSS
定着度比较计算样式、伪元素油漆和测量尺寸
与被接受的公众Utils执行。 见协调员的
docs/original-drag-and-classes/class-acceptance/ 准确候选人的证据
hashes和浏览器覆盖;源诊断不是安装的艺术证据.
拥有的有条件的输入层还设置了边框测试和一个 与普通老消费者的对比:
node packages/utils/test/compare-class-inputs.mjs /absolute/old-utils-consumer
这种比较只履行旧的依赖性的公共职能。 寻常 Utils测试套件不需要安装clsx.
解析器保留了被绑定的 FIFO 缓存:最多500个完整的输入,最多最多 16,384个字符和2,000个分类基号,最多可有1,024个字符. 较大的值在不缓存的情况下解决 。 解析是迭代的, 没有 DOM 订阅、计时器或递归性任意值转录。 基准为: 描述性;极端的一万个案例不是相互作用的暂时性保障.
npm run test --workspace=@edux-design/utils
npm run lint --workspace=@edux-design/utils
npm run check-types --workspace=@edux-design/utils
npm run build --workspace=@edux-design/utils