@open-feishu-card/schema 0.1.0
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/dist/card.d.ts +2761 -0
- package/dist/card.d.ts.map +1 -0
- package/dist/card.js +41 -0
- package/dist/card.js.map +1 -0
- package/dist/common/behavior.d.ts +49 -0
- package/dist/common/behavior.d.ts.map +1 -0
- package/dist/common/behavior.js +39 -0
- package/dist/common/behavior.js.map +1 -0
- package/dist/common/behaviors-context.d.ts +19 -0
- package/dist/common/behaviors-context.d.ts.map +1 -0
- package/dist/common/behaviors-context.js +88 -0
- package/dist/common/behaviors-context.js.map +1 -0
- package/dist/common/confirm.d.ts +18 -0
- package/dist/common/confirm.d.ts.map +1 -0
- package/dist/common/confirm.js +12 -0
- package/dist/common/confirm.js.map +1 -0
- package/dist/common/enums.d.ts +115 -0
- package/dist/common/enums.d.ts.map +1 -0
- package/dist/common/enums.js +131 -0
- package/dist/common/enums.js.map +1 -0
- package/dist/common/fallback.d.ts +17 -0
- package/dist/common/fallback.d.ts.map +1 -0
- package/dist/common/fallback.js +22 -0
- package/dist/common/fallback.js.map +1 -0
- package/dist/common/icon-tokens.d.ts +1162 -0
- package/dist/common/icon-tokens.d.ts.map +1 -0
- package/dist/common/icon-tokens.js +1163 -0
- package/dist/common/icon-tokens.js.map +1 -0
- package/dist/common/icon.d.ts +3506 -0
- package/dist/common/icon.d.ts.map +1 -0
- package/dist/common/icon.js +49 -0
- package/dist/common/icon.js.map +1 -0
- package/dist/common/index.d.ts +9 -0
- package/dist/common/index.d.ts.map +1 -0
- package/dist/common/index.js +9 -0
- package/dist/common/index.js.map +1 -0
- package/dist/common/text.d.ts +107 -0
- package/dist/common/text.d.ts.map +1 -0
- package/dist/common/text.js +80 -0
- package/dist/common/text.js.map +1 -0
- package/dist/common/url.d.ts +22 -0
- package/dist/common/url.d.ts.map +1 -0
- package/dist/common/url.js +30 -0
- package/dist/common/url.js.map +1 -0
- package/dist/config.d.ts +226 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +123 -0
- package/dist/config.js.map +1 -0
- package/dist/containers/index.d.ts +1421 -0
- package/dist/containers/index.d.ts.map +1 -0
- package/dist/containers/index.js +205 -0
- package/dist/containers/index.js.map +1 -0
- package/dist/content/index.d.ts +3801 -0
- package/dist/content/index.d.ts.map +1 -0
- package/dist/content/index.js +426 -0
- package/dist/content/index.js.map +1 -0
- package/dist/element-ref.d.ts +6 -0
- package/dist/element-ref.d.ts.map +1 -0
- package/dist/element-ref.js +17 -0
- package/dist/element-ref.js.map +1 -0
- package/dist/element.d.ts +11614 -0
- package/dist/element.d.ts.map +1 -0
- package/dist/element.js +46 -0
- package/dist/element.js.map +1 -0
- package/dist/header.d.ts +1253 -0
- package/dist/header.d.ts.map +1 -0
- package/dist/header.js +27 -0
- package/dist/header.js.map +1 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -0
- package/dist/interactive/index.d.ts +5371 -0
- package/dist/interactive/index.d.ts.map +1 -0
- package/dist/interactive/index.js +533 -0
- package/dist/interactive/index.js.map +1 -0
- package/dist/markdown/builders.d.ts +59 -0
- package/dist/markdown/builders.d.ts.map +1 -0
- package/dist/markdown/builders.js +140 -0
- package/dist/markdown/builders.js.map +1 -0
- package/dist/markdown/code-language.d.ts +78 -0
- package/dist/markdown/code-language.d.ts.map +1 -0
- package/dist/markdown/code-language.js +79 -0
- package/dist/markdown/code-language.js.map +1 -0
- package/dist/markdown/component.d.ts +1224 -0
- package/dist/markdown/component.d.ts.map +1 -0
- package/dist/markdown/component.js +38 -0
- package/dist/markdown/component.js.map +1 -0
- package/dist/markdown/emoji-tokens.d.ts +192 -0
- package/dist/markdown/emoji-tokens.d.ts.map +1 -0
- package/dist/markdown/emoji-tokens.js +193 -0
- package/dist/markdown/emoji-tokens.js.map +1 -0
- package/dist/markdown/enums.d.ts +51 -0
- package/dist/markdown/enums.d.ts.map +1 -0
- package/dist/markdown/enums.js +49 -0
- package/dist/markdown/enums.js.map +1 -0
- package/dist/markdown/escape.d.ts +8 -0
- package/dist/markdown/escape.d.ts.map +1 -0
- package/dist/markdown/escape.js +42 -0
- package/dist/markdown/escape.js.map +1 -0
- package/dist/markdown/index.d.ts +16 -0
- package/dist/markdown/index.d.ts.map +1 -0
- package/dist/markdown/index.js +16 -0
- package/dist/markdown/index.js.map +1 -0
- package/dist/markdown/tags.d.ts +1293 -0
- package/dist/markdown/tags.d.ts.map +1 -0
- package/dist/markdown/tags.js +238 -0
- package/dist/markdown/tags.js.map +1 -0
- package/dist/markdown/text-size.d.ts +60 -0
- package/dist/markdown/text-size.d.ts.map +1 -0
- package/dist/markdown/text-size.js +58 -0
- package/dist/markdown/text-size.js.map +1 -0
- package/package.json +37 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tags.d.ts","sourceRoot":"","sources":["../../src/markdown/tags.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAyBxB;;;;GAIG;AACH,eAAO,MAAM,mBAAmB;;;;iBAyB7B,CAAC;AAEJ,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,yBAAyB;AACzB,wBAAgB,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAKxD;AAED;;GAEG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;iBAajC,CAAC;AAEJ,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,wBAAgB,eAAe,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,CAQhE;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBASC,CAAC;AAEpC,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,wBAAgB,aAAa,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAS5D;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;iBAO/B,CAAC;AAEJ,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,wBAAgB,aAAa,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAG5D;AAED;;GAEG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;iBAeD,CAAC;AAEpC,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,wBAAgB,eAAe,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,CAUhE;AAED;;GAEG;AACH,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;iBAWD,CAAC;AAE3C,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAC5C,OAAO,8BAA8B,CACtC,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,wBAAwB,GAAG,MAAM,CAO9E;AAED;;;GAGG;AACH,eAAO,MAAM,qBAAqB;;;iBAa/B,CAAC;AAEJ,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,wBAAgB,aAAa,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAG5D;AAED;;GAEG;AACH,eAAO,MAAM,uBAAuB;;;iBAKX,CAAC;AAE1B,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,wBAAgB,eAAe,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,CAGhE;AAED;;GAEG;AACH,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;iBA6BR,CAAC;AAElC,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAElF,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,sBAAsB,GAAG,MAAM,CAgB1E"}
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { IconTokenSchema } from '../common/icon-tokens.js';
|
|
3
|
+
import { ColorSchema } from '../common/enums.js';
|
|
4
|
+
import { MarkdownDateTimeFormatSchema, MarkdownInlineAudioStyleSchema, MarkdownPersonStyleSchema, MarkdownTextTagColorSchema, } from './enums.js';
|
|
5
|
+
function boolAttr(value) {
|
|
6
|
+
if (value === undefined)
|
|
7
|
+
return undefined;
|
|
8
|
+
return value ? 'true' : 'false';
|
|
9
|
+
}
|
|
10
|
+
function renderAttrs(attrs) {
|
|
11
|
+
return Object.entries(attrs)
|
|
12
|
+
.filter(([, v]) => v !== undefined && v !== '')
|
|
13
|
+
.map(([k, v]) => ` ${k}='${String(v)}'`)
|
|
14
|
+
.join('');
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* `@` 提及标签参数(会通知对方)。
|
|
18
|
+
* 渲染为 `<at id=...></at>` / `<at ids=...></at>` / `<at email=...></at>`。
|
|
19
|
+
* 仅展示不通知请用 `<person>` / person / person_list。
|
|
20
|
+
*/
|
|
21
|
+
export const MarkdownAtTagSchema = z
|
|
22
|
+
.object({
|
|
23
|
+
id: z
|
|
24
|
+
.string()
|
|
25
|
+
.optional()
|
|
26
|
+
.describe('单个用户 ID:优先 open_id(ou_) 或 user_id,或 all(@所有人);不要用 union_id(on_)'),
|
|
27
|
+
ids: z
|
|
28
|
+
.array(z.string())
|
|
29
|
+
.optional()
|
|
30
|
+
.describe('多个用户 ID,渲染为 ids=id1,id2;优先 ou_/user_id'),
|
|
31
|
+
email: z.string().optional().describe('通过邮箱 @ 指定人'),
|
|
32
|
+
})
|
|
33
|
+
.superRefine((data, ctx) => {
|
|
34
|
+
const count = [data.id, data.ids?.length, data.email].filter(Boolean).length;
|
|
35
|
+
if (count !== 1) {
|
|
36
|
+
ctx.addIssue({
|
|
37
|
+
code: 'custom',
|
|
38
|
+
message: 'at 标签需且仅需提供 id、ids、email 其中之一',
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
})
|
|
42
|
+
.describe('@ 提及标签 <at>:会通知对方。提示词明确要 @/艾特/通知时用;禁止用 person/<person> 冒充。勿把 <at> 包进 <font>');
|
|
43
|
+
/** 渲染 `<at ...></at>` */
|
|
44
|
+
export function renderAtTag(input) {
|
|
45
|
+
const data = MarkdownAtTagSchema.parse(input);
|
|
46
|
+
if (data.id !== undefined)
|
|
47
|
+
return `<at id=${data.id}></at>`;
|
|
48
|
+
if (data.ids)
|
|
49
|
+
return `<at ids=${data.ids.join(',')}></at>`;
|
|
50
|
+
return `<at email=${data.email}></at>`;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* 人员展示标签参数(仅展示,不发提及通知)。
|
|
54
|
+
*/
|
|
55
|
+
export const MarkdownPersonTagSchema = z
|
|
56
|
+
.object({
|
|
57
|
+
id: z
|
|
58
|
+
.string()
|
|
59
|
+
.describe('用户 ID:优先 open_id(ou_) 或 user_id;不要用 union_id(on_)。禁止臆造'),
|
|
60
|
+
show_name: z.boolean().optional().describe('是否展示用户名,默认 true'),
|
|
61
|
+
show_avatar: z.boolean().optional().describe('是否展示头像,默认 true'),
|
|
62
|
+
style: MarkdownPersonStyleSchema.optional().describe('展示样式,默认 normal'),
|
|
63
|
+
})
|
|
64
|
+
.describe('人员展示标签 <person>:仅渲染头像/姓名,不通知。行内展示优先用此标签;要通知改用 <at>。勿包进 <font>');
|
|
65
|
+
export function renderPersonTag(input) {
|
|
66
|
+
const data = MarkdownPersonTagSchema.parse(input);
|
|
67
|
+
return `<person${renderAttrs({
|
|
68
|
+
id: data.id,
|
|
69
|
+
show_name: boolAttr(data.show_name),
|
|
70
|
+
show_avatar: boolAttr(data.show_avatar),
|
|
71
|
+
style: data.style,
|
|
72
|
+
})}></person>`;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* 含图标的多端链接标签。
|
|
76
|
+
*/
|
|
77
|
+
export const MarkdownLinkTagSchema = z
|
|
78
|
+
.object({
|
|
79
|
+
text: z.string().describe('链接展示文案'),
|
|
80
|
+
url: z.string().describe('默认跳转地址(必填)'),
|
|
81
|
+
icon: IconTokenSchema.optional().describe('前缀图标 token,颜色固定蓝色'),
|
|
82
|
+
pc_url: z.string().optional().describe('PC 端链接,优先级高于 url'),
|
|
83
|
+
ios_url: z.string().optional().describe('iOS 端链接,优先级高于 url'),
|
|
84
|
+
android_url: z.string().optional().describe('Android 端链接,优先级高于 url'),
|
|
85
|
+
})
|
|
86
|
+
.describe('含图标的多端链接标签 <link> 参数');
|
|
87
|
+
export function renderLinkTag(input) {
|
|
88
|
+
const data = MarkdownLinkTagSchema.parse(input);
|
|
89
|
+
return `<link${renderAttrs({
|
|
90
|
+
icon: data.icon,
|
|
91
|
+
url: data.url,
|
|
92
|
+
pc_url: data.pc_url,
|
|
93
|
+
ios_url: data.ios_url,
|
|
94
|
+
android_url: data.android_url,
|
|
95
|
+
})}>${data.text}</link>`;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* 文本标签。状态、优先级、序号等短标识优先用此标签。
|
|
99
|
+
*/
|
|
100
|
+
export const MarkdownTextTagSchema = z
|
|
101
|
+
.object({
|
|
102
|
+
text: z.string().describe('标签文案(短标识)'),
|
|
103
|
+
color: MarkdownTextTagColorSchema.optional().describe('标签颜色'),
|
|
104
|
+
})
|
|
105
|
+
.describe('文本标签 <text_tag>:用于状态/优先级/序号等短标识。写法示例:`<text_tag color=\'blue\'>标签</text_tag>` + 两个空格 + 正文');
|
|
106
|
+
export function renderTextTag(input) {
|
|
107
|
+
const data = MarkdownTextTagSchema.parse(input);
|
|
108
|
+
return `<text_tag${renderAttrs({ color: data.color })}>${data.text}</text_tag>`;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* 数字角标(0–99)。
|
|
112
|
+
*/
|
|
113
|
+
export const MarkdownNumberTagSchema = z
|
|
114
|
+
.object({
|
|
115
|
+
number: z
|
|
116
|
+
.number()
|
|
117
|
+
.int()
|
|
118
|
+
.min(0)
|
|
119
|
+
.max(99)
|
|
120
|
+
.describe('角标数字,0–99'),
|
|
121
|
+
background_color: ColorSchema.optional().describe('圆圈背景色'),
|
|
122
|
+
font_color: ColorSchema.optional().describe('数字颜色'),
|
|
123
|
+
url: z.string().optional().describe('点击跳转默认链接'),
|
|
124
|
+
pc_url: z.string().optional().describe('PC 端跳转链接'),
|
|
125
|
+
ios_url: z.string().optional().describe('iOS 端跳转链接'),
|
|
126
|
+
android_url: z.string().optional().describe('Android 端跳转链接'),
|
|
127
|
+
})
|
|
128
|
+
.describe('数字角标 <number_tag> 参数');
|
|
129
|
+
export function renderNumberTag(input) {
|
|
130
|
+
const data = MarkdownNumberTagSchema.parse(input);
|
|
131
|
+
return `<number_tag${renderAttrs({
|
|
132
|
+
background_color: data.background_color,
|
|
133
|
+
font_color: data.font_color,
|
|
134
|
+
url: data.url,
|
|
135
|
+
pc_url: data.pc_url,
|
|
136
|
+
ios_url: data.ios_url,
|
|
137
|
+
android_url: data.android_url,
|
|
138
|
+
})}>${data.number}</number_tag>`;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* 国际化时间标签。
|
|
142
|
+
*/
|
|
143
|
+
export const MarkdownLocalDateTimeTagSchema = z
|
|
144
|
+
.object({
|
|
145
|
+
millisecond: z
|
|
146
|
+
.union([z.string(), z.number()])
|
|
147
|
+
.optional()
|
|
148
|
+
.describe('Unix 毫秒时间戳;省略则用发送/发布时间'),
|
|
149
|
+
format_type: MarkdownDateTimeFormatSchema.optional().describe('时间展示格式,默认 date_num'),
|
|
150
|
+
link: z.string().optional().describe('点击时间跳转的链接'),
|
|
151
|
+
})
|
|
152
|
+
.describe('国际化时间标签 <local_datetime> 参数');
|
|
153
|
+
export function renderLocalDateTimeTag(input) {
|
|
154
|
+
const data = MarkdownLocalDateTimeTagSchema.parse(input);
|
|
155
|
+
return `<local_datetime${renderAttrs({
|
|
156
|
+
millisecond: data.millisecond,
|
|
157
|
+
format_type: data.format_type,
|
|
158
|
+
link: data.link,
|
|
159
|
+
})}></local_datetime>`;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* 彩色文本(font)标签。
|
|
163
|
+
* 字段标签常用 grey;禁止把 `<at>` / `<person>` 包进 `<font>`(会显示标签原文)。
|
|
164
|
+
*/
|
|
165
|
+
export const MarkdownFontTagSchema = z
|
|
166
|
+
.object({
|
|
167
|
+
text: z
|
|
168
|
+
.string()
|
|
169
|
+
.describe('文本内容;不要在其中嵌套 <at>/<person>(嵌套后常显示标签原文)'),
|
|
170
|
+
color: ColorSchema.describe('文本颜色:default、颜色枚举或 rgba;不对链接文本生效。字段标签常用 grey'),
|
|
171
|
+
})
|
|
172
|
+
.describe("彩色文本 <font>。正例:`<font color='grey'>作者:</font><person id='ou_xxx' show_name=true show_avatar=true style='normal'></person>`");
|
|
173
|
+
export function renderFontTag(input) {
|
|
174
|
+
const data = MarkdownFontTagSchema.parse(input);
|
|
175
|
+
return `<font color='${data.color}'>${data.text}</font>`;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* 普通超链接(a)标签。
|
|
179
|
+
*/
|
|
180
|
+
export const MarkdownAnchorTagSchema = z
|
|
181
|
+
.object({
|
|
182
|
+
href: z.string().describe('跳转地址,仅支持 HTTP/HTTPS'),
|
|
183
|
+
text: z.string().optional().describe('展示文案;省略时通常展示 URL'),
|
|
184
|
+
})
|
|
185
|
+
.describe('超链接 <a> 参数');
|
|
186
|
+
export function renderAnchorTag(input) {
|
|
187
|
+
const data = MarkdownAnchorTagSchema.parse(input);
|
|
188
|
+
return `<a href='${data.href}'>${data.text ?? ''}</a>`;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* 富文本内嵌音频标签。
|
|
192
|
+
*/
|
|
193
|
+
export const MarkdownInlineAudioTagSchema = z
|
|
194
|
+
.object({
|
|
195
|
+
file_key: z.string().describe('音频文件 key(上传文件接口返回)'),
|
|
196
|
+
audio_id: z.string().optional().describe('音频实例唯一标识'),
|
|
197
|
+
show_time: z.boolean().optional().describe('是否显示时长,默认 false'),
|
|
198
|
+
style: MarkdownInlineAudioStyleSchema.optional().describe('音频样式,默认 normal'),
|
|
199
|
+
background_color: ColorSchema.optional().describe('组件背景色'),
|
|
200
|
+
fill_color: ColorSchema.optional().describe('图标与时间颜色'),
|
|
201
|
+
fallback_text: z
|
|
202
|
+
.string()
|
|
203
|
+
.optional()
|
|
204
|
+
.describe('低版本客户端降级文案;指定时必须同时提供 fallback_url'),
|
|
205
|
+
fallback_url: z.string().optional().describe('低版本客户端兜底 URL'),
|
|
206
|
+
fallback_pc_url: z.string().optional().describe('PC 端兜底 URL'),
|
|
207
|
+
fallback_ios_url: z.string().optional().describe('iOS 端兜底 URL'),
|
|
208
|
+
fallback_android_url: z.string().optional().describe('Android 端兜底 URL'),
|
|
209
|
+
fallback_harmony_url: z.string().optional().describe('鸿蒙端兜底 URL'),
|
|
210
|
+
})
|
|
211
|
+
.superRefine((data, ctx) => {
|
|
212
|
+
if (data.fallback_text && !data.fallback_url) {
|
|
213
|
+
ctx.addIssue({
|
|
214
|
+
code: 'custom',
|
|
215
|
+
message: '指定 fallback_text 时必须同时提供 fallback_url',
|
|
216
|
+
path: ['fallback_url'],
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
})
|
|
220
|
+
.describe('富文本内嵌音频 <audio> 参数');
|
|
221
|
+
export function renderInlineAudioTag(input) {
|
|
222
|
+
const data = MarkdownInlineAudioTagSchema.parse(input);
|
|
223
|
+
return `<audio${renderAttrs({
|
|
224
|
+
file_key: data.file_key,
|
|
225
|
+
audio_id: data.audio_id,
|
|
226
|
+
show_time: boolAttr(data.show_time),
|
|
227
|
+
style: data.style,
|
|
228
|
+
background_color: data.background_color,
|
|
229
|
+
fill_color: data.fill_color,
|
|
230
|
+
fallback_text: data.fallback_text,
|
|
231
|
+
fallback_url: data.fallback_url,
|
|
232
|
+
fallback_pc_url: data.fallback_pc_url,
|
|
233
|
+
fallback_ios_url: data.fallback_ios_url,
|
|
234
|
+
fallback_android_url: data.fallback_android_url,
|
|
235
|
+
fallback_harmony_url: data.fallback_harmony_url,
|
|
236
|
+
})}></audio>`;
|
|
237
|
+
}
|
|
238
|
+
//# sourceMappingURL=tags.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tags.js","sourceRoot":"","sources":["../../src/markdown/tags.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* 富文本 / 普通文本组件的官方字号枚举。
|
|
4
|
+
*/
|
|
5
|
+
export declare const MarkdownTextSizeEnumSchema: z.ZodEnum<{
|
|
6
|
+
heading: "heading";
|
|
7
|
+
"heading-0": "heading-0";
|
|
8
|
+
"heading-1": "heading-1";
|
|
9
|
+
"heading-2": "heading-2";
|
|
10
|
+
"heading-3": "heading-3";
|
|
11
|
+
"heading-4": "heading-4";
|
|
12
|
+
large: "large";
|
|
13
|
+
medium: "medium";
|
|
14
|
+
normal: "normal";
|
|
15
|
+
notation: "notation";
|
|
16
|
+
small: "small";
|
|
17
|
+
"x-large": "x-large";
|
|
18
|
+
"x-small": "x-small";
|
|
19
|
+
"xx-large": "xx-large";
|
|
20
|
+
"xxx-large": "xxx-large";
|
|
21
|
+
"xxxx-large": "xxxx-large";
|
|
22
|
+
}>;
|
|
23
|
+
export type MarkdownTextSizeEnum = z.infer<typeof MarkdownTextSizeEnumSchema>;
|
|
24
|
+
/**
|
|
25
|
+
* 自定义像素字号。支持 10px–40px(覆盖官方最小 x-small 到略大于 heading-0)。
|
|
26
|
+
*/
|
|
27
|
+
export declare const MarkdownTextSizePixelSchema: z.ZodString;
|
|
28
|
+
export type MarkdownTextSizePixel = z.infer<typeof MarkdownTextSizePixelSchema>;
|
|
29
|
+
/**
|
|
30
|
+
* config.style.text_size 中声明的自定义 key(如 cus-0)。
|
|
31
|
+
* 不以纯数字 px 形式书写,避免与像素字号混淆。
|
|
32
|
+
*/
|
|
33
|
+
export declare const MarkdownTextSizeCustomKeySchema: z.ZodString;
|
|
34
|
+
export type MarkdownTextSizeCustomKey = z.infer<typeof MarkdownTextSizeCustomKeySchema>;
|
|
35
|
+
/**
|
|
36
|
+
* 组件 text_size:
|
|
37
|
+
* 1. 官方枚举
|
|
38
|
+
* 2. 像素值 10px–40px
|
|
39
|
+
* 3. config.style.text_size 自定义 key
|
|
40
|
+
*/
|
|
41
|
+
export declare const MarkdownTextSizeSchema: z.ZodUnion<readonly [z.ZodEnum<{
|
|
42
|
+
heading: "heading";
|
|
43
|
+
"heading-0": "heading-0";
|
|
44
|
+
"heading-1": "heading-1";
|
|
45
|
+
"heading-2": "heading-2";
|
|
46
|
+
"heading-3": "heading-3";
|
|
47
|
+
"heading-4": "heading-4";
|
|
48
|
+
large: "large";
|
|
49
|
+
medium: "medium";
|
|
50
|
+
normal: "normal";
|
|
51
|
+
notation: "notation";
|
|
52
|
+
small: "small";
|
|
53
|
+
"x-large": "x-large";
|
|
54
|
+
"x-small": "x-small";
|
|
55
|
+
"xx-large": "xx-large";
|
|
56
|
+
"xxx-large": "xxx-large";
|
|
57
|
+
"xxxx-large": "xxxx-large";
|
|
58
|
+
}>, z.ZodString, z.ZodString]>;
|
|
59
|
+
export type MarkdownTextSize = z.infer<typeof MarkdownTextSizeSchema>;
|
|
60
|
+
//# sourceMappingURL=text-size.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text-size.d.ts","sourceRoot":"","sources":["../../src/markdown/text-size.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;EAqBpC,CAAC;AAEJ,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE9E;;GAEG;AACH,eAAO,MAAM,2BAA2B,aAKL,CAAC;AAEpC,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAEhF;;;GAGG;AACH,eAAO,MAAM,+BAA+B,aAMS,CAAC;AAEtD,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAC7C,OAAO,+BAA+B,CACvC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;8BAQhC,CAAC;AAEJ,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* 富文本 / 普通文本组件的官方字号枚举。
|
|
4
|
+
*/
|
|
5
|
+
export const MarkdownTextSizeEnumSchema = z
|
|
6
|
+
.enum([
|
|
7
|
+
'heading-0',
|
|
8
|
+
'heading-1',
|
|
9
|
+
'heading-2',
|
|
10
|
+
'heading-3',
|
|
11
|
+
'heading-4',
|
|
12
|
+
'heading',
|
|
13
|
+
'normal',
|
|
14
|
+
'notation',
|
|
15
|
+
'xxxx-large',
|
|
16
|
+
'xxx-large',
|
|
17
|
+
'xx-large',
|
|
18
|
+
'x-large',
|
|
19
|
+
'large',
|
|
20
|
+
'medium',
|
|
21
|
+
'small',
|
|
22
|
+
'x-small',
|
|
23
|
+
])
|
|
24
|
+
.describe('官方字号枚举。heading-* / normal / notation,或 xxxx-large … x-small(约 10–30px)');
|
|
25
|
+
/**
|
|
26
|
+
* 自定义像素字号。支持 10px–40px(覆盖官方最小 x-small 到略大于 heading-0)。
|
|
27
|
+
*/
|
|
28
|
+
export const MarkdownTextSizePixelSchema = z
|
|
29
|
+
.string()
|
|
30
|
+
.regex(/^(1[0-9]|2[0-9]|3[0-9]|40)px$/, {
|
|
31
|
+
error: '像素字号须为 10px–40px,例如 "14px"、"28px"',
|
|
32
|
+
})
|
|
33
|
+
.describe('自定义像素字号,支持 10px–40px');
|
|
34
|
+
/**
|
|
35
|
+
* config.style.text_size 中声明的自定义 key(如 cus-0)。
|
|
36
|
+
* 不以纯数字 px 形式书写,避免与像素字号混淆。
|
|
37
|
+
*/
|
|
38
|
+
export const MarkdownTextSizeCustomKeySchema = z
|
|
39
|
+
.string()
|
|
40
|
+
.min(1)
|
|
41
|
+
.refine((value) => !/^\d+px$/.test(value), {
|
|
42
|
+
message: '像素字号请使用 10px–40px;其它 px 值不合法',
|
|
43
|
+
})
|
|
44
|
+
.describe('config.style.text_size 自定义 key,如 cus-0');
|
|
45
|
+
/**
|
|
46
|
+
* 组件 text_size:
|
|
47
|
+
* 1. 官方枚举
|
|
48
|
+
* 2. 像素值 10px–40px
|
|
49
|
+
* 3. config.style.text_size 自定义 key
|
|
50
|
+
*/
|
|
51
|
+
export const MarkdownTextSizeSchema = z
|
|
52
|
+
.union([
|
|
53
|
+
MarkdownTextSizeEnumSchema,
|
|
54
|
+
MarkdownTextSizePixelSchema,
|
|
55
|
+
MarkdownTextSizeCustomKeySchema,
|
|
56
|
+
])
|
|
57
|
+
.describe('文本大小:官方枚举、10px–40px 像素值,或 config.style.text_size 自定义 key');
|
|
58
|
+
//# sourceMappingURL=text-size.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text-size.js","sourceRoot":"","sources":["../../src/markdown/text-size.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC;KACxC,IAAI,CAAC;IACJ,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,SAAS;IACT,QAAQ;IACR,UAAU;IACV,YAAY;IACZ,WAAW;IACX,UAAU;IACV,SAAS;IACT,OAAO;IACP,QAAQ;IACR,OAAO;IACP,SAAS;CACV,CAAC;KACD,QAAQ,CACP,wEAAwE,CACzE,CAAC;AAIJ;;GAEG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC;KACzC,MAAM,EAAE;KACR,KAAK,CAAC,+BAA+B,EAAE;IACtC,KAAK,EAAE,mCAAmC;CAC3C,CAAC;KACD,QAAQ,CAAC,sBAAsB,CAAC,CAAC;AAIpC;;;GAGG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC;KAC7C,MAAM,EAAE;KACR,GAAG,CAAC,CAAC,CAAC;KACN,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;IACzC,OAAO,EAAE,8BAA8B;CACxC,CAAC;KACD,QAAQ,CAAC,wCAAwC,CAAC,CAAC;AAMtD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC;KACpC,KAAK,CAAC;IACL,0BAA0B;IAC1B,2BAA2B;IAC3B,+BAA+B;CAChC,CAAC;KACD,QAAQ,CACP,0DAA0D,CAC3D,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@open-feishu-card/schema",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "飞书卡片 JSON Schema 2.0 的 Zod 规范定义与类型导出",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"dist"
|
|
16
|
+
],
|
|
17
|
+
"dependencies": {
|
|
18
|
+
"zod": "^4.0.0"
|
|
19
|
+
},
|
|
20
|
+
"devDependencies": {
|
|
21
|
+
"typescript": "^7.0.2"
|
|
22
|
+
},
|
|
23
|
+
"license": "MIT",
|
|
24
|
+
"publishConfig": {
|
|
25
|
+
"access": "public"
|
|
26
|
+
},
|
|
27
|
+
"repository": {
|
|
28
|
+
"type": "git",
|
|
29
|
+
"url": "git+https://github.com/ztxtxwd/open-feishu-card-monorepo.git",
|
|
30
|
+
"directory": "packages/schema"
|
|
31
|
+
},
|
|
32
|
+
"scripts": {
|
|
33
|
+
"build": "tsc -p tsconfig.json",
|
|
34
|
+
"typecheck": "tsc --noEmit -p tsconfig.json",
|
|
35
|
+
"test": "echo no tests"
|
|
36
|
+
}
|
|
37
|
+
}
|