koishi-plugin-wordle-game 4.1.3 → 4.2.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/CHANGELOG.md +5 -0
- package/DESIGN_SYSTEM.md +61 -0
- package/README.md +15 -11
- package/THIRD_PARTY_NOTICES.md +195 -0
- package/lib/html/template.d.ts +3 -3
- package/lib/index.js +17777 -13469
- package/lib/m3.d.ts +25 -21
- package/lib/material-color-browser.d.ts +1 -0
- package/lib/material-color.d.ts +549 -0
- package/lib/services/renderer.d.ts +2 -0
- package/lib/ux.d.ts +31 -0
- package/package.json +11 -5
package/CHANGELOG.md
ADDED
package/DESIGN_SYSTEM.md
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# Koishi 插件设计系统
|
|
2
|
+
|
|
3
|
+
适用范围:araea 维护的 16 个 external 插件。Koishi 主框架、控制台与聊天客户端不在修改范围内。
|
|
4
|
+
|
|
5
|
+
## 规范与实现
|
|
6
|
+
|
|
7
|
+
- 视觉、组件、形状、排版与语义颜色以 [Material 3 / Expressive](https://m3.material.io/) 为准。
|
|
8
|
+
- [Apple HIG](https://developer.apple.com/design/human-interface-guidelines/accessibility) 用于操作反馈、平台惯例、可恢复性与可访问性,不引入 Apple 视觉组件。
|
|
9
|
+
- [WCAG 2.2 AA](https://www.w3.org/TR/WCAG22/) 用于非文本内容、颜色与对比度、时间限制、输入错误和破坏性操作审查。
|
|
10
|
+
- 色彩使用 Google Material Color Utilities 0.4.0 的 HCT 与 Tonal Spot 动态角色,明确使用 2025 色彩规范。历史 `lch` API 名仅用于源码兼容,计算已经统一为 HCT。彩色角色(primary / secondary / tertiary / error 及其容器)走官方 Tonal Spot;中性面(surface 系列、on-surface 系列、outline 系列)由 HCT 按本设计系统的色调重算——表面留住一点源色味道、文字取深色档,避免成片近白、文字偏浅的发晃感。
|
|
11
|
+
- `m3.ts` 是角色颜色、字阶、间距、圆角、层级和基础组件的唯一源文件。`material-color*.ts` 是固定版本的官方算法生成物,授权见 `THIRD_PARTY_NOTICES.md`。
|
|
12
|
+
- 不额外添加静态截图无法表达的动画;基础 CSS 禁用减少动态效果偏好下的动画和过渡。
|
|
13
|
+
|
|
14
|
+
## 输出、交互与内容
|
|
15
|
+
|
|
16
|
+
1. 图文模式只发渲染图,不附文字;完整文字只在用户切到「文字」模式时出现。图片的等价文字随图片标记,切换到文字模式时展开,因此不会在群里重复刷屏。
|
|
17
|
+
2. `插件主指令.显示 文字` / `插件主指令.显示 图文` 切换个人显示偏好;同一机器人中的这些插件共享选择。设置保存在内存,重启恢复图文。文本回复不能把后续条目无提示地压掉;较长管理列表分页。
|
|
18
|
+
3. 裸输入必须符合词法、对局状态及参与条件。多个插件匹配时不执行,要求明确完整指令;完整指令继续可用。
|
|
19
|
+
4. 回复说明当前结果、未完成原因和可执行的下一步,不用管理员日志替代用户可用的反馈。退款、赔付与渲染失败不能伪装成功。
|
|
20
|
+
5. 破坏性清空需展示范围、不可撤销性和限时确认码。确认码限制到同一机器人、平台、用户与频道,使用后立即失效。
|
|
21
|
+
6. 多轮输入允许 5 分钟等待,发送「延长」重新计时,发送「取消」退出。斗牛、21 点提供延长等待入口。文字模式不主动撤回已发出的说明。
|
|
22
|
+
7. 货币发放先写入核对记录,入账结果不明确时保留待核对状态,不自动重发。管理员核对实际流水并按需人工补发后标记确认;确认操作自身不转账。
|
|
23
|
+
|
|
24
|
+
## 内容边界
|
|
25
|
+
|
|
26
|
+
- message-counter 的昵称测量与省略号策略保留。图片中合理截断昵称,文字榜单提供完整名称与完整请求范围。
|
|
27
|
+
- P5 / PJSK 输出是用户请求的作品素材,其作品风格保留;选择、参数、提示和文字替代遵循统一交互规则。
|
|
28
|
+
- 象棋棋盘与棋子是游戏内容,配套容器遵循 M3,并附带棋子位置与轮次的文字说明。
|
|
29
|
+
- see-color 是以颜色辨认为目的的感官测试;说明标明题目目的和坐标规则,不在文字替代中泄露答案。词影的笔画图形线索属于字形辨认内容,文字说明给出字与位置状态及相似笔画数量。不能宣称这些感官测试变成了完全等价的无视觉玩法。
|
|
30
|
+
- 聊天客户端的焦点、缩放、读屏与消息合并行为必须在相应客户端验收,不能由服务端截图测试替代。当前测试不是整个平台的 WCAG 合规认证。
|
|
31
|
+
|
|
32
|
+
## 维护与验证
|
|
33
|
+
|
|
34
|
+
源仓库:`koishi-plugin-markdown-to-image-service`。每个消费者随包携带本地副本,不通过相邻目录做运行时导入。
|
|
35
|
+
|
|
36
|
+
在包含这 16 个仓库的 external 目录中:
|
|
37
|
+
|
|
38
|
+
```sh
|
|
39
|
+
node markdown-to-image-service/scripts/sync-design-system.mjs
|
|
40
|
+
node markdown-to-image-service/scripts/sync-design-system.mjs --check
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
单个消费者仓库也带有 `scripts/check-design-system.mjs`,校验共享文件哈希;升级时重新运行同步器,不要单独修改生成副本。该检查会拒绝未同步的本地修改。
|
|
44
|
+
|
|
45
|
+
官方色彩算法可在源仓库安装开发依赖后通过 `node scripts/build-material-colors.mjs` 重建,再同步消费者。
|
|
46
|
+
|
|
47
|
+
回归检查覆盖:24 个源色相的明暗角色对比度、奖牌前景、图表填充/轨道差异、浏览器/服务端 HCT 一致性、文字输出与身份隔离、输入冲突、可延长输入、入账异常、清空确认和 Wordle 并发/渲染失败。工作区截图脚本为 `scripts/verify-rendering.ts`,需 Puppeteer Core 和可用 Chromium。
|
|
48
|
+
|
|
49
|
+
## 本轮改动对应关系
|
|
50
|
+
|
|
51
|
+
| 范围 | 实现 |
|
|
52
|
+
| --- | --- |
|
|
53
|
+
| 共享设计规范 | 官方 HCT、2025 动态颜色角色、共享字阶与间距、同步与哈希校验 |
|
|
54
|
+
| Markdown | M3 明暗主题;旧主题名按明暗迁移;代码高亮与 Mermaid 使用 M3 角色;长代码可换行 |
|
|
55
|
+
| message-counter / monetary-rank | M3 角色与共享图表字阶、HCT 头像配色、完整文字榜单;保留昵称截断 |
|
|
56
|
+
| Wordle | 替换复制的 NYT 外观;状态符号与图例;明暗角色;文字棋盘;异常释放并发锁;安全解析模式编号 |
|
|
57
|
+
| MCDLE | 历史猜测完整文字属性;两列属性卡减少超宽表格 |
|
|
58
|
+
| 2048 / ciyi | 数字与奖牌前景按实际对比度选色 |
|
|
59
|
+
| 斗牛 / 21 点 | 付款核对记录、如实反馈退款失败、明确下注金额、延长操作窗口 |
|
|
60
|
+
| sentinel | 完整封印列表按每页 10 位展示 |
|
|
61
|
+
| 其余插件 | 图文双通道、个人文字模式、可取消/延长输入与上下文反馈 |
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
#
|
|
1
|
+
# 猜单词
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Koishi 猜词插件,包含多种词库和游戏模式。
|
|
4
4
|
|
|
5
5
|
## 安装
|
|
6
6
|
|
|
@@ -8,28 +8,32 @@
|
|
|
8
8
|
yarn add koishi-plugin-wordle-game
|
|
9
9
|
```
|
|
10
10
|
|
|
11
|
-
在 Koishi
|
|
11
|
+
在 Koishi 中启用,并安装 `database` 与 `puppeteer` 服务。
|
|
12
12
|
|
|
13
13
|
## 指令
|
|
14
14
|
|
|
15
15
|
| 指令 | 说明 |
|
|
16
16
|
| --- | --- |
|
|
17
|
-
| `wordle.开始 [长度]` |
|
|
17
|
+
| `wordle.开始 [长度]` | 开始模式选择 |
|
|
18
18
|
| `wordle.开始.<模式> [长度]` | 指定模式开局 |
|
|
19
19
|
| `wordle.猜 <内容>` | 提交猜测 |
|
|
20
|
-
| `wordle.查询进度` |
|
|
20
|
+
| `wordle.查询进度` | 查看当前进度 |
|
|
21
21
|
| `wordle.结束` | 结束游戏 |
|
|
22
22
|
| `wordle.排行榜 [人数]` | 查看排行榜 |
|
|
23
23
|
| `wordle.战绩 [@某人]` | 查询玩家记录 |
|
|
24
|
-
| `wordle.查单词 <词>` |
|
|
25
|
-
| `wordle.查成语 <成语>` |
|
|
24
|
+
| `wordle.查单词 <词>` | 查询单词并开始引导 |
|
|
25
|
+
| `wordle.查成语 <成语>` | 查询拼音和释义(汉典) |
|
|
26
26
|
| `wordle.拼音速查表` | 查看拼音速查表 |
|
|
27
|
-
| `wordle.玩法介绍` |
|
|
27
|
+
| `wordle.玩法介绍` | 查看玩法 |
|
|
28
28
|
|
|
29
|
-
模式包括经典、汉兜、词影、Numberle、Math
|
|
30
|
-
|
|
31
|
-
可用选项:`--hard`、`--uhard`、`--absurd`、`--challenge`、`--wordles`、`--free`、`--all`。
|
|
29
|
+
模式包括经典、汉兜、词影、Numberle、Math 和 Lewdle 等。部分模式支持 `--hard`、`--uhard`、`--absurd`、`--challenge`、`--wordles`、`--free` 和 `--all` 选项。
|
|
32
30
|
|
|
33
31
|
## 许可证
|
|
34
32
|
|
|
35
33
|
可按 [Apache-2.0](LICENSE-APACHE) 或 [MIT](LICENSE-MIT) 使用。
|
|
34
|
+
|
|
35
|
+
## 显示与交互
|
|
36
|
+
|
|
37
|
+
发送 `wordle.显示 文字` 或 `wordle.显示 图文` 切换个人显示偏好。同一机器人中的配套插件共享选择,重启后恢复图文。图文模式中的信息图片附带文字说明;作品素材与感官测试的适用边界见 [设计系统](./DESIGN_SYSTEM.md)。
|
|
38
|
+
|
|
39
|
+
本次更新:M3 明暗棋盘与非颜色状态符号;棋盘文字替代;多轮输入可延长;修复模式编号越界及并发锁被错误释放,渲染失败不阻断对局。
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
# Material Color Utilities
|
|
2
|
+
|
|
3
|
+
Vendored from @material/material-color-utilities 0.4.0, Copyright Google LLC.
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
Apache License
|
|
7
|
+
Version 2.0, January 2004
|
|
8
|
+
http://www.apache.org/licenses/
|
|
9
|
+
|
|
10
|
+
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
11
|
+
|
|
12
|
+
1. Definitions.
|
|
13
|
+
|
|
14
|
+
"License" shall mean the terms and conditions for use, reproduction,
|
|
15
|
+
and distribution as defined by Sections 1 through 9 of this document.
|
|
16
|
+
|
|
17
|
+
"Licensor" shall mean the copyright owner or entity authorized by
|
|
18
|
+
the copyright owner that is granting the License.
|
|
19
|
+
|
|
20
|
+
"Legal Entity" shall mean the union of the acting entity and all
|
|
21
|
+
other entities that control, are controlled by, or are under common
|
|
22
|
+
control with that entity. For the purposes of this definition,
|
|
23
|
+
"control" means (i) the power, direct or indirect, to cause the
|
|
24
|
+
direction or management of such entity, whether by contract or
|
|
25
|
+
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
26
|
+
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
27
|
+
|
|
28
|
+
"You" (or "Your") shall mean an individual or Legal Entity
|
|
29
|
+
exercising permissions granted by this License.
|
|
30
|
+
|
|
31
|
+
"Source" form shall mean the preferred form for making modifications,
|
|
32
|
+
including but not limited to software source code, documentation
|
|
33
|
+
source, and configuration files.
|
|
34
|
+
|
|
35
|
+
"Object" form shall mean any form resulting from mechanical
|
|
36
|
+
transformation or translation of a Source form, including but
|
|
37
|
+
not limited to compiled object code, generated documentation,
|
|
38
|
+
and conversions to other media types.
|
|
39
|
+
|
|
40
|
+
"Work" shall mean the work of authorship, whether in Source or
|
|
41
|
+
Object form, made available under the License, as indicated by a
|
|
42
|
+
copyright notice that is included in or attached to the work
|
|
43
|
+
(an example is provided in the Appendix below).
|
|
44
|
+
|
|
45
|
+
"Derivative Works" shall mean any work, whether in Source or Object
|
|
46
|
+
form, that is based on (or derived from) the Work and for which the
|
|
47
|
+
editorial revisions, annotations, elaborations, or other modifications
|
|
48
|
+
represent, as a whole, an original work of authorship. For the purposes
|
|
49
|
+
of this License, Derivative Works shall not include works that remain
|
|
50
|
+
separable from, or merely link (or bind by name) to the interfaces of,
|
|
51
|
+
the Work and Derivative Works thereof.
|
|
52
|
+
|
|
53
|
+
"Contribution" shall mean any work of authorship, including
|
|
54
|
+
the original version of the Work and any modifications or additions
|
|
55
|
+
to that Work or Derivative Works thereof, that is intentionally
|
|
56
|
+
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
57
|
+
or by an individual or Legal Entity authorized to submit on behalf of
|
|
58
|
+
the copyright owner. For the purposes of this definition, "submitted"
|
|
59
|
+
means any form of electronic, verbal, or written communication sent
|
|
60
|
+
to the Licensor or its representatives, including but not limited to
|
|
61
|
+
communication on electronic mailing lists, source code control systems,
|
|
62
|
+
and issue tracking systems that are managed by, or on behalf of, the
|
|
63
|
+
Licensor for the purpose of discussing and improving the Work, but
|
|
64
|
+
excluding communication that is conspicuously marked or otherwise
|
|
65
|
+
designated in writing by the copyright owner as "Not a Contribution."
|
|
66
|
+
|
|
67
|
+
"Contributor" shall mean Licensor and any individual or Legal Entity
|
|
68
|
+
on behalf of whom a Contribution has been received by Licensor and
|
|
69
|
+
subsequently incorporated within the Work.
|
|
70
|
+
|
|
71
|
+
2. Grant of Copyright License. Subject to the terms and conditions of
|
|
72
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
73
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
74
|
+
copyright license to reproduce, prepare Derivative Works of,
|
|
75
|
+
publicly display, publicly perform, sublicense, and distribute the
|
|
76
|
+
Work and such Derivative Works in Source or Object form.
|
|
77
|
+
|
|
78
|
+
3. Grant of Patent License. Subject to the terms and conditions of
|
|
79
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
80
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
81
|
+
(except as stated in this section) patent license to make, have made,
|
|
82
|
+
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
83
|
+
where such license applies only to those patent claims licensable
|
|
84
|
+
by such Contributor that are necessarily infringed by their
|
|
85
|
+
Contribution(s) alone or by combination of their Contribution(s)
|
|
86
|
+
with the Work to which such Contribution(s) was submitted. If You
|
|
87
|
+
institute patent litigation against any entity (including a
|
|
88
|
+
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
89
|
+
or a Contribution incorporated within the Work constitutes direct
|
|
90
|
+
or contributory patent infringement, then any patent licenses
|
|
91
|
+
granted to You under this License for that Work shall terminate
|
|
92
|
+
as of the date such litigation is filed.
|
|
93
|
+
|
|
94
|
+
4. Redistribution. You may reproduce and distribute copies of the
|
|
95
|
+
Work or Derivative Works thereof in any medium, with or without
|
|
96
|
+
modifications, and in Source or Object form, provided that You
|
|
97
|
+
meet the following conditions:
|
|
98
|
+
|
|
99
|
+
(a) You must give any other recipients of the Work or
|
|
100
|
+
Derivative Works a copy of this License; and
|
|
101
|
+
|
|
102
|
+
(b) You must cause any modified files to carry prominent notices
|
|
103
|
+
stating that You changed the files; and
|
|
104
|
+
|
|
105
|
+
(c) You must retain, in the Source form of any Derivative Works
|
|
106
|
+
that You distribute, all copyright, patent, trademark, and
|
|
107
|
+
attribution notices from the Source form of the Work,
|
|
108
|
+
excluding those notices that do not pertain to any part of
|
|
109
|
+
the Derivative Works; and
|
|
110
|
+
|
|
111
|
+
(d) If the Work includes a "NOTICE" text file as part of its
|
|
112
|
+
distribution, then any Derivative Works that You distribute must
|
|
113
|
+
include a readable copy of the attribution notices contained
|
|
114
|
+
within such NOTICE file, excluding those notices that do not
|
|
115
|
+
pertain to any part of the Derivative Works, in at least one
|
|
116
|
+
of the following places: within a NOTICE text file distributed
|
|
117
|
+
as part of the Derivative Works; within the Source form or
|
|
118
|
+
documentation, if provided along with the Derivative Works; or,
|
|
119
|
+
within a display generated by the Derivative Works, if and
|
|
120
|
+
wherever such third-party notices normally appear. The contents
|
|
121
|
+
of the NOTICE file are for informational purposes only and
|
|
122
|
+
do not modify the License. You may add Your own attribution
|
|
123
|
+
notices within Derivative Works that You distribute, alongside
|
|
124
|
+
or as an addendum to the NOTICE text from the Work, provided
|
|
125
|
+
that such additional attribution notices cannot be construed
|
|
126
|
+
as modifying the License.
|
|
127
|
+
|
|
128
|
+
You may add Your own copyright statement to Your modifications and
|
|
129
|
+
may provide additional or different license terms and conditions
|
|
130
|
+
for use, reproduction, or distribution of Your modifications, or
|
|
131
|
+
for any such Derivative Works as a whole, provided Your use,
|
|
132
|
+
reproduction, and distribution of the Work otherwise complies with
|
|
133
|
+
the conditions stated in this License.
|
|
134
|
+
|
|
135
|
+
5. Submission of Contributions. Unless You explicitly state otherwise,
|
|
136
|
+
any Contribution intentionally submitted for inclusion in the Work
|
|
137
|
+
by You to the Licensor shall be under the terms and conditions of
|
|
138
|
+
this License, without any additional terms or conditions.
|
|
139
|
+
Notwithstanding the above, nothing herein shall supersede or modify
|
|
140
|
+
the terms of any separate license agreement you may have executed
|
|
141
|
+
with Licensor regarding such Contributions.
|
|
142
|
+
|
|
143
|
+
6. Trademarks. This License does not grant permission to use the trade
|
|
144
|
+
names, trademarks, service marks, or product names of the Licensor,
|
|
145
|
+
except as required for reasonable and customary use in describing the
|
|
146
|
+
origin of the Work and reproducing the content of the NOTICE file.
|
|
147
|
+
|
|
148
|
+
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
149
|
+
agreed to in writing, Licensor provides the Work (and each
|
|
150
|
+
Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
151
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
152
|
+
implied, including, without limitation, any warranties or conditions
|
|
153
|
+
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
|
154
|
+
PARTICULAR PURPOSE. You are solely responsible for determining the
|
|
155
|
+
appropriateness of using or redistributing the Work and assume any
|
|
156
|
+
risks associated with Your exercise of permissions under this License.
|
|
157
|
+
|
|
158
|
+
8. Limitation of Liability. In no event and under no legal theory,
|
|
159
|
+
whether in tort (including negligence), contract, or otherwise,
|
|
160
|
+
unless required by applicable law (such as deliberate and grossly
|
|
161
|
+
negligent acts) or agreed to in writing, shall any Contributor be
|
|
162
|
+
liable to You for damages, including any direct, indirect, special,
|
|
163
|
+
incidental, or consequential damages of any character arising as a
|
|
164
|
+
result of this License or out of the use or inability to use the
|
|
165
|
+
Work (including but not limited to damages for loss of goodwill,
|
|
166
|
+
work stoppage, computer failure or malfunction, or any and all
|
|
167
|
+
other commercial damages or losses), even if such Contributor
|
|
168
|
+
has been advised of the possibility of such damages.
|
|
169
|
+
|
|
170
|
+
9. Accepting Warranty or Additional Liability. While redistributing
|
|
171
|
+
the Work or Derivative Works thereof, You may choose to offer,
|
|
172
|
+
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
173
|
+
or other liability obligations and/or rights consistent with this
|
|
174
|
+
License. However, in accepting such obligations, You may act only
|
|
175
|
+
on Your own behalf and on Your sole responsibility, not on behalf
|
|
176
|
+
of any other Contributor, and only if You agree to indemnify,
|
|
177
|
+
defend, and hold each Contributor harmless for any liability
|
|
178
|
+
incurred by, or claims asserted against, such Contributor by reason
|
|
179
|
+
of your accepting any such warranty or additional liability.
|
|
180
|
+
|
|
181
|
+
END OF TERMS AND CONDITIONS
|
|
182
|
+
|
|
183
|
+
Copyright 2021 Google LLC
|
|
184
|
+
|
|
185
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
186
|
+
you may not use this file except in compliance with the License.
|
|
187
|
+
You may obtain a copy of the License at
|
|
188
|
+
|
|
189
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
190
|
+
|
|
191
|
+
Unless required by applicable law or agreed to in writing, software
|
|
192
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
193
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
194
|
+
See the License for the specific language governing permissions and
|
|
195
|
+
limitations under the License.
|
package/lib/html/template.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { Config } from
|
|
2
|
-
export declare const
|
|
3
|
-
export declare const htmlPrefix = "<html lang=\"en\">\n<head>\n <meta charset=\"UTF-8\">\n <title>Wordle</title>\n\n <style>\n\n .pz-error__message h1 {\n font-style: normal;\n font-size: 2em;\n font-size: min(2em, 90px);\n line-height: 1.15;\n font-weight: 700;\n margin-bottom: 25px\n }\n\n .pz-error__message p {\n font-size: 1.125em;\n line-height: 1.39;\n margin-bottom: 30px;\n max-width: 510px\n }\n\n\n .pz-error__stack-trace pre {\n white-space: normal\n }\n\n button, input, optgroup, select, textarea {\n font-family: inherit;\n font-size: 100%;\n line-height: 1.15;\n margin: 0\n }\n\n button, input {\n overflow: visible\n }\n\n button, select {\n text-transform: none\n }\n\n button, [type=button], [type=reset], [type=submit] {\n -webkit-appearance: button\n }\n\n html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video {\n margin: 0;\n padding: 0;\n border: 0;\n font-size: 100%;\n font: inherit;\n vertical-align: baseline\n }\n\n article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section {\n display: block\n }\n\n body {\n line-height: 1\n }\n\n ol, ul {\n list-style: none\n }\n\n blockquote, q {\n quotes: none\n }\n\n blockquote:before, blockquote:after, q:before, q:after {\n content: \"\";\n content: none\n }\n\n table {\n border-collapse: collapse;\n border-spacing: 0\n }\n\n @font-face {\n font-family: \"nyt-franklin\";\n src: url(\"./assets/Wordle/franklin-normal-700.woff2\") format(\"woff2\");\n font-weight: 700;\n font-style: normal\n }\n\n :root {\n --green: #6aaa64;\n --green-4: #538d4e;\n --wordle-high-contrast-green: #58a351;\n --spellingBeeYellow: #f7da21;\n --miniCrosswordBlue: #95befa;\n --connectionsPeriwinkle: #b4a8ff;\n --sudoku-orange: #fb9b00;\n --tiles-green: #b5e352;\n --dailyCrosswordBlue: #6493e6;\n --yellow-3: #c9b458;\n --yellow-4: #b59f3b;\n --newsGray-10: #dfdfdf;\n --newsGray-100: #121212;\n --newsGray-85: #363636;\n --gray-3: #ccc;\n --gray-4: #dcdcdc;\n --gray-6: #f4f4f4;\n --gray-13: #d3d6da;\n --gray-18: #787c7e;\n --gray-19: #878a8c;\n --gray-20: #edeff1;\n --gray-21: #f6f7f8;\n --gray-22: #e3e3e1;\n --gray-23: #a6a6a6;\n --gray-24: #818384;\n --gray-25: #565758;\n --gray-26: #3a3a3c;\n --gray-27: #424242;\n --gray-28: #59595a;\n --gray-29: #afafaf;\n --black: #000;\n --white: #fff;\n --newsDarkContentPrimary: #f8f8f8;\n --wordleBlack: #212121;\n --wordleBlack-2: #272729;\n --wordleBlack-3: #1a1a1b;\n --wordleBlack-4: #121213;\n --wordleBlack-5: #2f2f31;\n --linkBlue: #346eb7;\n --linkDarkBlue: #6ba1dd;\n --orange: #f5793a;\n --blue: #85c0f9;\n --outlineBlue: #2671dc;\n --svg-arrow-fill: var(--white);\n --svg-arrow-stroke: var(--black);\n --svg-arrow-fill-hover: var(--black);\n --svg-arrow-stroke-hover: var(--white)\n }\n\n :root {\n --color-tone-1: var(--black);\n --color-tone-2: var(--gray-18);\n --color-tone-3: var(--gray-19);\n --color-tone-4: var(--gray-13);\n --color-tone-5: var(--gray-20);\n --color-tone-6: var(--gray-21);\n --color-tone-7: var(--white);\n --color-tone-8: var(--newsGray-100);\n --color-tone-9: var(--newsGray-10);\n --color-tone-10: var(--black);\n --color-tone-11: var(--gray-18);\n --color-tone-12: var(--newsGray-85);\n --color-nav-hover: var(--gray-6);\n --opacity-50: rgba(255, 255, 255, 0.5);\n --error-background: var(--gray-22);\n --icon-disabled: var(--gray-23);\n --background-gray: var(--gray-29);\n --inline-links: var(--linkBlue);\n --warning-red: #d0021b\n }\n\n .dark {\n --color-tone-1: var(--newsDarkContentPrimary);\n --color-tone-2: var(--gray-24);\n --color-tone-3: var(--gray-25);\n --color-tone-4: var(--gray-26);\n --color-tone-5: var(--wordleBlack-2);\n --color-tone-6: var(--wordleBlack-3);\n --color-tone-7: var(--wordleBlack-4);\n --color-tone-8: var(--newsDarkContentPrimary);\n --color-tone-9: var(--gray-27);\n --color-tone-10: var(--newsGray-10);\n --color-tone-11: var(--newsGray-10);\n --color-tone-12: var(--newsGray-10);\n --color-nav-hover: var(--wordleBlack-5);\n --opacity-50: rgba(0, 0, 0, 0.5);\n --error-background: var(--color-tone-7);\n --icon-disabled: var(--gray-28);\n --svg-arrow-fill: var(--black);\n --svg-arrow-stroke: var(--white);\n --svg-arrow-fill-hover: var(--white);\n --svg-arrow-stroke-hover: var(--black);\n --inline-links: var(--linkDarkBlue);\n --warning-red: #ea7980\n }\n\n :root, .dark {\n --color-background: var(--color-tone-7)\n }\n\n :root {\n --color-present: var(--yellow-3);\n --color-correct: var(--green);\n --color-absent: var(--color-tone-2);\n --tile-text-color: var(--color-tone-7);\n --key-text-color: var(--color-tone-1);\n --key-evaluated-text-color: var(--color-tone-7);\n --key-bg: var(--color-tone-4);\n --key-bg-present: var(--color-present);\n --key-bg-correct: var(--color-correct);\n --key-bg-absent: var(--color-absent);\n --key-evaluated-text-color: var(--color-tone-7);\n --key-evaluated-text-color-absent: var(--white);\n --modal-content-bg: var(--color-tone-7);\n --outline-focus: var(--outlineBlue);\n --color-correct-high-contrast: var(--wordle-high-contrast-green)\n }\n\n @font-face {\n font-family: \"nyt-franklin\";\n src: url(\"./assets/Wordle/franklin-normal-700.woff2\") format(\"woff2\");\n font-weight: 700;\n font-style: normal\n }\n\n html {\n height: 100%\n }\n\n body {\n height: 100%;\n background-color: var(--color-background);\n margin: 0;\n padding: 0;\n overflow-y: hidden\n }\n\n html, body {\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale\n }\n\n button:focus-visible, a:focus-visible {\n outline: 2px solid var(--outline-focus)\n }\n\n @media (min-width: 415px) {\n :root {\n --header-height: 65px\n }\n }\n\n @media (min-width: 1024px) {\n :root {\n --header-padding-x: 24px\n }\n }\n\n @media (min-width: 768px) {\n :root {\n --header-padding-x: 20px\n }\n }\n\n /*# sourceMappingURL=wordle.e3c9f95c41d06668a615.css.map*/\n\n </style>\n <style>\n .MomentSystem-module_moment__G9hyw {\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0\n }\n\n\n .LandscapeWarning-module_landscapeWarning__MFIwn i {\n height: 30%;\n width: 20%;\n margin: 2rem\n }\n\n .LandscapeWarning-module_landscapeWarning__MFIwn p {\n font-family: \"nyt-franklin\";\n font-weight: 500;\n margin: 0;\n font-size: 16px;\n font-size: 1rem;\n line-height: 20.8px;\n line-height: 1.3rem\n }\n\n .LandscapeWarning-module_landscapeWarning__MFIwn span {\n font-family: \"nyt-franklin\";\n font-weight: 700\n }\n\n\n .dark before {\n background: var(--hybrid-back-dark-mode) center no-repeat;\n background-position-x: 0px\n }\n\n .NonDismissalBanner-module_banner__CqPDp .NonDismissalBanner-module_bannerInformation__hwApG i {\n min-height: 35px;\n min-width: 35px\n }\n\n .NonDismissalBanner-module_banner__CqPDp .NonDismissalBanner-module_bannerInformation__hwApG.NonDismissalBanner-module_bannerMessageIcon__xCwfD i {\n min-height: 20px;\n min-width: 20px\n }\n\n .NonDismissalBanner-module_banner__CqPDp .NonDismissalBanner-module_bannerBody__ZtWzl h3 {\n font-size: 14px;\n font-size: 0.875rem;\n line-height: 18.2px;\n line-height: 1.1375rem;\n font-weight: 700;\n margin: 0\n }\n\n\n\n .NonDismissalBanner-module_banner__CqPDp .NonDismissalBanner-module_bannerBody__ZtWzl p {\n font-size: 16px;\n font-size: 1rem;\n line-height: 20.8px;\n line-height: 1.3rem\n }\n\n .NonDismissalBanner-module_banner__CqPDp a {\n color: inherit;\n text-decoration: none\n }\n\n\n\n\n .NonDismissalBanner-module_multiIconBannerTest__t8tvf button.NonDismissalBanner-module_iconButtonTest__oaGgl i {\n margin-right: 0\n }\n\n\n\n .NonDismissalBanner-module_multiIconBannerTest__t8tvf .NonDismissalBanner-module_bannerInformationTest__Q0Dqp i {\n min-height: 25px;\n min-width: 25px\n }\n\n\n .NonDismissalBanner-module_multiIconBannerTest__t8tvf .NonDismissalBanner-module_bannerBodyTest__UrtZZ h3 {\n font-size: .85rem;\n font-weight: 700;\n margin: 0\n }\n\n .NonDismissalBanner-module_multiIconBannerTest__t8tvf a {\n color: inherit;\n text-decoration: none\n }\n\n\n .LargeCTABanner-module_playButton__if85L i {\n width: 27px;\n height: 27px;\n border-radius: 7px\n }\n\n .LargeCTABanner-module_iconTextWrapper__goI7a + i {\n position: absolute;\n right: 10px\n }\n\n\n\n .Skip-module_skipButton__m8KJ8 svg {\n margin-left: .5rem\n }\n\n\n :root {\n --inter-ad-skip-button-height: 52px;\n --inter-ad-top-bar-height: 34px;\n --inter-ad-bottom-bar-height: 24px\n }\n\n .AdInterstitial-module_adSlug__lH065 h3 {\n font-family: \"nyt-franklin\";\n font-weight: 500;\n font-size: 12px;\n line-height: 12px;\n margin: 12px auto 10px;\n letter-spacing: .08em;\n text-transform: uppercase;\n color: #5a5a5a;\n font-style: normal\n }\n\n .Welcome-module_buttonContainer__K4GEw a {\n all: inherit\n }\n\n .Welcome-module_back__cUvW3 button::before {\n background: var(--hybrid-back) center no-repeat !important;\n background-position-x: 0px !important\n }\n\n .Tile-module_tile__UWEHN {\n font-family: \"nyt-franklin\";\n width: 100%;\n display: inline-flex;\n justify-content: center;\n align-items: center;\n font-size: 3rem;\n line-height: 1;\n font-weight: bold;\n vertical-align: middle;\n box-sizing: border-box;\n color: var(--tile-text-color);\n text-transform: uppercase;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none\n }\n\n .Tile-module_tile__UWEHN::before {\n content: \"\";\n display: inline-block;\n padding-bottom: 100%\n }\n\n @media (max-height: 600px) {\n .Tile-module_tile__UWEHN {\n font-size: 1em\n }\n }\n\n .Tile-module_tile__UWEHN[data-state=empty] {\n border: 2px solid var(--color-tone-4)\n }\n\n .Tile-module_tile__UWEHN[data-state=tbd] {\n background-color: var(--color-tone-7);\n border: 2px solid var(--color-tone-3);\n color: var(--color-tone-1)\n }\n\n .Tile-module_tile__UWEHN[data-state=correct] {\n background-color: var(--color-correct);\n color: var(--key-evaluated-text-color)\n }\n\n .Tile-module_tile__UWEHN[data-state=present] {\n background-color: var(--color-present);\n color: var(--key-evaluated-text-color)\n }\n\n .Tile-module_tile__UWEHN[data-state=absent] {\n background-color: var(--color-absent);\n color: var(--key-evaluated-text-color-absent)\n }\n\n .Tile-module_tile__UWEHN[data-animation=pop] {\n animation-name: Tile-module_PopIn__CmX51;\n animation-duration: 100ms\n }\n\n .Tile-module_tile__UWEHN[data-animation=flip-in] {\n animation-name: Tile-module_FlipIn__PCdh1;\n animation-duration: 250ms;\n animation-timing-function: ease-in\n }\n\n .Tile-module_tile__UWEHN[data-animation=flip-out] {\n animation-name: Tile-module_FlipOut__xeJcb;\n animation-duration: 250ms;\n animation-timing-function: ease-in\n }\n\n\n .Board-module_boardContainer__TBHNL {\n display: flex;\n justify-content: center;\n align-items: center;\n flex-grow: 1;\n overflow: hidden\n }\n\n .Help-module_instructions__uXsG6 li {\n margin-bottom: 4px\n }\n\n .Help-module_instructions__uXsG6 li::marker {\n font-size: 18px\n }\n\n\n .Help-module_examples__W3VXL strong {\n font-weight: bold\n }\n\n .Help-module_examples__W3VXL p {\n margin: 0;\n font-size: 16px;\n line-height: 20px\n }\n\n\n .Help-module_example__gldBI p {\n font-size: 16px;\n line-height: 20px;\n margin-top: 8px\n }\n\n\n .Help-module_reminderSignUp__oQ42D a {\n color: var(--inline-links);\n -webkit-text-decoration: underline var(--inline-links);\n text-decoration: underline var(--inline-links)\n }\n\n\n\n .Help-module_statsLogin__HkQec button {\n border: none;\n background-color: rgba(0, 0, 0, 0);\n font-family: \"nyt-franklin\";\n font-size: 16px;\n line-height: 20px;\n text-align: left;\n padding: 0px 0px 3px\n }\n\n .Help-module_statsLogin__HkQec a, .Help-module_statsLogin__HkQec button {\n color: var(--inline-links);\n -webkit-text-decoration: underline var(--inline-links);\n text-decoration: underline var(--inline-links)\n }\n\n\n .MiniAuthCTA-module_buttonsContainer__IoQWk .MiniAuthCTA-module_loginButton__x7_fR > a {\n color: inherit\n }\n\n\n .Stats-module_statsBtnLeft__IyDkc h1 {\n display: inline-block\n }\n\n .Stats-module_statsBtnLeft__IyDkc button {\n margin-left: 10px\n }\n\n .Footer-module_textContainer__LWkeW > p {\n margin: 5px\n }\n\n\n .Footer-module_buttonsContainer__YNxCQ .Footer-module_loginButton__abKD3 > a {\n color: inherit;\n text-decoration: none\n }\n\n\n .Footer-module_sbButtonFooter__X3LsB .Footer-module_nextWordle__Bzpb0 span {\n margin-right: 4px\n }\n\n\n .Footer-module_sbButtonFooter__X3LsB .Footer-module_sbPlayButton__kNigc span {\n color: #121212;\n letter-spacing: normal\n }\n\n .BotLink-module_botLink__uRdNy .BotLink-module_botLinkContent__RR4ri p {\n font: 700 14px/17.5px \"nyt-franklin\";\n margin: 0\n }\n\n .BotLink-module_botLink__uRdNy .BotLink-module_botLinkContent__RR4ri p span {\n font-weight: 400;\n text-decoration: underline\n }\n\n @media (max-height: 548px) {\n .driveToMore .BotLink-module_botLink__uRdNy .BotLink-module_botLinkContent__RR4ri p {\n font-size: 13px\n }\n }\n\n\n\n .HardModeAwareness-module_settingsButton__DGkRg svg {\n width: 12px;\n height: 12px;\n margin: 1px 0 0 5px;\n display: inline-block\n }\n\n #hardModeAwareness-dialog > div:first-child {\n padding: 0;\n max-width: 440px\n }\n\n @media (max-width: 500px) {\n #hardModeAwareness-dialog > div:first-child {\n width: 90%;\n height: auto;\n min-height: unset;\n align-self: center\n }\n }\n\n\n .ActivationRegiModal-module_loginLink__qqJOJ > a {\n color: inherit;\n text-decoration: none\n }\n\n\n .driveToMore h4 {\n font: 700 0.6875rem/0.859375rem \"nyt-franklin\";\n letter-spacing: .05em;\n border-top: solid 2px var(--color-tone-1);\n padding-top: 10px;\n margin: 0 auto 18px;\n width: calc(100% - 50px);\n display: none\n }\n\n @media (min-height: 548px) {\n .driveToMore h4 {\n display: block\n }\n }\n\n @media (min-width: 768px) {\n .driveToMore h4 {\n width: calc(100% - 100px)\n }\n }\n\n\n @media (min-width: 768px) {\n\n .driveToMore .DriveToMoreContent-module_fitContent__h6S25 h4 {\n width: 100%\n }\n }\n\n .driveToMore .DriveToMoreContent-module_fitContentGrid__TDzaq h4 {\n width: auto\n }\n\n .driveToMore .DriveToMoreContent-module_carouselGameItem__ypawW p, .driveToMore .DriveToMoreContent-module_gamesGridItem__hJIku p {\n font: 700 0.875rem/1.1875rem \"nyt-karnakcondensed\";\n margin: 5px 0 2px\n }\n\n @media (min-height: 548px) {\n .driveToMore .DriveToMoreContent-module_carouselGameItem__ypawW p, .driveToMore .DriveToMoreContent-module_gamesGridItem__hJIku p {\n font-size: 1rem\n }\n }\n\n @media (min-width: 768px) {\n .driveToMore .DriveToMoreContent-module_carouselGameItem__ypawW p, .driveToMore .DriveToMoreContent-module_gamesGridItem__hJIku p {\n font-size: 1rem\n }\n }\n\n .driveToMore .DriveToMoreContent-module_carouselGameItem__ypawW span, .driveToMore .DriveToMoreContent-module_gamesGridItem__hJIku span {\n font: 500 0.75rem/1rem \"nyt-franklin\"\n }\n\n @media (min-height: 548px) {\n .driveToMore .DriveToMoreContent-module_carouselGameItem__ypawW span, .driveToMore .DriveToMoreContent-module_gamesGridItem__hJIku span {\n font-size: 0.875rem;\n line-height: 1.125rem\n }\n }\n\n @media (min-width: 992px) {\n .driveToMore .DriveToMoreContent-module_carouselGameItem__ypawW span, .driveToMore .DriveToMoreContent-module_gamesGridItem__hJIku span {\n font-size: 0.75rem\n }\n }\n\n\n .NewsCarousel-module_carouselNewsItem__iTjNZ p {\n font: 500 0.875rem/1.09375rem nyt-cheltenham, Georgia;\n color: var(--color-tone-1);\n margin-top: 8px\n }\n\n img {\n width: 100%;\n animation: NewsCarousel-module_fadeIn__XJI1h 500ms\n }\n\n\n .NewsCarousel-module_desktopCarouselNewsItem__pjK2M p {\n font: 500 1rem/1.25rem nyt-cheltenham, Georgia;\n color: var(--color-tone-1);\n margin-top: 8px\n }\n\n\n .NewsCarousel-module_carouselControl__P2VRs svg {\n width: 100%;\n height: 100%\n }\n\n .NewsCarousel-module_carouselControl__P2VRs:hover svg {\n fill: #dfdfdf\n }\n\n .Settings-module_setting__EaMz6 a, .Settings-module_setting__EaMz6 a:visited {\n color: var(--color-tone-8);\n text-decoration: underline\n }\n\n\n .Modal-module_fullscreenStatsExit__DpWAs .Modal-module_buttonContainer__aEMIr .Modal-module_closeIconButton__y9b6c svg {\n width: 100%;\n height: auto\n }\n\n .Modal-module_closeIcon__TcEKb svg {\n width: 100%;\n height: auto\n }\n\n\n .AppHeader-module_menuRight__Noasd button svg {\n vertical-align: middle\n }\n\n @media (max-width: 499px) {\n .pz-web .AppHeader-module_menuRight__Noasd.AppHeader-module_longTextVariant__guJaD svg {\n width: 20px\n }\n }\n\n .Explainer-module_containerLink__Eahjg p:last-child {\n font-weight: 700\n }\n\n\n .Explainer-module_text__DosQz > a {\n color: var(--inline-links);\n -webkit-text-decoration: underline var(--inline-links);\n text-decoration: underline var(--inline-links)\n }\n\n\n\n .Explainer-module_headerNew__y8y2y > p {\n text-align: center;\n margin: 10px 0px\n }\n\n\n\n .Page-module_page__Py6Ys header {\n display: flex;\n justify-content: center;\n align-items: center;\n position: relative\n }\n\n .Page-module_page__Py6Ys h1 {\n font-weight: 700;\n font-size: 16px;\n letter-spacing: .5px;\n text-transform: uppercase;\n text-align: center;\n margin-bottom: 10px\n }\n\n\n\n .Page-module_headerNew__FQAkL > p {\n text-align: center;\n margin: 10px 0px\n }\n\n\n\n\n .Error-module_errorBannerContainer__pfK75 p {\n font-weight: 400;\n margin: 5px 5px 5px 10px\n }\n\n .Ad-module_adContainer__ZAFEc > *:first-child {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%)\n }\n\n .App-module_gameContainer__K_CBh {\n position: relative\n }\n\n .App-module_game__yruqo {\n width: 100%;\n max-width: var(--game-max-width);\n margin: 0 auto;\n height: calc(100% - var(--header-height));\n display: flex;\n flex-direction: column\n }\n\n .pz-offline-ticker svg path {\n fill: var(--white)\n }\n\n .StatsSelectionTool-module_form__eOT7F fieldset {\n margin-bottom: 40px\n }\n\n .dark.colorblind {\n --color-absent: var(--color-tone-4);\n --key-bg-absent: var(--color-tone-4)\n }\n\n .colorblind {\n --color-correct: var(--orange);\n --color-present: var(--blue);\n --color-absent: var(--color-tone-2);\n --tile-text-color: var(--white);\n --key-bg-present: var(--color-present);\n --key-bg-correct: var(--color-correct);\n --key-bg-absent: var(--color-tone-2);\n --key-evaluated-text-color: var(--black);\n --key-evaluated-text-color-absent: var(--white);\n --color-correct-high-contrast: var(--orange);\n --modal-content-bg: var(--color-tone-7)\n }\n\n /*# sourceMappingURL=62.9d339ad0d09ddf80c92e.css.map*/\n\n </style>";
|
|
1
|
+
import type { Config } from '../config';
|
|
2
|
+
export declare const htmlPrefix = "<!DOCTYPE html><html lang=\"zh-CN\"><head><meta charset=\"UTF-8\"><title>Wordle</title></head><body>";
|
|
3
|
+
export declare const htmlSuffix = "</body></html>";
|
|
4
4
|
export declare function htmlAfterStyle(config: Config): string;
|
|
5
5
|
export declare const defaultPinyinsHtml = " <div grid=\"~ cols-2 gap-3\" h-min=\"\">\n <div class=\"\">b</div>\n <div class=\"\">p</div>\n <div class=\"\">m</div>\n <div class=\"\">f</div>\n <div class=\"\">d</div>\n <div class=\"\">t</div>\n <div class=\"\">n</div>\n <div class=\"\">l</div>\n <div class=\"\">g</div>\n <div class=\"\">k</div>\n <div class=\"\">h</div>\n <div class=\"\">j</div>\n <div class=\"\">q</div>\n <div class=\"\">r</div>\n <div class=\"\">x</div>\n <div class=\"\">w</div>\n <div class=\"\">y</div>\n <div class=\"\">zh</div>\n <div class=\"\">ch</div>\n <div class=\"\">sh</div>\n <div class=\"\">z</div>\n <div class=\"\">c</div>\n <div class=\"\">s</div>\n </div>\n <div grid=\"~ cols-3 gap-3\" h-min=\"\">\n <div class=\"\">a</div>\n <div class=\"\">ai</div>\n <div class=\"\">an</div>\n <div class=\"\">ang</div>\n <div class=\"\">ao</div>\n <div class=\"\">e</div>\n <div class=\"\">ei</div>\n <div class=\"\">en</div>\n <div class=\"\">eng</div>\n <div class=\"\">er</div>\n <div class=\"\">i</div>\n <div class=\"\">ia</div>\n <div class=\"\">ian</div>\n <div class=\"\">iang</div>\n <div class=\"\">iao</div>\n <div class=\"\">ie</div>\n <div class=\"\">in</div>\n <div class=\"\">ing</div>\n <div class=\"\">io</div>\n <div class=\"\">iong</div>\n <div class=\"\">iu</div>\n <div class=\"\">o</div>\n <div class=\"\">ong</div>\n <div class=\"\">ou</div>\n <div class=\"\">u</div>\n <div class=\"\">ua</div>\n <div class=\"\">uai</div>\n <div class=\"\">uan</div>\n <div class=\"\">uang</div>\n <div class=\"\">ui</div>\n <div class=\"\">un</div>\n <div class=\"\">uo</div>\n <div class=\"\">\u00FC</div>\n <div class=\"\">\u00FCan</div>\n <div class=\"\">\u00FCe</div>\n <div class=\"\">\u00FCn</div>\n </div>";
|