neko-ui 2.5.0-beta.2 → 2.5.0-beta.4

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 (297) hide show
  1. package/README.md +37 -0
  2. package/es/@moneko/app/index.d.js +4 -0
  3. package/es/@moneko/app/index.d.js.map +1 -0
  4. package/es/@moneko/coverage/index.d.js +4 -0
  5. package/es/@moneko/coverage/index.d.js.map +1 -0
  6. package/es/@moneko/locales/index.d.js +2 -0
  7. package/es/@moneko/locales/index.d.js.map +1 -0
  8. package/es/@moneko/routes/index.d.js +2 -0
  9. package/es/@moneko/routes/index.d.js.map +1 -0
  10. package/es/avatar/group.d.js +2 -0
  11. package/es/avatar/group.d.js.map +1 -0
  12. package/es/avatar/group.d.ts +2 -3
  13. package/es/avatar/group.js.map +1 -1
  14. package/es/avatar/index.d.js +2 -0
  15. package/es/avatar/index.d.js.map +1 -0
  16. package/es/avatar/index.d.ts +2 -3
  17. package/es/avatar/index.js.map +1 -1
  18. package/es/avatar/style.d.js +2 -0
  19. package/es/avatar/style.d.js.map +1 -0
  20. package/es/back-top/index.d.js +2 -0
  21. package/es/back-top/index.d.js.map +1 -0
  22. package/es/back-top/index.d.ts +2 -3
  23. package/es/back-top/index.js +1 -1
  24. package/es/back-top/index.js.map +1 -1
  25. package/es/back-top/style.d.js +2 -0
  26. package/es/back-top/style.d.js.map +1 -0
  27. package/es/basic-config/index.d.js +2 -0
  28. package/es/basic-config/index.d.js.map +1 -0
  29. package/es/basic-config/index.d.ts +2 -3
  30. package/es/basic-config/index.js.map +1 -1
  31. package/es/button/index.d.js +2 -0
  32. package/es/button/index.d.js.map +1 -0
  33. package/es/button/index.d.ts +3 -5
  34. package/es/button/index.js +1 -1
  35. package/es/button/index.js.map +1 -1
  36. package/es/button/style.d.js +2 -0
  37. package/es/button/style.d.js.map +1 -0
  38. package/es/capture-screen/index.d.js +2 -0
  39. package/es/capture-screen/index.d.js.map +1 -0
  40. package/es/capture-screen/index.d.ts +2 -3
  41. package/es/capture-screen/index.js +2 -2
  42. package/es/capture-screen/index.js.map +1 -1
  43. package/es/capture-screen/style.d.js +2 -0
  44. package/es/capture-screen/style.d.js.map +1 -0
  45. package/es/carousel/index.d.js +2 -0
  46. package/es/carousel/index.d.js.map +1 -0
  47. package/es/carousel/index.d.ts +2 -3
  48. package/es/carousel/index.js.map +1 -1
  49. package/es/carousel/style.d.js +2 -0
  50. package/es/carousel/style.d.js.map +1 -0
  51. package/es/checkbox/index.d.js +2 -0
  52. package/es/checkbox/index.d.js.map +1 -0
  53. package/es/checkbox/style.d.js +2 -0
  54. package/es/checkbox/style.d.js.map +1 -0
  55. package/es/code/index.d.js +2 -0
  56. package/es/code/index.d.js.map +1 -0
  57. package/es/code/index.d.ts +3 -3
  58. package/es/code/index.js.map +1 -1
  59. package/es/code/style.d.js +2 -0
  60. package/es/code/style.d.js.map +1 -0
  61. package/es/code/worker.d.js +2 -0
  62. package/es/code/worker.d.js.map +1 -0
  63. package/es/color-palette/index.d.js +2 -0
  64. package/es/color-palette/index.d.js.map +1 -0
  65. package/es/color-palette/index.d.ts +2 -3
  66. package/es/color-palette/index.js.map +1 -1
  67. package/es/color-palette/style.d.js +2 -0
  68. package/es/color-palette/style.d.js.map +1 -0
  69. package/es/color-picker/index.d.js +2 -0
  70. package/es/color-picker/index.d.js.map +1 -0
  71. package/es/color-picker/style.d.js +2 -0
  72. package/es/color-picker/style.d.js.map +1 -0
  73. package/es/cron/begin-interval.d.js +2 -0
  74. package/es/cron/begin-interval.d.js.map +1 -0
  75. package/es/cron/begin-interval.d.ts +1 -2
  76. package/es/cron/begin-interval.js.map +1 -1
  77. package/es/cron/day.d.js +2 -0
  78. package/es/cron/day.d.js.map +1 -0
  79. package/es/cron/hour.d.js +2 -0
  80. package/es/cron/hour.d.js.map +1 -0
  81. package/es/cron/index.d.js +2 -0
  82. package/es/cron/index.d.js.map +1 -0
  83. package/es/cron/index.d.ts +2 -3
  84. package/es/cron/index.js.map +1 -1
  85. package/es/cron/item.d.js +2 -0
  86. package/es/cron/item.d.js.map +1 -0
  87. package/es/cron/minute.d.js +2 -0
  88. package/es/cron/minute.d.js.map +1 -0
  89. package/es/cron/month.d.js +2 -0
  90. package/es/cron/month.d.js.map +1 -0
  91. package/es/cron/period.d.js +2 -0
  92. package/es/cron/period.d.js.map +1 -0
  93. package/es/cron/period.d.ts +1 -2
  94. package/es/cron/period.js.map +1 -1
  95. package/es/cron/second.d.js +2 -0
  96. package/es/cron/second.d.js.map +1 -0
  97. package/es/cron/some.d.js +2 -0
  98. package/es/cron/some.d.js.map +1 -0
  99. package/es/cron/some.d.ts +1 -2
  100. package/es/cron/some.js.map +1 -1
  101. package/es/cron/style.d.js +2 -0
  102. package/es/cron/style.d.js.map +1 -0
  103. package/es/cron/week.d.js +2 -0
  104. package/es/cron/week.d.js.map +1 -0
  105. package/es/cron/year.d.js +2 -0
  106. package/es/cron/year.d.js.map +1 -0
  107. package/es/date-picker/index.d.ts +2 -3
  108. package/es/date-picker/index.js.map +1 -1
  109. package/es/empty/index.d.js +2 -0
  110. package/es/empty/index.d.js.map +1 -0
  111. package/es/empty/index.d.ts +3 -3
  112. package/es/empty/index.js.map +1 -1
  113. package/es/from-schema/index.d.js +2 -0
  114. package/es/from-schema/index.d.js.map +1 -0
  115. package/es/highlight-text/index.d.ts +2 -3
  116. package/es/highlight-text/index.js.map +1 -1
  117. package/es/img/index.d.js +2 -0
  118. package/es/img/index.d.js.map +1 -0
  119. package/es/img/style.d.js +2 -0
  120. package/es/img/style.d.js.map +1 -0
  121. package/es/input/index.d.ts +3 -4
  122. package/es/input/index.js.map +1 -1
  123. package/es/md/index.d.ts +2 -3
  124. package/es/md/index.js.map +1 -1
  125. package/es/menu/index.d.ts +1 -2
  126. package/es/menu/index.js.map +1 -1
  127. package/es/pagination/index.d.ts +2 -3
  128. package/es/pagination/index.js.map +1 -1
  129. package/es/popover/index.d.ts +4 -4
  130. package/es/popover/index.js.map +1 -1
  131. package/es/provider/index.d.ts +1 -2
  132. package/es/provider/index.js.map +1 -1
  133. package/es/select/index.d.ts +4 -4
  134. package/es/select/index.js.map +1 -1
  135. package/es/skeleton/index.d.ts +2 -3
  136. package/es/skeleton/index.js.map +1 -1
  137. package/es/spin/index.d.ts +2 -3
  138. package/es/spin/index.js.map +1 -1
  139. package/es/table/index.d.ts +5 -6
  140. package/es/table/index.js.map +1 -1
  141. package/es/tabs/index.d.ts +3 -4
  142. package/es/tabs/index.js.map +1 -1
  143. package/es/tag/index.d.ts +5 -5
  144. package/es/tag/index.js.map +1 -1
  145. package/es/tree/index.d.ts +1 -2
  146. package/es/tree/index.js.map +1 -1
  147. package/es/typography/index.d.ts +4 -3
  148. package/es/typography/index.js.map +1 -1
  149. package/lib/@moneko/app/index.d.js +4 -0
  150. package/lib/@moneko/app/index.d.js.map +1 -0
  151. package/lib/@moneko/coverage/index.d.js +4 -0
  152. package/lib/@moneko/coverage/index.d.js.map +1 -0
  153. package/lib/@moneko/locales/index.d.js +2 -0
  154. package/lib/@moneko/locales/index.d.js.map +1 -0
  155. package/lib/@moneko/routes/index.d.js +2 -0
  156. package/lib/@moneko/routes/index.d.js.map +1 -0
  157. package/lib/avatar/group.d.js +2 -0
  158. package/lib/avatar/group.d.js.map +1 -0
  159. package/lib/avatar/group.d.ts +2 -3
  160. package/lib/avatar/group.js.map +1 -1
  161. package/lib/avatar/index.d.js +2 -0
  162. package/lib/avatar/index.d.js.map +1 -0
  163. package/lib/avatar/index.d.ts +2 -3
  164. package/lib/avatar/index.js.map +1 -1
  165. package/lib/avatar/style.d.js +2 -0
  166. package/lib/avatar/style.d.js.map +1 -0
  167. package/lib/back-top/index.d.js +2 -0
  168. package/lib/back-top/index.d.js.map +1 -0
  169. package/lib/back-top/index.d.ts +2 -3
  170. package/lib/back-top/index.js +1 -1
  171. package/lib/back-top/index.js.map +1 -1
  172. package/lib/back-top/style.d.js +2 -0
  173. package/lib/back-top/style.d.js.map +1 -0
  174. package/lib/basic-config/index.d.js +2 -0
  175. package/lib/basic-config/index.d.js.map +1 -0
  176. package/lib/basic-config/index.d.ts +2 -3
  177. package/lib/basic-config/index.js.map +1 -1
  178. package/lib/button/index.d.js +2 -0
  179. package/lib/button/index.d.js.map +1 -0
  180. package/lib/button/index.d.ts +3 -5
  181. package/lib/button/index.js +1 -1
  182. package/lib/button/index.js.map +1 -1
  183. package/lib/button/style.d.js +2 -0
  184. package/lib/button/style.d.js.map +1 -0
  185. package/lib/capture-screen/index.d.js +2 -0
  186. package/lib/capture-screen/index.d.js.map +1 -0
  187. package/lib/capture-screen/index.d.ts +2 -3
  188. package/lib/capture-screen/index.js +1 -1
  189. package/lib/capture-screen/index.js.map +1 -1
  190. package/lib/capture-screen/style.d.js +2 -0
  191. package/lib/capture-screen/style.d.js.map +1 -0
  192. package/lib/carousel/index.d.js +2 -0
  193. package/lib/carousel/index.d.js.map +1 -0
  194. package/lib/carousel/index.d.ts +2 -3
  195. package/lib/carousel/index.js.map +1 -1
  196. package/lib/carousel/style.d.js +2 -0
  197. package/lib/carousel/style.d.js.map +1 -0
  198. package/lib/checkbox/index.d.js +2 -0
  199. package/lib/checkbox/index.d.js.map +1 -0
  200. package/lib/checkbox/style.d.js +2 -0
  201. package/lib/checkbox/style.d.js.map +1 -0
  202. package/lib/code/index.d.js +2 -0
  203. package/lib/code/index.d.js.map +1 -0
  204. package/lib/code/index.d.ts +3 -3
  205. package/lib/code/index.js.map +1 -1
  206. package/lib/code/style.d.js +2 -0
  207. package/lib/code/style.d.js.map +1 -0
  208. package/lib/code/worker.d.js +2 -0
  209. package/lib/code/worker.d.js.map +1 -0
  210. package/lib/color-palette/index.d.js +2 -0
  211. package/lib/color-palette/index.d.js.map +1 -0
  212. package/lib/color-palette/index.d.ts +2 -3
  213. package/lib/color-palette/index.js.map +1 -1
  214. package/lib/color-palette/style.d.js +2 -0
  215. package/lib/color-palette/style.d.js.map +1 -0
  216. package/lib/color-picker/index.d.js +2 -0
  217. package/lib/color-picker/index.d.js.map +1 -0
  218. package/lib/color-picker/style.d.js +2 -0
  219. package/lib/color-picker/style.d.js.map +1 -0
  220. package/lib/cron/begin-interval.d.js +2 -0
  221. package/lib/cron/begin-interval.d.js.map +1 -0
  222. package/lib/cron/begin-interval.d.ts +1 -2
  223. package/lib/cron/begin-interval.js.map +1 -1
  224. package/lib/cron/day.d.js +2 -0
  225. package/lib/cron/day.d.js.map +1 -0
  226. package/lib/cron/hour.d.js +2 -0
  227. package/lib/cron/hour.d.js.map +1 -0
  228. package/lib/cron/index.d.js +2 -0
  229. package/lib/cron/index.d.js.map +1 -0
  230. package/lib/cron/index.d.ts +2 -3
  231. package/lib/cron/index.js.map +1 -1
  232. package/lib/cron/item.d.js +2 -0
  233. package/lib/cron/item.d.js.map +1 -0
  234. package/lib/cron/minute.d.js +2 -0
  235. package/lib/cron/minute.d.js.map +1 -0
  236. package/lib/cron/month.d.js +2 -0
  237. package/lib/cron/month.d.js.map +1 -0
  238. package/lib/cron/period.d.js +2 -0
  239. package/lib/cron/period.d.js.map +1 -0
  240. package/lib/cron/period.d.ts +1 -2
  241. package/lib/cron/period.js.map +1 -1
  242. package/lib/cron/second.d.js +2 -0
  243. package/lib/cron/second.d.js.map +1 -0
  244. package/lib/cron/some.d.js +2 -0
  245. package/lib/cron/some.d.js.map +1 -0
  246. package/lib/cron/some.d.ts +1 -2
  247. package/lib/cron/some.js.map +1 -1
  248. package/lib/cron/style.d.js +2 -0
  249. package/lib/cron/style.d.js.map +1 -0
  250. package/lib/cron/week.d.js +2 -0
  251. package/lib/cron/week.d.js.map +1 -0
  252. package/lib/cron/year.d.js +2 -0
  253. package/lib/cron/year.d.js.map +1 -0
  254. package/lib/date-picker/index.d.ts +2 -3
  255. package/lib/date-picker/index.js.map +1 -1
  256. package/lib/empty/index.d.js +2 -0
  257. package/lib/empty/index.d.js.map +1 -0
  258. package/lib/empty/index.d.ts +3 -3
  259. package/lib/empty/index.js.map +1 -1
  260. package/lib/from-schema/index.d.js +2 -0
  261. package/lib/from-schema/index.d.js.map +1 -0
  262. package/lib/highlight-text/index.d.ts +2 -3
  263. package/lib/highlight-text/index.js.map +1 -1
  264. package/lib/img/index.d.js +2 -0
  265. package/lib/img/index.d.js.map +1 -0
  266. package/lib/img/style.d.js +2 -0
  267. package/lib/img/style.d.js.map +1 -0
  268. package/lib/input/index.d.ts +3 -4
  269. package/lib/input/index.js.map +1 -1
  270. package/lib/md/index.d.ts +2 -3
  271. package/lib/md/index.js.map +1 -1
  272. package/lib/menu/index.d.ts +1 -2
  273. package/lib/menu/index.js.map +1 -1
  274. package/lib/pagination/index.d.ts +2 -3
  275. package/lib/pagination/index.js.map +1 -1
  276. package/lib/popover/index.d.ts +4 -4
  277. package/lib/popover/index.js.map +1 -1
  278. package/lib/provider/index.d.ts +1 -2
  279. package/lib/provider/index.js.map +1 -1
  280. package/lib/select/index.d.ts +4 -4
  281. package/lib/select/index.js.map +1 -1
  282. package/lib/skeleton/index.d.ts +2 -3
  283. package/lib/skeleton/index.js.map +1 -1
  284. package/lib/spin/index.d.ts +2 -3
  285. package/lib/spin/index.js.map +1 -1
  286. package/lib/table/index.d.ts +5 -6
  287. package/lib/table/index.js.map +1 -1
  288. package/lib/tabs/index.d.ts +3 -4
  289. package/lib/tabs/index.js.map +1 -1
  290. package/lib/tag/index.d.ts +5 -5
  291. package/lib/tag/index.js.map +1 -1
  292. package/lib/tree/index.d.ts +1 -2
  293. package/lib/tree/index.js.map +1 -1
  294. package/lib/typography/index.d.ts +4 -3
  295. package/lib/typography/index.js.map +1 -1
  296. package/package.json +8 -8
  297. package/umd/index.js +1 -1
package/README.md CHANGED
@@ -53,6 +53,43 @@ yarn add neko-ui -S
53
53
  </body>
54
54
  ```
55
55
 
56
+ ## 按需引入
57
+
58
+ ```jsx
59
+ // 按需引入
60
+ import 'neko-ui/es/button';
61
+ import 'neko-ui/es/date-picker';
62
+ // 全量引入
63
+ // import 'neko-ui';
64
+
65
+ // 使用
66
+ function Demo() {
67
+ return <div>
68
+ <n-button>按钮</n-button>
69
+ <n-date-picker></n-date-picker>
70
+ </div>
71
+ }
72
+ ```
73
+
74
+ ### 使用 @moneko
75
+
76
+ ```typescript
77
+ // config/index.ts
78
+ import type { ConfigType } from '@moneko/core';
79
+
80
+ const conf: Partial<ConfigType> = {
81
+ // 按需引入
82
+ importOnDemand: {
83
+ 'neko-ui': {
84
+ transform: 'es/${member}',
85
+ memberTransformers: ['dashed_case'],
86
+ },
87
+ },
88
+ };
89
+
90
+ export default conf;
91
+ ```
92
+
56
93
  > 文档通过 @moneko/cli 生成
57
94
 
58
95
  [![@moneko/cli][cli-tag]][cli-url]
@@ -0,0 +1,4 @@
1
+ /** 虚拟模块 @app
2
+ * @ignore optional
3
+ */export{};
4
+ //# sourceMappingURL=index.d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../components/@moneko/app/index.d.ts"],"sourcesContent":["/** 虚拟模块 @app\n * @ignore optional\n */\nexport interface Api {\n /** 应用名称 */\n name: string;\n /** 应用名称(大写) */\n projectName: string;\n /** 应用描述 */\n description: string;\n /** 应用版本 */\n version: string;\n /** 应用类型 */\n type: 'mobile' | 'site' | 'backstage' | 'micro' | 'library';\n /** 开发者 */\n author: Author;\n /** 存储库 */\n repository: Repository;\n /** 路由模式 */\n routerMode: 'hash' | 'browser';\n /** 根路由 */\n base: string;\n /** 类名前缀 */\n prefixCls?: string;\n /** 主题风格 */\n theme?: string;\n}\n/** 开发者\n * @ignore optional\n */\ninterface Author {\n /** 名称 */\n name: string;\n /** 主页 */\n url?: string;\n /** 邮箱 */\n email?: string;\n}\n/** 存储库\n * @ignore optional\n */\ninterface Repository {\n /** 类型 */\n type?: string;\n /** 存储库地址 */\n url?: string;\n /** 存储库目录 */\n directory?: string;\n}\nexport {};\n"],"names":[],"mappings":"AAAA;;CAEC"}
@@ -0,0 +1,4 @@
1
+ /** 文件级覆盖率
2
+ * @ignore optional
3
+ */export{};
4
+ //# sourceMappingURL=index.d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../components/@moneko/coverage/index.d.ts"],"sourcesContent":["/** 文件级覆盖率\n * @ignore optional\n */\nexport interface CoverageType {\n /** 语句(statement coverage) */\n statements: string;\n /** 语句覆盖: 是不是每个语句都执行了 */\n coveredstatements: string;\n /** 条件(branch coverage) */\n conditionals: string;\n /** 条件覆盖: 是不是每个条件代码块都执行了 */\n coveredconditionals: string;\n /** 函数(function coverage) */\n methods: string;\n /** 函数覆盖: 是不是每个函数都调用了 */\n coveredmethods: string;\n}\n/** 项目级覆盖率\n * @ignore optional\n */\nexport interface ProjectCoverageType {\n /** 元素 */\n elements: string;\n /** 覆盖元素 */\n coveredelements: string;\n complexity: string;\n loc: string;\n ncloc: string;\n /** 经过测试的组件 */\n packages: string;\n /** 经过测试的文件 */\n files: string;\n /** 经过测试的类 */\n classes: string;\n}\n"],"names":[],"mappings":"AAAA;;CAEC"}
@@ -0,0 +1,2 @@
1
+ /** 语言配置 */export{};
2
+ //# sourceMappingURL=index.d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../components/@moneko/locales/index.d.ts"],"sourcesContent":["/** 语言配置 */\nexport interface LocaleConfig {\n /** 语言名称 (未设置时使用文件名)*/\n language?: string;\n /** 描述 */\n title: string;\n /** Icon */\n icon?: string;\n /** 翻译字典 */\n translation: Record<string, string>;\n}\n"],"names":[],"mappings":"AAAA,SAAS"}
@@ -0,0 +1,2 @@
1
+ export{};
2
+ //# sourceMappingURL=index.d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../components/@moneko/routes/index.d.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ import"../avatar";import"../popover";export default AvatarGroup;
2
+ //# sourceMappingURL=group.d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../components/avatar/group.d.ts"],"sourcesContent":["import '../avatar';\nimport '../popover';\nimport type { AvatarProps, BasicConfig, CustomElement } from '..';\nexport interface AvatarGroupProps {\n /** 头像数据 */\n data?: Omit<AvatarProps, 'size'>[];\n /** 头像尺寸\n * @default 'normal'\n */\n size?: BasicConfig['size'];\n /** 最多显示个数 */\n maxCount?: number;\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n}\nexport type AvatarGroupElement = CustomElement<AvatarGroupProps>;\ndeclare function AvatarGroup(_props: AvatarGroupProps): import(\"solid-js\").JSX.Element;\nexport default AvatarGroup;\n"],"names":["AvatarGroup"],"mappings":"AAAA,MAAO,WAAY,AACnB,OAAO,YAAa,AAkBpB,gBAAeA,WAAY"}
@@ -1,8 +1,7 @@
1
- import { type JSX } from 'solid-js';
2
1
  import '../avatar';
3
2
  import '../popover';
4
3
  import type { AvatarProps, BasicConfig, CustomElement } from '..';
5
- export interface AvatarGroupProps extends Omit<JSX.ButtonHTMLAttributes<HTMLDivElement>, 'onChange' | 'ref'> {
4
+ export interface AvatarGroupProps {
6
5
  /** 头像数据 */
7
6
  data?: Omit<AvatarProps, 'size'>[];
8
7
  /** 头像尺寸
@@ -17,5 +16,5 @@ export interface AvatarGroupProps extends Omit<JSX.ButtonHTMLAttributes<HTMLDivE
17
16
  css?: string;
18
17
  }
19
18
  export type AvatarGroupElement = CustomElement<AvatarGroupProps>;
20
- declare function AvatarGroup(_props: AvatarGroupProps): JSX.Element;
19
+ declare function AvatarGroup(_props: AvatarGroupProps): import("solid-js").JSX.Element;
21
20
  export default AvatarGroup;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/avatar/group.tsx"],"sourcesContent":["import { For, type JSX, Show, createMemo, mergeProps, splitProps } from 'solid-js';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport '../avatar';\nimport '../popover';\nimport type { AvatarProps, BasicConfig, CustomElement } from '..';\n\nconst style = css`\n .group {\n display: inline-flex;\n align-items: center;\n\n & > n-avatar {\n display: flex;\n }\n\n & > n-avatar:not(:first-child),\n & > n-popover {\n margin-inline-start: -4%;\n transition: margin-inline-start var(--transition-duration);\n\n &:hover:not(n-popover) {\n margin-inline-start: 4px;\n\n &:has(+ n-avatar),\n &:has(+ n-popover) {\n margin-inline-end: calc(4% + 4px);\n }\n }\n }\n }\n`;\n\nconst moreCss = css`\n .more {\n display: flex;\n justify-content: center;\n align-items: center;\n overflow-y: auto;\n padding: 8px;\n max-inline-size: 60vi;\n max-block-size: 80vb;\n gap: 8px;\n flex-wrap: wrap;\n\n & > n-avatar {\n display: flex;\n }\n }\n`;\n\nexport interface AvatarGroupProps\n extends Omit<JSX.ButtonHTMLAttributes<HTMLDivElement>, 'onChange' | 'ref'> {\n /** 头像数据 */\n data?: Omit<AvatarProps, 'size'>[];\n /** 头像尺寸\n * @default 'normal'\n */\n size?: BasicConfig['size'];\n /** 最多显示个数 */\n maxCount?: number;\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n}\nexport type AvatarGroupElement = CustomElement<AvatarGroupProps>;\n\nconst defaultProps: AvatarGroupProps = {\n data: [],\n size: void 0,\n class: void 0,\n maxCount: void 0,\n css: void 0,\n};\n\nfunction AvatarGroup(_props: AvatarGroupProps) {\n const props = mergeProps(defaultProps, _props);\n const [local, other] = splitProps(props, ['data', 'maxCount', 'class', 'size', 'css']);\n const data = createMemo(() => local.data || []);\n const showAvatar = createMemo(() => data().slice(0, local.maxCount));\n const more = createMemo(() => {\n const _data = data();\n const len = _data.length - (local.maxCount || _data.length);\n\n if (len > 0) {\n return _data.slice(-len);\n }\n return [];\n });\n\n return (\n <>\n <style>\n {style}\n {css(local.css)}\n </style>\n <div {...other} class={cx('group', local.class)}>\n <For each={showAvatar()}>{(a) => <n-avatar {...a} size={local.size} />}</For>\n <Show when={more().length}>\n <n-popover\n arrow={true}\n trigger=\"click\"\n popup-css={moreCss}\n content={\n <div class=\"more\">\n <For each={more()}>{(a) => <n-avatar {...a} size={local.size} />}</For>\n </div>\n }\n >\n <n-avatar size={local.size} username={`+${more().length}`} />\n </n-popover>\n </Show>\n </div>\n </>\n );\n}\n\ncustomElement<AvatarGroupProps>('n-avatar-group', defaultProps, AvatarGroup);\n\nexport default AvatarGroup;\n"],"names":["For","Show","createMemo","mergeProps","splitProps","css","cx","customElement","style","moreCss","defaultProps","data","size","class","maxCount","AvatarGroup","_props","props","local","other","showAvatar","slice","more","_data","len","length","a"],"mappings":"geAAA,QAASA,OAAAA,CAAG,CAAYC,QAAAA,CAAI,CAAEC,cAAAA,CAAU,CAAEC,cAAAA,CAAU,CAAEC,cAAAA,CAAU,KAAQ,UAAW,AACnF,QAASC,OAAAA,CAAG,CAAEC,MAAAA,CAAE,KAAQ,aAAc,AACtC,QAASC,iBAAAA,CAAa,KAAQ,eAAgB,AAC9C,OAAO,WAAY,AACnB,OAAO,YAAa,CAGpB,IAAMC,EAAQH,CAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;AAwBlB,CAAC,CAEKI,EAAUJ,CAAG,CAAC;;;;;;;;;;;;;;;;AAgBpB,CAAC,CAmBKK,EAAiC,CACrCC,KAAM,EAAE,CACRC,KAAM,KAAK,EACXC,MAAO,KAAK,EACZC,SAAU,KAAK,EACfT,IAAK,KAAK,CACZ,EAEA,SAASU,EAAYC,CAAwB,EAC3C,IAAMC,EAAQd,EAAWO,EAAcM,GACjC,CAACE,EAAOC,EAAM,CAAGf,EAAWa,EAAO,CAAC,OAAQ,WAAY,QAAS,OAAQ,MAAM,EAC/EN,EAAOT,EAAW,IAAMgB,EAAMP,IAAI,EAAI,EAAE,EACxCS,EAAalB,EAAW,IAAMS,IAAOU,KAAK,CAAC,EAAGH,EAAMJ,QAAQ,GAC5DQ,EAAOpB,EAAW,KACtB,IAAMqB,EAAQZ,IACRa,EAAMD,EAAME,MAAM,CAAIP,CAAAA,EAAMJ,QAAQ,EAAIS,EAAME,MAAM,AAAD,SAEzD,AAAID,EAAM,EACDD,EAAMF,KAAK,CAAC,CAACG,GAEf,EAAE,AACX,GAEA,kCAGOhB,gBACAH,EAAIa,EAAMb,GAAG,2CAEPc,sBAAcb,EAAG,QAASY,EAAML,KAAK,kBAC3Cb,qBAAUoB,cAAe,AAACM,gCAAoBA,qBAASR,EAAMN,IAAI,6CACjEX,qBAAWqB,IAAOG,MAAM,yDAEd,CAAA,aAEIhB,yCAGNT,qBAAUsB,cAAS,AAACI,gCAAoBA,qBAASR,EAAMN,IAAI,gFAIhDM,EAAMN,IAAI,GAAY,CAAC,CAAC,EAAEU,IAAOG,MAAM,CAAC,CAAC,oHAMrE,CAEAlB,EAAgC,iBAAkBG,EAAcK,EAEhE,gBAAeA,CAAY"}
1
+ {"version":3,"sources":["../../components/avatar/group.tsx"],"sourcesContent":["import { For, Show, createMemo, mergeProps, splitProps } from 'solid-js';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport '../avatar';\nimport '../popover';\nimport type { AvatarProps, BasicConfig, CustomElement } from '..';\n\nconst style = css`\n .group {\n display: inline-flex;\n align-items: center;\n\n & > n-avatar {\n display: flex;\n }\n\n & > n-avatar:not(:first-child),\n & > n-popover {\n margin-inline-start: -4%;\n transition: margin-inline-start var(--transition-duration);\n\n &:hover:not(n-popover) {\n margin-inline-start: 4px;\n\n &:has(+ n-avatar),\n &:has(+ n-popover) {\n margin-inline-end: calc(4% + 4px);\n }\n }\n }\n }\n`;\n\nconst moreCss = css`\n .more {\n display: flex;\n justify-content: center;\n align-items: center;\n overflow-y: auto;\n padding: 8px;\n max-inline-size: 60vi;\n max-block-size: 80vb;\n gap: 8px;\n flex-wrap: wrap;\n\n & > n-avatar {\n display: flex;\n }\n }\n`;\n\nexport interface AvatarGroupProps {\n /** 头像数据 */\n data?: Omit<AvatarProps, 'size'>[];\n /** 头像尺寸\n * @default 'normal'\n */\n size?: BasicConfig['size'];\n /** 最多显示个数 */\n maxCount?: number;\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n}\nexport type AvatarGroupElement = CustomElement<AvatarGroupProps>;\n\nconst defaultProps: AvatarGroupProps = {\n data: [],\n size: void 0,\n class: void 0,\n maxCount: void 0,\n css: void 0,\n};\n\nfunction AvatarGroup(_props: AvatarGroupProps) {\n const props = mergeProps(defaultProps, _props);\n const [local, other] = splitProps(props, ['data', 'maxCount', 'class', 'size', 'css']);\n const data = createMemo(() => local.data || []);\n const showAvatar = createMemo(() => data().slice(0, local.maxCount));\n const more = createMemo(() => {\n const _data = data();\n const len = _data.length - (local.maxCount || _data.length);\n\n if (len > 0) {\n return _data.slice(-len);\n }\n return [];\n });\n\n return (\n <>\n <style>\n {style}\n {css(local.css)}\n </style>\n <div {...other} class={cx('group', local.class)}>\n <For each={showAvatar()}>{(a) => <n-avatar {...a} size={local.size} />}</For>\n <Show when={more().length}>\n <n-popover\n arrow={true}\n trigger=\"click\"\n popup-css={moreCss}\n content={\n <div class=\"more\">\n <For each={more()}>{(a) => <n-avatar {...a} size={local.size} />}</For>\n </div>\n }\n >\n <n-avatar size={local.size} username={`+${more().length}`} />\n </n-popover>\n </Show>\n </div>\n </>\n );\n}\n\ncustomElement<AvatarGroupProps>('n-avatar-group', defaultProps, AvatarGroup);\n\nexport default AvatarGroup;\n"],"names":["For","Show","createMemo","mergeProps","splitProps","css","cx","customElement","style","moreCss","defaultProps","data","size","class","maxCount","AvatarGroup","_props","props","local","other","showAvatar","slice","more","_data","len","length","a"],"mappings":"geAAA,QAASA,OAAAA,CAAG,CAAEC,QAAAA,CAAI,CAAEC,cAAAA,CAAU,CAAEC,cAAAA,CAAU,CAAEC,cAAAA,CAAU,KAAQ,UAAW,AACzE,QAASC,OAAAA,CAAG,CAAEC,MAAAA,CAAE,KAAQ,aAAc,AACtC,QAASC,iBAAAA,CAAa,KAAQ,eAAgB,AAC9C,OAAO,WAAY,AACnB,OAAO,YAAa,CAGpB,IAAMC,EAAQH,CAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;AAwBlB,CAAC,CAEKI,EAAUJ,CAAG,CAAC;;;;;;;;;;;;;;;;AAgBpB,CAAC,CAkBKK,EAAiC,CACrCC,KAAM,EAAE,CACRC,KAAM,KAAK,EACXC,MAAO,KAAK,EACZC,SAAU,KAAK,EACfT,IAAK,KAAK,CACZ,EAEA,SAASU,EAAYC,CAAwB,EAC3C,IAAMC,EAAQd,EAAWO,EAAcM,GACjC,CAACE,EAAOC,EAAM,CAAGf,EAAWa,EAAO,CAAC,OAAQ,WAAY,QAAS,OAAQ,MAAM,EAC/EN,EAAOT,EAAW,IAAMgB,EAAMP,IAAI,EAAI,EAAE,EACxCS,EAAalB,EAAW,IAAMS,IAAOU,KAAK,CAAC,EAAGH,EAAMJ,QAAQ,GAC5DQ,EAAOpB,EAAW,KACtB,IAAMqB,EAAQZ,IACRa,EAAMD,EAAME,MAAM,CAAIP,CAAAA,EAAMJ,QAAQ,EAAIS,EAAME,MAAM,AAAD,SAEzD,AAAID,EAAM,EACDD,EAAMF,KAAK,CAAC,CAACG,GAEf,EAAE,AACX,GAEA,kCAGOhB,gBACAH,EAAIa,EAAMb,GAAG,2CAEPc,sBAAcb,EAAG,QAASY,EAAML,KAAK,kBAC3Cb,qBAAUoB,cAAe,AAACM,gCAAoBA,qBAASR,EAAMN,IAAI,6CACjEX,qBAAWqB,IAAOG,MAAM,yDAEd,CAAA,aAEIhB,yCAGNT,qBAAUsB,cAAS,AAACI,gCAAoBA,qBAASR,EAAMN,IAAI,gFAIhDM,EAAMN,IAAI,GAAY,CAAC,CAAC,EAAEU,IAAOG,MAAM,CAAC,CAAC,oHAMrE,CAEAlB,EAAgC,iBAAkBG,EAAcK,EAEhE,gBAAeA,CAAY"}
@@ -0,0 +1,2 @@
1
+ export default Avatar;
2
+ //# sourceMappingURL=index.d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../components/avatar/index.d.ts"],"sourcesContent":["import type { BasicConfig, CustomElement } from '../index';\nexport interface AvatarProps {\n /** 头像 */\n src?: string;\n /** 替代文本 */\n alt?: string;\n /** 尺寸\n * @default 'normal'\n */\n size?: number | BasicConfig['size'];\n /** 用户名 */\n username?: string;\n /** 背景颜色 */\n color?: string;\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n}\nexport type AvatarElement = CustomElement<AvatarProps>;\ndeclare function Avatar(_: AvatarProps): import(\"solid-js\").JSX.Element;\nexport default Avatar;\n"],"names":["Avatar"],"mappings":"AAqBA,eAAeA,MAAO"}
@@ -1,6 +1,5 @@
1
- import { type JSX } from 'solid-js';
2
1
  import type { BasicConfig, CustomElement } from '../index';
3
- export interface AvatarProps extends Omit<JSX.ButtonHTMLAttributes<HTMLDivElement>, 'onChange' | 'ref' | 'children'> {
2
+ export interface AvatarProps {
4
3
  /** 头像 */
5
4
  src?: string;
6
5
  /** 替代文本 */
@@ -19,5 +18,5 @@ export interface AvatarProps extends Omit<JSX.ButtonHTMLAttributes<HTMLDivElemen
19
18
  css?: string;
20
19
  }
21
20
  export type AvatarElement = CustomElement<AvatarProps>;
22
- declare function Avatar(_: AvatarProps): JSX.Element;
21
+ declare function Avatar(_: AvatarProps): import("solid-js").JSX.Element;
23
22
  export default Avatar;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/avatar/index.tsx"],"sourcesContent":["import {\n type JSX,\n Match,\n Switch,\n createEffect,\n createMemo,\n createSignal,\n mergeProps,\n splitProps,\n} from 'solid-js';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport { style } from './style';\nimport theme from '../theme';\nimport type { BasicConfig, CustomElement } from '../index';\n\nexport interface AvatarProps\n extends Omit<JSX.ButtonHTMLAttributes<HTMLDivElement>, 'onChange' | 'ref' | 'children'> {\n /** 头像 */\n src?: string;\n /** 替代文本 */\n alt?: string;\n /** 尺寸\n * @default 'normal'\n */\n size?: number | BasicConfig['size'];\n /** 用户名 */\n username?: string;\n /** 背景颜色 */\n color?: string;\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n}\nexport type AvatarElement = CustomElement<AvatarProps>;\n\nfunction Avatar(_: AvatarProps) {\n const { baseStyle } = theme;\n const avatarSize: Record<string, string> = {\n small: '24px',\n normal: '32px',\n large: '40px',\n };\n\n const props = mergeProps({ size: 32 }, _);\n const [local, other] = splitProps(props, [\n 'class',\n 'css',\n 'src',\n 'alt',\n 'size',\n 'color',\n 'username',\n ]);\n let box: HTMLDivElement | undefined;\n let label: HTMLSpanElement | undefined;\n const [scale, setScale] = createSignal(1);\n\n const _style = createMemo(() => {\n const size = avatarSize[local.size] || `${local.size}px`;\n\n return css`\n .avatar {\n --avatar-color: ${local.color};\n\n inline-size: ${size};\n block-size: ${size};\n }\n `;\n });\n\n createEffect(() => {\n if (label && box) {\n if (label.clientWidth + 6 > box.clientWidth) {\n setScale((box.clientWidth - 6) / label.clientWidth);\n }\n }\n });\n\n return (\n <>\n <style>\n {baseStyle()}\n {style}\n {_style()}\n {css(local.css)}\n </style>\n <div ref={box} class={cx('avatar', local.class)} {...other}>\n <Switch>\n <Match when={typeof local.src === 'string'}>\n <img src={local.src} alt={local.alt} />\n </Match>\n <Match when={local.username}>\n <span ref={label} style={{ transform: `scale(${scale()})` }}>\n {local.username}\n </span>\n </Match>\n </Switch>\n </div>\n <svg\n viewBox=\"0 0 1 1\"\n aria-hidden=\"true\"\n style={{ position: 'absolute', width: '0', height: '0' }}\n overflow=\"hidden\"\n >\n <defs>\n <clipPath id=\"clipPathAvatar\" clipPathUnits=\"objectBoundingBox\">\n <path\n d=\"M.395.126H.4A.016.016 0 0 1 .418.14v.002L.42.158a.39.39 0 0 0 .019.12L.44.284l.005.01c.011.026.034.05.05.053h.011a.084.084 0 0 0 .016-.01.115.115 0 0 0 .025-.03.259.259 0 0 0 .033-.14.02.02 0 0 0 0-.008.03.03 0 0 1 0-.01V.145L.584.136h.001C.583.134.591.127.594.126h.024L.63.127l.013.001h.01a.123.123 0 0 0 .021.003h.003L.7.133a.591.591 0 0 1 .046.004L.77.139h.013l.006.002h.009c.01 0 .019.006.036.023a.24.24 0 0 1 .018.02l.004.004a.49.49 0 0 1 .063.094L.927.3a.032.032 0 0 0 .004.007L.932.31l.004.007.007.022a.141.141 0 0 0 .004.008.34.34 0 0 0 .011.037l.002.01A.463.463 0 0 1 .969.46v.013A.358.358 0 0 1 .963.58a.537.537 0 0 1-.064.16.378.378 0 0 1-.096.111.042.042 0 0 1-.014.002L.762.851.732.85A1.092 1.092 0 0 0 .667.845C.641.842.636.84.63.832L.626.825C.624.822.628.814.636.8a.129.129 0 0 0 .01-.022.02.02 0 0 0 .001-.003V.773a.143.143 0 0 0 .009-.02A.149.149 0 0 1 .66.738.028.028 0 0 0 .662.73V.726a.243.243 0 0 1-.106.07.177.177 0 0 1-.121-.003A.25.25 0 0 1 .35.736C.34.726.338.724.337.727A.095.095 0 0 0 .344.75v.003s.001 0 0 0a.316.316 0 0 0 .024.053L.37.811c.005.01.005.013.001.02C.367.837.36.84.345.842A.462.462 0 0 1 .3.847.967.967 0 0 0 .25.85L.224.852.213.853A.027.027 0 0 1 .191.847.438.438 0 0 1 .098.735a.525.525 0 0 1-.065-.19L.032.529V.517a.35.35 0 0 1 0-.052L.034.433.036.421A.288.288 0 0 1 .04.397.173.173 0 0 1 .05.36c0-.003 0-.006.002-.01A.133.133 0 0 0 .057.336L.06.33A.293.293 0 0 1 .084.276L.09.266A.14.14 0 0 1 .1.246L.106.24A.288.288 0 0 1 .142.19a.227.227 0 0 0 .01-.01.17.17 0 0 1 .037-.036A.036.036 0 0 1 .202.14h.023L.228.138h.008L.248.136H.26A.104.104 0 0 0 .28.134a.01.01 0 0 1 .004 0h.003L.289.133h.006A.18.18 0 0 1 .313.131h.011L.327.13H.33L.348.128h.009L.364.127h.004L.37.126h.011L.388.125a.01.01 0 0 0 .003 0h.004z\"\n fill=\"#7483AB\"\n />\n </clipPath>\n </defs>\n </svg>\n </>\n );\n}\n\ncustomElement<AvatarProps>(\n 'n-avatar',\n {\n css: void 0,\n size: void 0,\n src: void 0,\n alt: void 0,\n username: void 0,\n color: void 0,\n class: void 0,\n },\n Avatar,\n);\nexport default Avatar;\n"],"names":["Match","Switch","createEffect","createMemo","createSignal","mergeProps","splitProps","css","cx","customElement","style","theme","Avatar","_","box","label","baseStyle","avatarSize","small","normal","large","props","size","local","other","scale","setScale","_style","color","clientWidth","class","src","alt","username"],"mappings":"80EAAA,QAEEA,SAAAA,CAAK,CACLC,UAAAA,CAAM,CACNC,gBAAAA,CAAY,CACZC,cAAAA,CAAU,CACVC,gBAAAA,CAAY,CACZC,cAAAA,CAAU,CACVC,cAAAA,CAAU,KACL,UAAW,AAClB,QAASC,OAAAA,CAAG,CAAEC,MAAAA,CAAE,KAAQ,aAAc,AACtC,QAASC,iBAAAA,CAAa,KAAQ,eAAgB,AAC9C,QAASC,SAAAA,CAAK,KAAQ,SAAU,AAChC,QAAOC,MAAW,UAAW,CAwB7B,SAASC,EAAOC,CAAc,MAkBxBC,EACAC,EAlBJ,GAAM,CAAEC,UAAAA,CAAS,CAAE,CAAGL,EAChBM,EAAqC,CACzCC,MAAO,OACPC,OAAQ,OACRC,MAAO,MACT,EAEMC,EAAQhB,EAAW,CAAEiB,KAAM,EAAG,EAAGT,GACjC,CAACU,EAAOC,EAAM,CAAGlB,EAAWe,EAAO,CACvC,QACA,MACA,MACA,MACA,OACA,QACA,WACD,EAGK,CAACI,EAAOC,EAAS,CAAGtB,EAAa,GAEjCuB,EAASxB,EAAW,KACxB,IAAMmB,EAAOL,CAAU,CAACM,EAAMD,IAAI,CAAC,EAAI,CAAC,EAAEC,EAAMD,IAAI,CAAC,EAAE,CAAC,CAExD,OAAOf,CAAG,CAAC;;wBAES,EAAEgB,EAAMK,KAAK,CAAC;;qBAEjB,EAAEN,EAAK;oBACR,EAAEA,EAAK;;IAEvB,CAAC,AACH,GAUA,OARApB,EAAa,KACPa,GAASD,GACPC,EAAMc,WAAW,CAAG,EAAIf,EAAIe,WAAW,EACzCH,EAAS,AAACZ,CAAAA,EAAIe,WAAW,CAAG,CAAA,EAAKd,EAAMc,WAAW,CAGxD,+BAKOb,YACAN,YACAiB,gBACApB,EAAIgB,EAAMhB,GAAG,gCAENO,oCAAAA,8BAAYN,EAAG,SAAUe,EAAMO,KAAK,IAAON,gBAClDvB,2BACED,oBAAY,AAAqB,UAArB,OAAOuB,EAAMQ,GAAG,8CACjBR,EAAMQ,GAAG,GAAOR,EAAMS,GAAG,0GAEpChC,qBAAYuB,EAAMU,QAAQ,6BACdlB,oCAAAA,YACRQ,EAAMU,QAAQ,SAD8BR,oCAAT,CAAC,MAAM,EAAEA,IAAQ,CAAC,CAAC,+JAuBrE,CAEAhB,EACE,WACA,CACEF,IAAK,KAAK,EACVe,KAAM,KAAK,EACXS,IAAK,KAAK,EACVC,IAAK,KAAK,EACVC,SAAU,KAAK,EACfL,MAAO,KAAK,EACZE,MAAO,KAAK,CACd,EACAlB,EAEF,gBAAeA,CAAO"}
1
+ {"version":3,"sources":["../../components/avatar/index.tsx"],"sourcesContent":["import {\n Match,\n Switch,\n createEffect,\n createMemo,\n createSignal,\n mergeProps,\n splitProps,\n} from 'solid-js';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport { style } from './style';\nimport theme from '../theme';\nimport type { BasicConfig, CustomElement } from '../index';\n\nexport interface AvatarProps {\n /** 头像 */\n src?: string;\n /** 替代文本 */\n alt?: string;\n /** 尺寸\n * @default 'normal'\n */\n size?: number | BasicConfig['size'];\n /** 用户名 */\n username?: string;\n /** 背景颜色 */\n color?: string;\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n}\nexport type AvatarElement = CustomElement<AvatarProps>;\n\nfunction Avatar(_: AvatarProps) {\n const { baseStyle } = theme;\n const avatarSize: Record<string, string> = {\n small: '24px',\n normal: '32px',\n large: '40px',\n };\n\n const props = mergeProps({ size: 32 }, _);\n const [local, other] = splitProps(props, [\n 'class',\n 'css',\n 'src',\n 'alt',\n 'size',\n 'color',\n 'username',\n ]);\n let box: HTMLDivElement | undefined;\n let label: HTMLSpanElement | undefined;\n const [scale, setScale] = createSignal(1);\n\n const _style = createMemo(() => {\n const size = avatarSize[local.size] || `${local.size}px`;\n\n return css`\n .avatar {\n --avatar-color: ${local.color};\n\n inline-size: ${size};\n block-size: ${size};\n }\n `;\n });\n\n createEffect(() => {\n if (label && box) {\n if (label.clientWidth + 6 > box.clientWidth) {\n setScale((box.clientWidth - 6) / label.clientWidth);\n }\n }\n });\n\n return (\n <>\n <style>\n {baseStyle()}\n {style}\n {_style()}\n {css(local.css)}\n </style>\n <div ref={box} class={cx('avatar', local.class)} {...other}>\n <Switch>\n <Match when={typeof local.src === 'string'}>\n <img src={local.src} alt={local.alt} />\n </Match>\n <Match when={local.username}>\n <span ref={label} style={{ transform: `scale(${scale()})` }}>\n {local.username}\n </span>\n </Match>\n </Switch>\n </div>\n <svg\n viewBox=\"0 0 1 1\"\n aria-hidden=\"true\"\n style={{ position: 'absolute', width: '0', height: '0' }}\n overflow=\"hidden\"\n >\n <defs>\n <clipPath id=\"clipPathAvatar\" clipPathUnits=\"objectBoundingBox\">\n <path\n d=\"M.395.126H.4A.016.016 0 0 1 .418.14v.002L.42.158a.39.39 0 0 0 .019.12L.44.284l.005.01c.011.026.034.05.05.053h.011a.084.084 0 0 0 .016-.01.115.115 0 0 0 .025-.03.259.259 0 0 0 .033-.14.02.02 0 0 0 0-.008.03.03 0 0 1 0-.01V.145L.584.136h.001C.583.134.591.127.594.126h.024L.63.127l.013.001h.01a.123.123 0 0 0 .021.003h.003L.7.133a.591.591 0 0 1 .046.004L.77.139h.013l.006.002h.009c.01 0 .019.006.036.023a.24.24 0 0 1 .018.02l.004.004a.49.49 0 0 1 .063.094L.927.3a.032.032 0 0 0 .004.007L.932.31l.004.007.007.022a.141.141 0 0 0 .004.008.34.34 0 0 0 .011.037l.002.01A.463.463 0 0 1 .969.46v.013A.358.358 0 0 1 .963.58a.537.537 0 0 1-.064.16.378.378 0 0 1-.096.111.042.042 0 0 1-.014.002L.762.851.732.85A1.092 1.092 0 0 0 .667.845C.641.842.636.84.63.832L.626.825C.624.822.628.814.636.8a.129.129 0 0 0 .01-.022.02.02 0 0 0 .001-.003V.773a.143.143 0 0 0 .009-.02A.149.149 0 0 1 .66.738.028.028 0 0 0 .662.73V.726a.243.243 0 0 1-.106.07.177.177 0 0 1-.121-.003A.25.25 0 0 1 .35.736C.34.726.338.724.337.727A.095.095 0 0 0 .344.75v.003s.001 0 0 0a.316.316 0 0 0 .024.053L.37.811c.005.01.005.013.001.02C.367.837.36.84.345.842A.462.462 0 0 1 .3.847.967.967 0 0 0 .25.85L.224.852.213.853A.027.027 0 0 1 .191.847.438.438 0 0 1 .098.735a.525.525 0 0 1-.065-.19L.032.529V.517a.35.35 0 0 1 0-.052L.034.433.036.421A.288.288 0 0 1 .04.397.173.173 0 0 1 .05.36c0-.003 0-.006.002-.01A.133.133 0 0 0 .057.336L.06.33A.293.293 0 0 1 .084.276L.09.266A.14.14 0 0 1 .1.246L.106.24A.288.288 0 0 1 .142.19a.227.227 0 0 0 .01-.01.17.17 0 0 1 .037-.036A.036.036 0 0 1 .202.14h.023L.228.138h.008L.248.136H.26A.104.104 0 0 0 .28.134a.01.01 0 0 1 .004 0h.003L.289.133h.006A.18.18 0 0 1 .313.131h.011L.327.13H.33L.348.128h.009L.364.127h.004L.37.126h.011L.388.125a.01.01 0 0 0 .003 0h.004z\"\n fill=\"#7483AB\"\n />\n </clipPath>\n </defs>\n </svg>\n </>\n );\n}\n\ncustomElement<AvatarProps>(\n 'n-avatar',\n {\n css: void 0,\n size: void 0,\n src: void 0,\n alt: void 0,\n username: void 0,\n color: void 0,\n class: void 0,\n },\n Avatar,\n);\nexport default Avatar;\n"],"names":["Match","Switch","createEffect","createMemo","createSignal","mergeProps","splitProps","css","cx","customElement","style","theme","Avatar","_","box","label","baseStyle","avatarSize","small","normal","large","props","size","local","other","scale","setScale","_style","color","clientWidth","class","src","alt","username"],"mappings":"80EAAA,QACEA,SAAAA,CAAK,CACLC,UAAAA,CAAM,CACNC,gBAAAA,CAAY,CACZC,cAAAA,CAAU,CACVC,gBAAAA,CAAY,CACZC,cAAAA,CAAU,CACVC,cAAAA,CAAU,KACL,UAAW,AAClB,QAASC,OAAAA,CAAG,CAAEC,MAAAA,CAAE,KAAQ,aAAc,AACtC,QAASC,iBAAAA,CAAa,KAAQ,eAAgB,AAC9C,QAASC,SAAAA,CAAK,KAAQ,SAAU,AAChC,QAAOC,MAAW,UAAW,CAuB7B,SAASC,EAAOC,CAAc,MAkBxBC,EACAC,EAlBJ,GAAM,CAAEC,UAAAA,CAAS,CAAE,CAAGL,EAChBM,EAAqC,CACzCC,MAAO,OACPC,OAAQ,OACRC,MAAO,MACT,EAEMC,EAAQhB,EAAW,CAAEiB,KAAM,EAAG,EAAGT,GACjC,CAACU,EAAOC,EAAM,CAAGlB,EAAWe,EAAO,CACvC,QACA,MACA,MACA,MACA,OACA,QACA,WACD,EAGK,CAACI,EAAOC,EAAS,CAAGtB,EAAa,GAEjCuB,EAASxB,EAAW,KACxB,IAAMmB,EAAOL,CAAU,CAACM,EAAMD,IAAI,CAAC,EAAI,CAAC,EAAEC,EAAMD,IAAI,CAAC,EAAE,CAAC,CAExD,OAAOf,CAAG,CAAC;;wBAES,EAAEgB,EAAMK,KAAK,CAAC;;qBAEjB,EAAEN,EAAK;oBACR,EAAEA,EAAK;;IAEvB,CAAC,AACH,GAUA,OARApB,EAAa,KACPa,GAASD,GACPC,EAAMc,WAAW,CAAG,EAAIf,EAAIe,WAAW,EACzCH,EAAS,AAACZ,CAAAA,EAAIe,WAAW,CAAG,CAAA,EAAKd,EAAMc,WAAW,CAGxD,+BAKOb,YACAN,YACAiB,gBACApB,EAAIgB,EAAMhB,GAAG,gCAENO,oCAAAA,8BAAYN,EAAG,SAAUe,EAAMO,KAAK,IAAON,gBAClDvB,2BACED,oBAAY,AAAqB,UAArB,OAAOuB,EAAMQ,GAAG,8CACjBR,EAAMQ,GAAG,GAAOR,EAAMS,GAAG,0GAEpChC,qBAAYuB,EAAMU,QAAQ,6BACdlB,oCAAAA,YACRQ,EAAMU,QAAQ,SAD8BR,oCAAT,CAAC,MAAM,EAAEA,IAAQ,CAAC,CAAC,+JAuBrE,CAEAhB,EACE,WACA,CACEF,IAAK,KAAK,EACVe,KAAM,KAAK,EACXS,IAAK,KAAK,EACVC,IAAK,KAAK,EACVC,SAAU,KAAK,EACfL,MAAO,KAAK,EACZE,MAAO,KAAK,CACd,EACAlB,EAEF,gBAAeA,CAAO"}
@@ -0,0 +1,2 @@
1
+ export{};
2
+ //# sourceMappingURL=style.d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../components/avatar/style.d.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export default BackTop;
2
+ //# sourceMappingURL=index.d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../components/back-top/index.d.ts"],"sourcesContent":["import type { CustomElement } from '..';\nexport interface BackTopProps {\n /** 设置需要监听其滚动事件的元素\n * @default window\n */\n target?: HTMLElement | (() => HTMLElement);\n /** 挂载到指定的元素\n * @default body\n */\n mount?: HTMLElement;\n /** 滚动高度达到此参数值才出现 BackTop */\n visibilityHeight?: number;\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n}\ndeclare function BackTop(_: BackTopProps): import(\"solid-js\").JSX.Element;\nexport type BackTopElement = CustomElement<BackTopProps>;\nexport default BackTop;\n"],"names":["BackTop"],"mappings":"AAmBA,eAAeA,OAAQ"}
@@ -1,6 +1,5 @@
1
- import { type JSX } from 'solid-js';
2
1
  import type { CustomElement } from '..';
3
- export interface BackTopProps extends Omit<JSX.ButtonHTMLAttributes<HTMLDivElement>, 'onChange'> {
2
+ export interface BackTopProps {
4
3
  /** 设置需要监听其滚动事件的元素
5
4
  * @default window
6
5
  */
@@ -16,6 +15,6 @@ export interface BackTopProps extends Omit<JSX.ButtonHTMLAttributes<HTMLDivEleme
16
15
  /** 自定义样式表 */
17
16
  css?: string;
18
17
  }
19
- declare function BackTop(_: BackTopProps): JSX.Element;
18
+ declare function BackTop(_: BackTopProps): import("solid-js").JSX.Element;
20
19
  export type BackTopElement = CustomElement<BackTopProps>;
21
20
  export default BackTop;
@@ -1,2 +1,2 @@
1
- import{template as t}from"solid-js/web";import{spread as e}from"solid-js/web";import{mergeProps as o}from"solid-js/web";import"solid-js/web";import{insert as i}from"solid-js/web";import{delegateEvents as r}from"solid-js/web";import{createComponent as s}from"solid-js/web";import{addEventListener as l}from"solid-js/web";let n=/*#__PURE__*/t("<style>"),m=/*#__PURE__*/t("<div>");import{Show as a,createComponent as c,createEffect as u,createMemo as d,createSignal as p,mergeProps as b,onCleanup as g,onMount as f,splitProps as v}from"solid-js";import y from"@moneko/common/lib/getMaxZindex";import h from"@moneko/common/lib/getScrollTop";import k from"@moneko/common/lib/isFunction";import{css as w,cx as j}from"@moneko/css";import{customElement as H}from"solid-element";import{Portal as x}from"solid-js/web";import{style as E}from"./style";import L from"../theme";function S(t){let{baseStyle:r,isDark:c}=L,u=b({target:window,visibilityHeight:400},t),[H,S]=v(u,["class","target","mount","css","visibilityHeight","onAnimationEnd","ref","style","onClick"]),[A,C]=p(null),T=d(()=>k(H.target)?H.target():H.target),z=d(()=>{let t=c()?"rgb(255 255 255 / 45%)":"var(--primary-border)";return`:host {--back-top-bg: ${t};}`});function D(){var t;null==(t=T())||t.scrollTo({top:0,behavior:"smooth"})}function F(){!1===A()&&C(null)}function M(t){t.preventDefault();let e=0,o=0,i=T();i&&(e=h(i),o=i.offsetHeight||0);let r=e>o/3||e>H.visibilityHeight;return!!A()!==r&&C(r),!1}return f(()=>{T().addEventListener("scroll",M,!1)}),g(()=>{T().removeEventListener("scroll",M,!1)}),s(a,{get when(){return null!==A()},get children(){return s(x,{useShadow:!0,get mount(){return H.mount},get children(){return[(()=>{let t=n();return i(t,r,null),i(t,z,null),i(t,E,null),i(t,()=>w(H.css),null),t})(),(()=>{let t=m();return l(t,"click",D,!0),l(t,"animationend",F),e(t,o({get class(){return j("back-top",!1===A()&&"back-top-out",H.class)},get style(){return{"z-index":y().toString()}}},S),!1,!1),t})()]}})}})}H("n-back-top",{class:void 0,css:void 0,visibilityHeight:void 0,mount:void 0,target:void 0},(t,e)=>{let o=e.element;o.mount||(o.style.position="sticky",o.style.bottom="24px",o.style.right="24px",o.style.display="block",o.style.pointerEvents="none");let i=b({css:o.css,visibilityHeight:o.visibilityHeight,mount:o.renderRoot,target:o.target},t);return u(()=>{o.removeAttribute("css")}),c(S,i)});export default S;r(["click"]);
1
+ import{template as t}from"solid-js/web";import{spread as e}from"solid-js/web";import{mergeProps as o}from"solid-js/web";import"solid-js/web";import{insert as i}from"solid-js/web";import{delegateEvents as r}from"solid-js/web";import{createComponent as s}from"solid-js/web";import{addEventListener as l}from"solid-js/web";let n=/*#__PURE__*/t("<style>"),m=/*#__PURE__*/t("<div>");import{Show as a,createComponent as c,createEffect as u,createMemo as p,createSignal as d,mergeProps as b,onCleanup as g,onMount as f,splitProps as v}from"solid-js";import y from"@moneko/common/lib/getMaxZindex";import h from"@moneko/common/lib/getScrollTop";import w from"@moneko/common/lib/isFunction";import{css as k,cx as j}from"@moneko/css";import{customElement as H}from"solid-element";import{Portal as x}from"solid-js/web";import{style as E}from"./style";import L from"../theme";function S(t){let{baseStyle:r,isDark:c}=L,u=b({target:window,visibilityHeight:400},t),[H,S]=v(u,["class","target","mount","css","visibilityHeight"]),[T,z]=d(null),A=p(()=>w(H.target)?H.target():H.target),C=p(()=>{let t=c()?"rgb(255 255 255 / 45%)":"var(--primary-border)";return`:host {--back-top-bg: ${t};}`});function D(){var t;null==(t=A())||t.scrollTo({top:0,behavior:"smooth"})}function F(){!1===T()&&z(null)}function M(t){t.preventDefault();let e=0,o=0,i=A();i&&(e=h(i),o=i.offsetHeight||0);let r=e>o/3||e>H.visibilityHeight;return!!T()!==r&&z(r),!1}return f(()=>{A().addEventListener("scroll",M,!1)}),g(()=>{A().removeEventListener("scroll",M,!1)}),s(a,{get when(){return null!==T()},get children(){return s(x,{useShadow:!0,get mount(){return H.mount},get children(){return[(()=>{let t=n();return i(t,r,null),i(t,C,null),i(t,E,null),i(t,()=>k(H.css),null),t})(),(()=>{let t=m();return l(t,"click",D,!0),l(t,"animationend",F),e(t,o({get class(){return j("back-top",!1===T()&&"back-top-out",H.class)},get style(){return{"z-index":y().toString()}}},S),!1,!1),t})()]}})}})}H("n-back-top",{class:void 0,css:void 0,visibilityHeight:void 0,mount:void 0,target:void 0},(t,e)=>{let o=e.element;o.mount||(o.style.position="sticky",o.style.bottom="24px",o.style.right="24px",o.style.display="block",o.style.pointerEvents="none");let i=b({css:o.css,visibilityHeight:o.visibilityHeight,mount:o.renderRoot,target:o.target},t);return u(()=>{o.removeAttribute("css")}),c(S,i)});export default S;r(["click"]);
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/back-top/index.tsx"],"sourcesContent":["import {\n type JSX,\n Show,\n createComponent,\n createEffect,\n createMemo,\n createSignal,\n mergeProps,\n onCleanup,\n onMount,\n splitProps,\n} from 'solid-js';\nimport { getMaxZindex, getScrollTop, isFunction } from '@moneko/common';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport { Portal } from 'solid-js/web';\nimport { style } from './style';\nimport theme from '../theme';\nimport type { CustomElement } from '..';\n\nexport interface BackTopProps extends Omit<JSX.ButtonHTMLAttributes<HTMLDivElement>, 'onChange'> {\n /** 设置需要监听其滚动事件的元素\n * @default window\n */\n target?: HTMLElement | (() => HTMLElement);\n /** 挂载到指定的元素\n * @default body\n */\n mount?: HTMLElement;\n /** 滚动高度达到此参数值才出现 BackTop */\n visibilityHeight?: number;\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n}\n\nfunction BackTop(_: BackTopProps) {\n const { baseStyle, isDark } = theme;\n const props = mergeProps({ target: window as unknown as HTMLElement, visibilityHeight: 400 }, _);\n const [local, other] = splitProps(props, [\n 'class',\n 'target',\n 'mount',\n 'css',\n 'visibilityHeight',\n 'onAnimationEnd',\n 'ref',\n 'style',\n 'onClick',\n ]);\n const [show, setShow] = createSignal<boolean | null>(null);\n const target = createMemo(() => (isFunction(local.target) ? local.target() : local.target));\n\n const themeStyle = createMemo(() => {\n const bg = isDark() ? 'rgb(255 255 255 / 45%)' : 'var(--primary-border)';\n\n return `:host {--back-top-bg: ${bg};}`;\n });\n\n function handleBackTop() {\n target()?.scrollTo({\n top: 0,\n behavior: 'smooth',\n });\n }\n function exit() {\n if (show() === false) {\n setShow(null);\n }\n }\n function handleScrollY(e: Event) {\n e.preventDefault();\n let scrollTop = 0;\n let offsetHeight = 0;\n const _target = target();\n\n if (_target) {\n scrollTop = getScrollTop(_target);\n offsetHeight = _target.offsetHeight || 0;\n }\n const nextShow = scrollTop > offsetHeight / 3 || scrollTop > local.visibilityHeight;\n\n if (Boolean(show()) !== nextShow) {\n setShow(nextShow);\n }\n return false;\n }\n\n onMount(() => {\n target().addEventListener('scroll', handleScrollY, false);\n });\n onCleanup(() => {\n target().removeEventListener('scroll', handleScrollY, false);\n });\n return (\n <Show when={show() !== null}>\n <Portal useShadow mount={local.mount}>\n <style>\n {baseStyle()}\n {themeStyle()}\n {style}\n {css(local.css)}\n </style>\n <div\n onAnimationEnd={exit}\n class={cx('back-top', show() === false && 'back-top-out', local.class)}\n onClick={handleBackTop}\n style={{ 'z-index': getMaxZindex().toString() }}\n {...other}\n />\n </Portal>\n </Show>\n );\n}\n\nexport type BackTopElement = CustomElement<BackTopProps>;\n\ncustomElement<BackTopProps>(\n 'n-back-top',\n {\n class: void 0,\n css: void 0,\n visibilityHeight: void 0,\n mount: void 0,\n target: void 0,\n },\n (_, opt) => {\n const el = opt.element;\n\n if (!el.mount) {\n el.style.position = 'sticky';\n el.style.bottom = '24px';\n el.style.right = '24px';\n el.style.display = 'block';\n el.style.pointerEvents = 'none';\n }\n const props = mergeProps(\n {\n css: el.css,\n visibilityHeight: el.visibilityHeight,\n mount: el.renderRoot as HTMLElement,\n target: el.target,\n },\n _,\n );\n\n createEffect(() => {\n el.removeAttribute('css');\n });\n return createComponent(BackTop, props);\n },\n);\nexport default BackTop;\n"],"names":["Show","createComponent","createEffect","createMemo","createSignal","mergeProps","onCleanup","onMount","splitProps","getMaxZindex","getScrollTop","isFunction","css","cx","customElement","Portal","style","theme","BackTop","_","baseStyle","isDark","props","target","window","visibilityHeight","local","other","show","setShow","themeStyle","bg","handleBackTop","scrollTo","top","behavior","exit","handleScrollY","e","preventDefault","scrollTop","offsetHeight","_target","nextShow","Boolean","addEventListener","removeEventListener","mount","class","toString","opt","el","element","position","bottom","right","display","pointerEvents","renderRoot","removeAttribute"],"mappings":"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"}
1
+ {"version":3,"sources":["../../components/back-top/index.tsx"],"sourcesContent":["import {\n Show,\n createComponent,\n createEffect,\n createMemo,\n createSignal,\n mergeProps,\n onCleanup,\n onMount,\n splitProps,\n} from 'solid-js';\nimport { getMaxZindex, getScrollTop, isFunction } from '@moneko/common';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport { Portal } from 'solid-js/web';\nimport { style } from './style';\nimport theme from '../theme';\nimport type { CustomElement } from '..';\n\nexport interface BackTopProps {\n /** 设置需要监听其滚动事件的元素\n * @default window\n */\n target?: HTMLElement | (() => HTMLElement);\n /** 挂载到指定的元素\n * @default body\n */\n mount?: HTMLElement;\n /** 滚动高度达到此参数值才出现 BackTop */\n visibilityHeight?: number;\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n}\n\nfunction BackTop(_: BackTopProps) {\n const { baseStyle, isDark } = theme;\n const props = mergeProps({ target: window as unknown as HTMLElement, visibilityHeight: 400 }, _);\n const [local, other] = splitProps(props, ['class', 'target', 'mount', 'css', 'visibilityHeight']);\n const [show, setShow] = createSignal<boolean | null>(null);\n const target = createMemo(() => (isFunction(local.target) ? local.target() : local.target));\n\n const themeStyle = createMemo(() => {\n const bg = isDark() ? 'rgb(255 255 255 / 45%)' : 'var(--primary-border)';\n\n return `:host {--back-top-bg: ${bg};}`;\n });\n\n function handleBackTop() {\n target()?.scrollTo({\n top: 0,\n behavior: 'smooth',\n });\n }\n function exit() {\n if (show() === false) {\n setShow(null);\n }\n }\n function handleScrollY(e: Event) {\n e.preventDefault();\n let scrollTop = 0;\n let offsetHeight = 0;\n const _target = target();\n\n if (_target) {\n scrollTop = getScrollTop(_target);\n offsetHeight = _target.offsetHeight || 0;\n }\n const nextShow = scrollTop > offsetHeight / 3 || scrollTop > local.visibilityHeight;\n\n if (Boolean(show()) !== nextShow) {\n setShow(nextShow);\n }\n return false;\n }\n\n onMount(() => {\n target().addEventListener('scroll', handleScrollY, false);\n });\n onCleanup(() => {\n target().removeEventListener('scroll', handleScrollY, false);\n });\n return (\n <Show when={show() !== null}>\n <Portal useShadow mount={local.mount}>\n <style>\n {baseStyle()}\n {themeStyle()}\n {style}\n {css(local.css)}\n </style>\n <div\n onAnimationEnd={exit}\n class={cx('back-top', show() === false && 'back-top-out', local.class)}\n onClick={handleBackTop}\n style={{ 'z-index': getMaxZindex().toString() }}\n {...other}\n />\n </Portal>\n </Show>\n );\n}\n\nexport type BackTopElement = CustomElement<BackTopProps>;\n\ncustomElement<BackTopProps>(\n 'n-back-top',\n {\n class: void 0,\n css: void 0,\n visibilityHeight: void 0,\n mount: void 0,\n target: void 0,\n },\n (_, opt) => {\n const el = opt.element;\n\n if (!el.mount) {\n el.style.position = 'sticky';\n el.style.bottom = '24px';\n el.style.right = '24px';\n el.style.display = 'block';\n el.style.pointerEvents = 'none';\n }\n const props = mergeProps(\n {\n css: el.css,\n visibilityHeight: el.visibilityHeight,\n mount: el.renderRoot as HTMLElement,\n target: el.target,\n },\n _,\n );\n\n createEffect(() => {\n el.removeAttribute('css');\n });\n return createComponent(BackTop, props);\n },\n);\nexport default BackTop;\n"],"names":["Show","createComponent","createEffect","createMemo","createSignal","mergeProps","onCleanup","onMount","splitProps","getMaxZindex","getScrollTop","isFunction","css","cx","customElement","Portal","style","theme","BackTop","_","baseStyle","isDark","props","target","window","visibilityHeight","local","other","show","setShow","themeStyle","bg","handleBackTop","scrollTo","top","behavior","exit","handleScrollY","e","preventDefault","scrollTop","offsetHeight","_target","nextShow","Boolean","addEventListener","removeEventListener","mount","class","toString","opt","el","element","position","bottom","right","display","pointerEvents","renderRoot","removeAttribute"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export{};
2
+ //# sourceMappingURL=style.d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../components/back-top/style.d.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export{};
2
+ //# sourceMappingURL=index.d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../components/basic-config/index.d.ts"],"names":[],"mappings":""}
@@ -1,4 +1,3 @@
1
- import type { JSXElement } from 'solid-js';
2
1
  export interface BasicConfig {
3
2
  /** 组件状态
4
3
  * @default 'normal'
@@ -37,11 +36,11 @@ export declare enum Status {
37
36
  }
38
37
  export interface BaseOption {
39
38
  /** 图标 */
40
- icon?: JSXElement;
39
+ icon?: JSX.Element;
41
40
  /** 值 */
42
41
  value?: string | number;
43
42
  /** 标题 */
44
- label?: JSXElement;
43
+ label?: JSX.Element;
45
44
  /** 不可用状态 */
46
45
  disabled?: boolean;
47
46
  /** 自定义类名 */
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/basic-config/index.ts"],"sourcesContent":["import type { JSXElement } from 'solid-js';\n\nexport interface BasicConfig {\n /** 组件状态\n * @default 'normal'\n */\n status: keyof typeof Status;\n /** 组件尺寸\n * @default 'normal'\n */\n size: keyof typeof Size;\n /** 自定义 'label'、'value'、'options' 等映射的key */\n fieldName: Partial<{ [key in keyof typeof FieldName]: string }>;\n}\n\nexport enum Size {\n /** 小 */\n small = 'small',\n /** 默认: 中 */\n normal = 'normal',\n /** 大 */\n large = 'large',\n}\n\nexport enum Status {\n /** 默认 */\n normal = 'normal',\n /** 成功 */\n success = 'success',\n /** 警告 */\n warning = 'warning',\n /** 错误 */\n error = 'error',\n /** 详细 */\n info = 'info',\n /** 主要 */\n primary = 'primary',\n}\n\nexport interface BaseOption {\n /** 图标 */\n icon?: JSXElement;\n /** 值 */\n value?: string | number;\n /** 标题 */\n label?: JSXElement;\n /** 不可用状态 */\n disabled?: boolean;\n /** 自定义类名 */\n class?: string;\n /** 自定义样式 */\n style?: Record<string, unknown>;\n /** 选项状态\n * @default 'normal'\n */\n status?: Status;\n /** 分组子选项 */\n options?: (BaseOption | string)[];\n [key: string]: Any;\n}\n\nexport enum FieldName {\n /** 标题 */\n label = 'label',\n /** 值 */\n value = 'value',\n /** 分组子选项 */\n options = 'options',\n /** 子选项 */\n children = 'children',\n /** 图标 */\n icon = 'icon',\n /** 后缀图标 */\n suffix = 'suffix',\n}\n"],"names":["Size","Status","FieldName","small","normal","large","success","warning","error","info","primary","label","value","options","children","icon","suffix"],"mappings":"IAeYA,EASAC,EAqCAC,aA9CL,MAAKF,EAAAA,OAAAA,UACV,MAAM,EACNG,MAAAA,QAFUH,EAGV,UAAU,EACVI,OAAAA,SAJUJ,EAKV,MAAM,EACNK,MAAAA,mBAGK,QAAKJ,EAAAA,SAAAA,YACV,OAAO,EACPG,OAAAA,SAFUH,EAGV,OAAO,EACPK,QAAAA,UAJUL,EAKV,OAAO,EACPM,QAAAA,UANUN,EAOV,OAAO,EACPO,MAAAA,QARUP,EASV,OAAO,EACPQ,KAAAA,OAVUR,EAWV,OAAO,EACPS,QAAAA,qBAyBK,WAAKR,EAAAA,YAAAA,eACV,OAAO,EACPS,MAAAA,QAFUT,EAGV,MAAM,EACNU,MAAAA,QAJUV,EAKV,UAAU,EACVW,QAAAA,UANUX,EAOV,QAAQ,EACRY,SAAAA,WARUZ,EASV,OAAO,EACPa,KAAAA,OAVUb,EAWV,SAAS,EACTc,OAAAA"}
1
+ {"version":3,"sources":["../../components/basic-config/index.ts"],"sourcesContent":["export interface BasicConfig {\n /** 组件状态\n * @default 'normal'\n */\n status: keyof typeof Status;\n /** 组件尺寸\n * @default 'normal'\n */\n size: keyof typeof Size;\n /** 自定义 'label'、'value'、'options' 等映射的key */\n fieldName: Partial<{ [key in keyof typeof FieldName]: string }>;\n}\n\nexport enum Size {\n /** 小 */\n small = 'small',\n /** 默认: 中 */\n normal = 'normal',\n /** 大 */\n large = 'large',\n}\n\nexport enum Status {\n /** 默认 */\n normal = 'normal',\n /** 成功 */\n success = 'success',\n /** 警告 */\n warning = 'warning',\n /** 错误 */\n error = 'error',\n /** 详细 */\n info = 'info',\n /** 主要 */\n primary = 'primary',\n}\n\nexport interface BaseOption {\n /** 图标 */\n icon?: JSX.Element;\n /** 值 */\n value?: string | number;\n /** 标题 */\n label?: JSX.Element;\n /** 不可用状态 */\n disabled?: boolean;\n /** 自定义类名 */\n class?: string;\n /** 自定义样式 */\n style?: Record<string, unknown>;\n /** 选项状态\n * @default 'normal'\n */\n status?: Status;\n /** 分组子选项 */\n options?: (BaseOption | string)[];\n [key: string]: Any;\n}\n\nexport enum FieldName {\n /** 标题 */\n label = 'label',\n /** 值 */\n value = 'value',\n /** 分组子选项 */\n options = 'options',\n /** 子选项 */\n children = 'children',\n /** 图标 */\n icon = 'icon',\n /** 后缀图标 */\n suffix = 'suffix',\n}\n"],"names":["Size","Status","FieldName","small","normal","large","success","warning","error","info","primary","label","value","options","children","icon","suffix"],"mappings":"IAaYA,EASAC,EAqCAC,aA9CL,MAAKF,EAAAA,OAAAA,UACV,MAAM,EACNG,MAAAA,QAFUH,EAGV,UAAU,EACVI,OAAAA,SAJUJ,EAKV,MAAM,EACNK,MAAAA,mBAGK,QAAKJ,EAAAA,SAAAA,YACV,OAAO,EACPG,OAAAA,SAFUH,EAGV,OAAO,EACPK,QAAAA,UAJUL,EAKV,OAAO,EACPM,QAAAA,UANUN,EAOV,OAAO,EACPO,MAAAA,QARUP,EASV,OAAO,EACPQ,KAAAA,OAVUR,EAWV,OAAO,EACPS,QAAAA,qBAyBK,WAAKR,EAAAA,YAAAA,eACV,OAAO,EACPS,MAAAA,QAFUT,EAGV,MAAM,EACNU,MAAAA,QAJUV,EAKV,UAAU,EACVW,QAAAA,UANUX,EAOV,QAAQ,EACRY,SAAAA,WARUZ,EASV,OAAO,EACPa,KAAAA,OAVUb,EAWV,SAAS,EACTc,OAAAA"}
@@ -0,0 +1,2 @@
1
+ export default Button;
2
+ //# sourceMappingURL=index.d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../components/button/index.d.ts"],"sourcesContent":["import type { BasicConfig, CustomElement } from '..';\nexport interface ButtonProps {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** 按钮类型 */\n type?: 'success' | 'error' | 'primary' | 'warning' | 'default';\n /** 透明背景 */\n ghost?: boolean;\n /** 实色背景 */\n fill?: boolean;\n /** 圆形按钮 */\n circle?: boolean;\n /** 虚线按钮 */\n dashed?: boolean;\n /** 扁平按钮 */\n flat?: boolean;\n /** 禁用按钮 */\n disabled?: boolean;\n /** 块按钮 */\n block?: boolean;\n /** 链接按钮 */\n link?: boolean;\n /** 危险按钮 */\n danger?: boolean;\n /** 自定义 tag\n * @since 2.1.0\n */\n tag?: string;\n /** 按钮尺寸\n * @default 'normal'\n */\n size?: BasicConfig['size'];\n /** 按钮前面添加一个图标 */\n icon?: (() => JSX.Element) | JSX.Element;\n children?: JSX.Element;\n}\nexport type ButtonElement = CustomElement<ButtonProps>;\ndeclare function Button(_: ButtonProps): import(\"solid-js\").JSX.Element;\nexport default Button;\n"],"names":["Button"],"mappings":"AAwCA,eAAeA,MAAO"}
@@ -1,6 +1,5 @@
1
- import { type JSX } from 'solid-js';
2
1
  import type { BasicConfig, CustomElement } from '..';
3
- export interface ButtonProps extends Omit<JSX.ButtonHTMLAttributes<HTMLButtonElement>, 'type' | 'ref'> {
2
+ export interface ButtonProps {
4
3
  /** 自定义类名 */
5
4
  class?: string;
6
5
  /** 自定义样式表 */
@@ -35,9 +34,8 @@ export interface ButtonProps extends Omit<JSX.ButtonHTMLAttributes<HTMLButtonEle
35
34
  size?: BasicConfig['size'];
36
35
  /** 按钮前面添加一个图标 */
37
36
  icon?: (() => JSX.Element) | JSX.Element;
38
- /** 按键抬起 */
39
- onKeyUp?(e: KeyboardEvent): void;
37
+ children?: JSX.Element;
40
38
  }
41
39
  export type ButtonElement = CustomElement<ButtonProps>;
42
- declare function Button(_: ButtonProps): JSX.Element;
40
+ declare function Button(_: ButtonProps): import("solid-js").JSX.Element;
43
41
  export default Button;
@@ -1,2 +1,2 @@
1
- import{template as e}from"solid-js/web";import{mergeProps as o}from"solid-js/web";import"solid-js/web";import{insert as t}from"solid-js/web";import{createComponent as i}from"solid-js/web";let l=/*#__PURE__*/e("<style>"),r=/*#__PURE__*/e('<span class="icon" part="icon">'),n=/*#__PURE__*/e('<span class="label" part="label">');import{Show as s,createComponent as d,createEffect as a,createMemo as c,createSignal as m,mergeProps as p,splitProps as f}from"solid-js";import u from"@moneko/common/lib/isFunction";import{css as b,cx as g}from"@moneko/css";import{customElement as h}from"solid-element";import{Dynamic as v}from"solid-js/web";import{style as k}from"./style";import w from"../theme";function j(e){let d;let{baseStyle:a}=w,h=p({size:"normal",type:"default"},e),[j,y]=f(h,["ghost","fill","circle","dashed","flat","link","danger","children","block","size","type","class","icon","css","part","disabled","tag"]),[z,C]=m(!1),A=c(()=>u(j.icon)?j.icon():j.icon);return[(()=>{let e=l();return t(e,a,null),t(e,k,null),t(e,()=>b(j.css),null),e})(),i(v,o({ref(e){let o=d;"function"==typeof o?o(e):d=e},get component(){return j.link?"a":j.tag||"button"},get class(){return g("btn",j.type,j.size,j.danger&&"danger",j.block&&"block",j.fill&&"fill",j.circle&&"circle",j.flat&&"flat",j.dashed&&"dashed",j.ghost&&"ghost",j.link&&"link",j.disabled&&"disabled",z()&&"without")},part:"button",onClick:function(){j.disabled||C(!0)},onAnimationEnd:function(){C(!1)},get disabled(){return j.disabled},role:"button"},y,{get children(){return[i(s,{get when(){return j.icon},get children(){let e=r();return t(e,A),e}}),(()=>{let e=n();return t(e,()=>j.children),e})()]}}))]}h("n-button",{class:void 0,css:void 0,type:void 0,ghost:void 0,fill:void 0,circle:void 0,dashed:void 0,flat:void 0,disabled:void 0,block:void 0,link:void 0,danger:void 0,size:void 0,icon:void 0,tag:void 0},(e,o)=>{let t=o.element,i=p({css:t.css,children:[...t.childNodes.values()]},e);return a(()=>{t.replaceChildren(),t.removeAttribute("css")}),d(j,i)});export default j;
1
+ import{template as e}from"solid-js/web";import{mergeProps as o}from"solid-js/web";import"solid-js/web";import{insert as t}from"solid-js/web";import{createComponent as i}from"solid-js/web";let l=/*#__PURE__*/e("<style>"),n=/*#__PURE__*/e('<span class="icon" part="icon">'),r=/*#__PURE__*/e('<span class="label" part="label">');import{Show as s,createComponent as d,createEffect as c,createMemo as a,createSignal as m,mergeProps as p,splitProps as f}from"solid-js";import u from"@moneko/common/lib/isFunction";import{css as b,cx as g}from"@moneko/css";import{customElement as h}from"solid-element";import{Dynamic as v}from"solid-js/web";import{style as k}from"./style";import w from"../theme";function j(e){let d;let{baseStyle:c}=w,h=p({size:"normal",type:"default"},e),[j,y]=f(h,["ghost","fill","circle","dashed","flat","link","danger","children","block","size","type","class","icon","css","disabled","tag"]),[z,C]=m(!1),A=a(()=>u(j.icon)?j.icon():j.icon);return[(()=>{let e=l();return t(e,c,null),t(e,k,null),t(e,()=>b(j.css),null),e})(),i(v,o({ref(e){let o=d;"function"==typeof o?o(e):d=e},get component(){return j.link?"a":j.tag||"button"},get class(){return g("btn",j.type,j.size,j.danger&&"danger",j.block&&"block",j.fill&&"fill",j.circle&&"circle",j.flat&&"flat",j.dashed&&"dashed",j.ghost&&"ghost",j.link&&"link",j.disabled&&"disabled",z()&&"without")},part:"button",onClick:function(){j.disabled||C(!0)},onAnimationEnd:function(){C(!1)},get disabled(){return j.disabled},role:"button"},y,{get children(){return[i(s,{get when(){return j.icon},get children(){let e=n();return t(e,A),e}}),(()=>{let e=r();return t(e,()=>j.children),e})()]}}))]}h("n-button",{class:void 0,css:void 0,type:void 0,ghost:void 0,fill:void 0,circle:void 0,dashed:void 0,flat:void 0,disabled:void 0,block:void 0,link:void 0,danger:void 0,size:void 0,icon:void 0,tag:void 0},(e,o)=>{let t=o.element,i=p({css:t.css,children:[...t.childNodes.values()]},e);return c(()=>{t.replaceChildren(),t.removeAttribute("css")}),d(j,i)});export default j;
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/button/index.tsx"],"sourcesContent":["import {\n type JSX,\n Show,\n createComponent,\n createEffect,\n createMemo,\n createSignal,\n mergeProps,\n splitProps,\n} from 'solid-js';\nimport { isFunction } from '@moneko/common';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport { Dynamic } from 'solid-js/web';\nimport { style } from './style';\nimport theme from '../theme';\nimport type { BasicConfig, CustomElement } from '..';\n\nexport interface ButtonProps\n extends Omit<JSX.ButtonHTMLAttributes<HTMLButtonElement>, 'type' | 'ref'> {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** 按钮类型 */\n type?: 'success' | 'error' | 'primary' | 'warning' | 'default';\n /** 透明背景 */\n ghost?: boolean;\n /** 实色背景 */\n fill?: boolean;\n /** 圆形按钮 */\n circle?: boolean;\n /** 虚线按钮 */\n dashed?: boolean;\n /** 扁平按钮 */\n flat?: boolean;\n /** 禁用按钮 */\n disabled?: boolean;\n /** 块按钮 */\n block?: boolean;\n /** 链接按钮 */\n link?: boolean;\n /** 危险按钮 */\n danger?: boolean;\n /** 自定义 tag\n * @since 2.1.0\n */\n tag?: string;\n /** 按钮尺寸\n * @default 'normal'\n */\n size?: BasicConfig['size'];\n /** 按钮前面添加一个图标 */\n icon?: (() => JSX.Element) | JSX.Element;\n /** 按键抬起 */\n onKeyUp?(e: KeyboardEvent): void;\n}\nexport type ButtonElement = CustomElement<ButtonProps>;\n\nfunction Button(_: ButtonProps) {\n const { baseStyle } = theme;\n const _props = mergeProps({ size: 'normal', type: 'default' }, _);\n const [local, other] = splitProps(_props, [\n 'ghost',\n 'fill',\n 'circle',\n 'dashed',\n 'flat',\n 'link',\n 'danger',\n 'children',\n 'block',\n 'size',\n 'type',\n 'class',\n 'icon',\n 'css',\n 'part',\n 'disabled',\n 'tag',\n ]);\n let ref: HTMLButtonElement | undefined;\n const [animating, setAnimating] = createSignal(false);\n\n function handleClick() {\n if (!local.disabled) {\n setAnimating(true);\n }\n }\n function handleAnimationEnd() {\n setAnimating(false);\n }\n const icon = createMemo(() => (isFunction(local.icon) ? local.icon() : local.icon));\n\n return (\n <>\n <style>\n {baseStyle()}\n {style}\n {css(local.css)}\n </style>\n <Dynamic\n ref={ref}\n component={local.link ? 'a' : local.tag || 'button'}\n class={cx(\n 'btn',\n local.type,\n local.size,\n local.danger && 'danger',\n local.block && 'block',\n local.fill && 'fill',\n local.circle && 'circle',\n local.flat && 'flat',\n local.dashed && 'dashed',\n local.ghost && 'ghost',\n local.link && 'link',\n local.disabled && 'disabled',\n animating() && 'without',\n )}\n part=\"button\"\n onClick={handleClick}\n onAnimationEnd={handleAnimationEnd}\n disabled={local.disabled}\n role=\"button\"\n {...other}\n >\n <Show when={local.icon}>\n <span class=\"icon\" part=\"icon\">\n {icon()}\n </span>\n </Show>\n <span class=\"label\" part=\"label\">\n {local.children}\n </span>\n </Dynamic>\n </>\n );\n}\n\ncustomElement<ButtonProps>(\n 'n-button',\n {\n class: void 0,\n css: void 0,\n type: void 0,\n ghost: void 0,\n fill: void 0,\n circle: void 0,\n dashed: void 0,\n flat: void 0,\n disabled: void 0,\n block: void 0,\n link: void 0,\n danger: void 0,\n size: void 0,\n icon: void 0,\n tag: void 0,\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n css: el.css,\n children: [...el.childNodes.values()],\n },\n _,\n );\n\n createEffect(() => {\n el.replaceChildren();\n el.removeAttribute('css');\n });\n\n return createComponent(Button, props);\n },\n);\nexport default Button;\n"],"names":["Show","createComponent","createEffect","createMemo","createSignal","mergeProps","splitProps","isFunction","css","cx","customElement","Dynamic","style","theme","Button","_","ref","baseStyle","_props","size","type","local","other","animating","setAnimating","icon","link","tag","danger","block","fill","circle","flat","dashed","ghost","disabled","children","class","opt","el","element","props","childNodes","values","replaceChildren","removeAttribute"],"mappings":"qUAAA,QAEEA,QAAAA,CAAI,CACJC,mBAAAA,CAAe,CACfC,gBAAAA,CAAY,CACZC,cAAAA,CAAU,CACVC,gBAAAA,CAAY,CACZC,cAAAA,CAAU,CACVC,cAAAA,CAAU,KACL,UAAW,AAClB,QAASC,MAAkB,+BAAiB,AAC5C,QAASC,OAAAA,CAAG,CAAEC,MAAAA,CAAE,KAAQ,aAAc,AACtC,QAASC,iBAAAA,CAAa,KAAQ,eAAgB,AAC9C,QAASC,WAAAA,CAAO,KAAQ,cAAe,AACvC,QAASC,SAAAA,CAAK,KAAQ,SAAU,AAChC,QAAOC,MAAW,UAAW,CA4C7B,SAASC,EAAOC,CAAc,MAsBxBC,EArBJ,GAAM,CAAEC,UAAAA,CAAS,CAAE,CAAGJ,EAChBK,EAASb,EAAW,CAAEc,KAAM,SAAUC,KAAM,SAAU,EAAGL,GACzD,CAACM,EAAOC,EAAM,CAAGhB,EAAWY,EAAQ,CACxC,QACA,OACA,SACA,SACA,OACA,OACA,SACA,WACA,QACA,OACA,OACA,QACA,OACA,MACA,OACA,WACA,MACD,EAEK,CAACK,EAAWC,EAAa,CAAGpB,EAAa,CAAA,GAUzCqB,EAAOtB,EAAW,IAAOI,EAAWc,EAAMI,IAAI,EAAIJ,EAAMI,IAAI,GAAKJ,EAAMI,IAAI,EAEjF,kCAGOR,YACAL,gBACAJ,EAAIa,EAAMb,GAAG,gBAEfG,kBACMK,4BAAAA,4BACMK,EAAMK,IAAI,CAAG,IAAML,EAAMM,GAAG,EAAI,6BACpClB,EACL,MACAY,EAAMD,IAAI,CACVC,EAAMF,IAAI,CACVE,EAAMO,MAAM,EAAI,SAChBP,EAAMQ,KAAK,EAAI,QACfR,EAAMS,IAAI,EAAI,OACdT,EAAMU,MAAM,EAAI,SAChBV,EAAMW,IAAI,EAAI,OACdX,EAAMY,MAAM,EAAI,SAChBZ,EAAMa,KAAK,EAAI,QACfb,EAAMK,IAAI,EAAI,OACdL,EAAMc,QAAQ,EAAI,WAClBZ,KAAe,kCAjCvB,WACOF,EAAMc,QAAQ,EACjBX,EAAa,CAAA,EAEjB,iBACA,WACEA,EAAa,CAAA,EACf,wBA+BgBH,EAAMc,QAAQ,iBAEpBb,2BAEHtB,qBAAWqB,EAAMI,IAAI,sCAEjBA,uCAIFJ,EAAMe,QAAQ,aAKzB,CAEA1B,EACE,WACA,CACE2B,MAAO,KAAK,EACZ7B,IAAK,KAAK,EACVY,KAAM,KAAK,EACXc,MAAO,KAAK,EACZJ,KAAM,KAAK,EACXC,OAAQ,KAAK,EACbE,OAAQ,KAAK,EACbD,KAAM,KAAK,EACXG,SAAU,KAAK,EACfN,MAAO,KAAK,EACZH,KAAM,KAAK,EACXE,OAAQ,KAAK,EACbT,KAAM,KAAK,EACXM,KAAM,KAAK,EACXE,IAAK,KAAK,CACZ,EACA,CAACZ,EAAGuB,KACF,IAAMC,EAAKD,EAAIE,OAAO,CAChBC,EAAQpC,EACZ,CACEG,IAAK+B,EAAG/B,GAAG,CACX4B,SAAU,IAAIG,EAAGG,UAAU,CAACC,MAAM,GAAG,AACvC,EACA5B,GAQF,OALAb,EAAa,KACXqC,EAAGK,eAAe,GAClBL,EAAGM,eAAe,CAAC,MACrB,GAEO5C,EAAgBa,EAAQ2B,EACjC,EAEF,gBAAe3B,CAAO"}
1
+ {"version":3,"sources":["../../components/button/index.tsx"],"sourcesContent":["import {\n Show,\n createComponent,\n createEffect,\n createMemo,\n createSignal,\n mergeProps,\n splitProps,\n} from 'solid-js';\nimport { isFunction } from '@moneko/common';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport { Dynamic } from 'solid-js/web';\nimport { style } from './style';\nimport theme from '../theme';\nimport type { BasicConfig, CustomElement } from '..';\n\nexport interface ButtonProps {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** 按钮类型 */\n type?: 'success' | 'error' | 'primary' | 'warning' | 'default';\n /** 透明背景 */\n ghost?: boolean;\n /** 实色背景 */\n fill?: boolean;\n /** 圆形按钮 */\n circle?: boolean;\n /** 虚线按钮 */\n dashed?: boolean;\n /** 扁平按钮 */\n flat?: boolean;\n /** 禁用按钮 */\n disabled?: boolean;\n /** 块按钮 */\n block?: boolean;\n /** 链接按钮 */\n link?: boolean;\n /** 危险按钮 */\n danger?: boolean;\n /** 自定义 tag\n * @since 2.1.0\n */\n tag?: string;\n /** 按钮尺寸\n * @default 'normal'\n */\n size?: BasicConfig['size'];\n /** 按钮前面添加一个图标 */\n icon?: (() => JSX.Element) | JSX.Element;\n children?: JSX.Element;\n}\nexport type ButtonElement = CustomElement<ButtonProps>;\n\nfunction Button(_: ButtonProps) {\n const { baseStyle } = theme;\n const _props = mergeProps({ size: 'normal', type: 'default' }, _);\n const [local, other] = splitProps(_props, [\n 'ghost',\n 'fill',\n 'circle',\n 'dashed',\n 'flat',\n 'link',\n 'danger',\n 'children',\n 'block',\n 'size',\n 'type',\n 'class',\n 'icon',\n 'css',\n 'disabled',\n 'tag',\n ]);\n let ref: HTMLButtonElement | undefined;\n const [animating, setAnimating] = createSignal(false);\n\n function handleClick() {\n if (!local.disabled) {\n setAnimating(true);\n }\n }\n function handleAnimationEnd() {\n setAnimating(false);\n }\n const icon = createMemo(() => (isFunction(local.icon) ? local.icon() : local.icon));\n\n return (\n <>\n <style>\n {baseStyle()}\n {style}\n {css(local.css)}\n </style>\n <Dynamic\n ref={ref}\n component={local.link ? 'a' : local.tag || 'button'}\n class={cx(\n 'btn',\n local.type,\n local.size,\n local.danger && 'danger',\n local.block && 'block',\n local.fill && 'fill',\n local.circle && 'circle',\n local.flat && 'flat',\n local.dashed && 'dashed',\n local.ghost && 'ghost',\n local.link && 'link',\n local.disabled && 'disabled',\n animating() && 'without',\n )}\n part=\"button\"\n onClick={handleClick}\n onAnimationEnd={handleAnimationEnd}\n disabled={local.disabled}\n role=\"button\"\n {...other}\n >\n <Show when={local.icon}>\n <span class=\"icon\" part=\"icon\">\n {icon()}\n </span>\n </Show>\n <span class=\"label\" part=\"label\">\n {local.children}\n </span>\n </Dynamic>\n </>\n );\n}\n\ncustomElement<ButtonProps>(\n 'n-button',\n {\n class: void 0,\n css: void 0,\n type: void 0,\n ghost: void 0,\n fill: void 0,\n circle: void 0,\n dashed: void 0,\n flat: void 0,\n disabled: void 0,\n block: void 0,\n link: void 0,\n danger: void 0,\n size: void 0,\n icon: void 0,\n tag: void 0,\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n css: el.css,\n children: [...el.childNodes.values()],\n },\n _,\n );\n\n createEffect(() => {\n el.replaceChildren();\n el.removeAttribute('css');\n });\n\n return createComponent(Button, props);\n },\n);\nexport default Button;\n"],"names":["Show","createComponent","createEffect","createMemo","createSignal","mergeProps","splitProps","isFunction","css","cx","customElement","Dynamic","style","theme","Button","_","ref","baseStyle","_props","size","type","local","other","animating","setAnimating","icon","link","tag","danger","block","fill","circle","flat","dashed","ghost","disabled","children","class","opt","el","element","props","childNodes","values","replaceChildren","removeAttribute"],"mappings":"qUAAA,QACEA,QAAAA,CAAI,CACJC,mBAAAA,CAAe,CACfC,gBAAAA,CAAY,CACZC,cAAAA,CAAU,CACVC,gBAAAA,CAAY,CACZC,cAAAA,CAAU,CACVC,cAAAA,CAAU,KACL,UAAW,AAClB,QAASC,MAAkB,+BAAiB,AAC5C,QAASC,OAAAA,CAAG,CAAEC,MAAAA,CAAE,KAAQ,aAAc,AACtC,QAASC,iBAAAA,CAAa,KAAQ,eAAgB,AAC9C,QAASC,WAAAA,CAAO,KAAQ,cAAe,AACvC,QAASC,SAAAA,CAAK,KAAQ,SAAU,AAChC,QAAOC,MAAW,UAAW,CA0C7B,SAASC,EAAOC,CAAc,MAqBxBC,EApBJ,GAAM,CAAEC,UAAAA,CAAS,CAAE,CAAGJ,EAChBK,EAASb,EAAW,CAAEc,KAAM,SAAUC,KAAM,SAAU,EAAGL,GACzD,CAACM,EAAOC,EAAM,CAAGhB,EAAWY,EAAQ,CACxC,QACA,OACA,SACA,SACA,OACA,OACA,SACA,WACA,QACA,OACA,OACA,QACA,OACA,MACA,WACA,MACD,EAEK,CAACK,EAAWC,EAAa,CAAGpB,EAAa,CAAA,GAUzCqB,EAAOtB,EAAW,IAAOI,EAAWc,EAAMI,IAAI,EAAIJ,EAAMI,IAAI,GAAKJ,EAAMI,IAAI,EAEjF,kCAGOR,YACAL,gBACAJ,EAAIa,EAAMb,GAAG,gBAEfG,kBACMK,4BAAAA,4BACMK,EAAMK,IAAI,CAAG,IAAML,EAAMM,GAAG,EAAI,6BACpClB,EACL,MACAY,EAAMD,IAAI,CACVC,EAAMF,IAAI,CACVE,EAAMO,MAAM,EAAI,SAChBP,EAAMQ,KAAK,EAAI,QACfR,EAAMS,IAAI,EAAI,OACdT,EAAMU,MAAM,EAAI,SAChBV,EAAMW,IAAI,EAAI,OACdX,EAAMY,MAAM,EAAI,SAChBZ,EAAMa,KAAK,EAAI,QACfb,EAAMK,IAAI,EAAI,OACdL,EAAMc,QAAQ,EAAI,WAClBZ,KAAe,kCAjCvB,WACOF,EAAMc,QAAQ,EACjBX,EAAa,CAAA,EAEjB,iBACA,WACEA,EAAa,CAAA,EACf,wBA+BgBH,EAAMc,QAAQ,iBAEpBb,2BAEHtB,qBAAWqB,EAAMI,IAAI,sCAEjBA,uCAIFJ,EAAMe,QAAQ,aAKzB,CAEA1B,EACE,WACA,CACE2B,MAAO,KAAK,EACZ7B,IAAK,KAAK,EACVY,KAAM,KAAK,EACXc,MAAO,KAAK,EACZJ,KAAM,KAAK,EACXC,OAAQ,KAAK,EACbE,OAAQ,KAAK,EACbD,KAAM,KAAK,EACXG,SAAU,KAAK,EACfN,MAAO,KAAK,EACZH,KAAM,KAAK,EACXE,OAAQ,KAAK,EACbT,KAAM,KAAK,EACXM,KAAM,KAAK,EACXE,IAAK,KAAK,CACZ,EACA,CAACZ,EAAGuB,KACF,IAAMC,EAAKD,EAAIE,OAAO,CAChBC,EAAQpC,EACZ,CACEG,IAAK+B,EAAG/B,GAAG,CACX4B,SAAU,IAAIG,EAAGG,UAAU,CAACC,MAAM,GAAG,AACvC,EACA5B,GAQF,OALAb,EAAa,KACXqC,EAAGK,eAAe,GAClBL,EAAGM,eAAe,CAAC,MACrB,GAEO5C,EAAgBa,EAAQ2B,EACjC,EAEF,gBAAe3B,CAAO"}
@@ -0,0 +1,2 @@
1
+ export{};
2
+ //# sourceMappingURL=style.d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../components/button/style.d.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ import"../button";export default CaptureScreen;
2
+ //# sourceMappingURL=index.d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../components/capture-screen/index.d.ts"],"sourcesContent":["import '../button';\nimport type { CustomElement } from '..';\ndeclare interface MediaRecorderDataAvailableEvent extends Event {\n /** MediaRecorderDataAvailableEvent */\n data: Any;\n}\nexport interface CaptureScreenProps {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** MediaStreamConstraints */\n options?: MediaStreamConstraints;\n /** 是否预览 */\n preview?: boolean;\n /** 预览时是否显示控制器 */\n controls?: boolean;\n /** 录制时配置项 */\n recorder?: boolean;\n /** 录制文件名称 */\n filename?: string;\n /** 捕获屏幕按钮文字 */\n captureScreenText?: string;\n /** 停止捕获按钮文字 */\n stopCaptureText?: string;\n /** 开始录制按钮文字 */\n startRecorderText?: string;\n /** 停止录制按钮文字 */\n stopRecorderText?: string;\n /** 暂停录制按钮文字 */\n pausedRecorderText?: string;\n /** 录制中按钮文字 */\n recorderingText?: string;\n /** 录制错误回调方法 */\n onErrorRecorder?: (e: Event) => void;\n /** 停止录制回调方法 */\n onStopRecorder?: () => void;\n /** 开始录制回调方法 */\n onStartRecorder?: (state: MediaRecorder['state']) => void;\n /** 记录媒体时触发 */\n onRecorderDataAvailable?: (e: MediaRecorderDataAvailableEvent) => void;\n /** 捕获屏幕错误回调方法 */\n onErrorCapture?: (err: unknown) => void;\n /** 停止捕获屏幕回调方法 */\n onStopCapture?: () => void;\n /** 开始捕获屏幕回调方法 */\n onStartCapture?: (stream?: MediaStream) => void;\n /** 自定义保存录制文件方法 */\n onSaveRecorder?: (blob: Blob, fileName: string) => void;\n}\nexport type CaptureScreenElement = CustomElement<CaptureScreenProps, 'onErrorRecorder' | 'onStopRecorder' | 'onStartRecorder' | 'onRecorderDataAvailable' | 'onErrorCapture' | 'onStopCapture' | 'onStartCapture' | 'onSaveRecorder'>;\ndeclare function CaptureScreen(_: CaptureScreenProps): import(\"solid-js\").JSX.Element;\nexport default CaptureScreen;\n"],"names":["CaptureScreen"],"mappings":"AAAA,MAAO,WAAY,AAoDnB,gBAAeA,aAAc"}
@@ -1,11 +1,10 @@
1
- import { type JSX } from 'solid-js';
2
1
  import '../button';
3
2
  import type { CustomElement } from '..';
4
3
  declare interface MediaRecorderDataAvailableEvent extends Event {
5
4
  /** MediaRecorderDataAvailableEvent */
6
5
  data: Any;
7
6
  }
8
- export interface CaptureScreenProps extends JSX.ButtonHTMLAttributes<HTMLDivElement> {
7
+ export interface CaptureScreenProps {
9
8
  /** 自定义类名 */
10
9
  class?: string;
11
10
  /** 自定义样式表 */
@@ -50,5 +49,5 @@ export interface CaptureScreenProps extends JSX.ButtonHTMLAttributes<HTMLDivElem
50
49
  onSaveRecorder?: (blob: Blob, fileName: string) => void;
51
50
  }
52
51
  export type CaptureScreenElement = CustomElement<CaptureScreenProps, 'onErrorRecorder' | 'onStopRecorder' | 'onStartRecorder' | 'onRecorderDataAvailable' | 'onErrorCapture' | 'onStopCapture' | 'onStartCapture' | 'onSaveRecorder'>;
53
- declare function CaptureScreen(_: CaptureScreenProps): JSX.Element;
52
+ declare function CaptureScreen(_: CaptureScreenProps): import("solid-js").JSX.Element;
54
53
  export default CaptureScreen;
@@ -1,4 +1,4 @@
1
- import{_ as e}from"@swc/helpers/_/_async_to_generator";import{_ as r}from"@swc/helpers/_/_extends";import{use as t}from"solid-js/web";import{template as o}from"solid-js/web";import{spread as n}from"solid-js/web";import{mergeProps as a}from"solid-js/web";import{memo as i}from"solid-js/web";import{insert as l}from"solid-js/web";import{getOwner as s}from"solid-js/web";import{effect as c}from"solid-js/web";import{delegateEvents as d}from"solid-js/web";import{createComponent as p}from"solid-js/web";import{className as u}from"solid-js/web";import{addEventListener as v}from"solid-js/web";let m=/*#__PURE__*/o("<style>"),f=/*#__PURE__*/o('<n-button class="btn">',!0,!1),w=/*#__PURE__*/o('<n-button type="error" class="btn">',!0,!1),R=/*#__PURE__*/o('<div class="record"><n-button class="btn"><span>',!0,!1),b=/*#__PURE__*/o('<div class="view"><span></span><video autoplay>'),h=/*#__PURE__*/o('<div><div class="controller"><n-button class="btn">',!0,!1);import{Show as C,createComponent as S,createEffect as E,createMemo as g,createSignal as x,mergeProps as T,onCleanup as _,splitProps as j,untrack as y}from"solid-js";import k from"@moneko/common/lib/downloadBlob";import $ from"@moneko/common/lib/isFunction";import{css as D,cx as A}from"@moneko/css";import{customElement as O}from"solid-element";import{style as B}from"./style";import"../button";import L from"../theme";let M={video:!0,audio:{echoCancellation:!0,noiseSuppression:!0,sampleRate:44100}},F={inactive:"primary",paused:"warning",recording:"success"};function I(o){let d;let{baseStyle:S}=L,O=T({options:M,captureScreenText:"捕获屏幕",stopCaptureText:"停止捕获",startRecorderText:"开始录制",stopRecorderText:"停止录制",pausedRecorderText:"暂停录制",recorderingText:"录制中",onErrorRecorder:null},o),[I,N]=j(O,["options","preview","controls","recorder","filename","captureScreenText","stopCaptureText","startRecorderText","stopRecorderText","pausedRecorderText","recorderingText","onErrorRecorder","onStopRecorder","onStartRecorder","onStopCapture","onStartCapture","onRecorderDataAvailable","onErrorCapture","onSaveRecorder","class","css","ref","children"]),P=[],[q,z]=x(null),[G,H]=x(null),[J,K]=x("inactive");// 开始录制
1
+ import{_ as e}from"@swc/helpers/_/_async_to_generator";import{_ as r}from"@swc/helpers/_/_extends";import{use as t}from"solid-js/web";import{template as o}from"solid-js/web";import{spread as n}from"solid-js/web";import{mergeProps as a}from"solid-js/web";import{memo as i}from"solid-js/web";import{insert as l}from"solid-js/web";import{getOwner as s}from"solid-js/web";import{effect as c}from"solid-js/web";import{delegateEvents as d}from"solid-js/web";import{createComponent as p}from"solid-js/web";import{className as u}from"solid-js/web";import{addEventListener as v}from"solid-js/web";let m=/*#__PURE__*/o("<style>"),f=/*#__PURE__*/o('<n-button class="btn">',!0,!1),w=/*#__PURE__*/o('<n-button type="error" class="btn">',!0,!1),R=/*#__PURE__*/o('<div class="record"><n-button class="btn"><span>',!0,!1),b=/*#__PURE__*/o('<div class="view"><span></span><video autoplay>'),C=/*#__PURE__*/o('<div><div class="controller"><n-button class="btn">',!0,!1);import{Show as h,createComponent as S,createEffect as E,createMemo as g,createSignal as x,mergeProps as T,onCleanup as _,splitProps as j,untrack as y}from"solid-js";import k from"@moneko/common/lib/downloadBlob";import $ from"@moneko/common/lib/isFunction";import{css as D,cx as A}from"@moneko/css";import{customElement as O}from"solid-element";import{style as B}from"./style";import"../button";import L from"../theme";let M={video:!0,audio:{echoCancellation:!0,noiseSuppression:!0,sampleRate:44100}},F={inactive:"primary",paused:"warning",recording:"success"};function I(o){let d;let{baseStyle:S}=L,O=T({options:M,captureScreenText:"捕获屏幕",stopCaptureText:"停止捕获",startRecorderText:"开始录制",stopRecorderText:"停止录制",pausedRecorderText:"暂停录制",recorderingText:"录制中",onErrorRecorder:null},o),[I,N]=j(O,["options","preview","controls","recorder","filename","captureScreenText","stopCaptureText","startRecorderText","stopRecorderText","pausedRecorderText","recorderingText","onErrorRecorder","onStopRecorder","onStartRecorder","onStopCapture","onStartCapture","onRecorderDataAvailable","onErrorCapture","onSaveRecorder","class","css"]),P=[],[q,z]=x(null),[G,H]=x(null),[J,K]=x("inactive");// 开始录制
2
2
  function Q(){let e=y(q);if(e){switch($(I.onStartRecorder)&&I.onStartRecorder(e.state),e.state){case"inactive":e.start();break;case"paused":e.resume();break;default:e.pause()}K(e.state)}}function U(e){null==P||P.push(e.data),null==I.onRecorderDataAvailable||I.onRecorderDataAvailable.call(I,e)}// 停止录制
3
3
  function V(){let e=y(q);e&&("inactive"!==e.state&&e.stop(),K(e.state)),null==I.onStopRecorder||I.onStopRecorder.call(I)}function W(){if(!(null==P?void 0:P.length))return;// 将录制内容保存到本地
4
4
  let e=new Blob(P,{type:"video/webm"}),r=I.filename||new Date().toISOString(),t=`${r}.webm`;null==P||P.splice(0),I.onSaveRecorder&&I.onSaveRecorder(e,t),// 保存文件
@@ -8,5 +8,5 @@ V();let e=y(G);if(e){let r=e.getTracks();null==r||r.forEach(e=>e.stop()),H(null)
8
8
  e(function*(){X();try{let e=yield navigator.mediaDevices.getDisplayMedia(r({},M,I.options));e&&(// 监听停止捕获屏幕
9
9
  e.addEventListener("inactive",X,!1),H(e)),null==I.onStartCapture||I.onStartCapture.call(I,e)}catch(e){null==I.onErrorCapture||I.onErrorCapture.call(I,e)}})).apply(this,arguments)}E(()=>{let e=G();I.preview&&d&&e&&(d.srcObject=e)}),E(()=>{let e=G();if(null==e?void 0:e.active){let r=new MediaRecorder(e);r.onstop=W,r.onerror=I.onErrorRecorder,// 每次timeslice记录毫秒级媒体时(或未记录整个媒体时,如果timeslice未指定)定期触发
10
10
  r.ondataavailable=U,z(r)}else z(null)}),_(()=>{let e=y(q);// 未录制时不需要停止
11
- e&&(null==e?void 0:e.state)!=="inactive"&&e.stop();let r=y(G);if(r){let e=r.getTracks();e.forEach(e=>e.stop())}});let ee=g(()=>({paused:I.pausedRecorderText,recording:I.recorderingText,inactive:I.startRecorderText})[J()]);return[(()=>{let e=m();return l(e,S,null),l(e,B,null),l(e,()=>D(I.css),null),e})(),(()=>{let e=h(),r=e.firstChild,o=r.firstChild;return n(e,a({get class(){return A("capture-screen",I.class)}},N),!1,!0),v(o,"click",Y,!0),o._$owner=s(),l(o,()=>I.captureScreenText),l(r,p(C,{get when(){return G()},get children(){return[(()=>{let e=f();return v(e,"click",X,!0),e.danger=!0,e._$owner=s(),l(e,()=>I.stopCaptureText),e})(),p(C,{get when(){return I.recorder},get children(){let e=R(),r=e.firstChild,t=r.firstChild;return v(r,"click",Q,!0),r._$owner=s(),l(t,ee),l(e,p(C,{get when(){return"inactive"!==J()},get children(){let e=w();return v(e,"click",V,!0),e._$owner=s(),l(e,()=>I.stopRecorderText),e}}),null),c(()=>r.type=F[J()]),e}})]}}),null),l(e,p(C,{get when(){return i(()=>!!I.preview)()&&G()},get children(){let e=b(),r=e.firstChild,o=r.nextSibling,n=d;return"function"==typeof n?t(n,o):d=o,c(e=>{let t=A("recording"===J()&&"recording","paused"===J()&&"paused"),n=I.controls&&null!==G();return t!==e._v$&&u(r,e._v$=t),n!==e._v$2&&(o.controls=e._v$2=n),e},{_v$:void 0,_v$2:void 0}),e}}),null),e})()]}O("n-capture-screen",{class:void 0,css:void 0,options:void 0,preview:void 0,controls:void 0,recorder:void 0,filename:void 0,captureScreenText:void 0,stopCaptureText:void 0,startRecorderText:void 0,stopRecorderText:void 0,pausedRecorderText:void 0,recorderingText:void 0,onErrorRecorder:void 0,onStopRecorder:void 0,onStartRecorder:void 0,onRecorderDataAvailable:void 0,onErrorCapture:void 0,onStopCapture:void 0,onStartCapture:void 0,onSaveRecorder:void 0},(e,r)=>{let t=r.element,o=T({onErrorRecorder(e){t.dispatchEvent(new CustomEvent("errorrecorder",{detail:e}))},onStopRecorder(){t.dispatchEvent(new CustomEvent("stoprecorder",{detail:null}))},onStartRecorder(e){t.dispatchEvent(new CustomEvent("startrecorder",{detail:e}))},onRecorderDataAvailable(e){t.dispatchEvent(new CustomEvent("recorderdataavailable",{detail:e}))},onErrorCapture(e){t.dispatchEvent(new CustomEvent("errorcapture",{detail:e}))},onStopCapture(){t.dispatchEvent(new CustomEvent("stopcapture",{detail:null}))},onStartCapture(e){t.dispatchEvent(new CustomEvent("startcapture",{detail:e}))},onSaveRecorder(e,r){t.dispatchEvent(new CustomEvent("saverecorder",{detail:[e,r]}))}},e);return S(I,o)});export default I;d(["click"]);
11
+ e&&(null==e?void 0:e.state)!=="inactive"&&e.stop();let r=y(G);if(r){let e=r.getTracks();e.forEach(e=>e.stop())}});let ee=g(()=>({paused:I.pausedRecorderText,recording:I.recorderingText,inactive:I.startRecorderText})[J()]);return[(()=>{let e=m();return l(e,S,null),l(e,B,null),l(e,()=>D(I.css),null),e})(),(()=>{let e=C(),r=e.firstChild,o=r.firstChild;return n(e,a({get class(){return A("capture-screen",I.class)}},N),!1,!0),v(o,"click",Y,!0),o._$owner=s(),l(o,()=>I.captureScreenText),l(r,p(h,{get when(){return G()},get children(){return[(()=>{let e=f();return v(e,"click",X,!0),e.danger=!0,e._$owner=s(),l(e,()=>I.stopCaptureText),e})(),p(h,{get when(){return I.recorder},get children(){let e=R(),r=e.firstChild,t=r.firstChild;return v(r,"click",Q,!0),r._$owner=s(),l(t,ee),l(e,p(h,{get when(){return"inactive"!==J()},get children(){let e=w();return v(e,"click",V,!0),e._$owner=s(),l(e,()=>I.stopRecorderText),e}}),null),c(()=>r.type=F[J()]),e}})]}}),null),l(e,p(h,{get when(){return i(()=>!!I.preview)()&&G()},get children(){let e=b(),r=e.firstChild,o=r.nextSibling,n=d;return"function"==typeof n?t(n,o):d=o,c(e=>{let t=A("recording"===J()&&"recording","paused"===J()&&"paused"),n=I.controls&&null!==G();return t!==e._v$&&u(r,e._v$=t),n!==e._v$2&&(o.controls=e._v$2=n),e},{_v$:void 0,_v$2:void 0}),e}}),null),e})()]}O("n-capture-screen",{class:void 0,css:void 0,options:void 0,preview:void 0,controls:void 0,recorder:void 0,filename:void 0,captureScreenText:void 0,stopCaptureText:void 0,startRecorderText:void 0,stopRecorderText:void 0,pausedRecorderText:void 0,recorderingText:void 0,onErrorRecorder:void 0,onStopRecorder:void 0,onStartRecorder:void 0,onRecorderDataAvailable:void 0,onErrorCapture:void 0,onStopCapture:void 0,onStartCapture:void 0,onSaveRecorder:void 0},(e,r)=>{let t=r.element,o=T({onErrorRecorder(e){t.dispatchEvent(new CustomEvent("errorrecorder",{detail:e}))},onStopRecorder(){t.dispatchEvent(new CustomEvent("stoprecorder",{detail:null}))},onStartRecorder(e){t.dispatchEvent(new CustomEvent("startrecorder",{detail:e}))},onRecorderDataAvailable(e){t.dispatchEvent(new CustomEvent("recorderdataavailable",{detail:e}))},onErrorCapture(e){t.dispatchEvent(new CustomEvent("errorcapture",{detail:e}))},onStopCapture(){t.dispatchEvent(new CustomEvent("stopcapture",{detail:null}))},onStartCapture(e){t.dispatchEvent(new CustomEvent("startcapture",{detail:e}))},onSaveRecorder(e,r){t.dispatchEvent(new CustomEvent("saverecorder",{detail:[e,r]}))}},e);return S(I,o)});export default I;d(["click"]);
12
12
  //# sourceMappingURL=index.js.map