ep-craft 0.1.41 → 0.2.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 (251) hide show
  1. package/dist/components/input-number/EpInputNumber.vue.js +62 -63
  2. package/dist/components/input-number/input-number.d.ts +5 -0
  3. package/dist/components/input-number/input-number.js +6 -6
  4. package/dist/components/select/index.d.ts +6 -3
  5. package/dist/components/select/select.d.ts +1 -0
  6. package/dist/components/select/select.js +3 -3
  7. package/dist/components/select/select.vue.d.ts +3 -1
  8. package/dist/components/select/select.vue.js +9 -9
  9. package/dist/components/select/select2.vue.js +73 -75
  10. package/dist/components/select-v2/src/defaults.d.ts +1 -0
  11. package/dist/components/select-v2/src/defaults.js +1 -1
  12. package/dist/components/select-v2/src/select.vue.d.ts +3 -1
  13. package/dist/components/select-v2/src/select.vue.js +21 -21
  14. package/dist/components/select-v2/src/select2.vue.js +27 -29
  15. package/dist/components/tree-select/src/tree-select.vue.d.ts +2 -0
  16. package/dist-ai/components/affix.json +152 -0
  17. package/dist-ai/components/affix.md +73 -0
  18. package/dist-ai/components/alert.json +186 -0
  19. package/dist-ai/components/alert.md +89 -0
  20. package/dist-ai/components/anchor-link.json +102 -0
  21. package/dist-ai/components/anchor-link.md +67 -0
  22. package/dist-ai/components/anchor.json +179 -0
  23. package/dist-ai/components/anchor.md +87 -0
  24. package/dist-ai/components/aside.json +87 -0
  25. package/dist-ai/components/aside.md +63 -0
  26. package/dist-ai/components/autocomplete.json +613 -0
  27. package/dist-ai/components/autocomplete.md +140 -0
  28. package/dist-ai/components/avatar.json +163 -0
  29. package/dist-ai/components/avatar.md +83 -0
  30. package/dist-ai/components/backtop.json +118 -0
  31. package/dist-ai/components/backtop.md +66 -0
  32. package/dist-ai/components/badge.json +186 -0
  33. package/dist-ai/components/badge.md +85 -0
  34. package/dist-ai/components/breadcrumb-item.json +97 -0
  35. package/dist-ai/components/breadcrumb-item.md +65 -0
  36. package/dist-ai/components/breadcrumb.json +100 -0
  37. package/dist-ai/components/breadcrumb.md +68 -0
  38. package/dist-ai/components/button-group.json +123 -0
  39. package/dist-ai/components/button-group.md +65 -0
  40. package/dist-ai/components/button.json +349 -0
  41. package/dist-ai/components/button.md +124 -0
  42. package/dist-ai/components/calendar.json +148 -0
  43. package/dist-ai/components/calendar.md +74 -0
  44. package/dist-ai/components/card.json +168 -0
  45. package/dist-ai/components/card.md +87 -0
  46. package/dist-ai/components/carousel-item.json +99 -0
  47. package/dist-ai/components/carousel-item.md +68 -0
  48. package/dist-ai/components/carousel.json +245 -0
  49. package/dist-ai/components/carousel.md +97 -0
  50. package/dist-ai/components/cascader-panel.json +242 -0
  51. package/dist-ai/components/cascader-panel.md +108 -0
  52. package/dist-ai/components/cascader.json +531 -0
  53. package/dist-ai/components/cascader.md +146 -0
  54. package/dist-ai/components/check-tag.json +133 -0
  55. package/dist-ai/components/check-tag.md +72 -0
  56. package/dist-ai/components/checkbox-button.json +279 -0
  57. package/dist-ai/components/checkbox-button.md +94 -0
  58. package/dist-ai/components/checkbox-group.json +236 -0
  59. package/dist-ai/components/checkbox-group.md +90 -0
  60. package/dist-ai/components/checkbox.json +278 -0
  61. package/dist-ai/components/checkbox.md +91 -0
  62. package/dist-ai/components/col.json +168 -0
  63. package/dist-ai/components/col.md +72 -0
  64. package/dist-ai/components/collapse-item.json +133 -0
  65. package/dist-ai/components/collapse-item.md +75 -0
  66. package/dist-ai/components/collapse-transition.json +75 -0
  67. package/dist-ai/components/collapse-transition.md +59 -0
  68. package/dist-ai/components/collapse.json +129 -0
  69. package/dist-ai/components/collapse.md +76 -0
  70. package/dist-ai/components/color-picker.json +280 -0
  71. package/dist-ai/components/color-picker.md +85 -0
  72. package/dist-ai/components/config-provider.json +222 -0
  73. package/dist-ai/components/config-provider.md +76 -0
  74. package/dist-ai/components/container.json +95 -0
  75. package/dist-ai/components/container.md +70 -0
  76. package/dist-ai/components/countdown.json +155 -0
  77. package/dist-ai/components/countdown.md +73 -0
  78. package/dist-ai/components/date-picker-panel.json +346 -0
  79. package/dist-ai/components/date-picker-panel.md +91 -0
  80. package/dist-ai/components/date-picker.json +574 -0
  81. package/dist-ai/components/date-picker.md +153 -0
  82. package/dist-ai/components/descriptions-item.json +175 -0
  83. package/dist-ai/components/descriptions-item.md +73 -0
  84. package/dist-ai/components/descriptions.json +171 -0
  85. package/dist-ai/components/descriptions.md +78 -0
  86. package/dist-ai/components/dialog.json +403 -0
  87. package/dist-ai/components/dialog.md +108 -0
  88. package/dist-ai/components/divider.json +102 -0
  89. package/dist-ai/components/divider.md +59 -0
  90. package/dist-ai/components/drawer.json +468 -0
  91. package/dist-ai/components/drawer.md +115 -0
  92. package/dist-ai/components/dropdown-item.json +156 -0
  93. package/dist-ai/components/dropdown-item.md +84 -0
  94. package/dist-ai/components/dropdown-menu.json +92 -0
  95. package/dist-ai/components/dropdown-menu.md +70 -0
  96. package/dist-ai/components/dropdown.json +374 -0
  97. package/dist-ai/components/dropdown.md +108 -0
  98. package/dist-ai/components/empty.json +116 -0
  99. package/dist-ai/components/empty.md +62 -0
  100. package/dist-ai/components/footer.json +86 -0
  101. package/dist-ai/components/footer.md +63 -0
  102. package/dist-ai/components/form-item.json +242 -0
  103. package/dist-ai/components/form-item.md +93 -0
  104. package/dist-ai/components/form.json +277 -0
  105. package/dist-ai/components/form.md +117 -0
  106. package/dist-ai/components/header.json +86 -0
  107. package/dist-ai/components/header.md +63 -0
  108. package/dist-ai/components/icon.json +95 -0
  109. package/dist-ai/components/icon.md +61 -0
  110. package/dist-ai/components/image-viewer.json +235 -0
  111. package/dist-ai/components/image-viewer.md +88 -0
  112. package/dist-ai/components/image.json +299 -0
  113. package/dist-ai/components/image.md +96 -0
  114. package/dist-ai/components/input-number.json +370 -0
  115. package/dist-ai/components/input-number.md +127 -0
  116. package/dist-ai/components/input.json +545 -0
  117. package/dist-ai/components/input.md +166 -0
  118. package/dist-ai/components/link.json +162 -0
  119. package/dist-ai/components/link.md +72 -0
  120. package/dist-ai/components/main.json +77 -0
  121. package/dist-ai/components/main.md +58 -0
  122. package/dist-ai/components/mention.json +598 -0
  123. package/dist-ai/components/mention.md +136 -0
  124. package/dist-ai/components/menu-item-group.json +101 -0
  125. package/dist-ai/components/menu-item-group.md +69 -0
  126. package/dist-ai/components/menu-item.json +131 -0
  127. package/dist-ai/components/menu-item.md +76 -0
  128. package/dist-ai/components/menu.json +314 -0
  129. package/dist-ai/components/menu.md +104 -0
  130. package/dist-ai/components/option-group.json +113 -0
  131. package/dist-ai/components/option-group.md +79 -0
  132. package/dist-ai/components/option.json +122 -0
  133. package/dist-ai/components/option.md +70 -0
  134. package/dist-ai/components/page-header.json +131 -0
  135. package/dist-ai/components/page-header.md +70 -0
  136. package/dist-ai/components/pagination.json +325 -0
  137. package/dist-ai/components/pagination.md +115 -0
  138. package/dist-ai/components/popconfirm.json +240 -0
  139. package/dist-ai/components/popconfirm.md +89 -0
  140. package/dist-ai/components/popover.json +351 -0
  141. package/dist-ai/components/popover.md +99 -0
  142. package/dist-ai/components/popper.json +93 -0
  143. package/dist-ai/components/popper.md +66 -0
  144. package/dist-ai/components/progress.json +219 -0
  145. package/dist-ai/components/progress.md +74 -0
  146. package/dist-ai/components/radio-button.json +142 -0
  147. package/dist-ai/components/radio-button.md +76 -0
  148. package/dist-ai/components/radio-group.json +219 -0
  149. package/dist-ai/components/radio-group.md +88 -0
  150. package/dist-ai/components/radio.json +177 -0
  151. package/dist-ai/components/radio.md +83 -0
  152. package/dist-ai/components/rate.json +286 -0
  153. package/dist-ai/components/rate.md +83 -0
  154. package/dist-ai/components/result.json +118 -0
  155. package/dist-ai/components/result.md +66 -0
  156. package/dist-ai/components/row.json +115 -0
  157. package/dist-ai/components/row.md +68 -0
  158. package/dist-ai/components/scrollbar.json +280 -0
  159. package/dist-ai/components/scrollbar.md +89 -0
  160. package/dist-ai/components/segmented.json +204 -0
  161. package/dist-ai/components/segmented.md +81 -0
  162. package/dist-ai/components/select-v2.json +729 -0
  163. package/dist-ai/components/select-v2.md +193 -0
  164. package/dist-ai/components/select.json +697 -0
  165. package/dist-ai/components/select.md +188 -0
  166. package/dist-ai/components/skeleton-item.json +80 -0
  167. package/dist-ai/components/skeleton-item.md +57 -0
  168. package/dist-ai/components/skeleton.json +134 -0
  169. package/dist-ai/components/skeleton.md +65 -0
  170. package/dist-ai/components/slider.json +326 -0
  171. package/dist-ai/components/slider.md +88 -0
  172. package/dist-ai/components/space.json +178 -0
  173. package/dist-ai/components/space.md +73 -0
  174. package/dist-ai/components/statistic.json +167 -0
  175. package/dist-ai/components/statistic.md +66 -0
  176. package/dist-ai/components/step.json +124 -0
  177. package/dist-ai/components/step.md +69 -0
  178. package/dist-ai/components/steps.json +157 -0
  179. package/dist-ai/components/steps.md +79 -0
  180. package/dist-ai/components/sub-menu.json +211 -0
  181. package/dist-ai/components/sub-menu.md +88 -0
  182. package/dist-ai/components/switch.json +292 -0
  183. package/dist-ai/components/switch.md +88 -0
  184. package/dist-ai/components/tab-pane.json +137 -0
  185. package/dist-ai/components/tab-pane.md +72 -0
  186. package/dist-ai/components/table-column.json +368 -0
  187. package/dist-ai/components/table-column.md +103 -0
  188. package/dist-ai/components/table-v2.json +486 -0
  189. package/dist-ai/components/table-v2.md +123 -0
  190. package/dist-ai/components/table.json +734 -0
  191. package/dist-ai/components/table.md +205 -0
  192. package/dist-ai/components/tabs.json +231 -0
  193. package/dist-ai/components/tabs.md +127 -0
  194. package/dist-ai/components/tag.json +205 -0
  195. package/dist-ai/components/tag.md +105 -0
  196. package/dist-ai/components/text.json +143 -0
  197. package/dist-ai/components/text.md +66 -0
  198. package/dist-ai/components/time-picker.json +555 -0
  199. package/dist-ai/components/time-picker.md +123 -0
  200. package/dist-ai/components/time-select.json +321 -0
  201. package/dist-ai/components/time-select.md +93 -0
  202. package/dist-ai/components/timeline-item.json +186 -0
  203. package/dist-ai/components/timeline-item.md +78 -0
  204. package/dist-ai/components/timeline.json +99 -0
  205. package/dist-ai/components/timeline.md +65 -0
  206. package/dist-ai/components/tooltip.json +599 -0
  207. package/dist-ai/components/tooltip.md +137 -0
  208. package/dist-ai/components/tour-step.json +219 -0
  209. package/dist-ai/components/tour-step.md +88 -0
  210. package/dist-ai/components/tour.json +258 -0
  211. package/dist-ai/components/tour.md +96 -0
  212. package/dist-ai/components/transfer.json +275 -0
  213. package/dist-ai/components/transfer.md +95 -0
  214. package/dist-ai/components/tree-select.json +945 -0
  215. package/dist-ai/components/tree-select.md +181 -0
  216. package/dist-ai/components/tree-v2.json +395 -0
  217. package/dist-ai/components/tree-v2.md +113 -0
  218. package/dist-ai/components/tree.json +485 -0
  219. package/dist-ai/components/tree.md +131 -0
  220. package/dist-ai/components/upload.json +382 -0
  221. package/dist-ai/components/upload.md +130 -0
  222. package/dist-ai/components/watermark.json +157 -0
  223. package/dist-ai/components/watermark.md +66 -0
  224. package/dist-ai/directives/click-outside.json +61 -0
  225. package/dist-ai/directives/click-outside.md +50 -0
  226. package/dist-ai/directives/infinite-scroll.json +83 -0
  227. package/dist-ai/directives/infinite-scroll.md +62 -0
  228. package/dist-ai/directives/loading.json +89 -0
  229. package/dist-ai/directives/loading.md +69 -0
  230. package/dist-ai/directives/mousewheel.json +54 -0
  231. package/dist-ai/directives/mousewheel.md +48 -0
  232. package/dist-ai/directives/repeat-click.json +68 -0
  233. package/dist-ai/directives/repeat-click.md +49 -0
  234. package/dist-ai/directives/trap-focus.json +46 -0
  235. package/dist-ai/directives/trap-focus.md +46 -0
  236. package/dist-ai/icons.json +1 -0
  237. package/dist-ai/index.json +1 -0
  238. package/dist-ai/llms.txt +170 -0
  239. package/dist-ai/manifest.json +26590 -0
  240. package/dist-ai/schema/manifest.schema.json +793 -0
  241. package/dist-ai/services/infinite-scroll.json +80 -0
  242. package/dist-ai/services/infinite-scroll.md +71 -0
  243. package/dist-ai/services/loading.json +108 -0
  244. package/dist-ai/services/loading.md +58 -0
  245. package/dist-ai/services/message-box.json +159 -0
  246. package/dist-ai/services/message-box.md +78 -0
  247. package/dist-ai/services/message.json +137 -0
  248. package/dist-ai/services/message.md +72 -0
  249. package/dist-ai/services/notification.json +136 -0
  250. package/dist-ai/services/notification.md +73 -0
  251. package/package.json +12 -2
@@ -0,0 +1,193 @@
1
+ # EpSelectV2
2
+
3
+ `ep-select-v2` · form(表单) · `component:select-v2`
4
+
5
+ ## 摘要
6
+
7
+ 虚拟化选择器,适合海量选项渲染
8
+
9
+ ## 适用场景
10
+
11
+ - 适用:数千条以上选项的下拉选择
12
+ - 适用:需要保持流畅滚动的筛选器
13
+ - 不适用:选项较少时使用 Select 更轻量
14
+
15
+ ## 关键词
16
+
17
+ - 中文:虚拟化选择器、下拉、海量选项、表单
18
+ - English: select-v2, select, v2, virtual-select, dropdown, form
19
+
20
+ ## 变体
21
+
22
+ - size: large/default/small(按容器空间与信息密度选择尺寸)
23
+ - state: disabled/loading(通过布尔属性切换禁用、加载或选中状态)
24
+ - effect: dark/light(通过视觉修饰属性调整外观效果)
25
+
26
+ ## Props
27
+
28
+ - allowCreate (boolean):是否允许用户创建新条目(须配合 filterable)
29
+ - autocomplete ('none' | 'both' | 'list' | 'inline',默认 none):原生 autocomplete 属性
30
+ - automaticDropdown (boolean):对于不可搜索的选择器,获取焦点后是否自动弹出下拉面板
31
+ - clearable (boolean):是否可以清空选项
32
+ - clearIcon (string | Component,默认 CircleClose):自定义清空图标
33
+ - effect ('dark' | 'light',默认 light):tooltip 主题
34
+ - collapseTags (boolean):多选时是否将选中值折叠为计数标签
35
+ - collapseTagsTooltip (boolean):多选折叠时是否在悬停计数标签时展示全部选中值
36
+ - tagTooltip (TagTooltipProps,默认 {}):折叠标签 tooltip 的配置对象
37
+ - maxCollapseTags (number,默认 1):多选折叠时最多显示的标签数量(须配合 collapse-tags)
38
+ - defaultFirstOption (boolean):按下回车是否选择第一个匹配项
39
+ - disabled (boolean,默认 false):是否禁用
40
+ - estimatedOptionHeight (number,默认 见文档):可变高度选项的估算项高
41
+ - filterable (boolean):是否可搜索
42
+ - filterMethod ((query: string) => void):自定义筛选方法(须配合 filterable)
43
+ - height (number,默认 274):下拉面板高度(按每项约 34px 计算)
44
+ - itemHeight (number,默认 34):选项列表单项高度
45
+ - id (string):原生 id 属性
46
+ - loading (boolean):是否正在从远程获取数据
47
+ - loadingText (string):远程加载时显示的文字
48
+ - modelValue(别名 v-model) (string | number | boolean | object | any[],默认 见文档):绑定值
49
+ - multiple (boolean):是否多选
50
+ - multipleLimit (number,默认 0):多选时可被选择的最大数目(0 为不限制)
51
+ - name (string):原生 name 属性
52
+ - noDataText (string):无选项时显示的文字(也可用 empty 插槽)
53
+ - noMatchText (string):筛选无匹配时显示的文字(也可用 empty 插槽)
54
+ - remoteMethod ((query: string) => void):远程搜索方法
55
+ - reserveKeyword (boolean,默认 true):多选且可搜索时选中后是否保留关键字
56
+ - options (Array,必填):选项数据数组,字段名(value / label / disabled / options)可通过 props 自定义
57
+ - placeholder (string):占位符
58
+ - teleported (boolean,默认 true):是否将下拉列表插入至 body 元素
59
+ - persistent (boolean,默认 true):下拉菜单关闭后是否销毁
60
+ - popperClass (string):下拉框的类名
61
+ - popperStyle (string | object,默认 见文档):下拉框的自定义样式
62
+ - popperOptions (object,默认 {}):popper.js 参数
63
+ - remote (boolean):是否为远程搜索
64
+ - debounce (number,默认 300):远程搜索去抖延迟(毫秒)
65
+ - size ('large' | 'default' | 'small'):输入框尺寸
66
+ - props (object & { value: string; label: string; disabled: string; options: string },默认 { value: 'value', label: 'label', disabled: 'disabled', options: 'options' }):配置选项字段映射(value / label / disabled / options 的键名)
67
+ - valueKey (string,默认 value):作为 value 唯一标识的键名
68
+ - scrollbarAlwaysOn (boolean):是否始终显示下拉滚动条
69
+ - validateEvent (boolean,默认 true):是否触发表单验证
70
+ - offset (number,默认 12):下拉框出现的偏移量
71
+ - remoteShowSuffix (boolean):远程搜索时是否显示后缀图标
72
+ - showArrow (boolean,默认 true):是否显示下拉箭头
73
+ - placement (Placement,默认 bottom-start):下拉框出现的位置
74
+ - fallbackPlacements (Placement[],默认 ['bottom-start', 'top-start', 'right', 'left']):下拉框可能出现的备用位置列表
75
+ - tagType ('success' | 'info' | 'warning' | 'danger',默认 info):标签类型
76
+ - tagEffect ('dark' | 'light' | 'plain',默认 light):标签主题
77
+ - tabindex (string | number,默认 0):输入框的 tabindex
78
+ - appendTo (string | HTMLElement):下拉列表挂载到哪个元素
79
+ - fitInputWidth (boolean | number,默认 true):下拉框宽度是否与输入框一致
80
+ - suffixIcon (string | Component,默认 ArrowDown):自定义后缀图标
81
+ - floatLabel (boolean,默认 false):是否启用浮动标签(Material 风格),聚焦、展开虚拟化下拉或有值时占位文本上浮;多选折叠为计数标签时仍保持上浮
82
+ - emptyValues (any[]):视为空值的值列表
83
+ - valueOnClear (string | number | boolean | (() => string | number | boolean),默认 undefined):清空时写入的值
84
+ - ariaLabel (string):原生 aria-label 属性
85
+ - ariaLabelledby (string):原生 aria-labelledby 属性;显式传入时优先于浮动标签自动关联的文本
86
+
87
+ ## Events
88
+
89
+ - update:modelValue((value: any)):绑定值变化时触发
90
+ - change((value: any)):选中值发生变化时触发
91
+ - endReached((direction: 'top' | 'bottom' | 'left' | 'right')):下拉列表滚动到边界时触发(用于远程加载更多)
92
+ - removeTag((tagValue: any)):多选模式下移除 tag 时触发
93
+ - visibleChange((visible: boolean)):下拉框出现/隐藏时触发
94
+ - focus((event: FocusEvent)):当 input 获得焦点时触发
95
+ - blur((event: FocusEvent)):当 input 失去焦点时触发
96
+ - clear(()):可清空的单选模式下用户点击清空按钮时触发
97
+
98
+ ## Slots
99
+
100
+ - default:下拉列表内容(选项列表,作用域含 item / index 等)
101
+ - prefix:Select 组件头部内容
102
+ - empty:无选项时的列表
103
+ - label:自定义选中项标签
104
+ - tag:多选模式下自定义 tag 内容
105
+ - header:下拉列表顶部的内容
106
+ - footer:下拉列表底部的内容
107
+ - loading:自定义加载中内容
108
+
109
+ ## Exposes
110
+
111
+ - focus(() => void):使选择器的输入框获取焦点
112
+ - blur(() => void):使选择器的输入框失去焦点,并隐藏下拉框
113
+
114
+ ## 关系
115
+
116
+ - 子级:EpOption、EpOptionGroup
117
+ - 常用组合:EpSelectV2 + EpOption、EpSelectV2 + EpOptionGroup
118
+
119
+ ## 视觉提示
120
+
121
+ - 形状:矩形输入框
122
+ - 密度:中等
123
+ - 插槽内容:default:下拉列表内容(选项列表,作用域含 item / index 等);prefix:Select 组件头部内容;empty:无选项时的列表
124
+ - CSS 变量:--el-border-color、--el-border-radius-base、--el-color-primary、--el-font-size-base
125
+
126
+ ## 示例
127
+
128
+ ### 基础选择
129
+
130
+ ```vue
131
+ <script setup lang="ts">
132
+ import { ref } from 'vue'
133
+ import { EpSelectV2 } from 'ep-craft'
134
+
135
+ const value = ref('')
136
+ const options = [
137
+ { label: '选项一', value: 'one' },
138
+ { label: '选项二', value: 'two' },
139
+ ]
140
+ </script>
141
+
142
+ <template>
143
+ <ep-select-v2 v-model="value" :options="options" placeholder="请选择" />
144
+ </template>
145
+ ```
146
+
147
+ ### 可搜索
148
+
149
+ ```vue
150
+ <script setup lang="ts">
151
+ import { ref } from 'vue'
152
+ import { EpSelectV2 } from 'ep-craft'
153
+
154
+ const value = ref('')
155
+ const options = Array.from({ length: 100 }, (_, index) => ({
156
+ label: `选项 ${index + 1}`,
157
+ value: index + 1,
158
+ }))
159
+ </script>
160
+
161
+ <template>
162
+ <ep-select-v2 v-model="value" :options="options" filterable placeholder="搜索选项" />
163
+ </template>
164
+ ```
165
+
166
+ ### 多选
167
+
168
+ ```vue
169
+ <script setup lang="ts">
170
+ import { ref } from 'vue'
171
+ import { EpSelectV2 } from 'ep-craft'
172
+
173
+ const value = ref([])
174
+ const options = [
175
+ { label: '选项一', value: 'one' },
176
+ { label: '选项二', value: 'two' },
177
+ { label: '选项三', value: 'three' },
178
+ ]
179
+ </script>
180
+
181
+ <template>
182
+ <ep-select-v2 v-model="value" :options="options" multiple collapse-tags />
183
+ </template>
184
+ ```
185
+
186
+ ## 相关条目
187
+
188
+ - EpOption
189
+ - EpOptionGroup
190
+
191
+ ---
192
+
193
+ ep-craft 0.2.0