glass-easel 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.
Files changed (237) hide show
  1. package/README.md +40 -0
  2. package/dist/glass_easel.all.d.ts +1 -0
  3. package/dist/glass_easel.all.js +2 -0
  4. package/dist/glass_easel.all.js.map +1 -0
  5. package/dist/glass_easel.domlike.global.d.ts +1 -0
  6. package/dist/glass_easel.domlike.global.js +2 -0
  7. package/dist/glass_easel.domlike.global.js.map +1 -0
  8. package/dist/index.d.ts +1 -0
  9. package/dist/index.js +1 -0
  10. package/dist/types/src/backend/backend_protocol.d.ts +119 -0
  11. package/dist/types/src/backend/backend_protocol.d.ts.map +1 -0
  12. package/dist/types/src/backend/composed_backend_protocol.d.ts +90 -0
  13. package/dist/types/src/backend/composed_backend_protocol.d.ts.map +1 -0
  14. package/dist/types/src/backend/domlike_backend_protocol.d.ts +76 -0
  15. package/dist/types/src/backend/domlike_backend_protocol.d.ts.map +1 -0
  16. package/dist/types/src/backend/mode.d.ts +46 -0
  17. package/dist/types/src/backend/mode.d.ts.map +1 -0
  18. package/dist/types/src/backend/suggested_backend_protocol.d.ts +30 -0
  19. package/dist/types/src/backend/suggested_backend_protocol.d.ts.map +1 -0
  20. package/dist/types/src/behavior.d.ts +428 -0
  21. package/dist/types/src/behavior.d.ts.map +1 -0
  22. package/dist/types/src/class_list.d.ts +79 -0
  23. package/dist/types/src/class_list.d.ts.map +1 -0
  24. package/dist/types/src/component.d.ts +291 -0
  25. package/dist/types/src/component.d.ts.map +1 -0
  26. package/dist/types/src/component_params.d.ts +239 -0
  27. package/dist/types/src/component_params.d.ts.map +1 -0
  28. package/dist/types/src/component_space.d.ts +164 -0
  29. package/dist/types/src/component_space.d.ts.map +1 -0
  30. package/dist/types/src/data_path.d.ts +5 -0
  31. package/dist/types/src/data_path.d.ts.map +1 -0
  32. package/dist/types/src/data_proxy.d.ts +107 -0
  33. package/dist/types/src/data_proxy.d.ts.map +1 -0
  34. package/dist/types/src/data_utils.d.ts +3 -0
  35. package/dist/types/src/data_utils.d.ts.map +1 -0
  36. package/dist/types/src/element.d.ts +275 -0
  37. package/dist/types/src/element.d.ts.map +1 -0
  38. package/dist/types/src/element_iterator.d.ts +43 -0
  39. package/dist/types/src/element_iterator.d.ts.map +1 -0
  40. package/dist/types/src/event.d.ts +104 -0
  41. package/dist/types/src/event.d.ts.map +1 -0
  42. package/dist/types/src/external_shadow_tree.d.ts +20 -0
  43. package/dist/types/src/external_shadow_tree.d.ts.map +1 -0
  44. package/dist/types/src/func_arr.d.ts +39 -0
  45. package/dist/types/src/func_arr.d.ts.map +1 -0
  46. package/dist/types/src/global_options.d.ts +111 -0
  47. package/dist/types/src/global_options.d.ts.map +1 -0
  48. package/dist/types/src/index.d.ts +43 -0
  49. package/dist/types/src/index.d.ts.map +1 -0
  50. package/dist/types/src/mutation_observer.d.ts +79 -0
  51. package/dist/types/src/mutation_observer.d.ts.map +1 -0
  52. package/dist/types/src/native_node.d.ts +8 -0
  53. package/dist/types/src/native_node.d.ts.map +1 -0
  54. package/dist/types/src/node.d.ts +49 -0
  55. package/dist/types/src/node.d.ts.map +1 -0
  56. package/dist/types/src/relation.d.ts +47 -0
  57. package/dist/types/src/relation.d.ts.map +1 -0
  58. package/dist/types/src/render.d.ts +3 -0
  59. package/dist/types/src/render.d.ts.map +1 -0
  60. package/dist/types/src/selector.d.ts +32 -0
  61. package/dist/types/src/selector.d.ts.map +1 -0
  62. package/dist/types/src/shadow_root.d.ts +136 -0
  63. package/dist/types/src/shadow_root.d.ts.map +1 -0
  64. package/dist/types/src/template_engine.d.ts +18 -0
  65. package/dist/types/src/template_engine.d.ts.map +1 -0
  66. package/dist/types/src/text_node.d.ts +32 -0
  67. package/dist/types/src/text_node.d.ts.map +1 -0
  68. package/dist/types/src/tmpl/index.d.ts +18 -0
  69. package/dist/types/src/tmpl/index.d.ts.map +1 -0
  70. package/dist/types/src/tmpl/native_rendering.d.ts +45 -0
  71. package/dist/types/src/tmpl/native_rendering.d.ts.map +1 -0
  72. package/dist/types/src/tmpl/proc_gen_wrapper.d.ts +80 -0
  73. package/dist/types/src/tmpl/proc_gen_wrapper.d.ts.map +1 -0
  74. package/dist/types/src/tmpl/proc_gen_wrapper_dom.d.ts +50 -0
  75. package/dist/types/src/tmpl/proc_gen_wrapper_dom.d.ts.map +1 -0
  76. package/dist/types/src/tmpl/range_list_diff.d.ts +19 -0
  77. package/dist/types/src/tmpl/range_list_diff.d.ts.map +1 -0
  78. package/dist/types/src/trait_behaviors.d.ts +38 -0
  79. package/dist/types/src/trait_behaviors.d.ts.map +1 -0
  80. package/dist/types/src/virtual_node.d.ts +10 -0
  81. package/dist/types/src/virtual_node.d.ts.map +1 -0
  82. package/dist/types/tests/backend/domlike.test.d.ts +2 -0
  83. package/dist/types/tests/backend/domlike.test.d.ts.map +1 -0
  84. package/dist/types/tests/base/env.d.ts +29 -0
  85. package/dist/types/tests/base/env.d.ts.map +1 -0
  86. package/dist/types/tests/base/match.d.ts +9 -0
  87. package/dist/types/tests/base/match.d.ts.map +1 -0
  88. package/dist/types/tests/core/backend.test.d.ts +2 -0
  89. package/dist/types/tests/core/backend.test.d.ts.map +1 -0
  90. package/dist/types/tests/core/behavior.test.d.ts +2 -0
  91. package/dist/types/tests/core/behavior.test.d.ts.map +1 -0
  92. package/dist/types/tests/core/component_space.test.d.ts +2 -0
  93. package/dist/types/tests/core/component_space.test.d.ts.map +1 -0
  94. package/dist/types/tests/core/data_update.test.d.ts +2 -0
  95. package/dist/types/tests/core/data_update.test.d.ts.map +1 -0
  96. package/dist/types/tests/core/misc.test.d.ts +2 -0
  97. package/dist/types/tests/core/misc.test.d.ts.map +1 -0
  98. package/dist/types/tests/core/placeholder.test.d.ts +2 -0
  99. package/dist/types/tests/core/placeholder.test.d.ts.map +1 -0
  100. package/dist/types/tests/core/slot.test.d.ts +2 -0
  101. package/dist/types/tests/core/slot.test.d.ts.map +1 -0
  102. package/dist/types/tests/core/trait_behaviors.test.d.ts +2 -0
  103. package/dist/types/tests/core/trait_behaviors.test.d.ts.map +1 -0
  104. package/dist/types/tests/tmpl/binding_map.test.d.ts +2 -0
  105. package/dist/types/tests/tmpl/binding_map.test.d.ts.map +1 -0
  106. package/dist/types/tests/tmpl/event.test.d.ts +2 -0
  107. package/dist/types/tests/tmpl/event.test.d.ts.map +1 -0
  108. package/dist/types/tests/tmpl/expression.test.d.ts +2 -0
  109. package/dist/types/tests/tmpl/expression.test.d.ts.map +1 -0
  110. package/dist/types/tests/tmpl/lvalue.test.d.ts +2 -0
  111. package/dist/types/tests/tmpl/lvalue.test.d.ts.map +1 -0
  112. package/dist/types/tests/tmpl/native_rendering.test.d.ts +2 -0
  113. package/dist/types/tests/tmpl/native_rendering.test.d.ts.map +1 -0
  114. package/dist/types/tests/tmpl/structure.test.d.ts +2 -0
  115. package/dist/types/tests/tmpl/structure.test.d.ts.map +1 -0
  116. package/dist/types/tests/types/chaining.test.d.ts +2 -0
  117. package/dist/types/tests/types/chaining.test.d.ts.map +1 -0
  118. package/dist/types/tests/types/createElement.test.d.ts +2 -0
  119. package/dist/types/tests/types/createElement.test.d.ts.map +1 -0
  120. package/dist/types/tests/types/definition.test.d.ts +2 -0
  121. package/dist/types/tests/types/definition.test.d.ts.map +1 -0
  122. package/guide/zh_CN/advanced/binding_map_update.md +32 -0
  123. package/guide/zh_CN/advanced/build_args.md +28 -0
  124. package/guide/zh_CN/advanced/component_filter.md +70 -0
  125. package/guide/zh_CN/advanced/component_space.md +124 -0
  126. package/guide/zh_CN/advanced/custom_backend.md +53 -0
  127. package/guide/zh_CN/advanced/error_listener.md +32 -0
  128. package/guide/zh_CN/advanced/external_component.md +73 -0
  129. package/guide/zh_CN/advanced/template_engine.md +61 -0
  130. package/guide/zh_CN/appendix/backend_protocol.md +501 -0
  131. package/guide/zh_CN/appendix/list_diff_algorithm.md +406 -0
  132. package/guide/zh_CN/basic/beginning.md +94 -0
  133. package/guide/zh_CN/basic/component.md +156 -0
  134. package/guide/zh_CN/basic/event.md +169 -0
  135. package/guide/zh_CN/basic/lifetime.md +66 -0
  136. package/guide/zh_CN/basic/method.md +62 -0
  137. package/guide/zh_CN/basic/template.md +135 -0
  138. package/guide/zh_CN/data_management/advanced_update.md +170 -0
  139. package/guide/zh_CN/data_management/data_deep_copy.md +157 -0
  140. package/guide/zh_CN/data_management/data_observer.md +154 -0
  141. package/guide/zh_CN/data_management/property_early_init.md +31 -0
  142. package/guide/zh_CN/data_management/pure_data_pattern.md +21 -0
  143. package/guide/zh_CN/index.md +93 -0
  144. package/guide/zh_CN/interaction/behavior.md +52 -0
  145. package/guide/zh_CN/interaction/component_path.md +37 -0
  146. package/guide/zh_CN/interaction/generic.md +73 -0
  147. package/guide/zh_CN/interaction/placeholder.md +40 -0
  148. package/guide/zh_CN/interaction/relation.md +151 -0
  149. package/guide/zh_CN/interaction/slot.md +137 -0
  150. package/guide/zh_CN/interaction/template_import.md +94 -0
  151. package/guide/zh_CN/interaction/trait_behavior.md +117 -0
  152. package/guide/zh_CN/styling/external_class.md +46 -0
  153. package/guide/zh_CN/styling/style_isolation.md +54 -0
  154. package/guide/zh_CN/styling/virtual_host.md +52 -0
  155. package/guide/zh_CN/tree/element_iterator.md +54 -0
  156. package/guide/zh_CN/tree/mutation_observer.md +52 -0
  157. package/guide/zh_CN/tree/node_tree.md +142 -0
  158. package/guide/zh_CN/tree/node_tree_modification.md +78 -0
  159. package/guide/zh_CN/tree/selector.md +66 -0
  160. package/jest.config.js +6 -0
  161. package/jest.dts.config.js +9 -0
  162. package/jest.unit.config.js +14 -0
  163. package/package.json +28 -0
  164. package/src/backend/backend_protocol.ts +313 -0
  165. package/src/backend/composed_backend_protocol.ts +252 -0
  166. package/src/backend/domlike_backend_protocol.ts +370 -0
  167. package/src/backend/mode.ts +51 -0
  168. package/src/backend/suggested_backend_protocol.ts +83 -0
  169. package/src/behavior.ts +1655 -0
  170. package/src/bootstrap_dom_dev.js +22 -0
  171. package/src/class_list.ts +376 -0
  172. package/src/component.ts +1309 -0
  173. package/src/component_params.ts +461 -0
  174. package/src/component_space.ts +547 -0
  175. package/src/data_path.ts +225 -0
  176. package/src/data_proxy.ts +670 -0
  177. package/src/data_utils.ts +50 -0
  178. package/src/element.ts +1966 -0
  179. package/src/element_iterator.ts +158 -0
  180. package/src/event.ts +401 -0
  181. package/src/external_shadow_tree.ts +27 -0
  182. package/src/func_arr.ts +198 -0
  183. package/src/global_options.ts +242 -0
  184. package/src/index.ts +187 -0
  185. package/src/mutation_observer.ts +252 -0
  186. package/src/native_node.ts +74 -0
  187. package/src/node.ts +174 -0
  188. package/src/relation.ts +380 -0
  189. package/src/render.ts +25 -0
  190. package/src/selector.ts +218 -0
  191. package/src/shadow_root.ts +766 -0
  192. package/src/template_engine.ts +45 -0
  193. package/src/text_node.ts +149 -0
  194. package/src/tmpl/index.ts +199 -0
  195. package/src/tmpl/native_rendering.ts +175 -0
  196. package/src/tmpl/proc_gen_wrapper.ts +954 -0
  197. package/src/tmpl/proc_gen_wrapper_dom.ts +230 -0
  198. package/src/tmpl/range_list_diff.ts +443 -0
  199. package/src/trait_behaviors.ts +51 -0
  200. package/src/virtual_node.ts +51 -0
  201. package/tests/backend/domlike.test.ts +254 -0
  202. package/tests/base/env.ts +78 -0
  203. package/tests/base/match.ts +185 -0
  204. package/tests/core/backend.test.ts +144 -0
  205. package/tests/core/behavior.test.ts +546 -0
  206. package/tests/core/component_space.test.ts +212 -0
  207. package/tests/core/data_update.test.ts +461 -0
  208. package/tests/core/misc.test.ts +339 -0
  209. package/tests/core/placeholder.test.ts +180 -0
  210. package/tests/core/slot.test.ts +1495 -0
  211. package/tests/core/trait_behaviors.test.ts +153 -0
  212. package/tests/legacy/README.md +3 -0
  213. package/tests/legacy/behavior.test.js +293 -0
  214. package/tests/legacy/component.test.js +1247 -0
  215. package/tests/legacy/data_path.test.js +149 -0
  216. package/tests/legacy/data_proxy.test.js +759 -0
  217. package/tests/legacy/element_iterator.test.js +148 -0
  218. package/tests/legacy/event.test.js +849 -0
  219. package/tests/legacy/external.test.js +510 -0
  220. package/tests/legacy/extra_info.test.js +109 -0
  221. package/tests/legacy/generics.test.js +176 -0
  222. package/tests/legacy/mutation_observer.test.js +210 -0
  223. package/tests/legacy/relation.test.js +517 -0
  224. package/tests/legacy/selector.test.js +263 -0
  225. package/tests/legacy/slot.test.js +915 -0
  226. package/tests/legacy/virtual.test.js +394 -0
  227. package/tests/tmpl/binding_map.test.ts +208 -0
  228. package/tests/tmpl/event.test.ts +206 -0
  229. package/tests/tmpl/expression.test.ts +429 -0
  230. package/tests/tmpl/lvalue.test.ts +160 -0
  231. package/tests/tmpl/native_rendering.test.ts +155 -0
  232. package/tests/tmpl/structure.test.ts +998 -0
  233. package/tests/types/chaining.test.ts +614 -0
  234. package/tests/types/createElement.test.ts +82 -0
  235. package/tests/types/definition.test.ts +442 -0
  236. package/tsconfig.json +11 -0
  237. package/webpack.config.js +270 -0
@@ -0,0 +1,501 @@
1
+ # glass-easel Backend Protocol
2
+
3
+ glass-easel 支持自定义后端。后端必须向 glass-easel 提供以下这些接口,使得 glass-easel 能够正确向后端输出所需信息。
4
+
5
+
6
+ ## 本文档说明
7
+
8
+ ### 后端协议模式
9
+
10
+ 后端协议分为两种模式:
11
+
12
+ * Shadow Mode : glass-easel 仅工作在 shadow tree 上,由后端完成 shadow tree 到 composed tree 的拼接;
13
+ * Composed Mode : glass-easel 工作在 shadow tree 和 composed tree 上。
14
+
15
+ 两种模式需要的接口不同。仅有其中一种模式下需要的接口,会在这个接口上特别说明。
16
+
17
+ ### 节点类型
18
+
19
+ 节点分为以下类型:
20
+
21
+ * 普通节点;
22
+ * 文本节点(仅承载文本,无子节点);
23
+ * 片段节点(用于临时承载节点树片段);
24
+ * 组件节点(仅 Shadow Mode ,拥有自己的 shadow tree ,可为虚拟或非虚拟);
25
+ * 虚拟节点(仅 Shadow Mode )。
26
+
27
+ ### 接口形式
28
+
29
+ 后端协议以 TypeScript 为基础语言,接口形式为面向对象形式。
30
+
31
+ 文档中以 `Class#method(...)` 形式标注的接口表示是对应 Class 的实例方法,即 `Class.prototype.method(...)` 。
32
+
33
+ 文档中标记为 async 的接口,统一为回调函数形式,即 `async Class#method(...): T` 实际为 `Class.prototype.method(..., (T) => void)` 。
34
+
35
+ ### 其他说明
36
+
37
+ * glass-easel 可以保证一个节点的祖先节点列表中一定没有其自身(即不会成环)。
38
+
39
+
40
+ ## Context
41
+
42
+ 后端提供的一个对象。每个 Context 实例可以在界面上展示一棵节点树。
43
+
44
+ ### `createContext(options: any, cb: (ContextWrapper) => void)`
45
+
46
+ 创建一个 Context 实例。
47
+
48
+ **这只是一个建议性质的接口。** glass-easel 并不会自行调用这个接口。应由其他模块调用这个接口并将结果传递给 glass-easel , `options` 由这些模块与后端约定。
49
+
50
+ ### `ContextWrapper.get(): Context`
51
+
52
+ 获得创建好的 Context 实例。
53
+
54
+ **这只是一个建议性质的接口。** glass-easel 并不会自行调用这个接口。应由其他模块调用这个接口。
55
+
56
+ ### `Context#mode: ContextMode`
57
+
58
+ 协议模式。
59
+
60
+ ### `Context#destroy(): void`
61
+
62
+ 销毁一个 Context 实例。
63
+
64
+ glass-easel 并不会自行调用这个接口。应由其他模块调用这个接口。
65
+
66
+ ### `Context#getWindowWidth(): number`
67
+
68
+ 获得这个 Context 的显示区域宽度。
69
+
70
+ ### `Context#getWindowHeight(): number`
71
+
72
+ 获得这个 Context 的显示区域高度。
73
+
74
+ ### `Context#getDevicePixelRatio(): number`
75
+
76
+ 获得这个 Context 的显示区域像素比。
77
+
78
+ ### `Context#getTheme(): string`
79
+
80
+ 获得这个 Context 的当前主题,通常是 `"light"` 或 `"dark"` 其一。
81
+
82
+ ### `Context#registerStyleSheetContent(path: string, content: any)`
83
+
84
+ 注册一段样式表。
85
+
86
+ `path` 为样式表路径, `content` 为对应的 CSS 样式表。样式表需要是后端可解读的格式。
87
+
88
+ 如果 CSS 中包含 `@import` 等引用逻辑,其路径对应的内容有可能也被另一次 `registerStyleSheetContent` 调用注册,注册时机可能早于或晚于此次注册。
89
+
90
+ ### `Context#appendStyleSheetPath(path: string, styleScope?: number): number`
91
+
92
+ 插入一个样式表项,其内容来自指定的路径。 `styleScope` 是一个可选的 scope 标识符。返回新建的样式表 index 。
93
+
94
+ 如果 styleScope 不为正整数,则视为空;为空时,视为全局生效的样式表。
95
+
96
+ ### `Context#disableStyleSheet(index: number): void`
97
+
98
+ 禁用一段已插入的样式表。
99
+
100
+ ### `Context#addStyleSheetRule(mediaQueryStr: string, selector: string): number | null`
101
+
102
+ 插入一段样式表规则,返回它对应的规则序号。
103
+
104
+ 如果样式表规则无效或插入失败,则返回空值。
105
+
106
+ **这只是一个建议性质的接口。** glass-easel 并不会自行调用这个接口,但其他相关模块很可能调用。
107
+
108
+ ### `Context#getStyleSheetIndexForNewRules(): number | null`
109
+
110
+ 获取新插入规则所在的样式表序号。
111
+
112
+ 如果失败,则返回空值。
113
+
114
+ **这只是一个建议性质的接口。** glass-easel 并不会自行调用这个接口,但其他相关模块很可能调用。
115
+
116
+ ### `Context#resetStyleSheetRule(sheetIndex: number, ruleIndex: number): number | null`
117
+
118
+ 重置指定样式表中的指定规则,返回其对应的规则序号。
119
+
120
+ 如果失败,则返回空值。
121
+
122
+ **这只是一个建议性质的接口。** glass-easel 并不会自行调用这个接口,但其他相关模块很可能调用。
123
+
124
+ ### `Context#modifyStyleSheetRuleSelector(sheetIndex: number, ruleIndex: number,selector: string): number | null`
125
+
126
+ 更改指定样式表中的指定规则的选择器,返回其对应的规则序号。
127
+
128
+ 如果失败,则返回空值。
129
+
130
+ **这只是一个建议性质的接口。** glass-easel 并不会自行调用这个接口,但其他相关模块很可能调用。
131
+
132
+ ### `Context#addStyleSheetProperty(sheetIndex: number, ruleIndex: number, inlineStyle: string): number | null`
133
+
134
+ 向指定样式表中的指定规则中添加CSS属性,返回其对应的末项属性序号。
135
+
136
+ 如果失败,则返回空值。
137
+
138
+ **这只是一个建议性质的接口。** glass-easel 并不会自行调用这个接口,但其他相关模块很可能调用。
139
+
140
+ ### `Context#replaceStyleSheetAllProperties(sheetIndex: number, ruleIndex: number, inlineStyle: string): number | null`
141
+
142
+ 替换指定样式表中的指定规则中的全部CSS属性,返回其对应的末项属性序号。
143
+
144
+ 如果失败,则返回空值。
145
+
146
+ **这只是一个建议性质的接口。** glass-easel 并不会自行调用这个接口,但其他相关模块很可能调用。
147
+
148
+ ### `Context#replaceStyleSheetAllProperties(sheetIndex: number, ruleIndex: number, propertyIndex: number, disabled: boolean): number | null`
149
+
150
+ 开关指定样式表中的指定规则中的指定CSS属性,返回其对应的属性序号。
151
+
152
+ 如果失败,则返回空值。
153
+
154
+ **这只是一个建议性质的接口。** glass-easel 并不会自行调用这个接口,但其他相关模块很可能调用。
155
+
156
+ ### `Context#removeStyleSheetProperty(sheetIndex: number, ruleIndex: number, propertyIndex: number, disabled: boolean): number | null`
157
+
158
+ 移除指定样式表中的指定规则中的指定CSS属性,返回其对应的属性序号。
159
+
160
+ 如果失败,则返回空值。
161
+
162
+ **这只是一个建议性质的接口。** glass-easel 并不会自行调用这个接口,但其他相关模块很可能调用。
163
+
164
+ ### `Context#replaceStyleSheetProperty(sheetIndex: number, ruleIndex: number, propertyIndex: number, inlineStyle: string): number | null`
165
+
166
+ 替换指定样式表中的指定规则中的指定CSS属性,返回其对应的属性序号。
167
+
168
+ 如果失败,则返回空值。
169
+
170
+ **这只是一个建议性质的接口。** glass-easel 并不会自行调用这个接口,但其他相关模块很可能调用。
171
+
172
+ ### `Context#render(cb: (Error | null) => void): void`
173
+
174
+ 等待下一次渲染完成时的回调,即与后端节拍器对齐。
175
+
176
+ 后端必须保证回调是异步的。在回调中,设置新的属性应能触发 CSS transition 动画。
177
+
178
+ ### `Context#getRootNode(): Element`
179
+
180
+ 获得根节点。
181
+
182
+ **在 Shadow Mode 下** ,根节点必须是组件节点; **在 Composed Mode 下** ,根节点必须是普通节点。
183
+
184
+ ### `Context#createElement(tagName: string): Element`
185
+
186
+ 创建一个普通节点。
187
+
188
+ **仅 Composed Mode 有效。**
189
+
190
+ ### `Context#createTextNode(content: string): Element`
191
+
192
+ 创建一个文本节点。
193
+
194
+ **仅 Composed Mode 有效。**
195
+
196
+ ### `Context#createFragment(): Element`
197
+
198
+ 创建一个片段节点。它用于表示节点数组,方便批量插入和移除节点。
199
+
200
+ ### `Context#onEvent(listener: (target: Node, type: string, detail: any, options: EventOptions) => EventBubbleStatus): void`
201
+
202
+ 设置全局事件回调函数。这个回调函数只有一个。
203
+
204
+ ### `Context#setFocusedNode(target: Node): void`
205
+
206
+ 设置焦点所在节点。如果节点不可聚焦,则移除焦点。
207
+
208
+ **这只是一个建议性质的接口。** glass-easel 并不会自行调用这个接口,但其他相关模块很可能调用。
209
+
210
+ ### `async Context#getFocusedNode(): Node | undefined`
211
+
212
+ 获得焦点所在节点。
213
+
214
+ **这只是一个建议性质的接口。** glass-easel 并不会自行调用这个接口,但其他相关模块很可能调用。
215
+
216
+ ### `async Context#elementFromPoint(left: number, top: number): Node | undefined`
217
+
218
+ 根据坐标,获得坐标位置上的节点。
219
+
220
+ **这只是一个建议性质的接口。** glass-easel 并不会自行调用这个接口,但其他相关模块很可能调用。
221
+
222
+
223
+ ## Element
224
+
225
+ ### `Element#release(): void`
226
+
227
+ 释放一个节点。
228
+
229
+ ### `Element#associateValue(associatedValue?: Node): void`
230
+
231
+ 通知节点相关信息已经创建完毕,并为节点设置一个关联值。对除文本节点以外的节点都会调用一次。
232
+
233
+ 对于使用 `Context#createElement` 或 `ShadowRootContext#createComponent` 创建的节点,会被调用且仅被调用一次;对于其他节点,不会被调用。
234
+
235
+ ### `Element#getShadowRoot(): ShadowRootContext | undefined`
236
+
237
+ 对于组件节点,返回它的 ShadowRootContext ;否则返回 undefined 。
238
+
239
+ **仅 Shadow Mode 有效。**
240
+
241
+ ### `Element#appendChild(child: Element): void`
242
+
243
+ 追加一个子节点。
244
+
245
+ 被插入的子节点可以保证是没有父节点的。
246
+
247
+ ### `Element#removeChild(child: Element, index?: number): void`
248
+
249
+ 移除一个子节点。这个子节点可能在后续被再次使用。
250
+
251
+ 如果提供了 `index` ,则它必须等于子节点在子节点列表中的序号。
252
+
253
+ 如果 `index` 不为非负整数,则视为 undefined 。
254
+
255
+ ### `Element#insertBefore(child: Element, before: Element, index?: number): void`
256
+
257
+ 插入一个子节点。根据参数不同有不同行为:
258
+
259
+ * 如果没提供 `before` 和 `index` ,相当于追加子节点;
260
+ * 如果提供了 `before` 或 `index` ,则在它之前插入一个子节点;
261
+ * 如果同时提供了 `before` 和 `index` ,则 `index` 必等于 `before` 节点在子节点列表中的序号。
262
+
263
+ 如果 `index` 不为非负整数,则视为 undefined 。
264
+
265
+ 被插入的子节点可以保证是没有父节点的。
266
+
267
+ ### `Element#replaceChild(child: Element, oldChild: Element, index?: number): void`
268
+
269
+ 插入一个子节点。根据参数不同有不同行为:
270
+
271
+ * 如果没提供 `oldChild` 和 `index` ,相当于追加子节点;
272
+ * 如果提供了 `oldChild` 或 `index` ,则替换这个子节点;
273
+ * 如果同时提供了 `oldChild` 和 `index` ,则 `index` 必等于 `oldChild` 节点在子节点列表中的序号。
274
+
275
+ 如果 `index` 不为非负整数,则视为 undefined 。
276
+
277
+ 被插入的子节点可以保证是没有父节点的。
278
+
279
+ ### `Element#spliceBefore(before: Element, deleteCount: number, list: Element): void`
280
+
281
+ 删除从 `before` 开始的 `deleteCount` 个节点,并在这个位置插入 `list` 中包含的所有节点。
282
+
283
+ `list` 必然是片段节点,应被清空,但可能被再次使用。
284
+
285
+ 被插入的所有节点可以保证是没有父节点的。
286
+
287
+ ### `Element#spliceAppend(list: Element): void`
288
+
289
+ 追加 `list` 中包含的所有节点。
290
+
291
+ `list` 必然是片段节点,应被清空,但可能被再次使用。
292
+
293
+ 被插入的所有节点可以保证是没有父节点的。
294
+
295
+ ### `Element#spliceRemove(before: Element, deleteCount: number): void`
296
+
297
+ 删除从 `before` 开始的 `deleteCount` 个节点。
298
+
299
+ ### `Element#setId(id: string): void`
300
+
301
+ 设置节点 id 。
302
+
303
+ ### `Element#setSlotName(name: string)`
304
+
305
+ 将节点设为 slot 节点并设置 slot name 。
306
+
307
+ **仅 Shadow Mode 有效。**
308
+
309
+ ### `Element#setSlot(slot: string, inherit: boolean)`
310
+
311
+ 设置节点的目标 slot ;若 `inherit` 为 true ,则将节点设为 slot-inherit 节点。
312
+
313
+ 对于 slot-inherit 节点,它的子节点在 composed tree 上并不视为子节点,而视为它之后的兄弟节点。这可以使得这些子节点拥有不同的目标 slot 。
314
+
315
+ 节点仅在初始化阶段、还没有子节点时才会被设为 slot-inherit 节点;一旦节点被设为 slot-inherit 节点,就不会再被设为非 slot-inherit 节点。
316
+
317
+ **仅 Shadow Mode 有效。**
318
+
319
+ ### `Element#setStyleScope(styleScope: number): void`
320
+
321
+ 设置节点的 scope 标识符。对于同一个节点,最多被设置一次。
322
+
323
+ 如果 styleScope 不为正整数,则视为空。
324
+
325
+ 在匹配样式规则时,如果使用除 class 以外的节点选择器(如标签名选择器、 ID 选择器)来匹配这个节点,则样式表的 scope 标识符必须为空或等于这个节点的 scope 标识符。
326
+
327
+ **在 Shadow Mode 下** ,仅对普通节点和非虚组件节点调用; **在 Composed Mode 下** ,仅对普通节点调用。
328
+
329
+ ### `Element#replaceStyleSheetInlineStyle(styleText: string): void`
330
+
331
+ 设置节点 style 。
332
+
333
+ **在 Shadow Mode 下** ,仅对普通节点和非虚组件节点调用; **在 Composed Mode 下** ,仅对普通节点调用。
334
+
335
+ ### `Element#addClass(elementClass: string, styleScope?: number): void`
336
+
337
+ 为节点添加一个 class 。
338
+
339
+ 如果 styleScope 不为非负整数,则视为空。
340
+
341
+ 在匹配样式规则时,如果使用这个 class 来匹配这个节点,则样式表的 scope 标识符必须为空或等于这个 `styleScope` 。
342
+
343
+ **在 Shadow Mode 下** ,仅对普通节点和非虚组件节点调用; **在 Composed Mode 下** ,仅对普通节点调用。
344
+
345
+ ### `Element#removeClass(elementClass: string, styleScope?: number): void`
346
+
347
+ 移除指定的 class (如果名称和 styleScope 都能匹配上的话)。
348
+
349
+ 如果 styleScope 不为非负整数,则视为空。
350
+
351
+ **在 Shadow Mode 下** ,仅对普通节点和非虚组件节点调用; **在 Composed Mode 下** ,仅对普通节点调用。
352
+
353
+ ### `Element#clearClasses(): void`
354
+
355
+ 移除所有 class 。
356
+
357
+ **在 Shadow Mode 下** ,仅对普通节点和非虚组件节点调用; **在 Composed Mode 下** ,仅对普通节点调用。
358
+
359
+ ### `Element#setAttribute(name: string, value: any): void`
360
+
361
+ 设置节点的一个属性。
362
+
363
+ 仅对普通节点调用。
364
+
365
+ ### `Element#removeAttribute(name: string): void`
366
+
367
+ 移除节点的一个属性。
368
+
369
+ 仅对普通节点调用。
370
+
371
+ ### `Element#setText(content: string): void`
372
+
373
+ 设置文本内容。
374
+
375
+ 仅对文本节点调用。
376
+
377
+ ### `async Element#getContext(): any`
378
+
379
+ 获得与对应节点关联的上下文对象。
380
+
381
+ glass-easel 并不理解具体的对象细节。
382
+
383
+ **这只是一个建议性质的接口。** glass-easel 并不会自行调用这个接口,但其他相关模块很可能调用。
384
+
385
+ ### `async Element#getAllComputedStyles(): { properties: CSSProperty[] }`
386
+
387
+ 获得节点的计算样式。其中 `CSSProperty` 定义如下:
388
+
389
+ ```typescript
390
+ type CSSProperty = {
391
+ name: string;
392
+ value: string;
393
+ disabled: boolean;
394
+ invalid: boolean;
395
+ };
396
+ ```
397
+
398
+ **这只是一个建议性质的接口。** glass-easel 并不会自行调用这个接口,但其他相关模块很可能调用。
399
+
400
+ ### `async Element#getMatchedRules(): { inline: CSSProperty[], rules: CSSRule[] }`
401
+
402
+ 获得节点匹配到的样式表规则,包括内联规则。其中 `CSSRule` 定义如下:
403
+
404
+ ```typescript
405
+ type glass-easelCSSRule = {
406
+ sheetIndex: number;
407
+ ruleIndex: number;
408
+ mediaQueries: string[];
409
+ selector: string;
410
+ properties: glass-easelCSSProperty[];
411
+ weightHighBits: number;
412
+ weightLowBits: number;
413
+ };
414
+ ```
415
+
416
+ **这只是一个建议性质的接口。** glass-easel 并不会自行调用这个接口,但其他相关模块很可能调用。
417
+
418
+ ### `async Element#getBoundingClientRect(): { left: number, top: number, width: number, height: number }`
419
+
420
+ 获得节点的外接矩形区域。如果节点不是规整的矩形区域(如是内联文本或被旋转过的矩形),需要计算它的最小外接矩形区域。
421
+
422
+ 如果节点没有布局信息,返回全 0 值。
423
+
424
+ **这只是一个建议性质的接口。** glass-easel 并不会自行调用这个接口,但其他相关模块很可能调用。
425
+
426
+ ### `async Element#getScrollPosition(): { scrollLeft: number, scrollTop: number, scrollWidth: number, scrollHeight: number }`
427
+
428
+ 获得节点的内部滚动位置。
429
+
430
+ 如果节点不可滚动,返回位置 0 值和自身尺寸值。
431
+
432
+ **这只是一个建议性质的接口。** glass-easel 并不会自行调用这个接口,但其他相关模块很可能调用。
433
+
434
+ ### `Element#setScrollPosition(scrollLeft: number, scrollTop: number, duration: number)`
435
+
436
+ 设置节点的内部滚动位置。如果滚动位置非法或节点不支持滚动,则忽略。
437
+
438
+ **这只是一个建议性质的接口。** glass-easel 并不会自行调用这个接口,但其他相关模块很可能调用。
439
+
440
+ ### `Element#setEventDefaultPrevented(type: string, enabled: boolean)`
441
+
442
+ 将一个节点上的某个事件响应设置(或取消设置)为禁止默认行为的。
443
+
444
+ 节点上被绑定某个事件的监听器时,无论 `enabled` 值如何,这个调用必然被触发。因此可用于判断该节点是否曾绑定有该事件的监听器。
445
+
446
+
447
+ ## ShadowRootContext
448
+
449
+ 代表一个 shadow tree 环境。
450
+
451
+ **这个对象仅 Shadow Mode 有效。**
452
+
453
+ ### `ShadowRootContext#getRootNode(): Element`
454
+
455
+ 获得根节点。
456
+
457
+ **仅 Shadow Mode 有效。**
458
+
459
+ ### `ShadowRootContext#createElement(tagName: string): Element`
460
+
461
+ 创建一个普通节点。
462
+
463
+ **仅 Shadow Mode 有效。**
464
+
465
+ ### `ShadowRootContext#createTextNode(content: string): Element`
466
+
467
+ 创建一个文本节点。
468
+
469
+ **仅 Shadow Mode 有效。**
470
+
471
+ ### `ShadowRootContext#createComponent(tagName: string, isVirtual: boolean): Element`
472
+
473
+ 创建一个组件节点。可以指定为虚或非虚。虚组件节点的 tagName 无效。
474
+
475
+ **仅 Shadow Mode 有效。**
476
+
477
+ ### `createExternalComponent(shadowRoot: Element, slot: Element): Element`
478
+
479
+ 创建一个外部组件节点。外部组件是一个已经预建好的后端节点树,与其他部分直接拼接在一起。
480
+
481
+ **仅 Shadow Mode 有效。**
482
+
483
+ ### `ShadowRootContext#createVirtualNode(): Element`
484
+
485
+ 创建一个虚节点。
486
+
487
+ **仅 Shadow Mode 有效。**
488
+
489
+ ## enum ContextMode
490
+
491
+ 表示以 Shadow Mode 还是 Composed Mode 运行。
492
+
493
+ * `ContextMode.Composed = 1` 运行于 Composed Mode ;
494
+ * `ConetxtMode.Shadow = 2` 运行于 Shadow Mode 。
495
+
496
+ ## enum EventBubbleStatus
497
+
498
+ 表示冒泡状态。
499
+
500
+ * `EventBubbleStatus.Normal = 0` 无特殊操作;
501
+ * `EventBubbleStatus.NoDefault = 1` 禁用默认操作。