neko-ui 2.6.7 → 2.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (139) hide show
  1. package/CHANGELOG.md +24 -6
  2. package/es/@moneko/routes/index.d.ts +1 -1
  3. package/es/back-top/style.js +1 -3
  4. package/es/back-top/style.js.map +1 -1
  5. package/es/button/style.js.map +1 -1
  6. package/es/capture-screen/index.js +1 -1
  7. package/es/capture-screen/index.js.map +1 -1
  8. package/es/cron/begin-interval.d.ts +1 -0
  9. package/es/cron/index.js +1 -1
  10. package/es/cron/index.js.map +1 -1
  11. package/es/cron/item.d.ts +1 -0
  12. package/es/cron/period.d.ts +1 -0
  13. package/es/cron/some.d.ts +1 -0
  14. package/es/date-picker/index.js +1 -1
  15. package/es/date-picker/index.js.map +1 -1
  16. package/es/img/style.js +0 -2
  17. package/es/img/style.js.map +1 -1
  18. package/es/index.d.ts +1 -0
  19. package/es/index.js +1 -1
  20. package/es/index.js.map +1 -1
  21. package/es/md-style/index.js +6 -8
  22. package/es/md-style/index.js.map +1 -1
  23. package/es/modal/hooks.d.ts +5 -0
  24. package/es/modal/hooks.js +2 -0
  25. package/es/modal/hooks.js.map +1 -0
  26. package/es/modal/style.js +3 -4
  27. package/es/modal/style.js.map +1 -1
  28. package/es/notification/index.d.ts +59 -0
  29. package/es/notification/index.js +2 -0
  30. package/es/notification/index.js.map +1 -0
  31. package/es/notification/notification.d.ts +3 -0
  32. package/es/notification/notification.js +2 -0
  33. package/es/notification/notification.js.map +1 -0
  34. package/es/notification/queque.d.ts +46 -0
  35. package/es/notification/queque.js +2 -0
  36. package/es/notification/queque.js.map +1 -0
  37. package/es/notification/styles.d.ts +1 -0
  38. package/es/notification/styles.js +97 -0
  39. package/es/notification/styles.js.map +1 -0
  40. package/es/popover/index.js +1 -1
  41. package/es/popover/index.js.map +1 -1
  42. package/es/popover/style.js +1 -3
  43. package/es/popover/style.js.map +1 -1
  44. package/es/prism/css.js +1 -3
  45. package/es/prism/css.js.map +1 -1
  46. package/es/select/index.js +1 -1
  47. package/es/select/index.js.map +1 -1
  48. package/es/theme/index.js +10 -8
  49. package/es/theme/index.js.map +1 -1
  50. package/es/tree/index.d.ts +3 -99
  51. package/es/tree/index.js +1 -1
  52. package/es/tree/index.js.map +1 -1
  53. package/es/tree/register.d.ts +1 -0
  54. package/es/tree/register.js +2 -0
  55. package/es/tree/register.js.map +1 -0
  56. package/es/tree/type.d.ts +104 -0
  57. package/es/tree/type.js +2 -0
  58. package/es/tree/type.js.map +1 -0
  59. package/lib/@moneko/routes/index.d.ts +1 -1
  60. package/lib/back-top/style.js +1 -3
  61. package/lib/back-top/style.js.map +1 -1
  62. package/lib/button/style.js.map +1 -1
  63. package/lib/capture-screen/index.js +1 -1
  64. package/lib/capture-screen/index.js.map +1 -1
  65. package/lib/cron/begin-interval.d.ts +1 -0
  66. package/lib/cron/index.js +1 -1
  67. package/lib/cron/index.js.map +1 -1
  68. package/lib/cron/item.d.ts +1 -0
  69. package/lib/cron/period.d.ts +1 -0
  70. package/lib/cron/some.d.ts +1 -0
  71. package/lib/img/style.js +0 -2
  72. package/lib/img/style.js.map +1 -1
  73. package/lib/index.d.ts +1 -0
  74. package/lib/index.js +1 -1
  75. package/lib/index.js.map +1 -1
  76. package/lib/md-style/index.js +6 -8
  77. package/lib/md-style/index.js.map +1 -1
  78. package/lib/modal/hooks.d.ts +5 -0
  79. package/lib/modal/hooks.js +2 -0
  80. package/lib/modal/hooks.js.map +1 -0
  81. package/lib/modal/style.js +3 -4
  82. package/lib/modal/style.js.map +1 -1
  83. package/lib/notification/index.d.ts +59 -0
  84. package/lib/notification/index.js +2 -0
  85. package/lib/notification/index.js.map +1 -0
  86. package/lib/notification/notification.d.ts +3 -0
  87. package/lib/notification/notification.js +2 -0
  88. package/lib/notification/notification.js.map +1 -0
  89. package/lib/notification/queque.d.ts +46 -0
  90. package/lib/notification/queque.js +2 -0
  91. package/lib/notification/queque.js.map +1 -0
  92. package/lib/notification/styles.d.ts +1 -0
  93. package/lib/notification/styles.js +97 -0
  94. package/lib/notification/styles.js.map +1 -0
  95. package/lib/popover/index.js +1 -1
  96. package/lib/popover/index.js.map +1 -1
  97. package/lib/popover/style.js +1 -3
  98. package/lib/popover/style.js.map +1 -1
  99. package/lib/prism/css.js +1 -3
  100. package/lib/prism/css.js.map +1 -1
  101. package/lib/theme/index.js +8 -6
  102. package/lib/theme/index.js.map +1 -1
  103. package/lib/tree/index.d.ts +3 -99
  104. package/lib/tree/index.js +1 -1
  105. package/lib/tree/index.js.map +1 -1
  106. package/lib/tree/register.d.ts +1 -0
  107. package/lib/tree/register.js +2 -0
  108. package/lib/tree/register.js.map +1 -0
  109. package/lib/tree/type.d.ts +104 -0
  110. package/lib/tree/type.js +2 -0
  111. package/lib/tree/type.js.map +1 -0
  112. package/package.json +23 -21
  113. package/umd/index.js +1 -1
  114. package/es/@introduce/api.md +0 -158
  115. package/es/@introduce/getting-started/api.md +0 -34
  116. package/es/@introduce/html/doc.md +0 -45
  117. package/es/@introduce/react/doc.md +0 -49
  118. package/es/@introduce/solid/doc.md +0 -39
  119. package/es/@introduce/vue/doc.md +0 -54
  120. package/es/@moneko/cli/doc.md +0 -211
  121. package/es/@moneko/config/api.md +0 -213
  122. package/es/@moneko/locales/doc.md +0 -130
  123. package/es/@moneko/mock/api.md +0 -177
  124. package/es/@moneko/request/api.md +0 -31
  125. package/es/@moneko/routes/doc.md +0 -81
  126. package/es/@moneko/sso/api.md +0 -158
  127. package/lib/@introduce/api.md +0 -158
  128. package/lib/@introduce/getting-started/api.md +0 -34
  129. package/lib/@introduce/html/doc.md +0 -45
  130. package/lib/@introduce/react/doc.md +0 -49
  131. package/lib/@introduce/solid/doc.md +0 -39
  132. package/lib/@introduce/vue/doc.md +0 -54
  133. package/lib/@moneko/cli/doc.md +0 -211
  134. package/lib/@moneko/config/api.md +0 -213
  135. package/lib/@moneko/locales/doc.md +0 -130
  136. package/lib/@moneko/mock/api.md +0 -177
  137. package/lib/@moneko/request/api.md +0 -31
  138. package/lib/@moneko/routes/doc.md +0 -81
  139. package/lib/@moneko/sso/api.md +0 -158
package/CHANGELOG.md CHANGED
@@ -2,8 +2,31 @@
2
2
 
3
3
  ## Last
4
4
 
5
+ ### 📦 Code Refactoring
6
+
7
+ - modal bg ([ca6b552](https://github.com/monako97/neko-ui/commit/ca6b552b1e92ea30ccd7f7bf4eb6a01ba02984db))
8
+ - core ([c6e4724](https://github.com/monako97/neko-ui/commit/c6e4724fe61b85423dd5513cb68953d8a011d38a))
9
+ - 拆封 md style、添加 lcp 时间 ([e113f5b](https://github.com/monako97/neko-ui/commit/e113f5b12274e3f34ff87626526e059d329b46e5))
10
+
11
+ ### 🐛 Bug Fixes
12
+
13
+ - npm run start ([8047ec5](https://github.com/monako97/neko-ui/commit/8047ec52f235621262ec879a5aa7396a65e83e99))
14
+ - overrideResolve ([ab76846](https://github.com/monako97/neko-ui/commit/ab76846eca016cd14bfb4ac65883e042ab0cc773))
15
+ - docs types ([05cfac9](https://github.com/monako97/neko-ui/commit/05cfac9def92f661f08ebde90ae98dab1bf881c2))
16
+ - types ([5d3c70f](https://github.com/monako97/neko-ui/commit/5d3c70f724ad04ee5b0bbd73ddaec234f645ac7e))
17
+ - 修复marked bin缺失; 升级core依赖提升编译性能 ([ce01794](https://github.com/monako97/neko-ui/commit/ce017948827b881a64aff9d62c06bab4c8cfa7e9))
18
+ - umd build ([7f77062](https://github.com/monako97/neko-ui/commit/7f77062d330dfc4e68df844ed27eb16959477bfb))
19
+
5
20
  ### 📚 Documentation
6
21
 
22
+ - tree ([f7b1653](https://github.com/monako97/neko-ui/commit/f7b165337a8249627aa06f39603abad8e27aef5b))
23
+ - seo优化 ([09a0193](https://github.com/monako97/neko-ui/commit/09a01938f5c2cc11003e370c8b7bf86e25d78b1f))
24
+ - update ([c5acf94](https://github.com/monako97/neko-ui/commit/c5acf94f494f0bb718c910033fb0b99402fa8dad))
25
+ - 工程配套 ([f03bc07](https://github.com/monako97/neko-ui/commit/f03bc07e970bd1798e6cfd0fb83e99214c06c435))
26
+ - app-entry锈化 ([b5c7cff](https://github.com/monako97/neko-ui/commit/b5c7cffa8cc5a6bfa997e453818338e6f00bd2eb))
27
+ - scp ([e82512a](https://github.com/monako97/neko-ui/commit/e82512a968df82cf0aacbc5bb55d8969fadc6ec1))
28
+ - keyword ([fc2060a](https://github.com/monako97/neko-ui/commit/fc2060afd9a69f772d49dd4597111d2364a413e7))
29
+ - csp ([d0ff775](https://github.com/monako97/neko-ui/commit/d0ff7755b072f1c05cf15e44247e4dde9347d433))
7
30
  - update ([e816807](https://github.com/monako97/neko-ui/commit/e816807ee760e3f67097d131c4aa7c199326c06d))
8
31
  - update ([92aabcf](https://github.com/monako97/neko-ui/commit/92aabcfae459f7dfc418775d2f417d74f035a166))
9
32
  - 分页器受控案例更新 ([7ad8b3c](https://github.com/monako97/neko-ui/commit/7ad8b3c7de78eee2e62e6b9f07ddf00c37ba0b73))
@@ -11,14 +34,9 @@
11
34
  - npm files ([73b5d58](https://github.com/monako97/neko-ui/commit/73b5d58485f43f0416178beb6f170e3b5872ab5d))
12
35
  - polyfill false ([5009662](https://github.com/monako97/neko-ui/commit/50096621efc6fadc7a4d57f0be347bca93000f57))
13
36
 
14
- ### 🐛 Bug Fixes
15
-
16
- - types ([5d3c70f](https://github.com/monako97/neko-ui/commit/5d3c70f724ad04ee5b0bbd73ddaec234f645ac7e))
17
- - 修复marked bin缺失; 升级core依赖提升编译性能 ([ce01794](https://github.com/monako97/neko-ui/commit/ce017948827b881a64aff9d62c06bab4c8cfa7e9))
18
- - umd build ([7f77062](https://github.com/monako97/neko-ui/commit/7f77062d330dfc4e68df844ed27eb16959477bfb))
19
-
20
37
  ### ✨ Features
21
38
 
39
+ - 移除helper ([039f27d](https://github.com/monako97/neko-ui/commit/039f27d36958c23d0be51e5b281cc098c77b2e57))
22
40
  - tree click提供item ([112406c](https://github.com/monako97/neko-ui/commit/112406c3e73fe8a520529ab81ee0f3b7124fffef))
23
41
 
24
42
  ## [2.6.1](https://github.com/monako97/neko-ui/compare/2.6.0...2.6.1) (11-29-2023)
@@ -22,6 +22,6 @@ export interface RouteConfig extends IRouteDefinition {
22
22
  /** 子菜单 */
23
23
  props?: Record<string, Any>;
24
24
  /** 元数据 */
25
- meta?: Record<string, string | number | boolean>;
25
+ metadata?: Record<string, string | number | boolean>;
26
26
  }
27
27
  export {};
@@ -25,9 +25,7 @@ import{css as o}from"@moneko/css";export const style=o`
25
25
  min-block-size: 40px;
26
26
  cursor: pointer;
27
27
  animation: back-top-fade-in 1s forwards;
28
- backdrop-filter: blur(16px);
29
- /* stylelint-disable-next-line */
30
- -webkit-backdrop-filter: blur(16px);
28
+ backdrop-filter: blur(10px);
31
29
  pointer-events: all;
32
30
 
33
31
  &::before {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/back-top/style.ts"],"sourcesContent":["import { css } from '@moneko/css';\n\nexport const style = css`\n :host {\n --back-top-color: var(--on-primary-selection);\n --back-top-hover-bg: var(--primary-hover);\n }\n\n .back-top {\n position: sticky;\n z-index: 9;\n display: flex;\n justify-content: center;\n align-items: center;\n border-radius: 50%;\n color: var(--back-top-color);\n background-color: var(--back-top-bg);\n box-shadow: var(--box-shadow-base);\n transition:\n background-color var(--transition-duration),\n color var(--transition-duration);\n inset-block-end: 50px;\n inset-inline-start: calc(100% - 100px);\n inline-size: 40px;\n min-inline-size: 40px;\n block-size: 40px;\n min-block-size: 40px;\n cursor: pointer;\n animation: back-top-fade-in 1s forwards;\n backdrop-filter: blur(16px);\n /* stylelint-disable-next-line */\n -webkit-backdrop-filter: blur(16px);\n pointer-events: all;\n\n &::before {\n content: '';\n display: block;\n inline-size: 16px;\n block-size: 8px;\n background-color: var(--back-top-color);\n clip-path: polygon(0 100%, 50% 0, 100% 100%);\n }\n\n &:hover {\n background-color: var(--back-top-hover-bg);\n }\n }\n\n .back-top-out {\n animation: back-top-fade-out 1s forwards;\n }\n\n @keyframes back-top-fade-in {\n from {\n transform: translate3d(0, 16px, 0) scale(1);\n opacity: 0;\n }\n\n to {\n transform: translate3d(0, 0, 0) scale(1);\n opacity: 1;\n }\n }\n\n @keyframes back-top-fade-out {\n 0%,\n 20% {\n transform: translate3d(0, 0, 0);\n opacity: 1;\n }\n\n 100% {\n transform: translate3d(0, 16px, 0);\n opacity: 0;\n }\n }\n`;\n"],"names":["css","style"],"mappings":"AAAA,OAASA,OAAAA,CAAG,KAAQ,aAAc,AAElC,QAAO,MAAMC,MAAQD,CAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0EzB,CAAC,AAAC"}
1
+ {"version":3,"sources":["../../components/back-top/style.ts"],"sourcesContent":["import { css } from '@moneko/css';\n\nexport const style = css`\n :host {\n --back-top-color: var(--on-primary-selection);\n --back-top-hover-bg: var(--primary-hover);\n }\n\n .back-top {\n position: sticky;\n z-index: 9;\n display: flex;\n justify-content: center;\n align-items: center;\n border-radius: 50%;\n color: var(--back-top-color);\n background-color: var(--back-top-bg);\n box-shadow: var(--box-shadow-base);\n transition:\n background-color var(--transition-duration),\n color var(--transition-duration);\n inset-block-end: 50px;\n inset-inline-start: calc(100% - 100px);\n inline-size: 40px;\n min-inline-size: 40px;\n block-size: 40px;\n min-block-size: 40px;\n cursor: pointer;\n animation: back-top-fade-in 1s forwards;\n backdrop-filter: blur(10px);\n pointer-events: all;\n\n &::before {\n content: '';\n display: block;\n inline-size: 16px;\n block-size: 8px;\n background-color: var(--back-top-color);\n clip-path: polygon(0 100%, 50% 0, 100% 100%);\n }\n\n &:hover {\n background-color: var(--back-top-hover-bg);\n }\n }\n\n .back-top-out {\n animation: back-top-fade-out 1s forwards;\n }\n\n @keyframes back-top-fade-in {\n from {\n transform: translate3d(0, 16px, 0) scale(1);\n opacity: 0;\n }\n\n to {\n transform: translate3d(0, 0, 0) scale(1);\n opacity: 1;\n }\n }\n\n @keyframes back-top-fade-out {\n 0%,\n 20% {\n transform: translate3d(0, 0, 0);\n opacity: 1;\n }\n\n 100% {\n transform: translate3d(0, 16px, 0);\n opacity: 0;\n }\n }\n`;\n"],"names":["css","style"],"mappings":"AAAA,OAASA,OAAAA,CAAG,KAAQ,aAAc,AAElC,QAAO,MAAMC,MAAQD,CAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwEzB,CAAC,AAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/button/style.ts"],"sourcesContent":["import { type CSSInterpolation, css } from '@moneko/css';\nimport type { ButtonProps } from '.';\n\nfunction btnColor(type: ButtonProps['type']): CSSInterpolation {\n let _cls = `.${type}`,\n fillCls = `.${type}.fill`;\n\n if (type === 'error') {\n _cls = `.${type},.danger`;\n fillCls = `.${type}.fill,.danger.fill`;\n }\n\n return css`\n ${_cls}:not(.disabled) {\n --btn-border: var(--${type}-border);\n --btn-bg: var(--${type}-selection);\n --btn-hover-bg: var(--btn-bg);\n --btn-hover-color: var(--${type}-hover);\n --btn-active-color: var(--${type}-active);\n --btn-outline-color: var(--${type}-outline);\n --btn-color: var(--${type}-color);\n }\n ${fillCls} {\n --btn-bg: var(--${type}-color);\n --btn-border: var(--${type}-color);\n --btn-hover-bg: var(--${type}-hover);\n --btn-active-bg: var(--${type}-active);\n }\n `;\n}\n\nexport const style = css`\n .btn,\n .label {\n transition-duration: var(--transition-duration);\n }\n\n .label {\n display: block;\n line-height: normal;\n overflow: hidden;\n text-align: center;\n text-overflow: ellipsis;\n white-space: nowrap;\n transition-property: color;\n }\n\n .btn {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n border: 1px solid var(--btn-border);\n border-radius: var(--border-radius);\n padding: 0 16px;\n inline-size: fit-content;\n min-inline-size: var(--btn-size);\n block-size: fit-content;\n min-block-size: var(--btn-size);\n font-size: var(--font-size);\n color: var(--btn-color);\n background-color: var(--btn-bg);\n outline-offset: 4px;\n gap: 3px;\n line-height: 1;\n cursor: pointer;\n transition-property: color, background-color, border-color, width, height, transform;\n touch-action: manipulation;\n box-sizing: border-box;\n user-select: none;\n outline: none;\n\n &:has(.icon) {\n padding: 4px 10px;\n }\n\n &:not(.disabled) {\n &:active {\n transform: scale(0.98);\n\n .label {\n color: var(--btn-active-color);\n }\n\n &:not(.link, .flat) {\n border-color: var(--btn-active-color);\n }\n\n &:not(.link) {\n background-color: var(--btn-hover-bg);\n }\n }\n\n &:hover:not(.link) {\n background-color: var(--btn-hover-bg);\n }\n\n &:hover:not(.link, .flat),\n &:focus:not(.link, .flat) {\n border-color: var(--btn-hover-color);\n }\n\n &:hover .label,\n &:focus .label {\n color: var(--btn-hover-color);\n }\n }\n\n &.disabled {\n --btn-color: var(--disable-color);\n --btn-bg: var(--disable-bg);\n --btn-border: var(--disable-border);\n\n cursor: not-allowed;\n }\n }\n\n .normal {\n --btn-size: 32px;\n }\n\n .small {\n --btn-size: 24px;\n\n gap: 2px;\n padding: 0 7px;\n font-size: var(--font-size-xs);\n\n &:has(.icon) {\n padding: 4px 5px;\n }\n }\n\n .large {\n --btn-size: 40px;\n\n font-size: var(--font-size-lg);\n gap: 4px;\n\n &:has(.icon) {\n padding: 4px 12px;\n }\n }\n\n .default:not(.disabled) {\n --btn-outline-color: var(--primary-outline);\n --btn-color: var(--text-color);\n --btn-bg: var(--component-bg);\n --btn-border: var(--border-color);\n --btn-hover-color: var(--primary-hover);\n --btn-active-color: var(--primary-active);\n }\n ${btnColor('primary')}\n ${btnColor('error')}\n ${btnColor('success')}\n ${btnColor('warning')}\n .fill {\n &:not(.disabled, .default) {\n .label {\n color: #fff !important;\n }\n\n &:hover {\n --btn-bg: var(--btn-hover-color) !important;\n }\n\n &:active {\n --btn-bg: var(--btn-active-color) !important;\n }\n }\n }\n\n .fill.danger.default {\n .label {\n color: #fff !important;\n }\n }\n\n .dashed {\n border-style: dashed;\n }\n\n .link {\n --btn-bg: transparent !important;\n --btn-border: transparent !important;\n\n border-color: transparent !important;\n background-color: transparent !important;\n\n &::after {\n content: none;\n }\n }\n\n .flat {\n --btn-border: transparent !important;\n\n background-color: transparent;\n\n &:not(.disabled, .link).default {\n --btn-hover-bg: rgb(0 0 0 / 6%);\n }\n }\n\n .ghost {\n background-color: transparent !important;\n }\n\n .circle {\n border-radius: 50% !important;\n padding: 0;\n min-inline-size: var(--btn-size);\n max-inline-size: var(--btn-size);\n min-block-size: var(--btn-size);\n max-block-size: var(--btn-size);\n text-align: center;\n line-height: var(--btn-size);\n }\n\n .block {\n inline-size: 100%;\n }\n\n .without:not(.link, .flat)::before {\n animation: btn-wave-effect var(--transition-duration) cubic-bezier(1, 1, 1, 1);\n position: absolute;\n z-index: -1;\n display: block;\n border-radius: inherit;\n opacity: 0.2;\n box-shadow: 0 0 0 0 var(--btn-outline-color);\n inset: 0;\n animation-fill-mode: forwards;\n content: '';\n pointer-events: none;\n }\n\n @keyframes btn-wave-effect {\n 0% {\n opacity: 1;\n box-shadow: 0 0 0 var(--btn-hover-color);\n }\n\n /* 25% {\n opacity: 1;\n box-shadow: 0 0 0 4px var(--btn-hover-color);\n } */\n\n 100% {\n opacity: 0;\n box-shadow: 0 0 0 6px var(--btn-outline-color);\n }\n }\n`;\n"],"names":["css","btnColor","type","_cls","fillCls","style"],"mappings":"AAAA,OAAgCA,OAAAA,CAAG,KAAQ,aAAc,CAGzD,SAASC,EAASC,CAAyB,EACzC,IAAIC,EAAO,CAAC,CAAC,EAAED,EAAK,CAAC,CACnBE,EAAU,CAAC,CAAC,EAAEF,EAAK,KAAK,CAAC,CAO3B,MALa,UAATA,IACFC,EAAO,CAAC,CAAC,EAAED,EAAK,QAAQ,CAAC,CACzBE,EAAU,CAAC,CAAC,EAAEF,EAAK,kBAAkB,CAAC,EAGjCF,CAAG,CAAC;IACT,EAAEG,EAAK;0BACe,EAAED,EAAK;sBACX,EAAEA,EAAK;;+BAEE,EAAEA,EAAK;gCACN,EAAEA,EAAK;iCACN,EAAEA,EAAK;yBACf,EAAEA,EAAK;;IAE5B,EAAEE,EAAQ;sBACQ,EAAEF,EAAK;0BACH,EAAEA,EAAK;4BACL,EAAEA,EAAK;6BACN,EAAEA,EAAK;;EAElC,CAAC,AACH,CAEA,OAAO,MAAMG,MAAQL,CAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwHvB,EAAEC,EAAS,WAAW;EACtB,EAAEA,EAAS,SAAS;EACpB,EAAEA,EAAS,WAAW;EACtB,EAAEA,EAAS,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkGxB,CAAC,AAAC"}
1
+ {"version":3,"sources":["../../components/button/style.ts"],"sourcesContent":["import { css } from '@moneko/css';\nimport type { ButtonProps } from '.';\n\nfunction btnColor(type: ButtonProps['type']): string {\n let _cls = `.${type}`,\n fillCls = `.${type}.fill`;\n\n if (type === 'error') {\n _cls = `.${type},.danger`;\n fillCls = `.${type}.fill,.danger.fill`;\n }\n\n return css`\n ${_cls}:not(.disabled) {\n --btn-border: var(--${type}-border);\n --btn-bg: var(--${type}-selection);\n --btn-hover-bg: var(--btn-bg);\n --btn-hover-color: var(--${type}-hover);\n --btn-active-color: var(--${type}-active);\n --btn-outline-color: var(--${type}-outline);\n --btn-color: var(--${type}-color);\n }\n ${fillCls} {\n --btn-bg: var(--${type}-color);\n --btn-border: var(--${type}-color);\n --btn-hover-bg: var(--${type}-hover);\n --btn-active-bg: var(--${type}-active);\n }\n `;\n}\n\nexport const style = css`\n .btn,\n .label {\n transition-duration: var(--transition-duration);\n }\n\n .label {\n display: block;\n line-height: normal;\n overflow: hidden;\n text-align: center;\n text-overflow: ellipsis;\n white-space: nowrap;\n transition-property: color;\n }\n\n .btn {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n border: 1px solid var(--btn-border);\n border-radius: var(--border-radius);\n padding: 0 16px;\n inline-size: fit-content;\n min-inline-size: var(--btn-size);\n block-size: fit-content;\n min-block-size: var(--btn-size);\n font-size: var(--font-size);\n color: var(--btn-color);\n background-color: var(--btn-bg);\n outline-offset: 4px;\n gap: 3px;\n line-height: 1;\n cursor: pointer;\n transition-property: color, background-color, border-color, width, height, transform;\n touch-action: manipulation;\n box-sizing: border-box;\n user-select: none;\n outline: none;\n\n &:has(.icon) {\n padding: 4px 10px;\n }\n\n &:not(.disabled) {\n &:active {\n transform: scale(0.98);\n\n .label {\n color: var(--btn-active-color);\n }\n\n &:not(.link, .flat) {\n border-color: var(--btn-active-color);\n }\n\n &:not(.link) {\n background-color: var(--btn-hover-bg);\n }\n }\n\n &:hover:not(.link) {\n background-color: var(--btn-hover-bg);\n }\n\n &:hover:not(.link, .flat),\n &:focus:not(.link, .flat) {\n border-color: var(--btn-hover-color);\n }\n\n &:hover .label,\n &:focus .label {\n color: var(--btn-hover-color);\n }\n }\n\n &.disabled {\n --btn-color: var(--disable-color);\n --btn-bg: var(--disable-bg);\n --btn-border: var(--disable-border);\n\n cursor: not-allowed;\n }\n }\n\n .normal {\n --btn-size: 32px;\n }\n\n .small {\n --btn-size: 24px;\n\n gap: 2px;\n padding: 0 7px;\n font-size: var(--font-size-xs);\n\n &:has(.icon) {\n padding: 4px 5px;\n }\n }\n\n .large {\n --btn-size: 40px;\n\n font-size: var(--font-size-lg);\n gap: 4px;\n\n &:has(.icon) {\n padding: 4px 12px;\n }\n }\n\n .default:not(.disabled) {\n --btn-outline-color: var(--primary-outline);\n --btn-color: var(--text-color);\n --btn-bg: var(--component-bg);\n --btn-border: var(--border-color);\n --btn-hover-color: var(--primary-hover);\n --btn-active-color: var(--primary-active);\n }\n ${btnColor('primary')}\n ${btnColor('error')}\n ${btnColor('success')}\n ${btnColor('warning')}\n .fill {\n &:not(.disabled, .default) {\n .label {\n color: #fff !important;\n }\n\n &:hover {\n --btn-bg: var(--btn-hover-color) !important;\n }\n\n &:active {\n --btn-bg: var(--btn-active-color) !important;\n }\n }\n }\n\n .fill.danger.default {\n .label {\n color: #fff !important;\n }\n }\n\n .dashed {\n border-style: dashed;\n }\n\n .link {\n --btn-bg: transparent !important;\n --btn-border: transparent !important;\n\n border-color: transparent !important;\n background-color: transparent !important;\n\n &::after {\n content: none;\n }\n }\n\n .flat {\n --btn-border: transparent !important;\n\n background-color: transparent;\n\n &:not(.disabled, .link).default {\n --btn-hover-bg: rgb(0 0 0 / 6%);\n }\n }\n\n .ghost {\n background-color: transparent !important;\n }\n\n .circle {\n border-radius: 50% !important;\n padding: 0;\n min-inline-size: var(--btn-size);\n max-inline-size: var(--btn-size);\n min-block-size: var(--btn-size);\n max-block-size: var(--btn-size);\n text-align: center;\n line-height: var(--btn-size);\n }\n\n .block {\n inline-size: 100%;\n }\n\n .without:not(.link, .flat)::before {\n animation: btn-wave-effect var(--transition-duration) cubic-bezier(1, 1, 1, 1);\n position: absolute;\n z-index: -1;\n display: block;\n border-radius: inherit;\n opacity: 0.2;\n box-shadow: 0 0 0 0 var(--btn-outline-color);\n inset: 0;\n animation-fill-mode: forwards;\n content: '';\n pointer-events: none;\n }\n\n @keyframes btn-wave-effect {\n 0% {\n opacity: 1;\n box-shadow: 0 0 0 var(--btn-hover-color);\n }\n\n /* 25% {\n opacity: 1;\n box-shadow: 0 0 0 4px var(--btn-hover-color);\n } */\n\n 100% {\n opacity: 0;\n box-shadow: 0 0 0 6px var(--btn-outline-color);\n }\n }\n`;\n"],"names":["css","btnColor","type","_cls","fillCls","style"],"mappings":"AAAA,OAASA,OAAAA,CAAG,KAAQ,aAAc,CAGlC,SAASC,EAASC,CAAyB,EACzC,IAAIC,EAAO,CAAC,CAAC,EAAED,EAAK,CAAC,CACnBE,EAAU,CAAC,CAAC,EAAEF,EAAK,KAAK,CAAC,CAO3B,MALa,UAATA,IACFC,EAAO,CAAC,CAAC,EAAED,EAAK,QAAQ,CAAC,CACzBE,EAAU,CAAC,CAAC,EAAEF,EAAK,kBAAkB,CAAC,EAGjCF,CAAG,CAAC;IACT,EAAEG,EAAK;0BACe,EAAED,EAAK;sBACX,EAAEA,EAAK;;+BAEE,EAAEA,EAAK;gCACN,EAAEA,EAAK;iCACN,EAAEA,EAAK;yBACf,EAAEA,EAAK;;IAE5B,EAAEE,EAAQ;sBACQ,EAAEF,EAAK;0BACH,EAAEA,EAAK;4BACL,EAAEA,EAAK;6BACN,EAAEA,EAAK;;EAElC,CAAC,AACH,CAEA,OAAO,MAAMG,MAAQL,CAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwHvB,EAAEC,EAAS,WAAW;EACtB,EAAEA,EAAS,SAAS;EACpB,EAAEA,EAAS,WAAW;EACtB,EAAEA,EAAS,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkGxB,CAAC,AAAC"}
@@ -1,2 +1,2 @@
1
- function e(e,r,t,o,n,a,i){try{var l=e[a](i),s=l.value}catch(e){t(e);return}l.done?r(s):Promise.resolve(s).then(o,n)}function r(){return(r=Object.assign||function(e){for(var r=1;r<arguments.length;r++){var t=arguments[r];for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o])}return e}).apply(this,arguments)}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=o("<style>"),f=o('<n-button class="btn">',!0,!1),w=o('<n-button type="error" class="btn">',!0,!1),b=o('<div class="record"><n-button class="btn"><span>',!0,!1),R=o('<div class="view"><span></span><video autoplay>'),h=o('<div><div class="controller"><n-button class="btn">',!0,!1);import{Show as C,createComponent as S,createEffect as g,createMemo as E,createSignal as x,mergeProps as T,onCleanup as y,splitProps as j,untrack as k}from"solid-js";import $ from"@moneko/common/lib/downloadBlob";import _ from"@moneko/common/lib/isFunction";import{css as D,cx as O}from"@moneko/css";import{customElement as A}from"solid-element";import{style as P}from"./style";import"../button";import B from"../theme";let L={video:!0,audio:{echoCancellation:!0,noiseSuppression:!0,sampleRate:44100}},M={inactive:"primary",paused:"warning",recording:"success"};function F(o){let d;let{baseStyle:S}=B,[A,F]=j(T({options:L,captureScreenText:"捕获屏幕",stopCaptureText:"停止捕获",startRecorderText:"开始录制",stopRecorderText:"停止录制",pausedRecorderText:"暂停录制",recorderingText:"录制中",onErrorRecorder:null},o),["options","preview","controls","recorder","filename","captureScreenText","stopCaptureText","startRecorderText","stopRecorderText","pausedRecorderText","recorderingText","onErrorRecorder","onStopRecorder","onStartRecorder","onStopCapture","onStartCapture","onRecorderDataAvailable","onErrorCapture","onSaveRecorder","class","css"]),I=[],[N,q]=x(null),[z,G]=x(null),[H,J]=x("inactive");function K(){let e=k(N);if(e){switch(_(A.onStartRecorder)&&A.onStartRecorder(e.state),e.state){case"inactive":e.start();break;case"paused":e.resume();break;default:e.pause()}J(e.state)}}function Q(e){null==I||I.push(e.data),null==A.onRecorderDataAvailable||A.onRecorderDataAvailable.call(A,e)}function U(){let e=k(N);e&&("inactive"!==e.state&&e.stop(),J(e.state)),null==A.onStopRecorder||A.onStopRecorder.call(A)}function V(){if(!(null==I?void 0:I.length))return;let e=new Blob(I,{type:"video/webm"}),r=A.filename||new Date().toISOString(),t=`${r}.webm`;null==I||I.splice(0),A.onSaveRecorder&&A.onSaveRecorder(e,t),$(e,t)}function W(){U();let e=k(z);if(e){let r=e.getTracks();null==r||r.forEach(e=>e.stop()),G(null)}null==A.onStopCapture||A.onStopCapture.call(A)}function X(){return Y.apply(this,arguments)}function Y(){var t;return t=function*(){W();try{let e=yield navigator.mediaDevices.getDisplayMedia(r({},L,A.options));e&&(e.addEventListener("inactive",W,!1),G(e)),null==A.onStartCapture||A.onStartCapture.call(A,e)}catch(e){null==A.onErrorCapture||A.onErrorCapture.call(A,e)}},(Y=function(){var r=this,o=arguments;return new Promise(function(n,a){var i=t.apply(r,o);function l(r){e(i,n,a,l,s,"next",r)}function s(r){e(i,n,a,l,s,"throw",r)}l(void 0)})}).apply(this,arguments)}g(()=>{let e=z();A.preview&&d&&e&&(d.srcObject=e)}),g(()=>{let e=z();if(null==e?void 0:e.active){let r=new MediaRecorder(e);r.onstop=V,r.onerror=A.onErrorRecorder,r.ondataavailable=Q,q(r)}else q(null)}),y(()=>{let e=k(N);e&&(null==e?void 0:e.state)!=="inactive"&&e.stop();let r=k(z);r&&r.getTracks().forEach(e=>e.stop())});let Z=E(()=>({paused:A.pausedRecorderText,recording:A.recorderingText,inactive:A.startRecorderText})[H()]);return[(()=>{let e=m();return l(e,S,null),l(e,P,null),l(e,()=>D(A.css),null),e})(),(()=>{let e=h(),r=e.firstChild,o=r.firstChild;return n(e,a({get class(){return O("capture-screen",A.class)}},F),!1,!0),v(o,"click",X,!0),o._$owner=s(),l(o,()=>A.captureScreenText),l(r,p(C,{get when(){return z()},get children(){return[(()=>{let e=f();return v(e,"click",W,!0),e.danger=!0,e._$owner=s(),l(e,()=>A.stopCaptureText),e})(),p(C,{get when(){return A.recorder},get children(){let e=b(),r=e.firstChild,t=r.firstChild;return v(r,"click",K,!0),r._$owner=s(),l(t,Z),l(e,p(C,{get when(){return"inactive"!==H()},get children(){let e=w();return v(e,"click",U,!0),e._$owner=s(),l(e,()=>A.stopRecorderText),e}}),null),c(()=>r.type=M[H()]),e}})]}}),null),l(e,p(C,{get when(){return i(()=>!!A.preview)()&&z()},get children(){let e=R(),r=e.firstChild,o=r.nextSibling,n=d;return"function"==typeof n?t(n,o):d=o,c(e=>{let t=O("recording"===H()&&"recording","paused"===H()&&"paused"),n=A.controls&&null!==z();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})()]}A("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;return S(F,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))});export default F;d(["click"]);
1
+ function e(e,r,t,o,n,a,i){try{var l=e[a](i),s=l.value}catch(e){t(e);return}l.done?r(s):Promise.resolve(s).then(o,n)}function r(){return(r=Object.assign||function(e){for(var r=1;r<arguments.length;r++){var t=arguments[r];for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o])}return e}).apply(this,arguments)}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=o("<style>"),f=o('<n-button class="btn">',!0,!1),w=o('<n-button type="error" class="btn">',!0,!1),b=o('<div class="record"><n-button class="btn"><span>',!0,!1),R=o('<div class="view"><span></span><video autoplay>'),h=o('<div><div class="controller"><n-button class="btn">',!0,!1);import{Show as C,createComponent as S,createEffect as g,createMemo as E,createSignal as x,mergeProps as T,onCleanup as y,splitProps as j,untrack as k}from"solid-js";import $ from"@moneko/common/lib/downloadBlob";import _ from"@moneko/common/lib/isFunction";import{css as D,cx as O}from"@moneko/css";import{customElement as A}from"solid-element";import{style as P}from"./style";import"../button";import B from"../theme";let L={video:!0,audio:{echoCancellation:!0,noiseSuppression:!0,sampleRate:44100}},M={inactive:"primary",paused:"warning",recording:"success"};function F(o){let d;let{baseStyle:S}=B,[A,F]=j(T({options:L,captureScreenText:"捕获屏幕",stopCaptureText:"停止捕获",startRecorderText:"开始录制",stopRecorderText:"停止录制",pausedRecorderText:"暂停录制",recorderingText:"录制中",onErrorRecorder:null},o),["options","preview","controls","recorder","filename","captureScreenText","stopCaptureText","startRecorderText","stopRecorderText","pausedRecorderText","recorderingText","onErrorRecorder","onStopRecorder","onStartRecorder","onStopCapture","onStartCapture","onRecorderDataAvailable","onErrorCapture","onSaveRecorder","class","css"]),I=[],[N,q]=x(null),[z,G]=x(null),[H,J]=x("inactive");function K(){let e=k(N);if(e){switch(_(A.onStartRecorder)&&A.onStartRecorder(e.state),e.state){case"inactive":e.start();break;case"paused":e.resume();break;default:e.pause()}J(e.state)}}function Q(e){null==I||I.push(e.data),null==A.onRecorderDataAvailable||A.onRecorderDataAvailable.call(A,e)}function U(){let e=k(N);e&&("inactive"!==e.state&&e.stop(),J(e.state)),null==A.onStopRecorder||A.onStopRecorder.call(A)}function V(){if(!(null==I?void 0:I.length))return;let e=new Blob(I,{type:"video/webm"}),r=A.filename||new Date().toISOString(),t=`${r}.webm`;null==I||I.splice(0),A.onSaveRecorder&&A.onSaveRecorder(e,t),$(e,t)}function W(){U();let e=k(z);if(e){let r=e.getTracks();null==r||r.forEach(e=>e.stop()),G(null)}null==A.onStopCapture||A.onStopCapture.call(A)}function X(){return Y.apply(this,arguments)}function Y(){var t;return t=function*(){W();try{let e=yield navigator.mediaDevices.getDisplayMedia(r({},L,A.options));e&&(e.addEventListener("inactive",W,!1),G(e)),null==A.onStartCapture||A.onStartCapture.call(A,e)}catch(e){null==A.onErrorCapture||A.onErrorCapture.call(A,e)}},(Y=function(){var r=this,o=arguments;return new Promise(function(n,a){var i=t.apply(r,o);function l(r){e(i,n,a,l,s,"next",r)}function s(r){e(i,n,a,l,s,"throw",r)}l(void 0)})}).apply(this,arguments)}g(()=>{let e=z();A.preview&&d&&e&&(d.srcObject=e)}),g(()=>{let e=z();if(null==e?void 0:e.active){let r=new MediaRecorder(e);r.onstop=V,r.onerror=A.onErrorRecorder,r.ondataavailable=Q,q(r)}else q(null)}),y(()=>{let e=k(N);e&&(null==e?void 0:e.state)!=="inactive"&&e.stop();let r=k(z);r&&r.getTracks().forEach(e=>e.stop())});let Z=E(()=>({paused:A.pausedRecorderText,recording:A.recorderingText,inactive:A.startRecorderText})[H()]);return[(()=>{let e=m();return l(e,S,null),l(e,P,null),l(e,()=>D(A.css),null),e})(),(()=>{let e=h(),r=e.firstChild,o=r.firstChild;return n(e,a({get class(){return O("capture-screen",A.class)}},F),!1,!0),v(o,"click",X,!0),o._$owner=s(),l(o,()=>A.captureScreenText),l(r,p(C,{get when(){return z()},get children(){return[(()=>{let e=f();return v(e,"click",W,!0),e.danger=!0,e._$owner=s(),l(e,()=>A.stopCaptureText),e})(),p(C,{get when(){return A.recorder},get children(){let e=b(),r=e.firstChild,t=r.firstChild;return v(r,"click",K,!0),r._$owner=s(),l(t,Z),l(e,p(C,{get when(){return"inactive"!==H()},get children(){let e=w();return v(e,"click",U,!0),e._$owner=s(),l(e,()=>A.stopRecorderText),e}}),null),c(()=>r.type=M[H()]),e}})]}}),null),l(e,p(C,{get when(){return i(()=>!!A.preview)()&&z()},get children(){let e=R(),r=e.firstChild,o=r.nextSibling,n=d;return"function"==typeof n?t(n,o):d=o,c(e=>{let t=O("recording"===H()&&"recording","paused"===H()&&"paused"),n=A.controls&&null!==z();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})()]}A("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;return S(F,T({onErrorRecorder(e){t.dispatchEvent(new CustomEvent("errorrecorder",{detail:e}))},onStopRecorder(){t.dispatchEvent(new CustomEvent("stoprecorder",{detail:void 0}))},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:void 0}))},onStartCapture(e){t.dispatchEvent(new CustomEvent("startcapture",{detail:e}))},onSaveRecorder(e,r){t.dispatchEvent(new CustomEvent("saverecorder",{detail:[e,r]}))}},e))});export default F;d(["click"]);
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/capture-screen/index.tsx"],"sourcesContent":["import {\n Show,\n createComponent,\n createEffect,\n createMemo,\n createSignal,\n mergeProps,\n onCleanup,\n splitProps,\n untrack,\n} from 'solid-js';\nimport { downloadBlob, isFunction } from '@moneko/common';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport { style } from './style';\nimport '../button';\nimport theme from '../theme';\nimport type { CustomElement } from '..';\n\ndeclare interface MediaRecorderDataAvailableEvent extends Event {\n /** MediaRecorderDataAvailableEvent */\n data: Any;\n}\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<\n CaptureScreenProps,\n | 'onErrorRecorder'\n | 'onStopRecorder'\n | 'onStartRecorder'\n | 'onRecorderDataAvailable'\n | 'onErrorCapture'\n | 'onStopCapture'\n | 'onStartCapture'\n | 'onSaveRecorder'\n>;\n\nconst displayMediaOptions: MediaStreamConstraints = {\n video: true,\n audio: {\n echoCancellation: true,\n noiseSuppression: true,\n sampleRate: 44100,\n },\n};\n\nconst btnStatusDic: Record<MediaRecorder['state'], 'primary' | 'warning' | 'success'> = {\n inactive: 'primary',\n paused: 'warning',\n recording: 'success',\n};\n\nfunction CaptureScreen(_: CaptureScreenProps) {\n const { baseStyle } = theme;\n const _props = mergeProps(\n {\n options: displayMediaOptions,\n captureScreenText: '捕获屏幕',\n stopCaptureText: '停止捕获',\n startRecorderText: '开始录制',\n stopRecorderText: '停止录制',\n pausedRecorderText: '暂停录制',\n recorderingText: '录制中',\n onErrorRecorder: null,\n },\n _,\n );\n const [local, props] = splitProps(_props, [\n 'options',\n 'preview',\n 'controls',\n 'recorder',\n 'filename',\n 'captureScreenText',\n 'stopCaptureText',\n 'startRecorderText',\n 'stopRecorderText',\n 'pausedRecorderText',\n 'recorderingText',\n 'onErrorRecorder',\n 'onStopRecorder',\n 'onStartRecorder',\n 'onStopCapture',\n 'onStartCapture',\n 'onRecorderDataAvailable',\n 'onErrorCapture',\n 'onSaveRecorder',\n 'class',\n 'css',\n ]);\n let videoElem: HTMLVideoElement | undefined;\n const chunks: Blob[] = [];\n const [mediaRecorder, setMediaRecorder] = createSignal<MediaRecorder | null>(null);\n const [mediaStream, setMediaStream] = createSignal<MediaStream | null>(null);\n const [recordState, setRecordState] = createSignal<MediaRecorder['state']>('inactive');\n\n // 开始录制\n function handleStartRecorder() {\n const mr = untrack(mediaRecorder);\n\n if (mr) {\n if (isFunction(local.onStartRecorder)) {\n local.onStartRecorder(mr.state);\n }\n switch (mr.state) {\n case 'inactive': // 不活跃\n mr.start();\n break;\n case 'paused': // 暂停\n mr.resume();\n break;\n case 'recording': // 录制中\n default:\n mr.pause();\n break;\n }\n setRecordState(mr.state);\n }\n }\n function handleRecorderDataAvailable(e: MediaRecorderDataAvailableEvent) {\n chunks?.push(e.data as Blob);\n local.onRecorderDataAvailable?.(e);\n }\n // 停止录制\n function stopRecorder() {\n const mr = untrack(mediaRecorder);\n\n // 未录制时不需要停止\n if (mr) {\n if (mr.state !== 'inactive') {\n mr.stop();\n }\n setRecordState(mr.state);\n }\n local.onStopRecorder?.();\n }\n function handleSaveRecorder() {\n if (!chunks?.length) return;\n // 将录制内容保存到本地\n const blob: Blob = new Blob(chunks, {\n type: 'video/webm',\n });\n const name = local.filename || new Date().toISOString();\n const fileName = `${name}.webm`;\n\n chunks?.splice(0);\n if (local.onSaveRecorder) {\n local.onSaveRecorder(blob, fileName);\n }\n // 保存文件\n downloadBlob(blob, fileName);\n }\n\n // 停止捕获屏幕\n function stopCapture() {\n // 如果在录制则先停止\n stopRecorder();\n const ms = untrack(mediaStream);\n\n if (ms) {\n const tracks = ms.getTracks();\n\n tracks?.forEach((track: MediaStreamTrack) => track.stop());\n setMediaStream(null);\n }\n local.onStopCapture?.();\n }\n\n // 开始捕获屏幕\n async function startCapture() {\n stopCapture();\n try {\n const stream = await navigator.mediaDevices.getDisplayMedia({\n ...displayMediaOptions,\n ...local.options,\n });\n\n if (stream) {\n // 监听停止捕获屏幕\n stream.addEventListener('inactive', stopCapture, false);\n setMediaStream(stream);\n }\n local.onStartCapture?.(stream);\n } catch (err) {\n local.onErrorCapture?.(err);\n }\n }\n\n createEffect(() => {\n const ms = mediaStream();\n\n if (local.preview && videoElem && ms) {\n videoElem.srcObject = ms;\n }\n });\n\n createEffect(() => {\n const ms = mediaStream();\n\n if (ms?.active) {\n const recorderInstance = new MediaRecorder(ms);\n\n recorderInstance.onstop = handleSaveRecorder;\n recorderInstance.onerror = local.onErrorRecorder;\n // 每次timeslice记录毫秒级媒体时(或未记录整个媒体时,如果timeslice未指定)定期触发\n recorderInstance.ondataavailable = handleRecorderDataAvailable;\n setMediaRecorder(recorderInstance);\n } else {\n setMediaRecorder(null);\n }\n });\n\n onCleanup(() => {\n const mr = untrack(mediaRecorder);\n\n // 未录制时不需要停止\n if (mr && mr?.state !== 'inactive') {\n mr.stop();\n }\n const ms = untrack(mediaStream);\n\n if (ms) {\n const tracks = ms.getTracks();\n\n tracks.forEach((track: MediaStreamTrack) => track.stop());\n }\n });\n const recorderText = createMemo(() => {\n return {\n paused: local.pausedRecorderText,\n recording: local.recorderingText,\n inactive: local.startRecorderText,\n }[recordState()];\n });\n\n return (\n <>\n <style>\n {baseStyle()}\n {style}\n {css(local.css)}\n </style>\n <div class={cx('capture-screen', local.class)} {...props}>\n <div class=\"controller\">\n <n-button onClick={startCapture} class=\"btn\">\n {local.captureScreenText}\n </n-button>\n <Show when={mediaStream()}>\n <>\n <n-button danger={true} onClick={stopCapture} class=\"btn\">\n {local.stopCaptureText}\n </n-button>\n <Show when={local.recorder}>\n <div class=\"record\">\n <n-button\n type={btnStatusDic[recordState()]}\n onClick={handleStartRecorder}\n class=\"btn\"\n >\n <span>{recorderText()}</span>\n </n-button>\n <Show when={recordState() !== 'inactive'}>\n <n-button type=\"error\" onClick={stopRecorder} class=\"btn\">\n {local.stopRecorderText}\n </n-button>\n </Show>\n </div>\n </Show>\n </>\n </Show>\n </div>\n <Show when={local.preview && mediaStream()}>\n <div class=\"view\">\n <span\n class={cx(\n recordState() === 'recording' && 'recording',\n recordState() === 'paused' && 'paused',\n )}\n />\n <video ref={videoElem} autoplay controls={local.controls && mediaStream() !== null} />\n </div>\n </Show>\n </div>\n </>\n );\n}\n\ncustomElement<CaptureScreenProps>(\n 'n-capture-screen',\n {\n class: void 0,\n css: void 0,\n options: void 0,\n preview: void 0,\n controls: void 0,\n recorder: void 0,\n filename: void 0,\n captureScreenText: void 0,\n stopCaptureText: void 0,\n startRecorderText: void 0,\n stopRecorderText: void 0,\n pausedRecorderText: void 0,\n recorderingText: void 0,\n onErrorRecorder: void 0,\n onStopRecorder: void 0,\n onStartRecorder: void 0,\n onRecorderDataAvailable: void 0,\n onErrorCapture: void 0,\n onStopCapture: void 0,\n onStartCapture: void 0,\n onSaveRecorder: void 0,\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n onErrorRecorder(e: Event) {\n el.dispatchEvent(\n new CustomEvent('errorrecorder', {\n detail: e,\n }),\n );\n },\n onStopRecorder() {\n el.dispatchEvent(\n new CustomEvent('stoprecorder', {\n detail: null,\n }),\n );\n },\n onStartRecorder(state: MediaRecorder['state']) {\n el.dispatchEvent(\n new CustomEvent('startrecorder', {\n detail: state,\n }),\n );\n },\n onRecorderDataAvailable(e: MediaRecorderDataAvailableEvent) {\n el.dispatchEvent(\n new CustomEvent('recorderdataavailable', {\n detail: e,\n }),\n );\n },\n onErrorCapture(e: unknown) {\n el.dispatchEvent(\n new CustomEvent('errorcapture', {\n detail: e,\n }),\n );\n },\n onStopCapture() {\n el.dispatchEvent(\n new CustomEvent('stopcapture', {\n detail: null,\n }),\n );\n },\n onStartCapture(stream?: MediaStream) {\n el.dispatchEvent(\n new CustomEvent('startcapture', {\n detail: stream,\n }),\n );\n },\n onSaveRecorder(blob: Blob, fileName: string) {\n el.dispatchEvent(\n new CustomEvent('saverecorder', {\n detail: [blob, fileName],\n }),\n );\n },\n },\n _,\n );\n\n return createComponent(CaptureScreen, props);\n },\n);\n\nexport default CaptureScreen;\n"],"names":["Show","createComponent","createEffect","createMemo","createSignal","mergeProps","onCleanup","splitProps","untrack","downloadBlob","isFunction","css","cx","customElement","style","theme","displayMediaOptions","video","audio","echoCancellation","noiseSuppression","sampleRate","btnStatusDic","inactive","paused","recording","CaptureScreen","_","videoElem","baseStyle","local","props","options","captureScreenText","stopCaptureText","startRecorderText","stopRecorderText","pausedRecorderText","recorderingText","onErrorRecorder","chunks","mediaRecorder","setMediaRecorder","mediaStream","setMediaStream","recordState","setRecordState","handleStartRecorder","mr","onStartRecorder","state","start","resume","pause","handleRecorderDataAvailable","e","push","data","onRecorderDataAvailable","stopRecorder","stop","onStopRecorder","handleSaveRecorder","length","blob","Blob","type","name","filename","Date","toISOString","fileName","splice","onSaveRecorder","stopCapture","ms","tracks","getTracks","forEach","track","onStopCapture","startCapture","stream","navigator","mediaDevices","getDisplayMedia","addEventListener","onStartCapture","err","onErrorCapture","preview","srcObject","active","recorderInstance","MediaRecorder","onstop","onerror","ondataavailable","recorderText","class","recorder","controls","opt","el","element","dispatchEvent","CustomEvent","detail"],"mappings":"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"}
1
+ {"version":3,"sources":["../../components/capture-screen/index.tsx"],"sourcesContent":["import {\n Show,\n createComponent,\n createEffect,\n createMemo,\n createSignal,\n mergeProps,\n onCleanup,\n splitProps,\n untrack,\n} from 'solid-js';\nimport { downloadBlob, isFunction } from '@moneko/common';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport { style } from './style';\nimport '../button';\nimport theme from '../theme';\nimport type { CustomElement } from '..';\n\ndeclare interface MediaRecorderDataAvailableEvent extends Event {\n /** MediaRecorderDataAvailableEvent */\n data: Any;\n}\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<\n CaptureScreenProps,\n | 'onErrorRecorder'\n | 'onStopRecorder'\n | 'onStartRecorder'\n | 'onRecorderDataAvailable'\n | 'onErrorCapture'\n | 'onStopCapture'\n | 'onStartCapture'\n | 'onSaveRecorder'\n>;\n\nconst displayMediaOptions: MediaStreamConstraints = {\n video: true,\n audio: {\n echoCancellation: true,\n noiseSuppression: true,\n sampleRate: 44100,\n },\n};\n\nconst btnStatusDic: Record<MediaRecorder['state'], 'primary' | 'warning' | 'success'> = {\n inactive: 'primary',\n paused: 'warning',\n recording: 'success',\n};\n\nfunction CaptureScreen(_: CaptureScreenProps) {\n const { baseStyle } = theme;\n const _props = mergeProps(\n {\n options: displayMediaOptions,\n captureScreenText: '捕获屏幕',\n stopCaptureText: '停止捕获',\n startRecorderText: '开始录制',\n stopRecorderText: '停止录制',\n pausedRecorderText: '暂停录制',\n recorderingText: '录制中',\n onErrorRecorder: null,\n },\n _,\n );\n const [local, props] = splitProps(_props, [\n 'options',\n 'preview',\n 'controls',\n 'recorder',\n 'filename',\n 'captureScreenText',\n 'stopCaptureText',\n 'startRecorderText',\n 'stopRecorderText',\n 'pausedRecorderText',\n 'recorderingText',\n 'onErrorRecorder',\n 'onStopRecorder',\n 'onStartRecorder',\n 'onStopCapture',\n 'onStartCapture',\n 'onRecorderDataAvailable',\n 'onErrorCapture',\n 'onSaveRecorder',\n 'class',\n 'css',\n ]);\n let videoElem: HTMLVideoElement | undefined;\n const chunks: Blob[] = [];\n const [mediaRecorder, setMediaRecorder] = createSignal<MediaRecorder | null>(null);\n const [mediaStream, setMediaStream] = createSignal<MediaStream | null>(null);\n const [recordState, setRecordState] = createSignal<MediaRecorder['state']>('inactive');\n\n // 开始录制\n function handleStartRecorder() {\n const mr = untrack(mediaRecorder);\n\n if (mr) {\n if (isFunction(local.onStartRecorder)) {\n local.onStartRecorder(mr.state);\n }\n switch (mr.state) {\n case 'inactive': // 不活跃\n mr.start();\n break;\n case 'paused': // 暂停\n mr.resume();\n break;\n // case 'recording': // 录制中\n default:\n mr.pause();\n break;\n }\n setRecordState(mr.state);\n }\n }\n function handleRecorderDataAvailable(e: MediaRecorderDataAvailableEvent) {\n chunks?.push(e.data as Blob);\n local.onRecorderDataAvailable?.(e);\n }\n // 停止录制\n function stopRecorder() {\n const mr = untrack(mediaRecorder);\n\n // 未录制时不需要停止\n if (mr) {\n if (mr.state !== 'inactive') {\n mr.stop();\n }\n setRecordState(mr.state);\n }\n local.onStopRecorder?.();\n }\n function handleSaveRecorder() {\n if (!chunks?.length) return;\n // 将录制内容保存到本地\n const blob: Blob = new Blob(chunks, {\n type: 'video/webm',\n });\n const name = local.filename || new Date().toISOString();\n const fileName = `${name}.webm`;\n\n chunks?.splice(0);\n if (local.onSaveRecorder) {\n local.onSaveRecorder(blob, fileName);\n }\n // 保存文件\n downloadBlob(blob, fileName);\n }\n\n // 停止捕获屏幕\n function stopCapture() {\n // 如果在录制则先停止\n stopRecorder();\n const ms = untrack(mediaStream);\n\n if (ms) {\n const tracks = ms.getTracks();\n\n tracks?.forEach((track: MediaStreamTrack) => track.stop());\n setMediaStream(null);\n }\n local.onStopCapture?.();\n }\n\n // 开始捕获屏幕\n async function startCapture() {\n stopCapture();\n try {\n const stream = await navigator.mediaDevices.getDisplayMedia({\n ...displayMediaOptions,\n ...local.options,\n });\n\n if (stream) {\n // 监听停止捕获屏幕\n stream.addEventListener('inactive', stopCapture, false);\n setMediaStream(stream);\n }\n local.onStartCapture?.(stream);\n } catch (err) {\n local.onErrorCapture?.(err);\n }\n }\n\n createEffect(() => {\n const ms = mediaStream();\n\n if (local.preview && videoElem && ms) {\n videoElem.srcObject = ms;\n }\n });\n\n createEffect(() => {\n const ms = mediaStream();\n\n if (ms?.active) {\n const recorderInstance = new MediaRecorder(ms);\n\n recorderInstance.onstop = handleSaveRecorder;\n recorderInstance.onerror = local.onErrorRecorder;\n // 每次timeslice记录毫秒级媒体时(或未记录整个媒体时,如果timeslice未指定)定期触发\n recorderInstance.ondataavailable = handleRecorderDataAvailable;\n setMediaRecorder(recorderInstance);\n } else {\n setMediaRecorder(null);\n }\n });\n\n onCleanup(() => {\n const mr = untrack(mediaRecorder);\n\n // 未录制时不需要停止\n if (mr && mr?.state !== 'inactive') {\n mr.stop();\n }\n const ms = untrack(mediaStream);\n\n if (ms) {\n const tracks = ms.getTracks();\n\n tracks.forEach((track: MediaStreamTrack) => track.stop());\n }\n });\n const recorderText = createMemo(() => {\n return {\n paused: local.pausedRecorderText,\n recording: local.recorderingText,\n inactive: local.startRecorderText,\n }[recordState()];\n });\n\n return (\n <>\n <style>\n {baseStyle()}\n {style}\n {css(local.css)}\n </style>\n <div class={cx('capture-screen', local.class)} {...props}>\n <div class=\"controller\">\n <n-button onClick={startCapture} class=\"btn\">\n {local.captureScreenText}\n </n-button>\n <Show when={mediaStream()}>\n <>\n <n-button danger={true} onClick={stopCapture} class=\"btn\">\n {local.stopCaptureText}\n </n-button>\n <Show when={local.recorder}>\n <div class=\"record\">\n <n-button\n type={btnStatusDic[recordState()]}\n onClick={handleStartRecorder}\n class=\"btn\"\n >\n <span>{recorderText()}</span>\n </n-button>\n <Show when={recordState() !== 'inactive'}>\n <n-button type=\"error\" onClick={stopRecorder} class=\"btn\">\n {local.stopRecorderText}\n </n-button>\n </Show>\n </div>\n </Show>\n </>\n </Show>\n </div>\n <Show when={local.preview && mediaStream()}>\n <div class=\"view\">\n <span\n class={cx(\n recordState() === 'recording' && 'recording',\n recordState() === 'paused' && 'paused',\n )}\n />\n <video ref={videoElem} autoplay controls={local.controls && mediaStream() !== null} />\n </div>\n </Show>\n </div>\n </>\n );\n}\n\ncustomElement<CaptureScreenProps>(\n 'n-capture-screen',\n {\n class: void 0,\n css: void 0,\n options: void 0,\n preview: void 0,\n controls: void 0,\n recorder: void 0,\n filename: void 0,\n captureScreenText: void 0,\n stopCaptureText: void 0,\n startRecorderText: void 0,\n stopRecorderText: void 0,\n pausedRecorderText: void 0,\n recorderingText: void 0,\n onErrorRecorder: void 0,\n onStopRecorder: void 0,\n onStartRecorder: void 0,\n onRecorderDataAvailable: void 0,\n onErrorCapture: void 0,\n onStopCapture: void 0,\n onStartCapture: void 0,\n onSaveRecorder: void 0,\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n onErrorRecorder(e: Event) {\n el.dispatchEvent(\n new CustomEvent('errorrecorder', {\n detail: e,\n }),\n );\n },\n onStopRecorder() {\n el.dispatchEvent(\n new CustomEvent('stoprecorder', {\n detail: void 0,\n }),\n );\n },\n onStartRecorder(state: MediaRecorder['state']) {\n el.dispatchEvent(\n new CustomEvent('startrecorder', {\n detail: state,\n }),\n );\n },\n onRecorderDataAvailable(e: MediaRecorderDataAvailableEvent) {\n el.dispatchEvent(\n new CustomEvent('recorderdataavailable', {\n detail: e,\n }),\n );\n },\n onErrorCapture(e: unknown) {\n el.dispatchEvent(\n new CustomEvent('errorcapture', {\n detail: e,\n }),\n );\n },\n onStopCapture() {\n el.dispatchEvent(\n new CustomEvent('stopcapture', {\n detail: void 0,\n }),\n );\n },\n onStartCapture(stream?: MediaStream) {\n el.dispatchEvent(\n new CustomEvent('startcapture', {\n detail: stream,\n }),\n );\n },\n onSaveRecorder(blob: Blob, fileName: string) {\n el.dispatchEvent(\n new CustomEvent('saverecorder', {\n detail: [blob, fileName],\n }),\n );\n },\n },\n _,\n );\n\n return createComponent(CaptureScreen, props);\n },\n);\n\nexport default CaptureScreen;\n"],"names":["Show","createComponent","createEffect","createMemo","createSignal","mergeProps","onCleanup","splitProps","untrack","downloadBlob","isFunction","css","cx","customElement","style","theme","displayMediaOptions","video","audio","echoCancellation","noiseSuppression","sampleRate","btnStatusDic","inactive","paused","recording","CaptureScreen","_","videoElem","baseStyle","local","props","options","captureScreenText","stopCaptureText","startRecorderText","stopRecorderText","pausedRecorderText","recorderingText","onErrorRecorder","chunks","mediaRecorder","setMediaRecorder","mediaStream","setMediaStream","recordState","setRecordState","handleStartRecorder","mr","onStartRecorder","state","start","resume","pause","handleRecorderDataAvailable","e","push","data","onRecorderDataAvailable","stopRecorder","stop","onStopRecorder","handleSaveRecorder","length","blob","Blob","type","name","filename","Date","toISOString","fileName","splice","onSaveRecorder","stopCapture","ms","tracks","getTracks","forEach","track","onStopCapture","startCapture","stream","navigator","mediaDevices","getDisplayMedia","addEventListener","onStartCapture","err","onErrorCapture","preview","srcObject","active","recorderInstance","MediaRecorder","onstop","onerror","ondataavailable","recorderText","class","recorder","controls","opt","el","element","dispatchEvent","CustomEvent","detail"],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ /// <reference types="typings/typings" />
1
2
  import type { CronData } from '.';
2
3
  import type { BaseOption } from 'neko-ui';
3
4
  type BeginIntervalProps = {
package/es/cron/index.js CHANGED
@@ -1,2 +1,2 @@
1
- function e(){return(e=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}import{template as t}from"solid-js/web";import{insert as r}from"solid-js/web";import{getOwner as n}from"solid-js/web";import{effect as a}from"solid-js/web";import{createComponent as o}from"solid-js/web";import{addEventListener as l}from"solid-js/web";let s=t("<style>"),u=t("<n-tabs>",!0,!1),i=t("<code>");import{Show as m,batch as p,createComponent as d,createEffect as y,createSignal as c,mergeProps as v,splitProps as b,untrack as f}from"solid-js";import{css as g}from"@moneko/css";import{customElement as h}from"solid-element";import w from"./day";import $ from"./hour";import C from"./minute";import k from"./month";import N from"./second";import j from"./week";import E from"./year";import"../button";import"../input-number";import"../radio";import"../select";import"../tabs";function x(t){let[d]=b(t,["value","defaultValue","exclude","onChange","type","showCron","css","class"]),[v,h]=c(d.defaultValue),x=new Date().getFullYear(),O={hms:{start:0,end:1,begin:0,beginEvery:1,some:[0],value:""},mwd:{start:1,end:2,begin:1,beginEvery:1,some:[1],value:""},year:{start:x,end:x+1,begin:x,beginEvery:1,some:[x],value:""}},W=[],D=[];for(let e=1;e<32;e++)W.push({label:e<10?`0${e}`:`${e}`,value:e}),D.push(e);let[P,L]=c("second"),[V,I]=c({second:e({type:"*"},O.hms),minute:e({type:"*"},O.hms),hour:e({type:"*"},O.hms),day:e({type:"*",last:1,closeWorkDay:1},O.mwd),month:e({type:"*"},O.mwd),week:e({last:1,type:"?"},O.mwd),year:e({type:""},O.year)});function F(t,r){p(()=>{!function(){let t=f(V),r="day"===P();if(r||"week"===P()){let n=r?"week":"day",a="?"===t[n].type&&"?"===t[P()].type?"*":"?";a!==t[n].type&&I(t=>e({},t,{[n]:e({},t[n],{type:a})}))}}(),I(n=>{let a=e({},n[P()],{[t]:r});return("start"===t||"end"===t)&&a.end-a.start<=1&&("end"===t?a.start=r-1:a.end=r+1),e({},n,{[P()]:a})})})}function U(e){L(e.detail[0])}function Y(e,t){if(e.value.indexOf("-")>-1){e.type="period";let t=e.value.split("-");e.start=Number(t[0]),e.end=Number(t[1])}else if(e.value.indexOf("W")>-1)e.type="closeWorkDay",e.closeWorkDay=Number(e.value.split("W")[0])||1;else if(e.value.indexOf("L")>-1)e.type="last",e.last=Number(e.value.split("L")[0])||1;else if(e.value.indexOf(t?"#":"/")>-1){e.type="beginInterval";let r=e.value.split(t?"#":"/");t?(e.begin=Number(r[1]),e.beginEvery=Number(r[0])):(e.begin=Number(r[0]),e.beginEvery=Number(r[1]))}else e.value.indexOf(",")>-1||/^[0-9]+$/.test(e.value)?(e.type="some",e.some=e.value.split(",").map(Number)):e.type=e.value;return e}function _(e){return"number"!=typeof e||isNaN(e)?e:`${e}`}function q(e,t){switch(e.type){case"period":return`${_(e.start)}-${_(e.end)}`;case"beginInterval":if(t)return`${_(e.beginEvery)}#${_(e.begin)}`;return`${_(e.begin)}/${_(e.beginEvery)}`;case"closeWorkDay":return`${_(e.closeWorkDay||1)}W`;case"last":return t?`${_(e.last)}L`:"L";case"some":return e.some.join(",");default:return e.type}}y(()=>{void 0!==d.value&&f(v)!==d.value&&h(d.value)}),y(()=>{let t=v();if(t){let r=t.toUpperCase().split(" ");p(()=>{I(t=>({second:Y(e({},t.second,{value:r[0]||"?"})),minute:Y(e({},t.minute,{value:r[1]||"?"})),hour:Y(e({},t.hour,{value:r[2]||"?"})),day:Y(e({},t.day,{value:r[3]||""})),month:Y(e({},t.month,{value:r[4]||""})),week:Y(e({},t.week,{value:r[5]||""}),!0),year:Y(e({},t.year,{value:r[6]||""}))}))})}}),y(()=>{let{second:e,minute:r,hour:n,day:a,month:o,week:l,year:s}=V(),u=`${q(e)} ${q(r)} ${q(n)} ${q(a)} ${q(o)} ${q(l,!0)} ${q(s)}`;h(e=>e===u?e:(null==t.onChange||t.onChange.call(t,u),u))});let z=[{value:"second",label:"秒",content:o(N,{get state(){return V().second},onChange:F})},{value:"minute",label:"分钟",content:o(C,{get state(){return V().minute},onChange:F})},{value:"hour",label:"小时",content:o($,{get state(){return V().hour},onChange:F})},{value:"day",label:"日",content:o(w,{get state(){return V().day},onChange:F})},{value:"week",label:"周",content:o(j,{get state(){return V().week},onChange:F})},{value:"month",label:"月",content:o(k,{get state(){return V().month},onChange:F})},{value:"year",label:"年",content:o(E,{get state(){return V().year},onChange:F})}];return[(()=>{let e=s();return r(e,()=>g(d.css)),e})(),(()=>{let e=u();return l(e,"change",U),e.items=z,e._$owner=n(),a(()=>e.type=d.type),a(()=>e.value=P()),e})(),o(m,{get when(){return d.showCron},get children(){let e=i();return e.style.setProperty("width","100%"),e.style.setProperty("display","block"),e.style.setProperty("background","var(--component-bg)"),e.style.setProperty("border-radius","var(--border-radius)"),e.style.setProperty("text-align","center"),r(e,v),e}})]}h("n-cron",{value:void 0,defaultValue:"0 0 0 * * ? *",onChange:void 0,type:"line",exclude:[],showCron:!0},(e,t)=>{let r=t.element;return d(x,v({onChange(e){r.dispatchEvent(new CustomEvent("change",{detail:e}))}},e))});export default x;
1
+ function e(){return(e=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}import{template as t}from"solid-js/web";import{insert as r}from"solid-js/web";import{getOwner as n}from"solid-js/web";import{effect as a}from"solid-js/web";import{createComponent as o}from"solid-js/web";import{addEventListener as l}from"solid-js/web";let s=t("<style>"),u=t("<n-tabs>",!0,!1),i=t("<code>");import{Show as m,batch as p,createComponent as d,createEffect as y,createSignal as c,mergeProps as v,splitProps as b,untrack as g}from"solid-js";import{css as f}from"@moneko/css";import{customElement as h}from"solid-element";import w from"./day";import $ from"./hour";import C from"./minute";import k from"./month";import N from"./second";import j from"./week";import E from"./year";import"../button";import"../input-number";import"../radio";import"../select";import"../tabs";function W(t){let[d]=b(t,["value","defaultValue","exclude","onChange","type","showCron","css","class"]),[v,h]=c(d.defaultValue),W=new Date().getFullYear(),D={hms:{start:0,end:1,begin:0,beginEvery:1,some:[0],value:""},mwd:{start:1,end:2,begin:1,beginEvery:1,some:[1],value:""},year:{start:W,end:W+1,begin:W,beginEvery:1,some:[W],value:""}},P=[],L=[];for(let e=1;e<32;e++)P.push({label:e<10?`0${e}`:`${e}`,value:e}),L.push(e);let[x,O]=c("second"),[V,I]=c({second:e({type:"*"},D.hms),minute:e({type:"*"},D.hms),hour:e({type:"*"},D.hms),day:e({type:"*",last:1,closeWorkDay:1},D.mwd),month:e({type:"*"},D.mwd),week:e({last:1,type:"?"},D.mwd),year:e({type:""},D.year)});function F(t,r){p(()=>{!function(){let t=g(V),r="day"===x();if(r||"week"===x()){let n=r?"week":"day",a="?"===t[n].type&&"?"===t[x()].type?"*":"?";a!==t[n].type&&I(t=>e({},t,{[n]:e({},t[n],{type:a})}))}}(),I(n=>{let a=e({},n[x()],{[t]:r});return("start"===t||"end"===t)&&a.end-a.start<=1&&("end"===t?a.start=r-1:a.end=r+1),e({},n,{[x()]:a})})})}function U(e){O(e.detail[0])}function Y(e,t){if(e.value.includes("-")){e.type="period";let t=e.value.split("-");e.start=Number(t[0]),e.end=Number(t[1])}else if(e.value.includes("W"))e.type="closeWorkDay",e.closeWorkDay=Number(e.value.split("W")[0])||1;else if(e.value.includes("L"))e.type="last",e.last=Number(e.value.split("L")[0])||1;else if(e.value.includes(t?"#":"/")){e.type="beginInterval";let r=e.value.split(t?"#":"/");t?(e.begin=Number(r[1]),e.beginEvery=Number(r[0])):(e.begin=Number(r[0]),e.beginEvery=Number(r[1]))}else e.value.includes(",")||/^[0-9]+$/.test(e.value)?(e.type="some",e.some=e.value.split(",").map(Number)):e.type=e.value;return e}function _(e){return"number"!=typeof e||isNaN(e)?e:`${e}`}function q(e,t){switch(e.type){case"period":return`${_(e.start)}-${_(e.end)}`;case"beginInterval":if(t)return`${_(e.beginEvery)}#${_(e.begin)}`;return`${_(e.begin)}/${_(e.beginEvery)}`;case"closeWorkDay":return`${_(e.closeWorkDay||1)}W`;case"last":return t?`${_(e.last)}L`:"L";case"some":return e.some.join(",");default:return e.type}}y(()=>{void 0!==d.value&&g(v)!==d.value&&h(d.value)}),y(()=>{let t=v();if(t){let r=t.toUpperCase().split(" ");p(()=>{I(t=>({second:Y(e({},t.second,{value:r[0]||"?"})),minute:Y(e({},t.minute,{value:r[1]||"?"})),hour:Y(e({},t.hour,{value:r[2]||"?"})),day:Y(e({},t.day,{value:r[3]||""})),month:Y(e({},t.month,{value:r[4]||""})),week:Y(e({},t.week,{value:r[5]||""}),!0),year:Y(e({},t.year,{value:r[6]||""}))}))})}}),y(()=>{let{second:e,minute:r,hour:n,day:a,month:o,week:l,year:s}=V(),u=`${q(e)} ${q(r)} ${q(n)} ${q(a)} ${q(o)} ${q(l,!0)} ${q(s)}`;h(e=>e===u?e:(null==t.onChange||t.onChange.call(t,u),u))});let z=[{value:"second",label:"秒",content:o(N,{get state(){return V().second},onChange:F})},{value:"minute",label:"分钟",content:o(C,{get state(){return V().minute},onChange:F})},{value:"hour",label:"小时",content:o($,{get state(){return V().hour},onChange:F})},{value:"day",label:"日",content:o(w,{get state(){return V().day},onChange:F})},{value:"week",label:"周",content:o(j,{get state(){return V().week},onChange:F})},{value:"month",label:"月",content:o(k,{get state(){return V().month},onChange:F})},{value:"year",label:"年",content:o(E,{get state(){return V().year},onChange:F})}];return[(()=>{let e=s();return r(e,()=>f(d.css)),e})(),(()=>{let e=u();return l(e,"change",U),e.items=z,e._$owner=n(),a(()=>e.type=d.type),a(()=>e.value=x()),e})(),o(m,{get when(){return d.showCron},get children(){let e=i();return e.style.setProperty("width","100%"),e.style.setProperty("display","block"),e.style.setProperty("background","var(--component-bg)"),e.style.setProperty("border-radius","var(--border-radius)"),e.style.setProperty("text-align","center"),r(e,v),e}})]}h("n-cron",{value:void 0,defaultValue:"0 0 0 * * ? *",onChange:void 0,type:"line",exclude:[],showCron:!0},(e,t)=>{let r=t.element;return d(W,v({onChange(e){r.dispatchEvent(new CustomEvent("change",{detail:e}))}},e))});export default W;
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/cron/index.tsx"],"sourcesContent":["import {\n Show,\n batch,\n createComponent,\n createEffect,\n createSignal,\n mergeProps,\n splitProps,\n untrack,\n} from 'solid-js';\nimport { css } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport Day from './day';\nimport Hour from './hour';\nimport Minute from './minute';\nimport Month from './month';\nimport Second from './second';\nimport Week from './week';\nimport Year from './year';\nimport '../button';\nimport '../input-number';\nimport '../radio';\nimport '../select';\nimport '../tabs';\nimport type { BaseOption, CustomElement, TabOption } from '..';\n\nexport interface CronProps {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** 隐藏域 */\n exclude?: string[];\n /** 显示表达式\n * @default true\n */\n showCron?: boolean;\n /** 标签页类型\n * @default 'line'\n */\n type?: 'line' | 'card';\n /** 值 */\n value?: string;\n /** 默认值\n * @default 0 0 0 * * ? *\n */\n defaultValue?: string;\n /** 值改变触发a */\n onChange?(val?: string): void;\n}\n\nexport type CronElement = CustomElement<CronProps>;\nexport type SecondType = '*' | 'period' | 'beginInterval' | 'some';\nexport type MinuteType = SecondType;\nexport type HourType = SecondType;\nexport type DayType = SecondType | 'closeWorkDay' | '?' | 'last';\nexport type WeekType = SecondType | 'last' | '?';\nexport type MonthType = SecondType;\nexport type YearType = SecondType | '';\nexport type CronData<T extends string = string> = {\n start: number;\n end: number;\n begin: number;\n beginEvery: number;\n type: T;\n some: number[];\n value: string;\n};\n\nexport type ActiveTab = keyof CronType;\nexport type CronType = {\n second: CronData<SecondType>;\n minute: CronData<MinuteType>;\n hour: CronData<HourType>;\n day: CronData<DayType> & { last: number; closeWorkDay: number };\n week: CronData<WeekType> & { last: number };\n month: CronData<MonthType>;\n year: CronData<YearType>;\n};\n\nfunction Cron(props: CronProps) {\n const [local] = splitProps(props, [\n 'value',\n 'defaultValue',\n 'exclude',\n 'onChange',\n 'type',\n 'showCron',\n 'css',\n 'class',\n ]);\n const [value, setValue] = createSignal(local.defaultValue);\n const date = new Date();\n const fullYear = date.getFullYear();\n const defaultState = {\n hms: {\n start: 0,\n end: 1,\n begin: 0,\n beginEvery: 1,\n some: [0],\n value: '',\n },\n mwd: {\n start: 1,\n end: 2,\n begin: 1,\n beginEvery: 1,\n some: [1],\n value: '',\n },\n year: {\n start: fullYear,\n end: fullYear + 1,\n begin: fullYear,\n beginEvery: 1,\n some: [fullYear],\n value: '',\n },\n };\n const days: BaseOption[] = [];\n const daysBeginEvery: number[] = [];\n\n for (let x = 1; x < 32; x++) {\n days.push({\n label: x < 10 ? `0${x}` : `${x}`,\n value: x,\n });\n daysBeginEvery.push(x);\n }\n const [active, setActive] = createSignal<ActiveTab>('second');\n const [state, setState] = createSignal<CronType>({\n second: { type: '*', ...defaultState.hms },\n minute: { type: '*', ...defaultState.hms },\n hour: { type: '*', ...defaultState.hms },\n day: {\n type: '*',\n last: 1,\n closeWorkDay: 1,\n ...defaultState.mwd,\n },\n month: {\n type: '*',\n ...defaultState.mwd,\n },\n week: {\n last: 1,\n type: '?',\n ...defaultState.mwd,\n },\n year: {\n type: '',\n ...defaultState.year,\n },\n });\n\n function prefixWeekDay() {\n const store = untrack(state);\n const isDay = active() === 'day';\n\n if (isDay || active() === 'week') {\n const key = isDay ? 'week' : 'day';\n const next = store[key].type === '?' && store[active()].type === '?' ? '*' : '?';\n\n if (next !== store[key].type) {\n setState((prev) => {\n return {\n ...prev,\n [key]: {\n ...prev[key],\n type: next,\n },\n };\n });\n }\n }\n }\n\n function onChange<T extends CronType[ActiveTab]>(type: keyof T, val: T[keyof T]) {\n batch(() => {\n prefixWeekDay();\n setState((prev) => {\n const next = {\n ...prev[active()],\n [type]: val,\n };\n\n if (type === 'start' || type === 'end') {\n if (next.end - next.start <= 1) {\n if (type === 'end') {\n next.start = (val as number) - 1;\n } else {\n next.end = (val as number) + 1;\n }\n }\n }\n\n return {\n ...prev,\n [active()]: next,\n };\n });\n });\n }\n function changeActiveKey(e: CustomEvent<[string, TabOption, Event]>) {\n setActive(e.detail[0] as ActiveTab);\n }\n function parseVal<T extends ActiveTab>(item: CronType[T], isWeek?: boolean) {\n if (item.value.indexOf('-') > -1) {\n item.type = 'period';\n const period = item.value.split('-');\n\n item.start = Number(period[0]);\n item.end = Number(period[1]);\n } else if (item.value.indexOf('W') > -1) {\n item.type = 'closeWorkDay';\n (item as CronType['day']).closeWorkDay = Number(item.value.split('W')[0]) || 1;\n } else if (item.value.indexOf('L') > -1) {\n item.type = 'last';\n (item as CronType['day']).last = Number(item.value.split('L')[0]) || 1;\n } else if (item.value.indexOf(isWeek ? '#' : '/') > -1) {\n item.type = 'beginInterval';\n const beginInterval = item.value.split(isWeek ? '#' : '/');\n\n if (isWeek) {\n item.begin = Number(beginInterval[1]);\n item.beginEvery = Number(beginInterval[0]);\n } else {\n item.begin = Number(beginInterval[0]);\n item.beginEvery = Number(beginInterval[1]);\n }\n } else if (item.value.indexOf(',') > -1 || /^[0-9]+$/.test(item.value)) {\n item.type = 'some';\n item.some = item.value.split(',').map(Number);\n } else {\n item.type = item.value as CronType[T]['type'];\n }\n return item;\n }\n\n function nts(num?: string | number) {\n if (typeof num === 'number' && !isNaN(num)) {\n return `${num}`;\n }\n return num;\n }\n\n function fmt<T extends ActiveTab>(item: CronType[T], isWeek?: boolean) {\n switch (item.type) {\n case 'period':\n return `${nts(item.start)}-${nts(item.end)}`;\n case 'beginInterval':\n if (isWeek) return `${nts(item.beginEvery)}#${nts(item.begin)}`;\n return `${nts(item.begin)}/${nts(item.beginEvery)}`;\n case 'closeWorkDay':\n return `${nts(item.closeWorkDay || 1)}W`;\n case 'last':\n return isWeek ? `${nts(item.last)}L` : 'L';\n case 'some':\n return item.some.join(',');\n default:\n return item.type;\n }\n }\n\n createEffect(() => {\n if (local.value !== void 0 && untrack(value) !== local.value) {\n setValue(local.value);\n }\n });\n\n createEffect(() => {\n const val = value();\n\n if (val) {\n const valuesArray = val.toUpperCase().split(' ');\n\n batch(() => {\n setState((prev) => {\n return {\n second: parseVal<'second'>({ ...prev.second, value: valuesArray[0] || '?' }),\n minute: parseVal<'minute'>({ ...prev.minute, value: valuesArray[1] || '?' }),\n hour: parseVal<'hour'>({ ...prev.hour, value: valuesArray[2] || '?' }),\n day: parseVal<'day'>({ ...prev.day, value: valuesArray[3] || '' }),\n month: parseVal<'month'>({ ...prev.month, value: valuesArray[4] || '' }),\n week: parseVal<'week'>({ ...prev.week, value: valuesArray[5] || '' }, true),\n year: parseVal<'year'>({ ...prev.year, value: valuesArray[6] || '' }),\n };\n });\n });\n }\n });\n createEffect(() => {\n const { second, minute, hour, day, month, week, year } = state();\n const next = `${fmt(second)} ${fmt(minute)} ${fmt(hour)} ${fmt(day)} ${fmt(month)} ${fmt(\n week,\n true,\n )} ${fmt(year)}`;\n\n setValue((prev) => {\n if (prev === next) return prev;\n props.onChange?.(next);\n return next;\n });\n });\n\n const items = [\n {\n value: 'second',\n label: '秒',\n content: <Second state={state().second} onChange={onChange} />,\n },\n {\n value: 'minute',\n label: '分钟',\n content: <Minute state={state().minute} onChange={onChange} />,\n },\n {\n value: 'hour',\n label: '小时',\n content: <Hour state={state().hour} onChange={onChange} />,\n },\n {\n value: 'day',\n label: '日',\n content: <Day state={state().day} onChange={onChange} />,\n },\n {\n value: 'week',\n label: '周',\n content: <Week state={state().week} onChange={onChange} />,\n },\n {\n value: 'month',\n label: '月',\n content: <Month state={state().month} onChange={onChange} />,\n },\n {\n value: 'year',\n label: '年',\n content: <Year state={state().year} onChange={onChange} />,\n },\n ];\n\n return (\n <>\n <style>{css(local.css)}</style>\n <n-tabs type={local.type} items={items} value={active()} onChange={changeActiveKey} />\n <Show when={local.showCron}>\n <code\n style={{\n width: '100%',\n display: 'block',\n background: 'var(--component-bg)',\n 'border-radius': 'var(--border-radius)',\n 'text-align': 'center',\n }}\n >\n {value()}\n </code>\n </Show>\n </>\n );\n}\n\ncustomElement<CronProps>(\n 'n-cron',\n {\n value: void 0,\n defaultValue: '0 0 0 * * ? *',\n onChange: void 0,\n type: 'line',\n exclude: [],\n showCron: true,\n } as CronProps,\n (_, opts) => {\n const el = opts.element;\n const props = mergeProps(\n {\n onChange(val?: string) {\n el.dispatchEvent(\n new CustomEvent('change', {\n detail: val,\n }),\n );\n },\n },\n _,\n );\n\n return createComponent(Cron, props);\n },\n);\nexport default Cron;\n"],"names":["Show","batch","createComponent","createEffect","createSignal","mergeProps","splitProps","untrack","css","customElement","Day","Hour","Minute","Month","Second","Week","Year","Cron","props","local","value","setValue","defaultValue","fullYear","date","Date","getFullYear","defaultState","hms","start","end","begin","beginEvery","some","mwd","year","days","daysBeginEvery","x","push","label","active","setActive","state","setState","second","type","minute","hour","day","last","closeWorkDay","month","week","onChange","val","prefixWeekDay","store","isDay","key","next","prev","changeActiveKey","e","detail","parseVal","item","isWeek","indexOf","period","split","Number","beginInterval","test","map","nts","num","isNaN","fmt","join","valuesArray","toUpperCase","items","content","showCron","exclude","_","opts","el","element","dispatchEvent","CustomEvent"],"mappings":"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"}
1
+ {"version":3,"sources":["../../components/cron/index.tsx"],"sourcesContent":["import {\n Show,\n batch,\n createComponent,\n createEffect,\n createSignal,\n mergeProps,\n splitProps,\n untrack,\n} from 'solid-js';\nimport { css } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport Day from './day';\nimport Hour from './hour';\nimport Minute from './minute';\nimport Month from './month';\nimport Second from './second';\nimport Week from './week';\nimport Year from './year';\nimport '../button';\nimport '../input-number';\nimport '../radio';\nimport '../select';\nimport '../tabs';\nimport type { BaseOption, CustomElement, TabOption } from '..';\n\nexport interface CronProps {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** 隐藏域 */\n exclude?: string[];\n /** 显示表达式\n * @default true\n */\n showCron?: boolean;\n /** 标签页类型\n * @default 'line'\n */\n type?: 'line' | 'card';\n /** 值 */\n value?: string;\n /** 默认值\n * @default 0 0 0 * * ? *\n */\n defaultValue?: string;\n /** 值改变触发a */\n onChange?(val?: string): void;\n}\n\nexport type CronElement = CustomElement<CronProps>;\nexport type SecondType = '*' | 'period' | 'beginInterval' | 'some';\nexport type MinuteType = SecondType;\nexport type HourType = SecondType;\nexport type DayType = SecondType | 'closeWorkDay' | '?' | 'last';\nexport type WeekType = SecondType | 'last' | '?';\nexport type MonthType = SecondType;\nexport type YearType = SecondType | '';\nexport type CronData<T extends string = string> = {\n start: number;\n end: number;\n begin: number;\n beginEvery: number;\n type: T;\n some: number[];\n value: string;\n};\n\nexport type ActiveTab = keyof CronType;\nexport type CronType = {\n second: CronData<SecondType>;\n minute: CronData<MinuteType>;\n hour: CronData<HourType>;\n day: CronData<DayType> & { last: number; closeWorkDay: number };\n week: CronData<WeekType> & { last: number };\n month: CronData<MonthType>;\n year: CronData<YearType>;\n};\n\nfunction Cron(props: CronProps) {\n const [local] = splitProps(props, [\n 'value',\n 'defaultValue',\n 'exclude',\n 'onChange',\n 'type',\n 'showCron',\n 'css',\n 'class',\n ]);\n const [value, setValue] = createSignal(local.defaultValue);\n const date = new Date();\n const fullYear = date.getFullYear();\n const defaultState = {\n hms: {\n start: 0,\n end: 1,\n begin: 0,\n beginEvery: 1,\n some: [0],\n value: '',\n },\n mwd: {\n start: 1,\n end: 2,\n begin: 1,\n beginEvery: 1,\n some: [1],\n value: '',\n },\n year: {\n start: fullYear,\n end: fullYear + 1,\n begin: fullYear,\n beginEvery: 1,\n some: [fullYear],\n value: '',\n },\n };\n const days: BaseOption[] = [];\n const daysBeginEvery: number[] = [];\n\n for (let x = 1; x < 32; x++) {\n days.push({\n label: x < 10 ? `0${x}` : `${x}`,\n value: x,\n });\n daysBeginEvery.push(x);\n }\n const [active, setActive] = createSignal<ActiveTab>('second');\n const [state, setState] = createSignal<CronType>({\n second: { type: '*', ...defaultState.hms },\n minute: { type: '*', ...defaultState.hms },\n hour: { type: '*', ...defaultState.hms },\n day: {\n type: '*',\n last: 1,\n closeWorkDay: 1,\n ...defaultState.mwd,\n },\n month: {\n type: '*',\n ...defaultState.mwd,\n },\n week: {\n last: 1,\n type: '?',\n ...defaultState.mwd,\n },\n year: {\n type: '',\n ...defaultState.year,\n },\n });\n\n function prefixWeekDay() {\n const store = untrack(state);\n const isDay = active() === 'day';\n\n if (isDay || active() === 'week') {\n const key = isDay ? 'week' : 'day';\n const next = store[key].type === '?' && store[active()].type === '?' ? '*' : '?';\n\n if (next !== store[key].type) {\n setState((prev) => {\n return {\n ...prev,\n [key]: {\n ...prev[key],\n type: next,\n },\n };\n });\n }\n }\n }\n\n function onChange<T extends CronType[ActiveTab]>(type: keyof T, val: T[keyof T]) {\n batch(() => {\n prefixWeekDay();\n setState((prev) => {\n const next = {\n ...prev[active()],\n [type]: val,\n };\n\n if (type === 'start' || type === 'end') {\n if (next.end - next.start <= 1) {\n if (type === 'end') {\n next.start = (val as number) - 1;\n } else {\n next.end = (val as number) + 1;\n }\n }\n }\n\n return {\n ...prev,\n [active()]: next,\n };\n });\n });\n }\n function changeActiveKey(e: CustomEvent<[string, TabOption, Event]>) {\n setActive(e.detail[0] as ActiveTab);\n }\n function parseVal<T extends ActiveTab>(item: CronType[T], isWeek?: boolean) {\n if (item.value.includes('-')) {\n item.type = 'period';\n const period = item.value.split('-');\n\n item.start = Number(period[0]);\n item.end = Number(period[1]);\n } else if (item.value.includes('W')) {\n item.type = 'closeWorkDay';\n (item as CronType['day']).closeWorkDay = Number(item.value.split('W')[0]) || 1;\n } else if (item.value.includes('L')) {\n item.type = 'last';\n (item as CronType['day']).last = Number(item.value.split('L')[0]) || 1;\n } else if (item.value.includes(isWeek ? '#' : '/')) {\n item.type = 'beginInterval';\n const beginInterval = item.value.split(isWeek ? '#' : '/');\n\n if (isWeek) {\n item.begin = Number(beginInterval[1]);\n item.beginEvery = Number(beginInterval[0]);\n } else {\n item.begin = Number(beginInterval[0]);\n item.beginEvery = Number(beginInterval[1]);\n }\n } else if (item.value.includes(',') || /^[0-9]+$/.test(item.value)) {\n item.type = 'some';\n item.some = item.value.split(',').map(Number);\n } else {\n item.type = item.value as CronType[T]['type'];\n }\n return item;\n }\n\n function nts(num?: string | number) {\n if (typeof num === 'number' && !isNaN(num)) {\n return `${num}`;\n }\n return num;\n }\n\n function fmt<T extends ActiveTab>(item: CronType[T], isWeek?: boolean) {\n switch (item.type) {\n case 'period':\n return `${nts(item.start)}-${nts(item.end)}`;\n case 'beginInterval':\n if (isWeek) return `${nts(item.beginEvery)}#${nts(item.begin)}`;\n return `${nts(item.begin)}/${nts(item.beginEvery)}`;\n case 'closeWorkDay':\n return `${nts(item.closeWorkDay || 1)}W`;\n case 'last':\n return isWeek ? `${nts(item.last)}L` : 'L';\n case 'some':\n return item.some.join(',');\n default:\n return item.type;\n }\n }\n\n createEffect(() => {\n if (local.value !== void 0 && untrack(value) !== local.value) {\n setValue(local.value);\n }\n });\n\n createEffect(() => {\n const val = value();\n\n if (val) {\n const valuesArray = val.toUpperCase().split(' ');\n\n batch(() => {\n setState((prev) => {\n return {\n second: parseVal<'second'>({ ...prev.second, value: valuesArray[0] || '?' }),\n minute: parseVal<'minute'>({ ...prev.minute, value: valuesArray[1] || '?' }),\n hour: parseVal<'hour'>({ ...prev.hour, value: valuesArray[2] || '?' }),\n day: parseVal<'day'>({ ...prev.day, value: valuesArray[3] || '' }),\n month: parseVal<'month'>({ ...prev.month, value: valuesArray[4] || '' }),\n week: parseVal<'week'>({ ...prev.week, value: valuesArray[5] || '' }, true),\n year: parseVal<'year'>({ ...prev.year, value: valuesArray[6] || '' }),\n };\n });\n });\n }\n });\n createEffect(() => {\n const { second, minute, hour, day, month, week, year } = state();\n const next = `${fmt(second)} ${fmt(minute)} ${fmt(hour)} ${fmt(day)} ${fmt(month)} ${fmt(\n week,\n true,\n )} ${fmt(year)}`;\n\n setValue((prev) => {\n if (prev === next) return prev;\n props.onChange?.(next);\n return next;\n });\n });\n\n const items = [\n {\n value: 'second',\n label: '秒',\n content: <Second state={state().second} onChange={onChange} />,\n },\n {\n value: 'minute',\n label: '分钟',\n content: <Minute state={state().minute} onChange={onChange} />,\n },\n {\n value: 'hour',\n label: '小时',\n content: <Hour state={state().hour} onChange={onChange} />,\n },\n {\n value: 'day',\n label: '日',\n content: <Day state={state().day} onChange={onChange} />,\n },\n {\n value: 'week',\n label: '周',\n content: <Week state={state().week} onChange={onChange} />,\n },\n {\n value: 'month',\n label: '月',\n content: <Month state={state().month} onChange={onChange} />,\n },\n {\n value: 'year',\n label: '年',\n content: <Year state={state().year} onChange={onChange} />,\n },\n ];\n\n return (\n <>\n <style>{css(local.css)}</style>\n <n-tabs type={local.type} items={items} value={active()} onChange={changeActiveKey} />\n <Show when={local.showCron}>\n <code\n style={{\n width: '100%',\n display: 'block',\n background: 'var(--component-bg)',\n 'border-radius': 'var(--border-radius)',\n 'text-align': 'center',\n }}\n >\n {value()}\n </code>\n </Show>\n </>\n );\n}\n\ncustomElement<CronProps>(\n 'n-cron',\n {\n value: void 0,\n defaultValue: '0 0 0 * * ? *',\n onChange: void 0,\n type: 'line',\n exclude: [],\n showCron: true,\n } as CronProps,\n (_, opts) => {\n const el = opts.element;\n const props = mergeProps(\n {\n onChange(val?: string) {\n el.dispatchEvent(\n new CustomEvent('change', {\n detail: val,\n }),\n );\n },\n },\n _,\n );\n\n return createComponent(Cron, props);\n },\n);\nexport default Cron;\n"],"names":["Show","batch","createComponent","createEffect","createSignal","mergeProps","splitProps","untrack","css","customElement","Day","Hour","Minute","Month","Second","Week","Year","Cron","props","local","value","setValue","defaultValue","fullYear","date","Date","getFullYear","defaultState","hms","start","end","begin","beginEvery","some","mwd","year","days","daysBeginEvery","x","push","label","active","setActive","state","setState","second","type","minute","hour","day","last","closeWorkDay","month","week","onChange","val","prefixWeekDay","store","isDay","key","next","prev","changeActiveKey","e","detail","parseVal","item","isWeek","includes","period","split","Number","beginInterval","test","map","nts","num","isNaN","fmt","join","valuesArray","toUpperCase","items","content","showCron","exclude","_","opts","el","element","dispatchEvent","CustomEvent"],"mappings":"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"}
package/es/cron/item.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ /// <reference types="typings/typings" />
1
2
  import type { ActiveTab, CronType } from '.';
2
3
  import type { RadioOption } from 'neko-ui';
3
4
  export type CronItemProps<T extends ActiveTab = 'second'> = {
@@ -1,3 +1,4 @@
1
+ /// <reference types="typings/typings" />
1
2
  import type { CronData } from '.';
2
3
  import type { BaseOption } from 'neko-ui';
3
4
  type PeriodProps = {
package/es/cron/some.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ /// <reference types="typings/typings" />
1
2
  import type { CronData } from '.';
2
3
  import type { BaseOption } from 'neko-ui';
3
4
  type SomeProps = {
@@ -1,2 +1,2 @@
1
- var e,o;function t(){return(t=Object.assign||function(e){for(var o=1;o<arguments.length;o++){var t=arguments[o];for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])}return e}).apply(this,arguments)}import{use as n}from"solid-js/web";import{template as r}from"solid-js/web";import{mergeProps as a}from"solid-js/web";import{getOwner as s}from"solid-js/web";import{effect as i}from"solid-js/web";import{delegateEvents as d}from"solid-js/web";import{createComponent as l}from"solid-js/web";import{addEventListener as p}from"solid-js/web";let u=r('<n-input part="value">',!0,!1);import{createComponent as m,createEffect as f,createMemo as v,createSignal as h,mergeProps as c,splitProps as w,untrack as g}from"solid-js";import{customElement as Y}from"solid-element";import y from"./dayjs";import C from"./panel";import{styles as b}from"./style";import"../button";import"../menu";import $,{defaultProps as _}from"../popover";function j(e){let o;let t=c({type:"date",parser:"YYYY-MM-DD HH:mm:ss"},e),[r,d]=w(t,["class","css","value","defaultValue","onChange","type","content","onOpenChange","open","format","popupCss","trigger","parser","showTime","showHour","showMinute","showSecond","prefixIcon","suffixIcon","placeholder","showToday","showHeader"]),[m,Y]=h(null),[_,j]=h(y(r.defaultValue)),H=v(()=>r.format?r.format:r.showTime?"YYYY-MM-DD HH:mm:ss":({month:"YYYY-MM",date:"YYYY-MM-DD",year:"YYYY"})[r.type||"date"]);function M(e){d.disabled||(null==r.onOpenChange||r.onOpenChange.call(r,e),void 0===r.open&&Y(e))}function O(e){e.stopPropagation(),e.preventDefault(),M(!0)}function x(){g(m)&&M(!1)}function T(e){var t;e.target===(null==(t=null==o?void 0:o.shadowRoot)?void 0:t.activeElement)&&M(!g(m))}function I(e){void 0===r.value&&j(e),null==t.onChange||t.onChange.call(t,e.format(r.parser),e)}function D(e){if(e.detail){let o=y(e.detail);o.isValid()&&I(o)}}return f(()=>{void 0!==r.open&&r.open!==g(m)&&Y(r.open)}),f(()=>{let e=y(r.value||r.defaultValue);void 0!==r.value&&e.isValid()&&j(e)}),l($,a({trigger:"none",placement:"left",get open(){return m()},onOpenChange:M,get css(){return r.css},popupCss:b,get content(){return l(C,{get type(){return r.type},get current(){return _()},get open(){return m()},onChange:I,openChange:M,get showHour(){return r.showHour},get showMinute(){return r.showMinute},get showSecond(){return r.showSecond},get showTime(){return r.showTime},get showToday(){return r.showToday},get showHeader(){return r.showHeader}})}},d,{get children(){let e=u(),t=o;return p(e,"change",D),p(e,"blur",x),p(e,"focus",O),p(e,"mousedown",T,!0),"function"==typeof t?n(t,e):o=e,e._$owner=s(),i(o=>{let t=d.disabled,n=r.suffixIcon,a=r.prefixIcon,s=r.placeholder;return t!==o._v$&&(e.disabled=o._v$=t),n!==o._v$2&&(e.suffixIcon=o._v$2=n),a!==o._v$3&&(e.prefixIcon=o._v$3=a),s!==o._v$4&&(e.placeholder=o._v$4=s),o},{_v$:void 0,_v$2:void 0,_v$3:void 0,_v$4:void 0}),i(()=>e.value=_().format(H())),e}}))}(o=e||(e={})).date="date",o.month="month",o.year="year",Y("n-data-picker",t({},_,{value:void 0,defaultValue:void 0,disabled:void 0,onChange:void 0,open:void 0,onOpenChange:void 0,type:void 0,format:void 0,parser:void 0,showTime:void 0,suffixIcon:"📅",prefixIcon:void 0,placeholder:void 0,showHour:!0,showMinute:!0,showSecond:!0,showToday:!0,showHeader:!0}),(e,o)=>{let t=o.element,n=c({css:t.css,onChange(e,o){t.dispatchEvent(new CustomEvent("change",{detail:[e,o]}))},onOpenChange(e){t.dispatchEvent(new CustomEvent("openchange",{detail:e}))}},e);return f(()=>{t.removeAttribute("css")}),m(j,n)});export default j;d(["mousedown"]);
1
+ var e,o;function t(){return(t=Object.assign||function(e){for(var o=1;o<arguments.length;o++){var t=arguments[o];for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])}return e}).apply(this,arguments)}import{use as n}from"solid-js/web";import{template as r}from"solid-js/web";import{mergeProps as a}from"solid-js/web";import{getOwner as s}from"solid-js/web";import{effect as i}from"solid-js/web";import{delegateEvents as d}from"solid-js/web";import{createComponent as l}from"solid-js/web";import{addEventListener as p}from"solid-js/web";let u=r('<n-input part="value">',!0,!1);import{createComponent as m,createEffect as f,createMemo as v,createSignal as h,mergeProps as c,splitProps as w,untrack as g}from"solid-js";import{customElement as Y}from"solid-element";import y from"./dayjs";import C from"./panel";import{styles as b}from"./style";import"../button";import"../menu";import $,{defaultProps as _}from"../popover";function j(e){let o;let t=c({type:"date",parser:"YYYY-MM-DD HH:mm:ss"},e),[r,d]=w(t,["class","css","value","defaultValue","onChange","type","content","onOpenChange","open","format","popupCss","trigger","parser","showTime","showHour","showMinute","showSecond","prefixIcon","suffixIcon","placeholder","showToday","showHeader"]),[m,Y]=h(null),[_,j]=h(y(r.defaultValue)),H=v(()=>r.format?r.format:r.showTime?"YYYY-MM-DD HH:mm:ss":({month:"YYYY-MM",date:"YYYY-MM-DD",year:"YYYY"})[r.type||"date"]);function M(e){d.disabled||(null==r.onOpenChange||r.onOpenChange.call(r,e),void 0===r.open&&Y(e))}function O(e){e.stopPropagation(),e.preventDefault(),M(!0)}function x(){g(m)&&M(!1)}function T(e){var t;e.target===(null==o?void 0:null==(t=o.shadowRoot)?void 0:t.activeElement)&&M(!g(m))}function I(e){void 0===r.value&&j(e),null==t.onChange||t.onChange.call(t,e.format(r.parser),e)}function D(e){if(e.detail){let o=y(e.detail);o.isValid()&&I(o)}}return f(()=>{void 0!==r.open&&r.open!==g(m)&&Y(r.open)}),f(()=>{let e=y(r.value||r.defaultValue);void 0!==r.value&&e.isValid()&&j(e)}),l($,a({trigger:"none",placement:"left",get open(){return m()},onOpenChange:M,get css(){return r.css},popupCss:b,get content(){return l(C,{get type(){return r.type},get current(){return _()},get open(){return m()},onChange:I,openChange:M,get showHour(){return r.showHour},get showMinute(){return r.showMinute},get showSecond(){return r.showSecond},get showTime(){return r.showTime},get showToday(){return r.showToday},get showHeader(){return r.showHeader}})}},d,{get children(){let e=u(),t=o;return p(e,"change",D),p(e,"blur",x),p(e,"focus",O),p(e,"mousedown",T,!0),"function"==typeof t?n(t,e):o=e,e._$owner=s(),i(o=>{let t=d.disabled,n=r.suffixIcon,a=r.prefixIcon,s=r.placeholder;return t!==o._v$&&(e.disabled=o._v$=t),n!==o._v$2&&(e.suffixIcon=o._v$2=n),a!==o._v$3&&(e.prefixIcon=o._v$3=a),s!==o._v$4&&(e.placeholder=o._v$4=s),o},{_v$:void 0,_v$2:void 0,_v$3:void 0,_v$4:void 0}),i(()=>e.value=_().format(H())),e}}))}(o=e||(e={})).date="date",o.month="month",o.year="year",Y("n-data-picker",t({},_,{value:void 0,defaultValue:void 0,disabled:void 0,onChange:void 0,open:void 0,onOpenChange:void 0,type:void 0,format:void 0,parser:void 0,showTime:void 0,suffixIcon:"📅",prefixIcon:void 0,placeholder:void 0,showHour:!0,showMinute:!0,showSecond:!0,showToday:!0,showHeader:!0}),(e,o)=>{let t=o.element,n=c({css:t.css,onChange(e,o){t.dispatchEvent(new CustomEvent("change",{detail:[e,o]}))},onOpenChange(e){t.dispatchEvent(new CustomEvent("openchange",{detail:e}))}},e);return f(()=>{t.removeAttribute("css")}),m(j,n)});export default j;d(["mousedown"]);
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/date-picker/index.tsx"],"sourcesContent":["import {\n createComponent,\n createEffect,\n createMemo,\n createSignal,\n mergeProps,\n splitProps,\n untrack,\n} from 'solid-js';\nimport { customElement } from 'solid-element';\nimport dayjs from './dayjs';\nimport Panel from './panel';\nimport { styles } from './style';\nimport '../button';\nimport '../menu';\nimport Popover, { defaultProps } from '../popover';\nimport type { CustomElement, InputElement, PopoverProps } from '..';\n\nfunction DatePicker(_props: DatePickerProps) {\n let ref: InputElement | undefined;\n const props = mergeProps(\n {\n type: 'date' as DatePickerProps['type'],\n parser: 'YYYY-MM-DD HH:mm:ss',\n },\n _props,\n );\n const [local, other] = splitProps(props, [\n 'class',\n 'css',\n 'value',\n 'defaultValue',\n 'onChange',\n 'type',\n 'content',\n 'onOpenChange',\n 'open',\n 'format',\n 'popupCss',\n 'trigger',\n 'parser',\n 'showTime',\n 'showHour',\n 'showMinute',\n 'showSecond',\n 'prefixIcon',\n 'suffixIcon',\n 'placeholder',\n 'showToday',\n 'showHeader',\n ]);\n const [open, setOpen] = createSignal<boolean | null>(null);\n const [current, setCurrent] = createSignal(dayjs(local.defaultValue));\n\n const format = createMemo(() => {\n if (local.format) {\n return local.format;\n }\n if (local.showTime) return 'YYYY-MM-DD HH:mm:ss';\n return {\n month: 'YYYY-MM',\n date: 'YYYY-MM-DD',\n year: 'YYYY',\n }[local.type || 'date'];\n });\n\n function openChange(next: boolean | null) {\n if (!other.disabled) {\n local.onOpenChange?.(next);\n if (local.open === void 0) {\n setOpen(next);\n }\n }\n }\n\n function focus(e: FocusEvent | MouseEvent) {\n e.stopPropagation();\n e.preventDefault();\n openChange(true);\n }\n function blur() {\n if (untrack(open)) {\n openChange(false);\n }\n }\n function inputMouseDown(e: MouseEvent) {\n if (e.target === (ref?.shadowRoot as ShadowRoot)?.activeElement) {\n openChange(!untrack(open));\n }\n }\n function handleChange(next: dayjs.Dayjs) {\n if (local.value === void 0) {\n setCurrent(next);\n }\n props.onChange?.(next.format(local.parser), next);\n }\n function handleInputChange(e: CustomEvent<string | number | undefined>) {\n if (e.detail) {\n const next = dayjs(e.detail);\n\n if (next.isValid()) {\n handleChange(next);\n }\n }\n }\n\n createEffect(() => {\n if (local.open !== void 0 && local.open !== untrack(open)) {\n setOpen(local.open);\n }\n });\n createEffect(() => {\n const next = dayjs(local.value || local.defaultValue);\n\n if (local.value !== void 0 && next.isValid()) {\n setCurrent(next);\n }\n });\n return (\n <Popover\n trigger=\"none\"\n placement=\"left\"\n open={open()}\n onOpenChange={openChange}\n css={local.css}\n popupCss={styles}\n content={\n <Panel\n type={local.type}\n current={current()}\n open={open()}\n onChange={handleChange}\n openChange={openChange}\n showHour={local.showHour}\n showMinute={local.showMinute}\n showSecond={local.showSecond}\n showTime={local.showTime}\n showToday={local.showToday}\n showHeader={local.showHeader}\n />\n }\n {...other}\n >\n <n-input\n ref={ref}\n onMouseDown={inputMouseDown}\n onFocus={focus}\n onBlur={blur}\n disabled={other.disabled}\n value={current().format(format())}\n suffix-icon={local.suffixIcon}\n prefix-icon={local.prefixIcon}\n placeholder={local.placeholder}\n part=\"value\"\n onChange={handleInputChange}\n />\n </Popover>\n );\n}\n/** API\n * @since 2.1.0\n */\nexport interface DatePickerProps extends Partial<PopoverProps> {\n /** 自定义类名 */\n class?: string;\n /** 自定义类名 */\n css?: string;\n /** 类型\n * @default 'date'\n */\n type?: keyof typeof PickerType;\n /** 值 */\n value?: string | number;\n /** 默认值\n * @default 当前时间\n */\n defaultValue?: string | number;\n /** 禁用 */\n disabled?: boolean;\n /** 格式化回填到输入框的内容\n * @default 'YYYY-MM-DD'\n */\n format?: string;\n /** 格式化获取的值\n * @default 'YYYY-MM-DD HH:mm:ss'\n */\n parser?: string;\n /** 前缀 */\n prefixIcon?: JSX.Element;\n /** 后缀\n * @default '📅'\n */\n suffixIcon?: JSX.Element;\n /** 变更时的回调 */\n onChange?(val: string, time: dayjs.Dayjs): void;\n /** 显示时间选择\n * @default false\n */\n showTime?: boolean;\n /** 显示小时选择\n * @default true\n **/\n showHour?: boolean;\n /** 显示分钟选择\n * @default true\n **/\n showMinute?: boolean;\n /** 显示秒选择\n * @default true\n **/\n showSecond?: boolean;\n /** 占位文本 */\n placeholder?: string;\n /** 显示今日按钮\n * @default true\n */\n showToday?: boolean;\n /** 显示顶部\n * @default true\n */\n showHeader?: boolean;\n}\n\nenum PickerType {\n /** 日期选择 */\n date = 'date',\n /** 月份选择 */\n month = 'month',\n /** 年份选择 */\n year = 'year',\n}\n\nexport type DatePickerElement = CustomElement<DatePickerProps, 'onChange' | 'onOpenChange'>;\n\ncustomElement<DatePickerProps>(\n 'n-data-picker',\n {\n ...defaultProps,\n value: void 0,\n defaultValue: void 0,\n disabled: void 0,\n onChange: void 0,\n open: void 0,\n onOpenChange: void 0,\n type: void 0,\n format: void 0,\n parser: void 0,\n showTime: void 0,\n suffixIcon: '📅',\n prefixIcon: void 0,\n placeholder: void 0,\n showHour: true,\n showMinute: true,\n showSecond: true,\n showToday: true,\n showHeader: true,\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n css: el.css,\n onChange(val: string, time: dayjs.Dayjs) {\n el.dispatchEvent(\n new CustomEvent('change', {\n detail: [val, time],\n }),\n );\n },\n onOpenChange(open: boolean | null) {\n el.dispatchEvent(\n new CustomEvent('openchange', {\n detail: open,\n }),\n );\n },\n },\n _,\n );\n\n createEffect(() => {\n el.removeAttribute('css');\n });\n return createComponent(DatePicker, props);\n },\n);\nexport default DatePicker;\n"],"names":["PickerType","createComponent","createEffect","createMemo","createSignal","mergeProps","splitProps","untrack","customElement","dayjs","Panel","styles","Popover","defaultProps","DatePicker","_props","ref","props","type","parser","local","other","open","setOpen","current","setCurrent","defaultValue","format","showTime","month","date","year","openChange","next","disabled","onOpenChange","focus","e","stopPropagation","preventDefault","blur","inputMouseDown","target","shadowRoot","activeElement","handleChange","value","onChange","handleInputChange","detail","isValid","css","showHour","showMinute","showSecond","showToday","showHeader","suffixIcon","prefixIcon","placeholder","_","opt","el","element","val","time","dispatchEvent","CustomEvent","removeAttribute"],"mappings":"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"}
1
+ {"version":3,"sources":["../../components/date-picker/index.tsx"],"sourcesContent":["import {\n createComponent,\n createEffect,\n createMemo,\n createSignal,\n mergeProps,\n splitProps,\n untrack,\n} from 'solid-js';\nimport { customElement } from 'solid-element';\nimport dayjs from './dayjs';\nimport Panel from './panel';\nimport { styles } from './style';\nimport '../button';\nimport '../menu';\nimport Popover, { defaultProps } from '../popover';\nimport type { CustomElement, InputElement, PopoverProps } from '..';\n\nfunction DatePicker(_props: DatePickerProps) {\n let ref: InputElement | undefined;\n const props = mergeProps(\n {\n type: 'date' as DatePickerProps['type'],\n parser: 'YYYY-MM-DD HH:mm:ss',\n },\n _props,\n );\n const [local, other] = splitProps(props, [\n 'class',\n 'css',\n 'value',\n 'defaultValue',\n 'onChange',\n 'type',\n 'content',\n 'onOpenChange',\n 'open',\n 'format',\n 'popupCss',\n 'trigger',\n 'parser',\n 'showTime',\n 'showHour',\n 'showMinute',\n 'showSecond',\n 'prefixIcon',\n 'suffixIcon',\n 'placeholder',\n 'showToday',\n 'showHeader',\n ]);\n const [open, setOpen] = createSignal<boolean | null>(null);\n const [current, setCurrent] = createSignal(dayjs(local.defaultValue));\n\n const format = createMemo(() => {\n if (local.format) {\n return local.format;\n }\n if (local.showTime) return 'YYYY-MM-DD HH:mm:ss';\n return {\n month: 'YYYY-MM',\n date: 'YYYY-MM-DD',\n year: 'YYYY',\n }[local.type || 'date'];\n });\n\n function openChange(next: boolean | null) {\n if (!other.disabled) {\n local.onOpenChange?.(next);\n if (local.open === void 0) {\n setOpen(next);\n }\n }\n }\n\n function focus(e: FocusEvent | MouseEvent) {\n e.stopPropagation();\n e.preventDefault();\n openChange(true);\n }\n function blur() {\n if (untrack(open)) {\n openChange(false);\n }\n }\n function inputMouseDown(e: MouseEvent) {\n if (e.target === (ref?.shadowRoot as ShadowRoot)?.activeElement) {\n openChange(!untrack(open));\n }\n }\n function handleChange(next: dayjs.Dayjs) {\n if (local.value === void 0) {\n setCurrent(next);\n }\n props.onChange?.(next.format(local.parser), next);\n }\n function handleInputChange(e: CustomEvent<string | number | undefined>) {\n if (e.detail) {\n const next = dayjs(e.detail);\n\n if (next.isValid()) {\n handleChange(next);\n }\n }\n }\n\n createEffect(() => {\n if (local.open !== void 0 && local.open !== untrack(open)) {\n setOpen(local.open);\n }\n });\n createEffect(() => {\n const next = dayjs(local.value || local.defaultValue);\n\n if (local.value !== void 0 && next.isValid()) {\n setCurrent(next);\n }\n });\n return (\n <Popover\n trigger=\"none\"\n placement=\"left\"\n open={open()}\n onOpenChange={openChange}\n css={local.css}\n popupCss={styles}\n content={\n <Panel\n type={local.type}\n current={current()}\n open={open()}\n onChange={handleChange}\n openChange={openChange}\n showHour={local.showHour}\n showMinute={local.showMinute}\n showSecond={local.showSecond}\n showTime={local.showTime}\n showToday={local.showToday}\n showHeader={local.showHeader}\n />\n }\n {...other}\n >\n <n-input\n ref={ref}\n onMouseDown={inputMouseDown}\n onFocus={focus}\n onBlur={blur}\n disabled={other.disabled}\n value={current().format(format())}\n suffix-icon={local.suffixIcon}\n prefix-icon={local.prefixIcon}\n placeholder={local.placeholder}\n part=\"value\"\n onChange={handleInputChange}\n />\n </Popover>\n );\n}\n/** API\n * @since 2.1.0\n */\nexport interface DatePickerProps extends Partial<PopoverProps> {\n /** 自定义类名 */\n class?: string;\n /** 自定义类名 */\n css?: string;\n /** 类型\n * @default 'date'\n */\n type?: keyof typeof PickerType;\n /** 值 */\n value?: string | number;\n /** 默认值\n * @default 当前时间\n */\n defaultValue?: string | number;\n /** 禁用 */\n disabled?: boolean;\n /** 格式化回填到输入框的内容\n * @default 'YYYY-MM-DD'\n */\n format?: string;\n /** 格式化获取的值\n * @default 'YYYY-MM-DD HH:mm:ss'\n */\n parser?: string;\n /** 前缀 */\n prefixIcon?: JSX.Element;\n /** 后缀\n * @default '📅'\n */\n suffixIcon?: JSX.Element;\n /** 变更时的回调 */\n onChange?(val: string, time: dayjs.Dayjs): void;\n /** 显示时间选择\n * @default false\n */\n showTime?: boolean;\n /** 显示小时选择\n * @default true\n **/\n showHour?: boolean;\n /** 显示分钟选择\n * @default true\n **/\n showMinute?: boolean;\n /** 显示秒选择\n * @default true\n **/\n showSecond?: boolean;\n /** 占位文本 */\n placeholder?: string;\n /** 显示今日按钮\n * @default true\n */\n showToday?: boolean;\n /** 显示顶部\n * @default true\n */\n showHeader?: boolean;\n}\n\nenum PickerType {\n /** 日期选择 */\n date = 'date',\n /** 月份选择 */\n month = 'month',\n /** 年份选择 */\n year = 'year',\n}\n\nexport type DatePickerElement = CustomElement<DatePickerProps, 'onChange' | 'onOpenChange'>;\n\ncustomElement<DatePickerProps>(\n 'n-data-picker',\n {\n ...defaultProps,\n value: void 0,\n defaultValue: void 0,\n disabled: void 0,\n onChange: void 0,\n open: void 0,\n onOpenChange: void 0,\n type: void 0,\n format: void 0,\n parser: void 0,\n showTime: void 0,\n suffixIcon: '📅',\n prefixIcon: void 0,\n placeholder: void 0,\n showHour: true,\n showMinute: true,\n showSecond: true,\n showToday: true,\n showHeader: true,\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n css: el.css,\n onChange(val: string, time: dayjs.Dayjs) {\n el.dispatchEvent(\n new CustomEvent('change', {\n detail: [val, time],\n }),\n );\n },\n onOpenChange(open: boolean | null) {\n el.dispatchEvent(\n new CustomEvent('openchange', {\n detail: open,\n }),\n );\n },\n },\n _,\n );\n\n createEffect(() => {\n el.removeAttribute('css');\n });\n return createComponent(DatePicker, props);\n },\n);\nexport default DatePicker;\n"],"names":["PickerType","createComponent","createEffect","createMemo","createSignal","mergeProps","splitProps","untrack","customElement","dayjs","Panel","styles","Popover","defaultProps","DatePicker","_props","ref","props","type","parser","local","other","open","setOpen","current","setCurrent","defaultValue","format","showTime","month","date","year","openChange","next","disabled","onOpenChange","focus","e","stopPropagation","preventDefault","blur","inputMouseDown","target","shadowRoot","activeElement","handleChange","value","onChange","handleInputChange","detail","isValid","css","showHour","showMinute","showSecond","showToday","showHeader","suffixIcon","prefixIcon","placeholder","_","opt","el","element","val","time","dispatchEvent","CustomEvent","removeAttribute"],"mappings":"MA+NKA,wkBA/NL,QACEC,mBAAAA,CAAe,CACfC,gBAAAA,CAAY,CACZC,cAAAA,CAAU,CACVC,gBAAAA,CAAY,CACZC,cAAAA,CAAU,CACVC,cAAAA,CAAU,CACVC,WAAAA,CAAO,KACF,UAAW,AAClB,QAASC,iBAAAA,CAAa,KAAQ,eAAgB,AAC9C,QAAOC,MAAW,SAAU,AAC5B,QAAOC,MAAW,SAAU,AAC5B,QAASC,UAAAA,CAAM,KAAQ,SAAU,AACjC,OAAO,WAAY,AACnB,OAAO,SAAU,AACjB,QAAOC,GAAWC,gBAAAA,CAAY,KAAQ,YAAa,CAGnD,SAASC,EAAWC,CAAuB,MACrCC,EACJ,IAAMC,EAAQZ,EACZ,CACEa,KAAM,OACNC,OAAQ,qBACV,EACAJ,GAEI,CAACK,EAAOC,EAAM,CAAGf,EAAWW,EAAO,CACvC,QACA,MACA,QACA,eACA,WACA,OACA,UACA,eACA,OACA,SACA,WACA,UACA,SACA,WACA,WACA,aACA,aACA,aACA,aACA,cACA,YACA,aACD,EACK,CAACK,EAAMC,EAAQ,CAAGnB,EAA6B,MAC/C,CAACoB,EAASC,EAAW,CAAGrB,EAAaK,EAAMW,EAAMM,YAAY,GAE7DC,EAASxB,EAAW,IACxB,AAAIiB,EAAMO,MAAM,CACPP,EAAMO,MAAM,CAEjBP,EAAMQ,QAAQ,CAAS,sBACpB,CAAA,CACLC,MAAO,UACPC,KAAM,aACNC,KAAM,MACR,CAAA,CAAC,CAACX,EAAMF,IAAI,EAAI,OAAO,EAGzB,SAASc,EAAWC,CAAoB,EACjCZ,EAAMa,QAAQ,SACjBd,EAAMe,YAAY,EAAlBf,EAAMe,YAAY,MAAlBf,EAAqBa,GACF,KAAK,IAApBb,EAAME,IAAI,EACZC,EAAQU,GAGd,CAEA,SAASG,EAAMC,CAA0B,EACvCA,EAAEC,eAAe,GACjBD,EAAEE,cAAc,GAChBP,EAAW,CAAA,EACb,CACA,SAASQ,IACHjC,EAAQe,IACVU,EAAW,CAAA,EAEf,CACA,SAASS,EAAeJ,CAAa,MACjBrB,CAAdqB,CAAAA,EAAEK,MAAM,UAAM1B,gBAAAA,EAAAA,EAAK2B,UAAU,SAAhB,AAAC3B,EAAgC4B,aAAa,GAC7DZ,EAAW,CAACzB,EAAQe,GAExB,CACA,SAASuB,EAAaZ,CAAiB,EACjB,KAAK,IAArBb,EAAM0B,KAAK,EACbrB,EAAWQ,SAEbhB,EAAM8B,QAAQ,EAAd9B,EAAM8B,QAAQ,MAAd9B,EAAiBgB,EAAKN,MAAM,CAACP,EAAMD,MAAM,EAAGc,EAC9C,CACA,SAASe,EAAkBX,CAA2C,EACpE,GAAIA,EAAEY,MAAM,CAAE,CACZ,IAAMhB,EAAOxB,EAAM4B,EAAEY,MAAM,EAEvBhB,EAAKiB,OAAO,IACdL,EAAaZ,EAEjB,CACF,CAcA,OAZA/B,EAAa,KACQ,KAAK,IAApBkB,EAAME,IAAI,EAAeF,EAAME,IAAI,GAAKf,EAAQe,IAClDC,EAAQH,EAAME,IAAI,CAEtB,GACApB,EAAa,KACX,IAAM+B,EAAOxB,EAAMW,EAAM0B,KAAK,EAAI1B,EAAMM,YAAY,CAEhC,MAAK,IAArBN,EAAM0B,KAAK,EAAeb,EAAKiB,OAAO,IACxCzB,EAAWQ,EAEf,KAEGrB,uDAGOU,kBACQU,mBACTZ,EAAM+B,GAAG,WACJxC,yBAEPD,qBACOU,EAAMF,IAAI,uBACPM,uBACHF,cACIuB,aACEb,wBACFZ,EAAMgC,QAAQ,0BACZhC,EAAMiC,UAAU,0BAChBjC,EAAMkC,UAAU,wBAClBlC,EAAMQ,QAAQ,yBACbR,EAAMmC,SAAS,0BACdnC,EAAMoC,UAAU,MAG5BnC,8BAGGL,sBAUKgC,cAPFR,eADCJ,mBADIK,kCADRzB,8BAIKK,EAAMa,QAAQ,GAEXd,EAAMqC,UAAU,GAChBrC,EAAMsC,UAAU,GAChBtC,EAAMuC,WAAW,wNAHvBnC,IAAUG,MAAM,CAACA,WAShC,EAiEK3B,EAAAA,IAAAA,iDAWLQ,EACE,gBACA,KACKK,GACHiC,MAAO,KAAK,EACZpB,aAAc,KAAK,EACnBQ,SAAU,KAAK,EACfa,SAAU,KAAK,EACfzB,KAAM,KAAK,EACXa,aAAc,KAAK,EACnBjB,KAAM,KAAK,EACXS,OAAQ,KAAK,EACbR,OAAQ,KAAK,EACbS,SAAU,KAAK,EACf6B,WAAY,KACZC,WAAY,KAAK,EACjBC,YAAa,KAAK,EAClBP,SAAU,CAAA,EACVC,WAAY,CAAA,EACZC,WAAY,CAAA,EACZC,UAAW,CAAA,EACXC,WAAY,CAAA,IAEd,CAACI,EAAGC,KACF,IAAMC,EAAKD,EAAIE,OAAO,CAChB9C,EAAQZ,EACZ,CACE8C,IAAKW,EAAGX,GAAG,CACXJ,SAASiB,CAAW,CAAEC,CAAiB,EACrCH,EAAGI,aAAa,CACd,IAAIC,YAAY,SAAU,CACxBlB,OAAQ,CAACe,EAAKC,EAAK,AACrB,GAEJ,EACA9B,aAAab,CAAoB,EAC/BwC,EAAGI,aAAa,CACd,IAAIC,YAAY,aAAc,CAC5BlB,OAAQ3B,CACV,GAEJ,CACF,EACAsC,GAMF,OAHA1D,EAAa,KACX4D,EAAGM,eAAe,CAAC,MACrB,GACOnE,EAAgBa,EAAYG,EACrC,EAEF,gBAAeH,CAAW"}
package/es/img/style.js CHANGED
@@ -55,8 +55,6 @@ import{css as n}from"@moneko/css";export const imgCss=n`
55
55
  block-size: 100%;
56
56
  pointer-events: none;
57
57
  backdrop-filter: blur(50px);
58
- /* stylelint-disable-next-line */
59
- -webkit-backdrop-filter: blur(50px);
60
58
  }
61
59
 
62
60
  &:hover {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/img/style.ts"],"sourcesContent":["import { css } from '@moneko/css';\n\nexport const imgCss = css`\n .img {\n max-inline-size: 100%;\n max-block-size: 100%;\n object-fit: contain;\n transition: opacity 0.3s;\n }\n\n .none {\n pointer-events: none;\n opacity: 0.25;\n }\n`;\nexport const style = css`\n .close {\n position: absolute;\n inset-block-start: 0;\n inset-inline-end: 0;\n z-index: 1;\n color: #fff;\n transition: transform var(--transition-duration);\n cursor: pointer;\n transform: scale(0);\n\n &::before {\n padding: 0 16px;\n font-size: 24px;\n content: '⛌';\n line-height: 46px;\n }\n }\n\n .portal {\n position: fixed;\n z-index: 99999;\n display: flex;\n justify-content: center;\n align-items: center;\n\n &::before {\n position: absolute;\n z-index: -1;\n background: var(--img) center/cover no-repeat;\n content: '';\n inline-size: 100%;\n block-size: 100%;\n pointer-events: none;\n opacity: 0.5;\n }\n\n &::after {\n position: absolute;\n z-index: -1;\n content: '';\n inline-size: 100%;\n block-size: 100%;\n pointer-events: none;\n backdrop-filter: blur(50px);\n /* stylelint-disable-next-line */\n -webkit-backdrop-filter: blur(50px);\n }\n\n &:hover {\n .close {\n transform: scale(1);\n }\n }\n }\n\n .open {\n animation: photo-in var(--transition-duration) forwards;\n }\n\n .closeing {\n animation: photo-out var(--transition-duration) forwards;\n }\n\n @keyframes photo-in {\n 0% {\n pointer-events: none;\n }\n\n 100% {\n inline-size: 100vi;\n block-size: 100vb;\n inset-block-start: 0;\n inset-inline-start: 0;\n }\n }\n\n @keyframes photo-out {\n from {\n inline-size: 100vi;\n block-size: 100vb;\n inset-block-start: 0;\n inset-inline-start: 0;\n }\n\n to {\n pointer-events: none;\n }\n }\n`;\n"],"names":["css","imgCss","style"],"mappings":"AAAA,OAASA,OAAAA,CAAG,KAAQ,aAAc,AAElC,QAAO,MAAMC,OAASD,CAAG,CAAC;;;;;;;;;;;;AAY1B,CAAC,AAAC,AACF,QAAO,MAAME,MAAQF,CAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyFzB,CAAC,AAAC"}
1
+ {"version":3,"sources":["../../components/img/style.ts"],"sourcesContent":["import { css } from '@moneko/css';\n\nexport const imgCss = css`\n .img {\n max-inline-size: 100%;\n max-block-size: 100%;\n object-fit: contain;\n transition: opacity 0.3s;\n }\n\n .none {\n pointer-events: none;\n opacity: 0.25;\n }\n`;\nexport const style = css`\n .close {\n position: absolute;\n inset-block-start: 0;\n inset-inline-end: 0;\n z-index: 1;\n color: #fff;\n transition: transform var(--transition-duration);\n cursor: pointer;\n transform: scale(0);\n\n &::before {\n padding: 0 16px;\n font-size: 24px;\n content: '⛌';\n line-height: 46px;\n }\n }\n\n .portal {\n position: fixed;\n z-index: 99999;\n display: flex;\n justify-content: center;\n align-items: center;\n\n &::before {\n position: absolute;\n z-index: -1;\n background: var(--img) center/cover no-repeat;\n content: '';\n inline-size: 100%;\n block-size: 100%;\n pointer-events: none;\n opacity: 0.5;\n }\n\n &::after {\n position: absolute;\n z-index: -1;\n content: '';\n inline-size: 100%;\n block-size: 100%;\n pointer-events: none;\n backdrop-filter: blur(50px);\n }\n\n &:hover {\n .close {\n transform: scale(1);\n }\n }\n }\n\n .open {\n animation: photo-in var(--transition-duration) forwards;\n }\n\n .closeing {\n animation: photo-out var(--transition-duration) forwards;\n }\n\n @keyframes photo-in {\n 0% {\n pointer-events: none;\n }\n\n 100% {\n inline-size: 100vi;\n block-size: 100vb;\n inset-block-start: 0;\n inset-inline-start: 0;\n }\n }\n\n @keyframes photo-out {\n from {\n inline-size: 100vi;\n block-size: 100vb;\n inset-block-start: 0;\n inset-inline-start: 0;\n }\n\n to {\n pointer-events: none;\n }\n }\n`;\n"],"names":["css","imgCss","style"],"mappings":"AAAA,OAASA,OAAAA,CAAG,KAAQ,aAAc,AAElC,QAAO,MAAMC,OAASD,CAAG,CAAC;;;;;;;;;;;;AAY1B,CAAC,AAAC,AACF,QAAO,MAAME,MAAQF,CAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuFzB,CAAC,AAAC"}
package/es/index.d.ts CHANGED
@@ -23,6 +23,7 @@ export { default as Md, type MdElement, type MdProps } from './md';
23
23
  export { default as mdStyle } from './md-style';
24
24
  export { default as Menu, type MenuElement, type MenuMultipleElement, type MenuMultipleProps, type MenuOption, type MenuProps, } from './menu';
25
25
  export { default as Modal, type ModalElement, type ModalProps, type OpenStateKey, OpenState, } from './modal';
26
+ export { default as notification, type NotificationType, type NotificationProps, } from './notification';
26
27
  export { default as Pagination, type PaginationProps, type PaginationElement } from './pagination';
27
28
  export { default as Popover, type PopoverElement, type PopoverProps } from './popover';
28
29
  export { default as Radio, type RadioElement, type RadioOption, type RadioProps } from './radio';
package/es/index.js CHANGED
@@ -1,2 +1,2 @@
1
- export{default as Avatar}from"./avatar";export{default as AvatarGroup}from"./avatar/group";export{default as BackTop}from"./back-top";export{FieldName,Size,Status}from"./basic-config";export{default as Button}from"./button";export{default as CaptureScreen}from"./capture-screen";export{default as Carousel}from"./carousel";export{default as Checkbox}from"./checkbox";export{default as Code}from"./code";export{default as ColorPalette}from"./color-palette";export{default as ColorPicker}from"./color-picker";export{default as Cron}from"./cron";export{default as DatePicker}from"./date-picker";export{default as Dropdown}from"./dropdown";export{default as Empty}from"./empty";export{default as fromSchema}from"./from-schema";export{default as getOptions}from"./get-options";export{default as HighlightText}from"./highlight-text";export{default as Img}from"./img";export{default as Input}from"./input";export{default as InputNumber}from"./input-number";export{default as Md}from"./md";export{default as mdStyle}from"./md-style";export{default as Menu}from"./menu";export{default as Modal,OpenState}from"./modal";export{default as Pagination}from"./pagination";export{default as Popover}from"./popover";export{default as Radio}from"./radio";export{default as Segmented}from"./segmented";export{default as Select}from"./select";export{default as Skeleton}from"./skeleton";export{default as Spin}from"./spin";export{default as Switch}from"./switch";export{default as Table}from"./table";export{default as Tabs}from"./tabs";export{default as Tag}from"./tag";export{default as theme,generateTheme,toneColor}from"./theme";export{default as Tree}from"./tree";export{default as Typography}from"./typography";export{default as dayjs}from"./date-picker/dayjs";export{default as Provider}from"./provider";export{hot,customElement,noShadowDOM,withSolid,getCurrentElement}from"solid-element";
1
+ export{default as Avatar}from"./avatar";export{default as AvatarGroup}from"./avatar/group";export{default as BackTop}from"./back-top";export{FieldName,Size,Status}from"./basic-config";export{default as Button}from"./button";export{default as CaptureScreen}from"./capture-screen";export{default as Carousel}from"./carousel";export{default as Checkbox}from"./checkbox";export{default as Code}from"./code";export{default as ColorPalette}from"./color-palette";export{default as ColorPicker}from"./color-picker";export{default as Cron}from"./cron";export{default as DatePicker}from"./date-picker";export{default as Dropdown}from"./dropdown";export{default as Empty}from"./empty";export{default as fromSchema}from"./from-schema";export{default as getOptions}from"./get-options";export{default as HighlightText}from"./highlight-text";export{default as Img}from"./img";export{default as Input}from"./input";export{default as InputNumber}from"./input-number";export{default as Md}from"./md";export{default as mdStyle}from"./md-style";export{default as Menu}from"./menu";export{default as Modal,OpenState}from"./modal";export{default as notification}from"./notification";export{default as Pagination}from"./pagination";export{default as Popover}from"./popover";export{default as Radio}from"./radio";export{default as Segmented}from"./segmented";export{default as Select}from"./select";export{default as Skeleton}from"./skeleton";export{default as Spin}from"./spin";export{default as Switch}from"./switch";export{default as Table}from"./table";export{default as Tabs}from"./tabs";export{default as Tag}from"./tag";export{default as theme,generateTheme,toneColor}from"./theme";export{default as Tree}from"./tree";export{default as Typography}from"./typography";export{default as dayjs}from"./date-picker/dayjs";export{default as Provider}from"./provider";export{hot,customElement,noShadowDOM,withSolid,getCurrentElement}from"solid-element";
2
2
  //# sourceMappingURL=index.js.map