duoyun-ui 0.0.2

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 (392) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +12 -0
  3. package/docs/.gitignore +4 -0
  4. package/docs/104.bundle.js +19 -0
  5. package/docs/283.bundle.js +47 -0
  6. package/docs/354.bundle.js +1133 -0
  7. package/docs/354.bundle.js.LICENSE.txt +13 -0
  8. package/docs/587.bundle.js +26 -0
  9. package/docs/810.bundle.js +1 -0
  10. package/docs/gem-book.json +84 -0
  11. package/docs/index.html +1 -0
  12. package/docs/main.bundle.js +1 -0
  13. package/docs/robots.txt +2 -0
  14. package/docs/service-worker.js +1 -0
  15. package/docs/workbox-62d1f9d5.js +1 -0
  16. package/elements/action-text.d.ts +12 -0
  17. package/elements/action-text.d.ts.map +1 -0
  18. package/elements/action-text.js +63 -0
  19. package/elements/action-text.js.map +1 -0
  20. package/elements/area-chart.d.ts +35 -0
  21. package/elements/area-chart.d.ts.map +1 -0
  22. package/elements/area-chart.js +408 -0
  23. package/elements/area-chart.js.map +1 -0
  24. package/elements/avatar.d.ts +42 -0
  25. package/elements/avatar.d.ts.map +1 -0
  26. package/elements/avatar.js +190 -0
  27. package/elements/avatar.js.map +1 -0
  28. package/elements/banner.d.ts +21 -0
  29. package/elements/banner.d.ts.map +1 -0
  30. package/elements/banner.js +136 -0
  31. package/elements/banner.js.map +1 -0
  32. package/elements/bar-chart.d.ts +23 -0
  33. package/elements/bar-chart.d.ts.map +1 -0
  34. package/elements/bar-chart.js +170 -0
  35. package/elements/bar-chart.js.map +1 -0
  36. package/elements/base/chart.d.ts +74 -0
  37. package/elements/base/chart.d.ts.map +1 -0
  38. package/elements/base/chart.js +299 -0
  39. package/elements/base/chart.js.map +1 -0
  40. package/elements/base/loadable.d.ts +16 -0
  41. package/elements/base/loadable.d.ts.map +1 -0
  42. package/elements/base/loadable.js +77 -0
  43. package/elements/base/loadable.js.map +1 -0
  44. package/elements/base/resize.d.ts +15 -0
  45. package/elements/base/resize.d.ts.map +1 -0
  46. package/elements/base/resize.js +31 -0
  47. package/elements/base/resize.js.map +1 -0
  48. package/elements/base/scroll.d.ts +11 -0
  49. package/elements/base/scroll.d.ts.map +1 -0
  50. package/elements/base/scroll.js +90 -0
  51. package/elements/base/scroll.js.map +1 -0
  52. package/elements/base/visible.d.ts +12 -0
  53. package/elements/base/visible.d.ts.map +1 -0
  54. package/elements/base/visible.js +37 -0
  55. package/elements/base/visible.js.map +1 -0
  56. package/elements/breadcrumbs.d.ts +20 -0
  57. package/elements/breadcrumbs.d.ts.map +1 -0
  58. package/elements/breadcrumbs.js +88 -0
  59. package/elements/breadcrumbs.js.map +1 -0
  60. package/elements/button.d.ts +30 -0
  61. package/elements/button.d.ts.map +1 -0
  62. package/elements/button.js +225 -0
  63. package/elements/button.js.map +1 -0
  64. package/elements/card.d.ts +26 -0
  65. package/elements/card.d.ts.map +1 -0
  66. package/elements/card.js +163 -0
  67. package/elements/card.js.map +1 -0
  68. package/elements/cascader-pick.d.ts +22 -0
  69. package/elements/cascader-pick.d.ts.map +1 -0
  70. package/elements/cascader-pick.js +172 -0
  71. package/elements/cascader-pick.js.map +1 -0
  72. package/elements/cascader.d.ts +29 -0
  73. package/elements/cascader.d.ts.map +1 -0
  74. package/elements/cascader.js +247 -0
  75. package/elements/cascader.js.map +1 -0
  76. package/elements/chart-tooltip.d.ts +29 -0
  77. package/elements/chart-tooltip.d.ts.map +1 -0
  78. package/elements/chart-tooltip.js +150 -0
  79. package/elements/chart-tooltip.js.map +1 -0
  80. package/elements/chart-zoom.d.ts +20 -0
  81. package/elements/chart-zoom.d.ts.map +1 -0
  82. package/elements/chart-zoom.js +207 -0
  83. package/elements/chart-zoom.js.map +1 -0
  84. package/elements/checkbox.d.ts +20 -0
  85. package/elements/checkbox.d.ts.map +1 -0
  86. package/elements/checkbox.js +108 -0
  87. package/elements/checkbox.js.map +1 -0
  88. package/elements/coach-mark.d.ts +39 -0
  89. package/elements/coach-mark.d.ts.map +1 -0
  90. package/elements/coach-mark.js +212 -0
  91. package/elements/coach-mark.js.map +1 -0
  92. package/elements/code-block.d.ts +14 -0
  93. package/elements/code-block.d.ts.map +1 -0
  94. package/elements/code-block.js +427 -0
  95. package/elements/code-block.js.map +1 -0
  96. package/elements/collapse.d.ts +22 -0
  97. package/elements/collapse.d.ts.map +1 -0
  98. package/elements/collapse.js +111 -0
  99. package/elements/collapse.js.map +1 -0
  100. package/elements/color-panel.d.ts +30 -0
  101. package/elements/color-panel.d.ts.map +1 -0
  102. package/elements/color-panel.js +383 -0
  103. package/elements/color-panel.js.map +1 -0
  104. package/elements/color-pick.d.ts +14 -0
  105. package/elements/color-pick.d.ts.map +1 -0
  106. package/elements/color-pick.js +81 -0
  107. package/elements/color-pick.js.map +1 -0
  108. package/elements/compartment.d.ts +9 -0
  109. package/elements/compartment.d.ts.map +1 -0
  110. package/elements/compartment.js +32 -0
  111. package/elements/compartment.js.map +1 -0
  112. package/elements/copy.d.ts +20 -0
  113. package/elements/copy.d.ts.map +1 -0
  114. package/elements/copy.js +160 -0
  115. package/elements/copy.js.map +1 -0
  116. package/elements/date-panel.d.ts +29 -0
  117. package/elements/date-panel.d.ts.map +1 -0
  118. package/elements/date-panel.js +220 -0
  119. package/elements/date-panel.js.map +1 -0
  120. package/elements/date-pick.d.ts +23 -0
  121. package/elements/date-pick.d.ts.map +1 -0
  122. package/elements/date-pick.js +107 -0
  123. package/elements/date-pick.js.map +1 -0
  124. package/elements/date-range-panel.d.ts +28 -0
  125. package/elements/date-range-panel.d.ts.map +1 -0
  126. package/elements/date-range-panel.js +154 -0
  127. package/elements/date-range-panel.js.map +1 -0
  128. package/elements/date-range-pick.d.ts +26 -0
  129. package/elements/date-range-pick.d.ts.map +1 -0
  130. package/elements/date-range-pick.js +159 -0
  131. package/elements/date-range-pick.js.map +1 -0
  132. package/elements/divider.d.ts +15 -0
  133. package/elements/divider.d.ts.map +1 -0
  134. package/elements/divider.js +95 -0
  135. package/elements/divider.js.map +1 -0
  136. package/elements/donut-chart.d.ts +19 -0
  137. package/elements/donut-chart.d.ts.map +1 -0
  138. package/elements/donut-chart.js +140 -0
  139. package/elements/donut-chart.js.map +1 -0
  140. package/elements/drawer.d.ts +9 -0
  141. package/elements/drawer.d.ts.map +1 -0
  142. package/elements/drawer.js +45 -0
  143. package/elements/drawer.js.map +1 -0
  144. package/elements/drop-area.d.ts +18 -0
  145. package/elements/drop-area.d.ts.map +1 -0
  146. package/elements/drop-area.js +155 -0
  147. package/elements/drop-area.js.map +1 -0
  148. package/elements/empty.d.ts +8 -0
  149. package/elements/empty.d.ts.map +1 -0
  150. package/elements/empty.js +33 -0
  151. package/elements/empty.js.map +1 -0
  152. package/elements/file-pick.d.ts +28 -0
  153. package/elements/file-pick.d.ts.map +1 -0
  154. package/elements/file-pick.js +226 -0
  155. package/elements/file-pick.js.map +1 -0
  156. package/elements/form.d.ts +76 -0
  157. package/elements/form.d.ts.map +1 -0
  158. package/elements/form.js +372 -0
  159. package/elements/form.js.map +1 -0
  160. package/elements/heading.d.ts +13 -0
  161. package/elements/heading.d.ts.map +1 -0
  162. package/elements/heading.js +88 -0
  163. package/elements/heading.js.map +1 -0
  164. package/elements/help-text.d.ts +11 -0
  165. package/elements/help-text.d.ts.map +1 -0
  166. package/elements/help-text.js +53 -0
  167. package/elements/help-text.js.map +1 -0
  168. package/elements/icons.d.ts +10 -0
  169. package/elements/icons.d.ts.map +1 -0
  170. package/elements/icons.js +71 -0
  171. package/elements/icons.js.map +1 -0
  172. package/elements/image-preview.d.ts +26 -0
  173. package/elements/image-preview.d.ts.map +1 -0
  174. package/elements/image-preview.js +172 -0
  175. package/elements/image-preview.js.map +1 -0
  176. package/elements/input-capture.d.ts +17 -0
  177. package/elements/input-capture.d.ts.map +1 -0
  178. package/elements/input-capture.js +111 -0
  179. package/elements/input-capture.js.map +1 -0
  180. package/elements/input.d.ts +51 -0
  181. package/elements/input.d.ts.map +1 -0
  182. package/elements/input.js +372 -0
  183. package/elements/input.js.map +1 -0
  184. package/elements/keyboard-access.d.ts +26 -0
  185. package/elements/keyboard-access.d.ts.map +1 -0
  186. package/elements/keyboard-access.js +217 -0
  187. package/elements/keyboard-access.js.map +1 -0
  188. package/elements/legend.d.ts +21 -0
  189. package/elements/legend.d.ts.map +1 -0
  190. package/elements/legend.js +118 -0
  191. package/elements/legend.js.map +1 -0
  192. package/elements/line-chart.d.ts +9 -0
  193. package/elements/line-chart.d.ts.map +1 -0
  194. package/elements/line-chart.js +116 -0
  195. package/elements/line-chart.js.map +1 -0
  196. package/elements/link.d.ts +14 -0
  197. package/elements/link.d.ts.map +1 -0
  198. package/elements/link.js +46 -0
  199. package/elements/link.js.map +1 -0
  200. package/elements/list.d.ts +30 -0
  201. package/elements/list.d.ts.map +1 -0
  202. package/elements/list.js +114 -0
  203. package/elements/list.js.map +1 -0
  204. package/elements/loading.d.ts +9 -0
  205. package/elements/loading.d.ts.map +1 -0
  206. package/elements/loading.js +44 -0
  207. package/elements/loading.js.map +1 -0
  208. package/elements/map.d.ts +68 -0
  209. package/elements/map.d.ts.map +1 -0
  210. package/elements/map.js +323 -0
  211. package/elements/map.js.map +1 -0
  212. package/elements/menu.d.ts +58 -0
  213. package/elements/menu.d.ts.map +1 -0
  214. package/elements/menu.js +256 -0
  215. package/elements/menu.js.map +1 -0
  216. package/elements/meter.d.ts +20 -0
  217. package/elements/meter.d.ts.map +1 -0
  218. package/elements/meter.js +130 -0
  219. package/elements/meter.js.map +1 -0
  220. package/elements/modal.d.ts +46 -0
  221. package/elements/modal.d.ts.map +1 -0
  222. package/elements/modal.js +296 -0
  223. package/elements/modal.js.map +1 -0
  224. package/elements/more.d.ts +28 -0
  225. package/elements/more.d.ts.map +1 -0
  226. package/elements/more.js +118 -0
  227. package/elements/more.js.map +1 -0
  228. package/elements/options.d.ts +34 -0
  229. package/elements/options.d.ts.map +1 -0
  230. package/elements/options.js +174 -0
  231. package/elements/options.js.map +1 -0
  232. package/elements/page-loadbar.d.ts +20 -0
  233. package/elements/page-loadbar.d.ts.map +1 -0
  234. package/elements/page-loadbar.js +85 -0
  235. package/elements/page-loadbar.js.map +1 -0
  236. package/elements/pagination.d.ts +23 -0
  237. package/elements/pagination.d.ts.map +1 -0
  238. package/elements/pagination.js +221 -0
  239. package/elements/pagination.js.map +1 -0
  240. package/elements/paragraph.d.ts +8 -0
  241. package/elements/paragraph.d.ts.map +1 -0
  242. package/elements/paragraph.js +60 -0
  243. package/elements/paragraph.js.map +1 -0
  244. package/elements/pick.d.ts +34 -0
  245. package/elements/pick.d.ts.map +1 -0
  246. package/elements/pick.js +168 -0
  247. package/elements/pick.js.map +1 -0
  248. package/elements/placeholder.d.ts +23 -0
  249. package/elements/placeholder.d.ts.map +1 -0
  250. package/elements/placeholder.js +93 -0
  251. package/elements/placeholder.js.map +1 -0
  252. package/elements/popover.d.ts +54 -0
  253. package/elements/popover.d.ts.map +1 -0
  254. package/elements/popover.js +316 -0
  255. package/elements/popover.js.map +1 -0
  256. package/elements/progress.d.ts +12 -0
  257. package/elements/progress.d.ts.map +1 -0
  258. package/elements/progress.js +45 -0
  259. package/elements/progress.js.map +1 -0
  260. package/elements/radio.d.ts +34 -0
  261. package/elements/radio.d.ts.map +1 -0
  262. package/elements/radio.js +152 -0
  263. package/elements/radio.js.map +1 -0
  264. package/elements/rating.d.ts +15 -0
  265. package/elements/rating.d.ts.map +1 -0
  266. package/elements/rating.js +122 -0
  267. package/elements/rating.js.map +1 -0
  268. package/elements/scatter-chart.d.ts +13 -0
  269. package/elements/scatter-chart.d.ts.map +1 -0
  270. package/elements/scatter-chart.js +151 -0
  271. package/elements/scatter-chart.js.map +1 -0
  272. package/elements/select.d.ts +63 -0
  273. package/elements/select.d.ts.map +1 -0
  274. package/elements/select.js +416 -0
  275. package/elements/select.js.map +1 -0
  276. package/elements/shortcut-record.d.ts +19 -0
  277. package/elements/shortcut-record.d.ts.map +1 -0
  278. package/elements/shortcut-record.js +127 -0
  279. package/elements/shortcut-record.js.map +1 -0
  280. package/elements/side-navigation.d.ts +31 -0
  281. package/elements/side-navigation.d.ts.map +1 -0
  282. package/elements/side-navigation.js +137 -0
  283. package/elements/side-navigation.js.map +1 -0
  284. package/elements/slider.d.ts +27 -0
  285. package/elements/slider.d.ts.map +1 -0
  286. package/elements/slider.js +219 -0
  287. package/elements/slider.js.map +1 -0
  288. package/elements/space.d.ts +10 -0
  289. package/elements/space.d.ts.map +1 -0
  290. package/elements/space.js +35 -0
  291. package/elements/space.js.map +1 -0
  292. package/elements/statistic.d.ts +24 -0
  293. package/elements/statistic.d.ts.map +1 -0
  294. package/elements/statistic.js +116 -0
  295. package/elements/statistic.js.map +1 -0
  296. package/elements/status-light.d.ts +14 -0
  297. package/elements/status-light.d.ts.map +1 -0
  298. package/elements/status-light.js +75 -0
  299. package/elements/status-light.js.map +1 -0
  300. package/elements/switch.d.ts +18 -0
  301. package/elements/switch.d.ts.map +1 -0
  302. package/elements/switch.js +117 -0
  303. package/elements/switch.js.map +1 -0
  304. package/elements/table.d.ts +36 -0
  305. package/elements/table.d.ts.map +1 -0
  306. package/elements/table.js +268 -0
  307. package/elements/table.js.map +1 -0
  308. package/elements/tabs.d.ts +29 -0
  309. package/elements/tabs.d.ts.map +1 -0
  310. package/elements/tabs.js +130 -0
  311. package/elements/tabs.js.map +1 -0
  312. package/elements/tag.d.ts +20 -0
  313. package/elements/tag.d.ts.map +1 -0
  314. package/elements/tag.js +120 -0
  315. package/elements/tag.js.map +1 -0
  316. package/elements/timeline.d.ts +19 -0
  317. package/elements/timeline.d.ts.map +1 -0
  318. package/elements/timeline.js +92 -0
  319. package/elements/timeline.js.map +1 -0
  320. package/elements/toast.d.ts +26 -0
  321. package/elements/toast.d.ts.map +1 -0
  322. package/elements/toast.js +149 -0
  323. package/elements/toast.js.map +1 -0
  324. package/elements/tooltip.d.ts +12 -0
  325. package/elements/tooltip.d.ts.map +1 -0
  326. package/elements/tooltip.js +27 -0
  327. package/elements/tooltip.js.map +1 -0
  328. package/elements/tree.d.ts +48 -0
  329. package/elements/tree.d.ts.map +1 -0
  330. package/elements/tree.js +231 -0
  331. package/elements/tree.js.map +1 -0
  332. package/elements/wait.d.ts +19 -0
  333. package/elements/wait.d.ts.map +1 -0
  334. package/elements/wait.js +97 -0
  335. package/elements/wait.js.map +1 -0
  336. package/lib/animations.d.ts +4 -0
  337. package/lib/animations.d.ts.map +1 -0
  338. package/lib/animations.js +8 -0
  339. package/lib/animations.js.map +1 -0
  340. package/lib/cache.d.ts +12 -0
  341. package/lib/cache.d.ts.map +1 -0
  342. package/lib/cache.js +56 -0
  343. package/lib/cache.js.map +1 -0
  344. package/lib/color.d.ts +37 -0
  345. package/lib/color.d.ts.map +1 -0
  346. package/lib/color.js +101 -0
  347. package/lib/color.js.map +1 -0
  348. package/lib/hotkeys.d.ts +31 -0
  349. package/lib/hotkeys.d.ts.map +1 -0
  350. package/lib/hotkeys.js +207 -0
  351. package/lib/hotkeys.js.map +1 -0
  352. package/lib/icons.d.ts +90 -0
  353. package/lib/icons.d.ts.map +1 -0
  354. package/lib/icons.js +81 -0
  355. package/lib/icons.js.map +1 -0
  356. package/lib/image.d.ts +29 -0
  357. package/lib/image.d.ts.map +1 -0
  358. package/lib/image.js +140 -0
  359. package/lib/image.js.map +1 -0
  360. package/lib/locale.d.ts +37 -0
  361. package/lib/locale.d.ts.map +1 -0
  362. package/lib/locale.js +14 -0
  363. package/lib/locale.js.map +1 -0
  364. package/lib/number.d.ts +80 -0
  365. package/lib/number.d.ts.map +1 -0
  366. package/lib/number.js +144 -0
  367. package/lib/number.js.map +1 -0
  368. package/lib/theme.d.ts +67 -0
  369. package/lib/theme.d.ts.map +1 -0
  370. package/lib/theme.js +56 -0
  371. package/lib/theme.js.map +1 -0
  372. package/lib/time.d.ts +58 -0
  373. package/lib/time.d.ts.map +1 -0
  374. package/lib/time.js +225 -0
  375. package/lib/time.js.map +1 -0
  376. package/lib/types.d.ts +8 -0
  377. package/lib/types.d.ts.map +1 -0
  378. package/lib/types.js +17 -0
  379. package/lib/types.js.map +1 -0
  380. package/lib/utils.d.ts +37 -0
  381. package/lib/utils.d.ts.map +1 -0
  382. package/lib/utils.js +249 -0
  383. package/lib/utils.js.map +1 -0
  384. package/locales/en.d.ts +34 -0
  385. package/locales/en.d.ts.map +1 -0
  386. package/locales/en.js +33 -0
  387. package/locales/en.js.map +1 -0
  388. package/locales/zh.d.ts +4 -0
  389. package/locales/zh.d.ts.map +1 -0
  390. package/locales/zh.js +34 -0
  391. package/locales/zh.js.map +1 -0
  392. package/package.json +39 -0
@@ -0,0 +1,323 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
8
+ if (kind === "m") throw new TypeError("Private method is not writable");
9
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
10
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
11
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
12
+ };
13
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
14
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
15
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
16
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
17
+ };
18
+ var _DuoyunMapElement_projection, _DuoyunMapElement_areas, _DuoyunMapElement_onPan, _DuoyunMapElement_onEnd, _DuoyunMapElement_onLeaveArea, _DuoyunMapElement_onLeaveNode, _DuoyunMapElement_renderArea, _DuoyunMapElement_renderName, _DuoyunMapElement_renderNode;
19
+ import { html, adoptedStyle, createCSSSheet, css, svg, customElement, property, emitter, styleMap, classMap, state, } from '@mantou/gem';
20
+ import { geoProjection, geoMercatorRaw, geoEquirectangularRaw, geoPath } from 'd3-geo';
21
+ import { theme } from '../lib/theme';
22
+ import { DuoyunLoadableBaseElement } from './base/loadable';
23
+ import '@mantou/gem/elements/gesture';
24
+ // https://github.com/d3/d3-geo/blob/main/src/projection/equirectangular.js
25
+ // https://github.com/d3/d3-geo/blob/main/src/projection/mercator.js
26
+ const customProjectionRaw = (lambda, phi) => {
27
+ const limit = (Math.PI / 180) * 53;
28
+ const maxPhi = (Math.PI / 180) * 95;
29
+ const total = maxPhi - limit;
30
+ const [, y1] = geoEquirectangularRaw(lambda, phi);
31
+ const [, y2] = geoMercatorRaw(lambda, phi);
32
+ const phiAbs = Math.abs(phi);
33
+ const ratio = phiAbs > limit ? (phiAbs - limit) / total : 0;
34
+ const y = y1 * ratio + y2 * (1 - ratio);
35
+ return [lambda, y];
36
+ };
37
+ // TODO: implement `invert`
38
+ export const geoCommonProjection = () => geoProjection(customProjectionRaw).scale(152.63);
39
+ // viewbox 1
40
+ // https://www.zhangxinxu.com/sp/svgo/
41
+ export const shapes = [
42
+ // 圆
43
+ {
44
+ strokeScale: 1,
45
+ scale: 2,
46
+ d: 'M1 .36A.5.5 0 0 1 .64 1 .5.5 0 0 1 0 .64a.42.42 0 0 1 0-.27A.49.49 0 0 1 .63 0 .51.51 0 0 1 1 .29z',
47
+ },
48
+ // 三边形
49
+ {
50
+ strokeScale: 0.9,
51
+ scale: 2,
52
+ d: 'M.5109 0.01L.0087 .88h1.0046L.5109 .01z',
53
+ },
54
+ // 菱形
55
+ {
56
+ strokeScale: 0.8,
57
+ scale: 2,
58
+ d: 'M0.00704 0.5071l0.5-0.5 0.5 0.5-0.5 0.5z',
59
+ },
60
+ // 五边形
61
+ {
62
+ strokeScale: 0.8,
63
+ scale: 2,
64
+ d: 'M0.5030.0062L0.0059 0.3674l0.1899 0.5844h0.6145l0.19-0.5844L0.5030.0062z',
65
+ },
66
+ // 六角
67
+ {
68
+ strokeScale: 0.7,
69
+ scale: 2.5,
70
+ d: 'M.73.48L.86.25H.6L.43 0 .3.23H0l.13.25L0 .75h.26L.43 1 .56.77h.3L.73.52V.48z',
71
+ },
72
+ // 四角
73
+ {
74
+ strokeScale: 0.7,
75
+ scale: 3,
76
+ d: 'M0.4974 0L0.3709 0.3726 0 0.4988l0.3692 0.1286L0.4974 1l0.1255-0.372L0.9972 0.5 0.6263 0.3744z',
77
+ },
78
+ // 五角
79
+ {
80
+ strokeScale: 0.7,
81
+ scale: 2.5,
82
+ d: 'M0.5107 0.8l-0.309 0.1624 0.059-0.344-0.25-0.2437 0.3455-0.0502L0.5107 0.0113l0.1546 0.3131 0.3454 0.0502-0.25 0.2437 0.0591 0.344-0.3091-0.1624z',
83
+ },
84
+ // 正方形
85
+ {
86
+ strokeScale: 0.9,
87
+ scale: 2,
88
+ d: 'M0 0L0 1L1 1L1 0z',
89
+ },
90
+ ];
91
+ const style = createCSSSheet(css `
92
+ :host {
93
+ display: block;
94
+ border-radius: ${theme.normalRound};
95
+ background-color: ${theme.lightBackgroundColor};
96
+ aspect-ratio: 2 / 1;
97
+ }
98
+ svg {
99
+ overflow: visible;
100
+ }
101
+ .area {
102
+ stroke: ${theme.backgroundColor};
103
+ transition: opacity 0.3s ${theme.timingFunction};
104
+ }
105
+ .area.current:not(.disabled):hover {
106
+ opacity: 0.8;
107
+ }
108
+ .name {
109
+ fill: ${theme.textColor};
110
+ stroke: ${theme.backgroundColor};
111
+ paint-order: stroke;
112
+ pointer-events: none;
113
+ text-anchor: middle;
114
+ }
115
+ .node {
116
+ paint-order: stroke;
117
+ transform-origin: center;
118
+ transform-box: fill-box;
119
+ stroke-opacity: 0.4;
120
+ --translate: calc(-50% + var(--x)), calc(-50% + var(--y));
121
+ transform: translate(var(--translate)) scale(var(--scale));
122
+ /* await chrome implement */
123
+ transition: scale 0.3s ${theme.timingFunction};
124
+ }
125
+ .node.current:hover {
126
+ transform: translate(var(--translate)) scale(calc(var(--scale) * 1.5));
127
+ }
128
+ `);
129
+ /**
130
+ * @customElement dy-map
131
+ * @fire hover-node
132
+ * @fire leave-node
133
+ * @fire click-node
134
+ * @fire hover-area
135
+ * @fire leave-area
136
+ * @fire click-area
137
+ */
138
+ let DuoyunMapElement = class DuoyunMapElement extends DuoyunLoadableBaseElement {
139
+ constructor() {
140
+ super();
141
+ this.scale = 1;
142
+ this.translate2D = [0, 0];
143
+ this.state = {};
144
+ _DuoyunMapElement_projection.set(this, void 0);
145
+ _DuoyunMapElement_areas.set(this, void 0);
146
+ _DuoyunMapElement_onPan.set(this, ({ detail }) => {
147
+ this.grabbing = true;
148
+ this.pan(detail);
149
+ });
150
+ _DuoyunMapElement_onEnd.set(this, () => {
151
+ this.grabbing = false;
152
+ });
153
+ _DuoyunMapElement_onLeaveArea.set(this, (detail) => {
154
+ this.leaveArea(detail);
155
+ this.setState({ currentArea: undefined });
156
+ });
157
+ _DuoyunMapElement_onLeaveNode.set(this, (detail) => {
158
+ this.leaveNode(detail);
159
+ this.setState({ currentNode: undefined });
160
+ });
161
+ this.willMount = () => {
162
+ this.memo(() => {
163
+ var _a, _b;
164
+ __classPrivateFieldSet(this, _DuoyunMapElement_projection, ((_a = this.getProjection) === null || _a === void 0 ? void 0 : _a.call(this, geoCommonProjection)) || geoCommonProjection(), "f");
165
+ const pathFn = geoPath().projection(__classPrivateFieldGet(this, _DuoyunMapElement_projection, "f"));
166
+ __classPrivateFieldSet(this, _DuoyunMapElement_areas, (_b = this.geo) === null || _b === void 0 ? void 0 : _b.features.map(({ geometry, properties }) => {
167
+ return {
168
+ path: pathFn(geometry),
169
+ center: pathFn.centroid(geometry),
170
+ name: (properties && (properties.name || properties.NAME)) || '',
171
+ };
172
+ }), "f");
173
+ }, () => [this.geo, this.getProjection]);
174
+ };
175
+ _DuoyunMapElement_renderArea.set(this, (area, isCurrent) => {
176
+ var _a;
177
+ const { name, path } = area;
178
+ const color = (_a = this.getAreaColor) === null || _a === void 0 ? void 0 : _a.call(this, name, isCurrent);
179
+ const onMouseover = (originEvent) => {
180
+ if (isCurrent) {
181
+ this.hoverArea({ name, originEvent });
182
+ }
183
+ else {
184
+ this.setState({ currentArea: area });
185
+ }
186
+ };
187
+ return svg `
188
+ <path
189
+ class=${classMap({ area: true, disabled: !color, current: isCurrent })}
190
+ d=${path}
191
+ stroke-width=${0.1 / this.scale}
192
+ fill=${color || theme.disabledColor}
193
+ @click=${(originEvent) => this.clickArea({ name, originEvent })}
194
+ @mouseover=${onMouseover}
195
+ @mouseout=${(originEvent) => isCurrent && __classPrivateFieldGet(this, _DuoyunMapElement_onLeaveArea, "f").call(this, { name, originEvent })}
196
+ ></path>
197
+ `;
198
+ });
199
+ _DuoyunMapElement_renderName.set(this, ({ name, center: [x, y] }, isCurrent) => {
200
+ var _a;
201
+ return svg `
202
+ <text
203
+ class=${classMap({ name: true, current: isCurrent })}
204
+ x=${x}
205
+ y=${y}
206
+ font-size=${2.5 / this.scale}
207
+ stroke-width=${0.5 / this.scale}>
208
+ ${(_a = this.getAreaName) === null || _a === void 0 ? void 0 : _a.call(this, name, isCurrent)}
209
+ </text>
210
+ `;
211
+ });
212
+ _DuoyunMapElement_renderNode.set(this, (node, isCurrent) => {
213
+ var _a;
214
+ const { id, type = '0', position: pos } = node;
215
+ const position = __classPrivateFieldGet(this, _DuoyunMapElement_projection, "f").call(this, pos) || [0, 0];
216
+ const color = ((_a = this.getNodeColor) === null || _a === void 0 ? void 0 : _a.call(this, id, isCurrent)) || theme.textColor;
217
+ const shape = shapes[type];
218
+ const scale = shape.scale / this.scale;
219
+ const onMouseover = (originEvent) => {
220
+ if (isCurrent) {
221
+ this.hoverNode({ id, originEvent });
222
+ }
223
+ else {
224
+ this.setState({ currentNode: node });
225
+ }
226
+ };
227
+ return svg `
228
+ <path
229
+ class=${classMap({ node: true, current: isCurrent })}
230
+ style=${`--x: ${position[0]}px; --y: ${position[1]}px; --scale: ${scale}`}
231
+ d=${shape.d}
232
+ fill=${color}
233
+ stroke=${theme.backgroundColor}
234
+ stroke-width=${(2 / scale) * shape.strokeScale}
235
+ @click=${(originEvent) => this.clickNode({ id, originEvent })}
236
+ @mouseover=${onMouseover}
237
+ @mouseout=${(originEvent) => isCurrent && __classPrivateFieldGet(this, _DuoyunMapElement_onLeaveNode, "f").call(this, { id, originEvent })}
238
+ ></path>
239
+ `;
240
+ });
241
+ this.render = () => {
242
+ var _a, _b, _c;
243
+ const { currentArea, currentNode } = this.state;
244
+ return html `
245
+ <gem-gesture @pan=${__classPrivateFieldGet(this, _DuoyunMapElement_onPan, "f")} @end=${__classPrivateFieldGet(this, _DuoyunMapElement_onEnd, "f")}>
246
+ ${svg `
247
+ <svg
248
+ part="svg"
249
+ xmlns="http://www.w3.org/2000/svg"
250
+ viewBox="-180 -90 360 180"
251
+ aria-hidden="true"
252
+ style=${styleMap({
253
+ transform: `scale(${this.scale}) translate(${this.translate2D[0]}px, ${this.translate2D[1]}px)`,
254
+ })}>
255
+ ${(_a = __classPrivateFieldGet(this, _DuoyunMapElement_areas, "f")) === null || _a === void 0 ? void 0 : _a.map((area) => (area === currentArea ? '' : __classPrivateFieldGet(this, _DuoyunMapElement_renderArea, "f").call(this, area, false)))}
256
+ ${currentArea ? __classPrivateFieldGet(this, _DuoyunMapElement_renderArea, "f").call(this, currentArea, true) : ''}
257
+ ${(_b = __classPrivateFieldGet(this, _DuoyunMapElement_areas, "f")) === null || _b === void 0 ? void 0 : _b.map((area) => __classPrivateFieldGet(this, _DuoyunMapElement_renderName, "f").call(this, area, false))}
258
+ ${currentArea ? __classPrivateFieldGet(this, _DuoyunMapElement_renderName, "f").call(this, currentArea, true) : ''}
259
+ ${__classPrivateFieldGet(this, _DuoyunMapElement_areas, "f") && ((_c = this.nodes) === null || _c === void 0 ? void 0 : _c.map((node) => (node === currentNode ? '' : __classPrivateFieldGet(this, _DuoyunMapElement_renderNode, "f").call(this, node, false))))}
260
+ ${currentNode ? __classPrivateFieldGet(this, _DuoyunMapElement_renderNode, "f").call(this, currentNode, true) : ''}
261
+ </svg>
262
+ `}
263
+ </gem-gesture>
264
+ `;
265
+ };
266
+ this.internals.role = 'img';
267
+ }
268
+ };
269
+ _DuoyunMapElement_projection = new WeakMap(), _DuoyunMapElement_areas = new WeakMap(), _DuoyunMapElement_onPan = new WeakMap(), _DuoyunMapElement_onEnd = new WeakMap(), _DuoyunMapElement_onLeaveArea = new WeakMap(), _DuoyunMapElement_onLeaveNode = new WeakMap(), _DuoyunMapElement_renderArea = new WeakMap(), _DuoyunMapElement_renderName = new WeakMap(), _DuoyunMapElement_renderNode = new WeakMap();
270
+ __decorate([
271
+ property
272
+ ], DuoyunMapElement.prototype, "getProjection", void 0);
273
+ __decorate([
274
+ property
275
+ ], DuoyunMapElement.prototype, "geo", void 0);
276
+ __decorate([
277
+ property
278
+ ], DuoyunMapElement.prototype, "getAreaColor", void 0);
279
+ __decorate([
280
+ property
281
+ ], DuoyunMapElement.prototype, "getAreaName", void 0);
282
+ __decorate([
283
+ property
284
+ ], DuoyunMapElement.prototype, "nodes", void 0);
285
+ __decorate([
286
+ property
287
+ ], DuoyunMapElement.prototype, "getNodeColor", void 0);
288
+ __decorate([
289
+ property
290
+ ], DuoyunMapElement.prototype, "scale", void 0);
291
+ __decorate([
292
+ property
293
+ ], DuoyunMapElement.prototype, "translate2D", void 0);
294
+ __decorate([
295
+ state
296
+ ], DuoyunMapElement.prototype, "grabbing", void 0);
297
+ __decorate([
298
+ emitter
299
+ ], DuoyunMapElement.prototype, "pan", void 0);
300
+ __decorate([
301
+ emitter
302
+ ], DuoyunMapElement.prototype, "hoverNode", void 0);
303
+ __decorate([
304
+ emitter
305
+ ], DuoyunMapElement.prototype, "leaveNode", void 0);
306
+ __decorate([
307
+ emitter
308
+ ], DuoyunMapElement.prototype, "clickNode", void 0);
309
+ __decorate([
310
+ emitter
311
+ ], DuoyunMapElement.prototype, "hoverArea", void 0);
312
+ __decorate([
313
+ emitter
314
+ ], DuoyunMapElement.prototype, "clickArea", void 0);
315
+ __decorate([
316
+ emitter
317
+ ], DuoyunMapElement.prototype, "leaveArea", void 0);
318
+ DuoyunMapElement = __decorate([
319
+ customElement('dy-map'),
320
+ adoptedStyle(style)
321
+ ], DuoyunMapElement);
322
+ export { DuoyunMapElement };
323
+ //# sourceMappingURL=map.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"map.js","sourceRoot":"","sources":["../src/elements/map.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ import { GemElement, TemplateResult } from '@mantou/gem';
2
+ import './compartment';
3
+ import './button';
4
+ import './options';
5
+ export declare type Menu = MenuItem[] | TemplateResult;
6
+ export interface MenuItem {
7
+ /**`---` is separator */
8
+ text: string | TemplateResult;
9
+ description?: string | TemplateResult;
10
+ tag?: string | TemplateResult;
11
+ disabled?: boolean;
12
+ danger?: boolean;
13
+ selected?: boolean;
14
+ handle?: () => void | Promise<void>;
15
+ menu?: Menu;
16
+ }
17
+ declare type MenuStore = {
18
+ width?: string;
19
+ maxHeight?: string;
20
+ activeElement: HTMLElement | null;
21
+ menuStack: {
22
+ searchable?: boolean;
23
+ menu: Menu;
24
+ x: number;
25
+ y: number;
26
+ }[];
27
+ };
28
+ declare type OpenMenuOptions = {
29
+ /**auto calc `x`/`y` via `activeElement` */
30
+ activeElement?: HTMLElement | null;
31
+ x?: number;
32
+ y?: number;
33
+ width?: string;
34
+ /**only support first menu */
35
+ maxHeight?: string;
36
+ /**only support first menu */
37
+ searchable?: boolean;
38
+ };
39
+ export declare const menuStore: import("@mantou/gem").Store<MenuStore>;
40
+ /**
41
+ * @customElement dy-menu
42
+ */
43
+ export declare class DuoyunMenuElement extends GemElement {
44
+ #private;
45
+ static instance?: DuoyunMenuElement;
46
+ static open(menu: Menu, options?: OpenMenuOptions): Promise<void>;
47
+ static confirm(text: string | TemplateResult, options: OpenMenuOptions & {
48
+ danger?: boolean;
49
+ okText?: string | TemplateResult;
50
+ }): Promise<unknown>;
51
+ static close(): void;
52
+ constructor();
53
+ mounted: () => () => void;
54
+ render: () => TemplateResult;
55
+ }
56
+ export declare const ContextMenu: typeof DuoyunMenuElement;
57
+ export {};
58
+ //# sourceMappingURL=menu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menu.d.ts","sourceRoot":"","sources":["../src/elements/menu.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,UAAU,EASV,cAAc,EACf,MAAM,aAAa,CAAC;AAOrB,OAAO,eAAe,CAAC;AACvB,OAAO,UAAU,CAAC;AAClB,OAAO,WAAW,CAAC;AAEnB,oBAAY,IAAI,GAAG,QAAQ,EAAE,GAAG,cAAc,CAAC;AAC/C,MAAM,WAAW,QAAQ;IACvB,wBAAwB;IACxB,IAAI,EAAE,MAAM,GAAG,cAAc,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,GAAG,cAAc,CAAC;IACtC,GAAG,CAAC,EAAE,MAAM,GAAG,cAAc,CAAC;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,CAAC,EAAE,IAAI,CAAC;CACb;AAED,aAAK,SAAS,GAAG;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,WAAW,GAAG,IAAI,CAAC;IAClC,SAAS,EAAE;QACT,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,IAAI,EAAE,IAAI,CAAC;QACX,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;KACX,EAAE,CAAC;CACL,CAAC;AAEF,aAAK,eAAe,GAAG;IACrB,2CAA2C;IAC3C,aAAa,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IACnC,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6BAA6B;IAC7B,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,SAAS,wCAGpB,CAAC;AAuCH;;GAEG;AACH,qBAGa,iBAAkB,SAAQ,UAAU;;IAC/C,MAAM,CAAC,QAAQ,CAAC,EAAE,iBAAiB,CAAC;WAEvB,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,GAAE,eAAoB;WAoB9C,OAAO,CAClB,IAAI,EAAE,MAAM,GAAG,cAAc,EAC7B,OAAO,EAAE,eAAe,GAAG;QAAE,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,GAAG,cAAc,CAAA;KAAE;IA2BnF,MAAM,CAAC,KAAK;;IAyFZ,OAAO,mBASL;IAEF,MAAM,uBAiDJ;CACH;AAED,eAAO,MAAM,WAAW,0BAAoB,CAAC"}
@@ -0,0 +1,256 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
8
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
9
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
+ };
12
+ var _DuoyunMenuElement_instances, _DuoyunMenuElement_width_get, _DuoyunMenuElement_menuEles_get, _DuoyunMenuElement_offset, _DuoyunMenuElement_onEnterMenu, _DuoyunMenuElement_execHandle, _DuoyunMenuElement_onKeydown, _DuoyunMenuElement_initPosition;
13
+ import { html, GemElement, customElement, connectStore, createStore, updateStore, styleMap, createCSSSheet, css, adoptedStyle, } from '@mantou/gem';
14
+ import { icons } from '../lib/icons';
15
+ import { locale } from '../lib/locale';
16
+ import { setBodyInert } from '../lib/utils';
17
+ import { hotkeys } from '../lib/hotkeys';
18
+ import './compartment';
19
+ import './button';
20
+ import './options';
21
+ export const menuStore = createStore({
22
+ activeElement: null,
23
+ menuStack: [],
24
+ });
25
+ function toggleActiveState(ele, active) {
26
+ var _a;
27
+ if (!ele)
28
+ return;
29
+ if (ele instanceof GemElement) {
30
+ if ((_a = ele.constructor.defineCSSStates) === null || _a === void 0 ? void 0 : _a.includes('active')) {
31
+ ele.active = active;
32
+ }
33
+ // button/combobox
34
+ ele.internals.ariaExpanded = String(active);
35
+ }
36
+ }
37
+ let closeResolve;
38
+ const style = createCSSSheet(css `
39
+ :host {
40
+ display: block;
41
+ position: fixed;
42
+ z-index: 99999999;
43
+ inset: 0;
44
+ font-size: 0.875em;
45
+ cursor: default;
46
+ user-select: none;
47
+ }
48
+ .mask {
49
+ position: absolute;
50
+ inset: 0;
51
+ }
52
+ .menu-custom-container {
53
+ padding: 0.4em 1em;
54
+ }
55
+ .menu {
56
+ outline: none;
57
+ position: absolute;
58
+ font-size: 1em;
59
+ }
60
+ `);
61
+ /**
62
+ * @customElement dy-menu
63
+ */
64
+ let DuoyunMenuElement = class DuoyunMenuElement extends GemElement {
65
+ constructor() {
66
+ super();
67
+ _DuoyunMenuElement_instances.add(this);
68
+ _DuoyunMenuElement_offset.set(this, 4);
69
+ _DuoyunMenuElement_onEnterMenu.set(this, (evt, menuStackIndex, subMenu) => {
70
+ if (subMenu) {
71
+ const { left, top, width } = evt.target.getBoundingClientRect();
72
+ const em = parseFloat(getComputedStyle(this).fontSize);
73
+ const x = left + 2 * width < innerWidth ? left + width - 0.75 * em : left - width + 0.75 * em;
74
+ const y = top - 0.4 * em;
75
+ updateStore(menuStore, {
76
+ menuStack: [...menuStore.menuStack.slice(0, menuStackIndex + 1), { x, y, menu: subMenu }],
77
+ });
78
+ }
79
+ else {
80
+ updateStore(menuStore, {
81
+ menuStack: menuStore.menuStack.slice(0, menuStackIndex + 1),
82
+ });
83
+ }
84
+ });
85
+ _DuoyunMenuElement_execHandle.set(this, (handle) => {
86
+ if (handle) {
87
+ ContextMenu.close();
88
+ handle();
89
+ }
90
+ });
91
+ _DuoyunMenuElement_onKeydown.set(this, (evt, menuStackIndex) => {
92
+ const focusPrevMenu = () => {
93
+ var _a;
94
+ updateStore(menuStore, {
95
+ menuStack: menuStore.menuStack.slice(0, menuStackIndex),
96
+ });
97
+ (_a = __classPrivateFieldGet(this, _DuoyunMenuElement_instances, "a", _DuoyunMenuElement_menuEles_get)[menuStackIndex - 1]) === null || _a === void 0 ? void 0 : _a.focus();
98
+ };
99
+ hotkeys({
100
+ esc: menuStackIndex === 0 ? ContextMenu.close : focusPrevMenu,
101
+ left: focusPrevMenu,
102
+ right: () => { var _a; return (_a = __classPrivateFieldGet(this, _DuoyunMenuElement_instances, "a", _DuoyunMenuElement_menuEles_get)[menuStackIndex + 1]) === null || _a === void 0 ? void 0 : _a.focus(); },
103
+ })(evt);
104
+ });
105
+ _DuoyunMenuElement_initPosition.set(this, () => {
106
+ const element = __classPrivateFieldGet(this, _DuoyunMenuElement_instances, "a", _DuoyunMenuElement_menuEles_get).shift();
107
+ const { activeElement, menuStack, maxHeight } = menuStore;
108
+ const { scrollHeight, clientHeight, clientWidth } = element;
109
+ const menu = menuStack[0];
110
+ const height = scrollHeight + 2;
111
+ const width = clientWidth + 2;
112
+ if (activeElement) {
113
+ const { left, right, top, bottom } = activeElement.getBoundingClientRect();
114
+ const isXOverflow = innerWidth - left < width + __classPrivateFieldGet(this, _DuoyunMenuElement_offset, "f");
115
+ const isYOverflow = innerHeight - bottom < height + 2 * __classPrivateFieldGet(this, _DuoyunMenuElement_offset, "f") && top > height + 2 * __classPrivateFieldGet(this, _DuoyunMenuElement_offset, "f");
116
+ updateStore(menuStore, {
117
+ maxHeight: maxHeight || `${isYOverflow ? top - 2 * __classPrivateFieldGet(this, _DuoyunMenuElement_offset, "f") : innerHeight - bottom - 2 * __classPrivateFieldGet(this, _DuoyunMenuElement_offset, "f")}px`,
118
+ menuStack: [
119
+ {
120
+ ...menu,
121
+ x: isXOverflow ? right - width : left,
122
+ y: isYOverflow ? top - height - 2 * __classPrivateFieldGet(this, _DuoyunMenuElement_offset, "f") : bottom,
123
+ },
124
+ ],
125
+ });
126
+ }
127
+ else {
128
+ const y = innerHeight - menu.y > width ? menu.y : Math.max(0, menu.y - (scrollHeight - clientHeight));
129
+ updateStore(menuStore, { menuStack: [{ ...menu, y }] });
130
+ }
131
+ });
132
+ this.mounted = () => {
133
+ var _a;
134
+ __classPrivateFieldGet(this, _DuoyunMenuElement_initPosition, "f").call(this);
135
+ (_a = __classPrivateFieldGet(this, _DuoyunMenuElement_instances, "a", _DuoyunMenuElement_menuEles_get).shift()) === null || _a === void 0 ? void 0 : _a.focus();
136
+ const restoreInert = setBodyInert(this);
137
+ ContextMenu.instance = this;
138
+ return () => {
139
+ restoreInert();
140
+ ContextMenu.instance = undefined;
141
+ };
142
+ };
143
+ this.render = () => {
144
+ const { menuStack, maxHeight } = menuStore;
145
+ return html `
146
+ <div class="mask" @click=${ContextMenu.close}></div>
147
+ ${menuStack.map(({ x, y, menu, searchable }, index, _, calcWidth = __classPrivateFieldGet(this, _DuoyunMenuElement_instances, "a", _DuoyunMenuElement_width_get) === 'auto' ? '0px' : __classPrivateFieldGet(this, _DuoyunMenuElement_instances, "a", _DuoyunMenuElement_width_get)) => html `
148
+ <dy-options
149
+ class="menu"
150
+ style=${styleMap({
151
+ width: __classPrivateFieldGet(this, _DuoyunMenuElement_instances, "a", _DuoyunMenuElement_width_get),
152
+ maxHeight: maxHeight && index === 0 ? `${maxHeight}` : `calc(100vh - 0.8em - ${y + 2 * __classPrivateFieldGet(this, _DuoyunMenuElement_offset, "f")}px)`,
153
+ top: `${y + __classPrivateFieldGet(this, _DuoyunMenuElement_offset, "f")}px`,
154
+ left: `min(${x}px, calc(100vw - ${calcWidth} - ${2 * __classPrivateFieldGet(this, _DuoyunMenuElement_offset, "f")}px))`,
155
+ })}
156
+ @keydown=${(evt) => __classPrivateFieldGet(this, _DuoyunMenuElement_onKeydown, "f").call(this, evt, index)}
157
+ ?searchable=${searchable}
158
+ .options=${Array.isArray(menu)
159
+ ? menu.map(({ text, description, tag, handle, disabled, selected, danger, menu: subMenu }, _index, __arr, onPointerEnter = (evt) => __classPrivateFieldGet(this, _DuoyunMenuElement_onEnterMenu, "f").call(this, evt, index, subMenu), onClick = !disabled ? () => __classPrivateFieldGet(this, _DuoyunMenuElement_execHandle, "f").call(this, handle) : undefined) => {
160
+ var _a;
161
+ return ({
162
+ label: text,
163
+ description,
164
+ tag,
165
+ disabled,
166
+ danger,
167
+ highlight: !!(subMenu && subMenu === ((_a = menuStack[index + 1]) === null || _a === void 0 ? void 0 : _a.menu)),
168
+ icon: subMenu ? icons.right : selected ? icons.check : undefined,
169
+ onClick: subMenu ? onPointerEnter : onClick,
170
+ onPointerEnter,
171
+ });
172
+ })
173
+ : undefined}
174
+ >
175
+ ${Array.isArray(menu)
176
+ ? ''
177
+ : html `
178
+ <div class="menu-custom-container">
179
+ <dy-compartment .content=${menu}></dy-compartment>
180
+ </div>
181
+ `}
182
+ </dy-options>
183
+ `)}
184
+ `;
185
+ };
186
+ document.body.append(this);
187
+ }
188
+ static async open(menu, options = {}) {
189
+ var _a;
190
+ const { activeElement = null, x = 0, y = 0, width, maxHeight, searchable } = options;
191
+ if (Array.isArray(menu) && menu.length === 0)
192
+ throw new Error('menu length is 0');
193
+ toggleActiveState(activeElement, true);
194
+ updateStore(menuStore, {
195
+ width,
196
+ maxHeight,
197
+ activeElement,
198
+ menuStack: [{ x, y, menu, searchable }],
199
+ });
200
+ if (ContextMenu.instance) {
201
+ // await `ContextMenu` content update
202
+ await Promise.resolve();
203
+ __classPrivateFieldGet((_a = ContextMenu.instance), _DuoyunMenuElement_initPosition, "f").call(_a);
204
+ }
205
+ else {
206
+ new ContextMenu();
207
+ }
208
+ await new Promise((res) => (closeResolve = res));
209
+ }
210
+ static async confirm(text, options) {
211
+ return new Promise((res, rej) => {
212
+ const onClick = () => {
213
+ ContextMenu.close();
214
+ res(null);
215
+ };
216
+ ContextMenu.open(html `
217
+ <style>
218
+ .confirm-button {
219
+ text-align: right;
220
+ margin-top: 2em;
221
+ }
222
+ </style>
223
+ <div class="confirm-text">${text}</div>
224
+ <div class="confirm-button">
225
+ <dy-button @click=${onClick} .color=${options.danger ? 'danger' : 'normal'}>
226
+ ${options.okText || locale.ok}
227
+ </dy-button>
228
+ </div>
229
+ `, options).then(rej);
230
+ });
231
+ }
232
+ static close() {
233
+ var _a, _b;
234
+ if (!ContextMenu.instance)
235
+ return;
236
+ toggleActiveState(menuStore.activeElement, false);
237
+ closeResolve();
238
+ ContextMenu.instance.remove();
239
+ // specify keyboard navigation location
240
+ (_a = menuStore.activeElement) === null || _a === void 0 ? void 0 : _a.focus();
241
+ (_b = menuStore.activeElement) === null || _b === void 0 ? void 0 : _b.blur();
242
+ }
243
+ };
244
+ _DuoyunMenuElement_offset = new WeakMap(), _DuoyunMenuElement_onEnterMenu = new WeakMap(), _DuoyunMenuElement_execHandle = new WeakMap(), _DuoyunMenuElement_onKeydown = new WeakMap(), _DuoyunMenuElement_initPosition = new WeakMap(), _DuoyunMenuElement_instances = new WeakSet(), _DuoyunMenuElement_width_get = function _DuoyunMenuElement_width_get() {
245
+ return menuStore.width || '15em';
246
+ }, _DuoyunMenuElement_menuEles_get = function _DuoyunMenuElement_menuEles_get() {
247
+ return [...this.shadowRoot.querySelectorAll('.menu')];
248
+ };
249
+ DuoyunMenuElement = __decorate([
250
+ customElement('dy-menu'),
251
+ connectStore(menuStore),
252
+ adoptedStyle(style)
253
+ ], DuoyunMenuElement);
254
+ export { DuoyunMenuElement };
255
+ export const ContextMenu = DuoyunMenuElement;
256
+ //# sourceMappingURL=menu.js.map