@mteditor/renderer-mini 0.0.0-stage → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +150 -2
- package/components/README.md +92 -0
- package/components/mt-node/index.js +123 -0
- package/components/mt-node/index.json +6 -0
- package/components/mt-node/index.wxml +95 -0
- package/components/mt-node/index.wxss +163 -0
- package/components/mt-renderer/index.js +51 -0
- package/components/mt-renderer/index.json +6 -0
- package/components/mt-renderer/index.wxml +24 -0
- package/components/mt-renderer/index.wxss +14 -0
- package/components/mt-theme.wxss +82 -0
- package/dist/alipay/index.cjs +4 -0
- package/dist/alipay/index.cjs.map +1 -0
- package/dist/alipay/index.d.cts +2 -0
- package/dist/alipay/index.d.ts +2 -0
- package/dist/alipay/index.js +3 -0
- package/dist/alipay/index.js.map +1 -0
- package/dist/arkts/index.cjs +4 -0
- package/dist/arkts/index.cjs.map +1 -0
- package/dist/arkts/index.d.cts +2 -0
- package/dist/arkts/index.d.ts +2 -0
- package/dist/arkts/index.js +3 -0
- package/dist/arkts/index.js.map +1 -0
- package/dist/bytedance/index.cjs +4 -0
- package/dist/bytedance/index.cjs.map +1 -0
- package/dist/bytedance/index.d.cts +2 -0
- package/dist/bytedance/index.d.ts +2 -0
- package/dist/bytedance/index.js +3 -0
- package/dist/bytedance/index.js.map +1 -0
- package/dist/index.cjs +259 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +101 -0
- package/dist/index.d.ts +101 -0
- package/dist/index.js +247 -0
- package/dist/index.js.map +1 -0
- package/dist/taro/index.cjs +4 -0
- package/dist/taro/index.cjs.map +1 -0
- package/dist/taro/index.d.cts +2 -0
- package/dist/taro/index.d.ts +2 -0
- package/dist/taro/index.js +3 -0
- package/dist/taro/index.js.map +1 -0
- package/dist/theme-CXitJYrs.d.cts +214 -0
- package/dist/theme-CXitJYrs.d.ts +214 -0
- package/dist/uni-app/index.cjs +4 -0
- package/dist/uni-app/index.cjs.map +1 -0
- package/dist/uni-app/index.d.cts +2 -0
- package/dist/uni-app/index.d.ts +2 -0
- package/dist/uni-app/index.js +3 -0
- package/dist/uni-app/index.js.map +1 -0
- package/dist/wechat/index.cjs +259 -0
- package/dist/wechat/index.cjs.map +1 -0
- package/dist/wechat/index.d.cts +61 -0
- package/dist/wechat/index.d.ts +61 -0
- package/dist/wechat/index.js +250 -0
- package/dist/wechat/index.js.map +1 -0
- package/package.json +142 -3
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
import { MtMiniPlatform, MtMiniMode, MtPreRenderedIndex, MtMiniNode, MtDegradationEntry, MtSerializeStats } from '@mteditor/document';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* `@mteditor/renderer-mini` 的公开契约。
|
|
5
|
+
*
|
|
6
|
+
* 本包**不自己序列化 nodes**,只做三件事:
|
|
7
|
+
* 通道解析、主题字面量注入、平台能力表。`nodes` 一律来自
|
|
8
|
+
* `@mteditor/document` 的 `serializeDocumentToMini`。
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* 通道选择。
|
|
13
|
+
*
|
|
14
|
+
* `'auto'` 表示交由渲染器按 `maxNodes` 判定——
|
|
15
|
+
* 宿主不知道该选哪个通道正是它存在的理由。
|
|
16
|
+
*/
|
|
17
|
+
type MtMiniChannelOption = 'auto' | MtMiniMode;
|
|
18
|
+
/**
|
|
19
|
+
* 主题。
|
|
20
|
+
*
|
|
21
|
+
* 字符串为内置主题名,对象为自定义字面量表(键含 `--` 前缀,
|
|
22
|
+
* 与 `@mteditor/document` 的 `themeTokens` 同形)。
|
|
23
|
+
*/
|
|
24
|
+
type MtMiniTheme = 'light' | 'dark' | Record<string, string>;
|
|
25
|
+
/**
|
|
26
|
+
* 平台能力描述。
|
|
27
|
+
*
|
|
28
|
+
* **`verified` 是这张表的准入条件**:明令禁止「凭猜测共用一份映射表」
|
|
29
|
+
* 未实测的平台不得以「看起来能跑」的形态进入渲染路径。
|
|
30
|
+
*/
|
|
31
|
+
interface MtMiniCapabilities {
|
|
32
|
+
/** 平台标识 */
|
|
33
|
+
platform: MtMiniPlatform;
|
|
34
|
+
/** 白名单是否**经过实测核实**;未核实者不得被渲染路径使用 */
|
|
35
|
+
verified: boolean;
|
|
36
|
+
/** `rich-text` 受信任标签白名单 */
|
|
37
|
+
tags: readonly string[];
|
|
38
|
+
/** 全局支持的属性名(微信仅 `class` 与 `style`) */
|
|
39
|
+
globalAttrs: readonly string[];
|
|
40
|
+
/** 是否支持 `id` 属性(微信不支持) */
|
|
41
|
+
supportsId: boolean;
|
|
42
|
+
/** 逐标签的属性白名单 */
|
|
43
|
+
tagAttrs: Readonly<Record<string, readonly string[]>>;
|
|
44
|
+
/** `rich-text` 下不可表达、必须拆到 `rich-text` 之外的原生组件名 */
|
|
45
|
+
nativeComponents: readonly string[];
|
|
46
|
+
}
|
|
47
|
+
/** 渲染选项 */
|
|
48
|
+
interface MtMiniRenderOptions {
|
|
49
|
+
/** 目标平台,缺省 `'wechat'`。未实测核实的平台会被 `resolveCapabilities` 拒绝 */
|
|
50
|
+
platform?: MtMiniPlatform;
|
|
51
|
+
/** 渲染通道,缺省 `'auto'` */
|
|
52
|
+
mode?: MtMiniChannelOption;
|
|
53
|
+
/**
|
|
54
|
+
* `mode: 'auto'` 的降级阈值,单位是**文档节点数**,缺省 `3000`。
|
|
55
|
+
* 判定发生在序列化**之前**。
|
|
56
|
+
*/
|
|
57
|
+
maxNodes?: number;
|
|
58
|
+
/** 内置主题名或自定义字面量表,缺省 `'light'` */
|
|
59
|
+
theme?: MtMiniTheme;
|
|
60
|
+
/**
|
|
61
|
+
* 主题字面量补充/覆盖,与 `theme` 合并后**后者优先**。
|
|
62
|
+
* 用途:宿主已有一套后台下发的品牌色,只覆盖少数几个键。
|
|
63
|
+
*/
|
|
64
|
+
themeTokens?: Record<string, string>;
|
|
65
|
+
/** 预渲染产物索引(公式 SVG / 代码高亮) */
|
|
66
|
+
preRendered?: MtPreRenderedIndex;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* 自动通道切换的记录。
|
|
70
|
+
*
|
|
71
|
+
* 要求自动降级「发出 warn」。渲染器不持有事件总线,故 warn 的载体就是这个
|
|
72
|
+
* **显式字段**而不是 `console.warn`——后者在宿主项目里会被彻底淹没,
|
|
73
|
+
* 而「功能没按预期生效但也没有报错」是本项目出现次数最多的失败模式。
|
|
74
|
+
*/
|
|
75
|
+
interface MtMiniChannelSwitch {
|
|
76
|
+
/** 未触发阈值时的通道 */
|
|
77
|
+
from: MtMiniMode;
|
|
78
|
+
/** 实际使用的通道 */
|
|
79
|
+
to: MtMiniMode;
|
|
80
|
+
/** 触发判定的文档节点数 */
|
|
81
|
+
nodeCount: number;
|
|
82
|
+
/** 判定所用的阈值 */
|
|
83
|
+
maxNodes: number;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* 渲染结果。
|
|
87
|
+
*
|
|
88
|
+
* 刻意**不提供关闭降级报告的开关**(与 `renderer-web` 的差异):
|
|
89
|
+
* 小程序端 `rich-text` 通道会把 `video` / `audio` / 公式降级成文本,
|
|
90
|
+
* 这类损失用户会直接看到。留一个「关掉报告」的开关等于给静默留后门
|
|
91
|
+
* —— 要求降级必须可被调用方取到。
|
|
92
|
+
*/
|
|
93
|
+
interface MtMiniRenderResult {
|
|
94
|
+
/** 目标平台 */
|
|
95
|
+
platform: MtMiniPlatform;
|
|
96
|
+
/**
|
|
97
|
+
* **实际使用**的通道。`mode: 'auto'` 传入时这里是解析后的结果,
|
|
98
|
+
* 宿主必须按它选择 `<rich-text nodes>` 或递归组件。
|
|
99
|
+
*/
|
|
100
|
+
mode: MtMiniMode;
|
|
101
|
+
/** 小程序 nodes(**Array 形式**) */
|
|
102
|
+
nodes: MtMiniNode[];
|
|
103
|
+
/** 降级报告;无降级时为空数组。**始终返回**,不可关闭 */
|
|
104
|
+
report: MtDegradationEntry[];
|
|
105
|
+
/** 序列化统计(节点数 / 最大深度 / 字节数) */
|
|
106
|
+
stats: MtSerializeStats;
|
|
107
|
+
/**
|
|
108
|
+
* 自动通道切换记录;`mode` 非 `'auto'` 或未触发阈值时为 `null`。
|
|
109
|
+
* 与 `report` 分开的理由:`report` 描述的是**内容表达损失**,
|
|
110
|
+
* 而通道切换是**渲染策略**——混在一起会让「报告为空」读不出「内容无损」。
|
|
111
|
+
*/
|
|
112
|
+
autoSwitched: MtMiniChannelSwitch | null;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* 各端 `rich-text` 能力表。
|
|
117
|
+
*
|
|
118
|
+
* **准入条件:必须实测核实。** 各子路径必须各自维护映射差异,
|
|
119
|
+
* 禁止共用一份映射表;反过来说,**没有实测过就不能让别人用**——
|
|
120
|
+
* 一份「看起来能跑」的错误白名单比明确的报错危险得多。
|
|
121
|
+
*
|
|
122
|
+
* 因此本文件当前只包含 `wechat`。支付宝 / 抖音的表在各自实测完成后
|
|
123
|
+
* (需各自开发者工具)追加,并同时回填待确认项。
|
|
124
|
+
*/
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* 微信小程序 `rich-text` 受信任标签白名单(**已核实**)。
|
|
128
|
+
*
|
|
129
|
+
* 顺序与官方文档一致,便于逐条比对;`Set` 查询由调用方按需构造。
|
|
130
|
+
*/
|
|
131
|
+
declare const MT_WECHAT_RICH_TEXT_TAGS: readonly string[];
|
|
132
|
+
/**
|
|
133
|
+
* 逐标签属性白名单(**已核实**)。
|
|
134
|
+
*
|
|
135
|
+
* 未在表中的标签不接受额外属性;全局属性(`class` / `style`)单独由
|
|
136
|
+
* `globalAttrs` 描述。**`id` 不在任何一张表里** —— 微信全局不支持 `id`。
|
|
137
|
+
*/
|
|
138
|
+
declare const MT_WECHAT_TAG_ATTRS: Readonly<Record<string, readonly string[]>>;
|
|
139
|
+
/**
|
|
140
|
+
* 小程序平台能力表。
|
|
141
|
+
*
|
|
142
|
+
* 当前只登记 `wechat`(已核实)。缺失的平台在
|
|
143
|
+
* `resolveCapabilities` 处**抛错**,不做容错。
|
|
144
|
+
*/
|
|
145
|
+
declare const MT_MINI_CAPABILITIES: Readonly<Partial<Record<MtMiniPlatform, MtMiniCapabilities>>>;
|
|
146
|
+
/**
|
|
147
|
+
* 取某个平台的能力表。
|
|
148
|
+
*
|
|
149
|
+
* @param platform 平台标识
|
|
150
|
+
* @returns 该平台的能力描述
|
|
151
|
+
* @throws {RangeError} 该平台尚未实测核实
|
|
152
|
+
*
|
|
153
|
+
* @example
|
|
154
|
+
* ```ts
|
|
155
|
+
* resolveCapabilities('wechat').supportsId // false
|
|
156
|
+
* resolveCapabilities('alipay') // 抛 RangeError:尚未实测
|
|
157
|
+
* ```
|
|
158
|
+
*/
|
|
159
|
+
declare const resolveCapabilities: (platform: MtMiniPlatform) => MtMiniCapabilities;
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* 内置主题字面量。
|
|
163
|
+
*
|
|
164
|
+
* ## 为什么这份数据必须存在于本包
|
|
165
|
+
*
|
|
166
|
+
* 小程序端 `rich-text` 内的 `style` **不参与宿主 CSS 变量继承**,
|
|
167
|
+
* 所有主题值必须在序列化时解析为字面量,而 `@mteditor/theme-default`
|
|
168
|
+
* 只产出 CSS、没有 JS 导出 —— 若要求宿主自备这份表,每个项目都要手抄
|
|
169
|
+
* `tokens.css` 的 65 个键,抄错还**没有报错**(本仓库自己就踩过:
|
|
170
|
+
* `mini.ts` 读的 `--mt-font-mono` 与 `tokens.css` 的 `--mt-font-family-mono`
|
|
171
|
+
* 不一致,两个引用点恒走 fallback)。
|
|
172
|
+
*
|
|
173
|
+
* ## 与 tokens.css 的关系:允许独立,禁止无守卫地独立
|
|
174
|
+
*
|
|
175
|
+
* 本文件是 `packages/theme-default/src/tokens.css` 的**逐键镜像**
|
|
176
|
+
* (`dark` 是 `light` 上的部分覆盖,与 CSS 的层叠语义一致)。
|
|
177
|
+
* `scripts/check-theme-tokens.mjs` 断言两者键集合与取值完全一致 ——
|
|
178
|
+
* 改任一侧而漏改另一侧会让 `pnpm verify` 失败。
|
|
179
|
+
*
|
|
180
|
+
* 取值风格与 CSS 一致:保留 `rgb(37 99 235 / 18%)` 这类现代空格语法,
|
|
181
|
+
* 不自作主张转换为逗号语法(`@mteditor/document` 原样内联,不做解析)。
|
|
182
|
+
*/
|
|
183
|
+
|
|
184
|
+
/** 亮色主题:`tokens.css` 中 `:root, [data-mt-theme='light']` 块的完整镜像 */
|
|
185
|
+
declare const MT_MINI_TOKENS_LIGHT: Readonly<Record<string, string>>;
|
|
186
|
+
/**
|
|
187
|
+
* 暗色主题对亮色的**覆盖项**(与 `tokens.css` 的 `[data-mt-theme='dark']` 块一致)。
|
|
188
|
+
*
|
|
189
|
+
* 单独导出是为了让卡口脚本能分别比对「覆盖集」与「派生全集」——
|
|
190
|
+
* 若只导出派生的全集,CSS 里删掉一个覆盖项(于是暗色回退到亮色值)
|
|
191
|
+
* 在 TS 侧不可见。
|
|
192
|
+
*/
|
|
193
|
+
declare const MT_MINI_TOKENS_DARK_OVERRIDES: Readonly<Record<string, string>>;
|
|
194
|
+
/** 暗色主题全集(亮色为基底 + 覆盖项) */
|
|
195
|
+
declare const MT_MINI_TOKENS_DARK: Readonly<Record<string, string>>;
|
|
196
|
+
/**
|
|
197
|
+
* 解析主题字面量表。
|
|
198
|
+
*
|
|
199
|
+
* 合并顺序:内置名(或自定义表)→ `themeTokens` 覆盖项。
|
|
200
|
+
*
|
|
201
|
+
* @param theme 内置主题名或自定义字面量表,缺省 `'light'`
|
|
202
|
+
* @param override 覆盖项,键含 `--` 前缀;缺省不覆盖
|
|
203
|
+
* @returns 可直接传给 `serializeDocumentToMini` 的 `themeTokens`
|
|
204
|
+
*
|
|
205
|
+
* @example
|
|
206
|
+
* ```ts
|
|
207
|
+
* resolveThemeTokens('dark') // 65 个键的暗色表
|
|
208
|
+
* resolveThemeTokens(undefined, { '--mt-color-link': '#f00' })
|
|
209
|
+
* // 亮色表,但链接色为 #f00
|
|
210
|
+
* ```
|
|
211
|
+
*/
|
|
212
|
+
declare const resolveThemeTokens: (theme?: MtMiniTheme, override?: Record<string, string>) => Record<string, string>;
|
|
213
|
+
|
|
214
|
+
export { type MtMiniRenderOptions as M, type MtMiniRenderResult as a, MT_MINI_CAPABILITIES as b, MT_MINI_TOKENS_DARK as c, MT_MINI_TOKENS_LIGHT as d, MT_WECHAT_RICH_TEXT_TAGS as e, MT_WECHAT_TAG_ATTRS as f, type MtMiniCapabilities as g, type MtMiniChannelOption as h, type MtMiniChannelSwitch as i, type MtMiniTheme as j, resolveThemeTokens as k, MT_MINI_TOKENS_DARK_OVERRIDES as l, resolveCapabilities as r };
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
import { MtMiniPlatform, MtMiniMode, MtPreRenderedIndex, MtMiniNode, MtDegradationEntry, MtSerializeStats } from '@mteditor/document';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* `@mteditor/renderer-mini` 的公开契约。
|
|
5
|
+
*
|
|
6
|
+
* 本包**不自己序列化 nodes**,只做三件事:
|
|
7
|
+
* 通道解析、主题字面量注入、平台能力表。`nodes` 一律来自
|
|
8
|
+
* `@mteditor/document` 的 `serializeDocumentToMini`。
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* 通道选择。
|
|
13
|
+
*
|
|
14
|
+
* `'auto'` 表示交由渲染器按 `maxNodes` 判定——
|
|
15
|
+
* 宿主不知道该选哪个通道正是它存在的理由。
|
|
16
|
+
*/
|
|
17
|
+
type MtMiniChannelOption = 'auto' | MtMiniMode;
|
|
18
|
+
/**
|
|
19
|
+
* 主题。
|
|
20
|
+
*
|
|
21
|
+
* 字符串为内置主题名,对象为自定义字面量表(键含 `--` 前缀,
|
|
22
|
+
* 与 `@mteditor/document` 的 `themeTokens` 同形)。
|
|
23
|
+
*/
|
|
24
|
+
type MtMiniTheme = 'light' | 'dark' | Record<string, string>;
|
|
25
|
+
/**
|
|
26
|
+
* 平台能力描述。
|
|
27
|
+
*
|
|
28
|
+
* **`verified` 是这张表的准入条件**:明令禁止「凭猜测共用一份映射表」
|
|
29
|
+
* 未实测的平台不得以「看起来能跑」的形态进入渲染路径。
|
|
30
|
+
*/
|
|
31
|
+
interface MtMiniCapabilities {
|
|
32
|
+
/** 平台标识 */
|
|
33
|
+
platform: MtMiniPlatform;
|
|
34
|
+
/** 白名单是否**经过实测核实**;未核实者不得被渲染路径使用 */
|
|
35
|
+
verified: boolean;
|
|
36
|
+
/** `rich-text` 受信任标签白名单 */
|
|
37
|
+
tags: readonly string[];
|
|
38
|
+
/** 全局支持的属性名(微信仅 `class` 与 `style`) */
|
|
39
|
+
globalAttrs: readonly string[];
|
|
40
|
+
/** 是否支持 `id` 属性(微信不支持) */
|
|
41
|
+
supportsId: boolean;
|
|
42
|
+
/** 逐标签的属性白名单 */
|
|
43
|
+
tagAttrs: Readonly<Record<string, readonly string[]>>;
|
|
44
|
+
/** `rich-text` 下不可表达、必须拆到 `rich-text` 之外的原生组件名 */
|
|
45
|
+
nativeComponents: readonly string[];
|
|
46
|
+
}
|
|
47
|
+
/** 渲染选项 */
|
|
48
|
+
interface MtMiniRenderOptions {
|
|
49
|
+
/** 目标平台,缺省 `'wechat'`。未实测核实的平台会被 `resolveCapabilities` 拒绝 */
|
|
50
|
+
platform?: MtMiniPlatform;
|
|
51
|
+
/** 渲染通道,缺省 `'auto'` */
|
|
52
|
+
mode?: MtMiniChannelOption;
|
|
53
|
+
/**
|
|
54
|
+
* `mode: 'auto'` 的降级阈值,单位是**文档节点数**,缺省 `3000`。
|
|
55
|
+
* 判定发生在序列化**之前**。
|
|
56
|
+
*/
|
|
57
|
+
maxNodes?: number;
|
|
58
|
+
/** 内置主题名或自定义字面量表,缺省 `'light'` */
|
|
59
|
+
theme?: MtMiniTheme;
|
|
60
|
+
/**
|
|
61
|
+
* 主题字面量补充/覆盖,与 `theme` 合并后**后者优先**。
|
|
62
|
+
* 用途:宿主已有一套后台下发的品牌色,只覆盖少数几个键。
|
|
63
|
+
*/
|
|
64
|
+
themeTokens?: Record<string, string>;
|
|
65
|
+
/** 预渲染产物索引(公式 SVG / 代码高亮) */
|
|
66
|
+
preRendered?: MtPreRenderedIndex;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* 自动通道切换的记录。
|
|
70
|
+
*
|
|
71
|
+
* 要求自动降级「发出 warn」。渲染器不持有事件总线,故 warn 的载体就是这个
|
|
72
|
+
* **显式字段**而不是 `console.warn`——后者在宿主项目里会被彻底淹没,
|
|
73
|
+
* 而「功能没按预期生效但也没有报错」是本项目出现次数最多的失败模式。
|
|
74
|
+
*/
|
|
75
|
+
interface MtMiniChannelSwitch {
|
|
76
|
+
/** 未触发阈值时的通道 */
|
|
77
|
+
from: MtMiniMode;
|
|
78
|
+
/** 实际使用的通道 */
|
|
79
|
+
to: MtMiniMode;
|
|
80
|
+
/** 触发判定的文档节点数 */
|
|
81
|
+
nodeCount: number;
|
|
82
|
+
/** 判定所用的阈值 */
|
|
83
|
+
maxNodes: number;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* 渲染结果。
|
|
87
|
+
*
|
|
88
|
+
* 刻意**不提供关闭降级报告的开关**(与 `renderer-web` 的差异):
|
|
89
|
+
* 小程序端 `rich-text` 通道会把 `video` / `audio` / 公式降级成文本,
|
|
90
|
+
* 这类损失用户会直接看到。留一个「关掉报告」的开关等于给静默留后门
|
|
91
|
+
* —— 要求降级必须可被调用方取到。
|
|
92
|
+
*/
|
|
93
|
+
interface MtMiniRenderResult {
|
|
94
|
+
/** 目标平台 */
|
|
95
|
+
platform: MtMiniPlatform;
|
|
96
|
+
/**
|
|
97
|
+
* **实际使用**的通道。`mode: 'auto'` 传入时这里是解析后的结果,
|
|
98
|
+
* 宿主必须按它选择 `<rich-text nodes>` 或递归组件。
|
|
99
|
+
*/
|
|
100
|
+
mode: MtMiniMode;
|
|
101
|
+
/** 小程序 nodes(**Array 形式**) */
|
|
102
|
+
nodes: MtMiniNode[];
|
|
103
|
+
/** 降级报告;无降级时为空数组。**始终返回**,不可关闭 */
|
|
104
|
+
report: MtDegradationEntry[];
|
|
105
|
+
/** 序列化统计(节点数 / 最大深度 / 字节数) */
|
|
106
|
+
stats: MtSerializeStats;
|
|
107
|
+
/**
|
|
108
|
+
* 自动通道切换记录;`mode` 非 `'auto'` 或未触发阈值时为 `null`。
|
|
109
|
+
* 与 `report` 分开的理由:`report` 描述的是**内容表达损失**,
|
|
110
|
+
* 而通道切换是**渲染策略**——混在一起会让「报告为空」读不出「内容无损」。
|
|
111
|
+
*/
|
|
112
|
+
autoSwitched: MtMiniChannelSwitch | null;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* 各端 `rich-text` 能力表。
|
|
117
|
+
*
|
|
118
|
+
* **准入条件:必须实测核实。** 各子路径必须各自维护映射差异,
|
|
119
|
+
* 禁止共用一份映射表;反过来说,**没有实测过就不能让别人用**——
|
|
120
|
+
* 一份「看起来能跑」的错误白名单比明确的报错危险得多。
|
|
121
|
+
*
|
|
122
|
+
* 因此本文件当前只包含 `wechat`。支付宝 / 抖音的表在各自实测完成后
|
|
123
|
+
* (需各自开发者工具)追加,并同时回填待确认项。
|
|
124
|
+
*/
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* 微信小程序 `rich-text` 受信任标签白名单(**已核实**)。
|
|
128
|
+
*
|
|
129
|
+
* 顺序与官方文档一致,便于逐条比对;`Set` 查询由调用方按需构造。
|
|
130
|
+
*/
|
|
131
|
+
declare const MT_WECHAT_RICH_TEXT_TAGS: readonly string[];
|
|
132
|
+
/**
|
|
133
|
+
* 逐标签属性白名单(**已核实**)。
|
|
134
|
+
*
|
|
135
|
+
* 未在表中的标签不接受额外属性;全局属性(`class` / `style`)单独由
|
|
136
|
+
* `globalAttrs` 描述。**`id` 不在任何一张表里** —— 微信全局不支持 `id`。
|
|
137
|
+
*/
|
|
138
|
+
declare const MT_WECHAT_TAG_ATTRS: Readonly<Record<string, readonly string[]>>;
|
|
139
|
+
/**
|
|
140
|
+
* 小程序平台能力表。
|
|
141
|
+
*
|
|
142
|
+
* 当前只登记 `wechat`(已核实)。缺失的平台在
|
|
143
|
+
* `resolveCapabilities` 处**抛错**,不做容错。
|
|
144
|
+
*/
|
|
145
|
+
declare const MT_MINI_CAPABILITIES: Readonly<Partial<Record<MtMiniPlatform, MtMiniCapabilities>>>;
|
|
146
|
+
/**
|
|
147
|
+
* 取某个平台的能力表。
|
|
148
|
+
*
|
|
149
|
+
* @param platform 平台标识
|
|
150
|
+
* @returns 该平台的能力描述
|
|
151
|
+
* @throws {RangeError} 该平台尚未实测核实
|
|
152
|
+
*
|
|
153
|
+
* @example
|
|
154
|
+
* ```ts
|
|
155
|
+
* resolveCapabilities('wechat').supportsId // false
|
|
156
|
+
* resolveCapabilities('alipay') // 抛 RangeError:尚未实测
|
|
157
|
+
* ```
|
|
158
|
+
*/
|
|
159
|
+
declare const resolveCapabilities: (platform: MtMiniPlatform) => MtMiniCapabilities;
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* 内置主题字面量。
|
|
163
|
+
*
|
|
164
|
+
* ## 为什么这份数据必须存在于本包
|
|
165
|
+
*
|
|
166
|
+
* 小程序端 `rich-text` 内的 `style` **不参与宿主 CSS 变量继承**,
|
|
167
|
+
* 所有主题值必须在序列化时解析为字面量,而 `@mteditor/theme-default`
|
|
168
|
+
* 只产出 CSS、没有 JS 导出 —— 若要求宿主自备这份表,每个项目都要手抄
|
|
169
|
+
* `tokens.css` 的 65 个键,抄错还**没有报错**(本仓库自己就踩过:
|
|
170
|
+
* `mini.ts` 读的 `--mt-font-mono` 与 `tokens.css` 的 `--mt-font-family-mono`
|
|
171
|
+
* 不一致,两个引用点恒走 fallback)。
|
|
172
|
+
*
|
|
173
|
+
* ## 与 tokens.css 的关系:允许独立,禁止无守卫地独立
|
|
174
|
+
*
|
|
175
|
+
* 本文件是 `packages/theme-default/src/tokens.css` 的**逐键镜像**
|
|
176
|
+
* (`dark` 是 `light` 上的部分覆盖,与 CSS 的层叠语义一致)。
|
|
177
|
+
* `scripts/check-theme-tokens.mjs` 断言两者键集合与取值完全一致 ——
|
|
178
|
+
* 改任一侧而漏改另一侧会让 `pnpm verify` 失败。
|
|
179
|
+
*
|
|
180
|
+
* 取值风格与 CSS 一致:保留 `rgb(37 99 235 / 18%)` 这类现代空格语法,
|
|
181
|
+
* 不自作主张转换为逗号语法(`@mteditor/document` 原样内联,不做解析)。
|
|
182
|
+
*/
|
|
183
|
+
|
|
184
|
+
/** 亮色主题:`tokens.css` 中 `:root, [data-mt-theme='light']` 块的完整镜像 */
|
|
185
|
+
declare const MT_MINI_TOKENS_LIGHT: Readonly<Record<string, string>>;
|
|
186
|
+
/**
|
|
187
|
+
* 暗色主题对亮色的**覆盖项**(与 `tokens.css` 的 `[data-mt-theme='dark']` 块一致)。
|
|
188
|
+
*
|
|
189
|
+
* 单独导出是为了让卡口脚本能分别比对「覆盖集」与「派生全集」——
|
|
190
|
+
* 若只导出派生的全集,CSS 里删掉一个覆盖项(于是暗色回退到亮色值)
|
|
191
|
+
* 在 TS 侧不可见。
|
|
192
|
+
*/
|
|
193
|
+
declare const MT_MINI_TOKENS_DARK_OVERRIDES: Readonly<Record<string, string>>;
|
|
194
|
+
/** 暗色主题全集(亮色为基底 + 覆盖项) */
|
|
195
|
+
declare const MT_MINI_TOKENS_DARK: Readonly<Record<string, string>>;
|
|
196
|
+
/**
|
|
197
|
+
* 解析主题字面量表。
|
|
198
|
+
*
|
|
199
|
+
* 合并顺序:内置名(或自定义表)→ `themeTokens` 覆盖项。
|
|
200
|
+
*
|
|
201
|
+
* @param theme 内置主题名或自定义字面量表,缺省 `'light'`
|
|
202
|
+
* @param override 覆盖项,键含 `--` 前缀;缺省不覆盖
|
|
203
|
+
* @returns 可直接传给 `serializeDocumentToMini` 的 `themeTokens`
|
|
204
|
+
*
|
|
205
|
+
* @example
|
|
206
|
+
* ```ts
|
|
207
|
+
* resolveThemeTokens('dark') // 65 个键的暗色表
|
|
208
|
+
* resolveThemeTokens(undefined, { '--mt-color-link': '#f00' })
|
|
209
|
+
* // 亮色表,但链接色为 #f00
|
|
210
|
+
* ```
|
|
211
|
+
*/
|
|
212
|
+
declare const resolveThemeTokens: (theme?: MtMiniTheme, override?: Record<string, string>) => Record<string, string>;
|
|
213
|
+
|
|
214
|
+
export { type MtMiniRenderOptions as M, type MtMiniRenderResult as a, MT_MINI_CAPABILITIES as b, MT_MINI_TOKENS_DARK as c, MT_MINI_TOKENS_LIGHT as d, MT_WECHAT_RICH_TEXT_TAGS as e, MT_WECHAT_TAG_ATTRS as f, type MtMiniCapabilities as g, type MtMiniChannelOption as h, type MtMiniChannelSwitch as i, type MtMiniTheme as j, resolveThemeTokens as k, MT_MINI_TOKENS_DARK_OVERRIDES as l, resolveCapabilities as r };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.cjs"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
|