neko-ui 2.7.0 → 2.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (217) hide show
  1. package/CHANGELOG.md +26 -6
  2. package/es/@moneko/coverage/index.js.map +1 -1
  3. package/es/@moneko/info/index.js.map +1 -1
  4. package/es/@moneko/locales/index.js.map +1 -1
  5. package/es/@moneko/routes/index.js.map +1 -1
  6. package/es/avatar/group.js.map +1 -1
  7. package/es/avatar/index.js.map +1 -1
  8. package/es/avatar/style.js.map +1 -1
  9. package/es/back-top/index.js.map +1 -1
  10. package/es/back-top/style.js.map +1 -1
  11. package/es/basic-config/index.js.map +1 -1
  12. package/es/button/index.js.map +1 -1
  13. package/es/button/style.js.map +1 -1
  14. package/es/capture-screen/index.js.map +1 -1
  15. package/es/capture-screen/style.js.map +1 -1
  16. package/es/carousel/index.js.map +1 -1
  17. package/es/carousel/style.js.map +1 -1
  18. package/es/checkbox/index.js.map +1 -1
  19. package/es/checkbox/style.js.map +1 -1
  20. package/es/code/index.js +1 -1
  21. package/es/code/index.js.map +1 -1
  22. package/es/code/style.js.map +1 -1
  23. package/es/code/worker.js +1 -1
  24. package/es/code/worker.js.map +1 -1
  25. package/es/color-palette/index.js.map +1 -1
  26. package/es/color-palette/style.js.map +1 -1
  27. package/es/color-picker/index.js.map +1 -1
  28. package/es/color-picker/style.js.map +1 -1
  29. package/es/cron/begin-interval.js.map +1 -1
  30. package/es/cron/day.js.map +1 -1
  31. package/es/cron/hour.js.map +1 -1
  32. package/es/cron/index.js.map +1 -1
  33. package/es/cron/item.js.map +1 -1
  34. package/es/cron/minute.js.map +1 -1
  35. package/es/cron/month.js.map +1 -1
  36. package/es/cron/period.js.map +1 -1
  37. package/es/cron/second.js.map +1 -1
  38. package/es/cron/some.js.map +1 -1
  39. package/es/cron/style.js.map +1 -1
  40. package/es/cron/week.js.map +1 -1
  41. package/es/cron/year.js.map +1 -1
  42. package/es/date-picker/date.js.map +1 -1
  43. package/es/date-picker/dayjs.js.map +1 -1
  44. package/es/date-picker/index.js.map +1 -1
  45. package/es/date-picker/month.js.map +1 -1
  46. package/es/date-picker/panel.js.map +1 -1
  47. package/es/date-picker/style.js.map +1 -1
  48. package/es/date-picker/time.js.map +1 -1
  49. package/es/date-picker/year.js.map +1 -1
  50. package/es/dropdown/index.js.map +1 -1
  51. package/es/empty/index.js.map +1 -1
  52. package/es/from-schema/index.js.map +1 -1
  53. package/es/get-options/index.js.map +1 -1
  54. package/es/highlight-text/index.js.map +1 -1
  55. package/es/img/index.js.map +1 -1
  56. package/es/img/style.js.map +1 -1
  57. package/es/index.js.map +1 -1
  58. package/es/input/index.js.map +1 -1
  59. package/es/input/style.js.map +1 -1
  60. package/es/input-number/index.js.map +1 -1
  61. package/es/katex/index.js.map +1 -1
  62. package/es/md/index.js +1 -1
  63. package/es/md/index.js.map +1 -1
  64. package/es/md/worker.js.map +1 -1
  65. package/es/md-style/index.js.map +1 -1
  66. package/es/menu/index.js.map +1 -1
  67. package/es/menu/style.js.map +1 -1
  68. package/es/modal/hooks.js.map +1 -1
  69. package/es/modal/index.js.map +1 -1
  70. package/es/modal/store.js.map +1 -1
  71. package/es/modal/style.js.map +1 -1
  72. package/es/notification/index.js.map +1 -1
  73. package/es/notification/notification.js.map +1 -1
  74. package/es/notification/queque.js.map +1 -1
  75. package/es/notification/styles.js.map +1 -1
  76. package/es/pagination/index.js.map +1 -1
  77. package/es/pagination/styles.js.map +1 -1
  78. package/es/popover/index.js.map +1 -1
  79. package/es/popover/style.js.map +1 -1
  80. package/es/prism/css.js.map +1 -1
  81. package/es/prism/prism.js +1 -1
  82. package/es/prism/prism.js.map +1 -1
  83. package/es/provider/index.js.map +1 -1
  84. package/es/radio/index.js.map +1 -1
  85. package/es/radio/style.js.map +1 -1
  86. package/es/segmented/index.js.map +1 -1
  87. package/es/segmented/style.js.map +1 -1
  88. package/es/select/index.js.map +1 -1
  89. package/es/select/style.js.map +1 -1
  90. package/es/skeleton/index.js.map +1 -1
  91. package/es/spin/index.js.map +1 -1
  92. package/es/switch/index.js.map +1 -1
  93. package/es/switch/style.js.map +1 -1
  94. package/es/table/index.js.map +1 -1
  95. package/es/table/styles.js.map +1 -1
  96. package/es/tabs/index.js.map +1 -1
  97. package/es/tabs/style.js.map +1 -1
  98. package/es/tag/index.js.map +1 -1
  99. package/es/tag/style.js.map +1 -1
  100. package/es/theme/index.js.map +1 -1
  101. package/es/tree/index.js.map +1 -1
  102. package/es/tree/register.js.map +1 -1
  103. package/es/tree/style.js.map +1 -1
  104. package/es/tree/type.js.map +1 -1
  105. package/es/typography/index.js.map +1 -1
  106. package/lib/@moneko/coverage/index.js.map +1 -1
  107. package/lib/@moneko/info/index.js.map +1 -1
  108. package/lib/@moneko/locales/index.js.map +1 -1
  109. package/lib/@moneko/routes/index.js.map +1 -1
  110. package/lib/avatar/group.js.map +1 -1
  111. package/lib/avatar/index.js.map +1 -1
  112. package/lib/avatar/style.js.map +1 -1
  113. package/lib/back-top/index.js.map +1 -1
  114. package/lib/back-top/style.js.map +1 -1
  115. package/lib/basic-config/index.js.map +1 -1
  116. package/lib/button/index.js.map +1 -1
  117. package/lib/button/style.js.map +1 -1
  118. package/lib/capture-screen/index.js.map +1 -1
  119. package/lib/capture-screen/style.js.map +1 -1
  120. package/lib/carousel/index.js.map +1 -1
  121. package/lib/carousel/style.js.map +1 -1
  122. package/lib/checkbox/index.js.map +1 -1
  123. package/lib/checkbox/style.js.map +1 -1
  124. package/lib/code/index.js +1 -1
  125. package/lib/code/index.js.map +1 -1
  126. package/lib/code/style.js.map +1 -1
  127. package/lib/code/worker.js +1 -1
  128. package/lib/code/worker.js.map +1 -1
  129. package/lib/color-palette/index.js.map +1 -1
  130. package/lib/color-palette/style.js.map +1 -1
  131. package/lib/color-picker/index.js +1 -1
  132. package/lib/color-picker/index.js.map +1 -1
  133. package/lib/color-picker/style.js.map +1 -1
  134. package/lib/cron/begin-interval.js.map +1 -1
  135. package/lib/cron/day.js.map +1 -1
  136. package/lib/cron/hour.js.map +1 -1
  137. package/lib/cron/index.js.map +1 -1
  138. package/lib/cron/item.js.map +1 -1
  139. package/lib/cron/minute.js.map +1 -1
  140. package/lib/cron/month.js.map +1 -1
  141. package/lib/cron/period.js.map +1 -1
  142. package/lib/cron/second.js.map +1 -1
  143. package/lib/cron/some.js.map +1 -1
  144. package/lib/cron/style.js.map +1 -1
  145. package/lib/cron/week.js.map +1 -1
  146. package/lib/cron/year.js.map +1 -1
  147. package/lib/date-picker/date.js.map +1 -1
  148. package/lib/date-picker/dayjs.js.map +1 -1
  149. package/lib/date-picker/index.js +1 -1
  150. package/lib/date-picker/index.js.map +1 -1
  151. package/lib/date-picker/month.js.map +1 -1
  152. package/lib/date-picker/panel.js.map +1 -1
  153. package/lib/date-picker/style.js.map +1 -1
  154. package/lib/date-picker/time.js.map +1 -1
  155. package/lib/date-picker/year.js.map +1 -1
  156. package/lib/dropdown/index.js +1 -1
  157. package/lib/dropdown/index.js.map +1 -1
  158. package/lib/empty/index.js.map +1 -1
  159. package/lib/from-schema/index.js.map +1 -1
  160. package/lib/get-options/index.js.map +1 -1
  161. package/lib/highlight-text/index.js.map +1 -1
  162. package/lib/img/index.js.map +1 -1
  163. package/lib/img/style.js.map +1 -1
  164. package/lib/index.js.map +1 -1
  165. package/lib/input/index.js.map +1 -1
  166. package/lib/input/style.js.map +1 -1
  167. package/lib/input-number/index.js +1 -1
  168. package/lib/input-number/index.js.map +1 -1
  169. package/lib/katex/index.js.map +1 -1
  170. package/lib/md/index.js +1 -1
  171. package/lib/md/index.js.map +1 -1
  172. package/lib/md/worker.js.map +1 -1
  173. package/lib/md-style/index.js.map +1 -1
  174. package/lib/menu/index.js.map +1 -1
  175. package/lib/menu/style.js.map +1 -1
  176. package/lib/modal/hooks.js.map +1 -1
  177. package/lib/modal/index.js.map +1 -1
  178. package/lib/modal/store.js.map +1 -1
  179. package/lib/modal/style.js.map +1 -1
  180. package/lib/notification/index.js.map +1 -1
  181. package/lib/notification/notification.js.map +1 -1
  182. package/lib/notification/queque.js.map +1 -1
  183. package/lib/notification/styles.js.map +1 -1
  184. package/lib/pagination/index.js.map +1 -1
  185. package/lib/pagination/styles.js.map +1 -1
  186. package/lib/popover/index.js.map +1 -1
  187. package/lib/popover/style.js.map +1 -1
  188. package/lib/prism/css.js.map +1 -1
  189. package/lib/prism/prism.js +1 -1
  190. package/lib/prism/prism.js.map +1 -1
  191. package/lib/provider/index.js.map +1 -1
  192. package/lib/radio/index.js.map +1 -1
  193. package/lib/radio/style.js.map +1 -1
  194. package/lib/segmented/index.js.map +1 -1
  195. package/lib/segmented/style.js.map +1 -1
  196. package/lib/select/index.js +1 -1
  197. package/lib/select/index.js.map +1 -1
  198. package/lib/select/style.js.map +1 -1
  199. package/lib/skeleton/index.js.map +1 -1
  200. package/lib/spin/index.js.map +1 -1
  201. package/lib/switch/index.js.map +1 -1
  202. package/lib/switch/style.js.map +1 -1
  203. package/lib/table/index.js.map +1 -1
  204. package/lib/table/styles.js.map +1 -1
  205. package/lib/tabs/index.js.map +1 -1
  206. package/lib/tabs/style.js.map +1 -1
  207. package/lib/tag/index.js +2 -2
  208. package/lib/tag/index.js.map +1 -1
  209. package/lib/tag/style.js.map +1 -1
  210. package/lib/theme/index.js.map +1 -1
  211. package/lib/tree/index.js.map +1 -1
  212. package/lib/tree/register.js.map +1 -1
  213. package/lib/tree/style.js.map +1 -1
  214. package/lib/tree/type.js.map +1 -1
  215. package/lib/typography/index.js.map +1 -1
  216. package/package.json +22 -22
  217. package/umd/index.js +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/tabs/style.ts"],"sourcesContent":["import { css } from '@moneko/css';\n\nexport const style = css`\n :host {\n display: block;\n font-size: var(--font-size);\n }\n\n [aria-disabled='true'] {\n --primary-color: var(--disable-color);\n }\n\n .tabs {\n position: relative;\n display: flex;\n align-items: center;\n gap: 4px;\n box-sizing: border-box;\n max-inline-size: 100%;\n\n &::before {\n position: absolute;\n inset-block-end: 0;\n inset-inline-start: 0;\n content: '';\n display: block;\n inline-size: 100%;\n border-block-end: var(--border-base);\n }\n }\n\n .centered {\n justify-content: center;\n }\n\n .tab {\n cursor: pointer;\n position: relative;\n }\n\n .content {\n padding: 16px 0;\n }\n\n .slide-in {\n animation: slide-in var(--transition-timing-function) var(--transition-duration);\n }\n\n @keyframes slide-in {\n 0% {\n opacity: 0;\n transform: translateY(16px);\n }\n\n 100% {\n opacity: 1;\n transform: translateY(0);\n }\n }\n\n .items {\n position: relative;\n display: flex;\n column-gap: 4px;\n max-inline-size: calc(100% - 38px);\n overflow-x: scroll;\n\n &::after,\n &::before {\n inset-block: 0 0;\n inline-size: 30px;\n position: absolute;\n z-index: 1;\n opacity: 0;\n transition: opacity var(--transition-duration);\n content: '';\n pointer-events: none;\n }\n\n &::before {\n inset-inline-start: var(--s, 0);\n box-shadow: inset 10px 0 8px -8px rgb(0 0 0 / 8%);\n }\n\n &::after {\n inset-inline-end: 0;\n transform: translateX(var(--s, 0));\n box-shadow: inset -10px 0 8px -8px rgb(0 0 0 / 8%);\n }\n\n &::-webkit-scrollbar {\n display: none;\n }\n }\n\n .line {\n &::after {\n position: absolute;\n display: block;\n border-radius: 1px;\n background-color: var(--primary-color);\n content: '';\n inline-size: var(--w);\n inset-inline-start: var(--left);\n block-size: 2px;\n inset-block-end: -0.5px;\n transition-duration: var(--transition-duration);\n transition-timing-function: var(--transition-timing-function);\n transition-property: inline-size, block-size, inset-inline-start, background-color;\n }\n }\n\n .card {\n gap: 4px;\n\n .tab {\n display: block;\n border: var(--border-base);\n border-radius: var(--border-radius) var(--border-radius) 0 0;\n background-color: var(--tab-bg);\n transition:\n border-color var(--transition-timing-function) var(--transition-duration),\n background-color var(--transition-timing-function) var(--transition-duration);\n\n &.active {\n background-color: var(--tab-current-bg);\n border-block-end-color: var(--tab-current-bg);\n }\n }\n }\n\n .tab.add {\n position: sticky;\n background-color: initial;\n inset-inline-end: 0;\n }\n\n .warp-left::before {\n opacity: 1;\n }\n\n .warp-right::after {\n opacity: 1;\n }\n`;\n\nexport const btnCss = css`\n .remove {\n display: inline-block;\n font-size: 12px;\n font-weight: 400;\n color: var(--text-secondary);\n transition: color var(--transition-timing-function) var(--transition-duration);\n margin-inline-start: 8px;\n\n &:hover {\n color: var(--error-color);\n }\n }\n\n .btn:has(.remove) {\n padding-inline-end: 10px;\n }\n`;\n\nexport const addCss = css`\n .btn {\n padding: 4px;\n font-size: var(--font-size-lg);\n }\n`;\n"],"names":["addCss","btnCss","style","css"],"mappings":"+JAqKaA,MAAM,mBAANA,GAnBAC,MAAM,mBAANA,GAhJAC,KAAK,mBAALA,qBAFO,eAEPA,EAAQC,GAAAA,KAAG,CAAA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8IzB,CAAC,CAEYF,EAASE,GAAAA,KAAG,CAAA,CAAC;;;;;;;;;;;;;;;;;AAiB1B,CAAC,CAEYH,EAASG,GAAAA,KAAG,CAAA,CAAC;;;;;AAK1B,CAAC"}
1
+ {"version":3,"sources":["../../components/tabs/style.ts"],"sourcesContent":["import { css } from '@moneko/css';\n\nexport const style = css`\n :host {\n display: block;\n font-size: var(--font-size);\n }\n\n [aria-disabled='true'] {\n --primary-color: var(--disable-color);\n }\n\n .tabs {\n position: relative;\n display: flex;\n align-items: center;\n gap: 4px;\n box-sizing: border-box;\n max-inline-size: 100%;\n\n &::before {\n position: absolute;\n inset-block-end: 0;\n inset-inline-start: 0;\n content: '';\n display: block;\n inline-size: 100%;\n border-block-end: var(--border-base);\n }\n }\n\n .centered {\n justify-content: center;\n }\n\n .tab {\n cursor: pointer;\n position: relative;\n }\n\n .content {\n padding: 16px 0;\n }\n\n .slide-in {\n animation: slide-in var(--transition-timing-function) var(--transition-duration);\n }\n\n @keyframes slide-in {\n 0% {\n opacity: 0;\n transform: translateY(16px);\n }\n\n 100% {\n opacity: 1;\n transform: translateY(0);\n }\n }\n\n .items {\n position: relative;\n display: flex;\n column-gap: 4px;\n max-inline-size: calc(100% - 38px);\n overflow-x: scroll;\n\n &::after,\n &::before {\n inset-block: 0 0;\n inline-size: 30px;\n position: absolute;\n z-index: 1;\n opacity: 0;\n transition: opacity var(--transition-duration);\n content: '';\n pointer-events: none;\n }\n\n &::before {\n inset-inline-start: var(--s, 0);\n box-shadow: inset 10px 0 8px -8px rgb(0 0 0 / 8%);\n }\n\n &::after {\n inset-inline-end: 0;\n transform: translateX(var(--s, 0));\n box-shadow: inset -10px 0 8px -8px rgb(0 0 0 / 8%);\n }\n\n &::-webkit-scrollbar {\n display: none;\n }\n }\n\n .line {\n &::after {\n position: absolute;\n display: block;\n border-radius: 1px;\n background-color: var(--primary-color);\n content: '';\n inline-size: var(--w);\n inset-inline-start: var(--left);\n block-size: 2px;\n inset-block-end: -0.5px;\n transition-duration: var(--transition-duration);\n transition-timing-function: var(--transition-timing-function);\n transition-property: inline-size, block-size, inset-inline-start, background-color;\n }\n }\n\n .card {\n gap: 4px;\n\n .tab {\n display: block;\n border: var(--border-base);\n border-radius: var(--border-radius) var(--border-radius) 0 0;\n background-color: var(--tab-bg);\n transition:\n border-color var(--transition-timing-function) var(--transition-duration),\n background-color var(--transition-timing-function) var(--transition-duration);\n\n &.active {\n background-color: var(--tab-current-bg);\n border-block-end-color: var(--tab-current-bg);\n }\n }\n }\n\n .tab.add {\n position: sticky;\n background-color: initial;\n inset-inline-end: 0;\n }\n\n .warp-left::before {\n opacity: 1;\n }\n\n .warp-right::after {\n opacity: 1;\n }\n`;\n\nexport const btnCss = css`\n .remove {\n display: inline-block;\n font-size: 12px;\n font-weight: 400;\n color: var(--text-secondary);\n transition: color var(--transition-timing-function) var(--transition-duration);\n margin-inline-start: 8px;\n\n &:hover {\n color: var(--error-color);\n }\n }\n\n .btn:has(.remove) {\n padding-inline-end: 10px;\n }\n`;\n\nexport const addCss = css`\n .btn {\n padding: 4px;\n font-size: var(--font-size-lg);\n }\n`;\n"],"names":["addCss","btnCss","style","css"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"+JAqKaA,MAAM,mBAANA,GAnBAC,MAAM,mBAANA,GAhJAC,KAAK,mBAALA,qBAFO,eAEPA,EAAQC,GAAAA,KAAG,CAAA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8IzB,CAAC,CAEYF,EAASE,GAAAA,KAAG,CAAA,CAAC;;;;;;;;;;;;;;;;;AAiB1B,CAAC,CAEYH,EAASG,GAAAA,KAAG,CAAA,CAAC;;;;;AAK1B,CAAC"}
package/lib/tag/index.js CHANGED
@@ -1,6 +1,6 @@
1
- "use strict";var e;Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return m}});const t=require("solid-js/web"),r=require("solid-js"),n=(e=require("@moneko/common/lib/isFunction"))&&e.__esModule?e:{default:e},o=require("@moneko/css"),l=require("solid-element"),s=require("./style"),c=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=i(t);if(r&&r.has(e))return r.get(e);var n={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var l in e)if("default"!==l&&Object.prototype.hasOwnProperty.call(e,l)){var s=o?Object.getOwnPropertyDescriptor(e,l):null;s&&(s.get||s.set)?Object.defineProperty(n,l,s):n[l]=e[l]}return n.default=e,r&&r.set(e,n),n}(require("../theme"));function i(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(i=function(e){return e?r:t})(e)}const u=(0,t.template)("<style>"),a=(0,t.template)('<span class="icon">'),d=(0,t.template)('<span class="close">'),p=(0,t.template)("<span>");function f(e){let{baseStyle:l,isDark:i}=c.default,[f,m]=(0,r.splitProps)(e,["class","css","onClose","color","icon","closeIcon","bordered","type","disabled"]),[g,v]=(0,r.createSignal)(!0),b=(0,r.createMemo)(()=>f.color?(0,o.css)`
1
+ "use strict";var e;Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return m}});const t=require("solid-js/web"),r=require("solid-js"),n=(e=require("@moneko/common/lib/isFunction"))&&e.__esModule?e:{default:e},o=require("@moneko/css"),l=require("solid-element"),s=require("./style"),c=function(e,t){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=i(void 0);if(r&&r.has(e))return r.get(e);var n={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var l in e)if("default"!==l&&Object.prototype.hasOwnProperty.call(e,l)){var s=o?Object.getOwnPropertyDescriptor(e,l):null;s&&(s.get||s.set)?Object.defineProperty(n,l,s):n[l]=e[l]}return n.default=e,r&&r.set(e,n),n}(require("../theme"));function i(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(i=function(e){return e?r:t})(e)}const u=(0,t.template)("<style>"),a=(0,t.template)('<span class="icon">'),d=(0,t.template)('<span class="close">'),p=(0,t.template)("<span>");function f(e){let{baseStyle:l,isDark:i}=c.default,[f,m]=(0,r.splitProps)(e,["class","css","onClose","color","icon","closeIcon","bordered","type","disabled"]),[v,g]=(0,r.createSignal)(!0),b=(0,r.createMemo)(()=>f.color?(0,o.css)`
2
2
  :host {
3
3
  ${(0,c.generateTheme)(f.color,{dark:i(),name:"tag-custom"})}
4
4
  }
5
- `:"");function h(e){(0,n.default)(f.onClose)&&f.onClose(e),v(!1)}return(0,t.createComponent)(r.Show,{get when(){return g()},get children(){return[(()=>{let e=u();return(0,t.insert)(e,l,null),(0,t.insert)(e,b,null),(0,t.insert)(e,s.style,null),(0,t.insert)(e,()=>(0,o.css)(f.css),null),e})(),(()=>{let e=p();return(0,t.spread)(e,(0,t.mergeProps)(m,{get class(){return(0,o.cx)("tag",f.type,f.color&&"tag-custom",f.bordered&&"bordered",f.disabled&&"disabled")}}),!1,!0),(0,t.insert)(e,(0,t.createComponent)(r.Show,{get when(){return f.icon},get children(){let e=a();return(0,t.insert)(e,()=>f.icon),e}}),null),(0,t.insert)(e,()=>m.children,null),(0,t.insert)(e,(0,t.createComponent)(r.Show,{get when(){return f.closeIcon},get children(){let e=d();return(0,t.addEventListener)(e,"click",h,!0),(0,t.insert)(e,()=>!0===f.closeIcon?"⛌":f.closeIcon),e}}),null),e})()]}})}(0,l.customElement)("n-tag",{class:void 0,css:void 0,color:void 0,icon:void 0,closeIcon:void 0,onClose:void 0,bordered:!0,disabled:void 0,type:void 0},(e,t)=>{let n=t.element,o=(0,r.mergeProps)({css:n.css,children:[...n.childNodes.values()],onClose(e){n.dispatchEvent(new CustomEvent("close",{detail:e}))}},e);return(0,r.createEffect)(()=>{n.replaceChildren(),n.removeAttribute("css")}),(0,r.createComponent)(f,o)});const m=f;(0,t.delegateEvents)(["click"]);
5
+ `:"");function h(e){(0,n.default)(f.onClose)&&f.onClose(e),g(!1)}return(0,t.createComponent)(r.Show,{get when(){return v()},get children(){return[(()=>{let e=u();return(0,t.insert)(e,l,null),(0,t.insert)(e,b,null),(0,t.insert)(e,s.style,null),(0,t.insert)(e,()=>(0,o.css)(f.css),null),e})(),(()=>{let e=p();return(0,t.spread)(e,(0,t.mergeProps)(m,{get class(){return(0,o.cx)("tag",f.type,f.color&&"tag-custom",f.bordered&&"bordered",f.disabled&&"disabled")}}),!1,!0),(0,t.insert)(e,(0,t.createComponent)(r.Show,{get when(){return f.icon},get children(){let e=a();return(0,t.insert)(e,()=>f.icon),e}}),null),(0,t.insert)(e,()=>m.children,null),(0,t.insert)(e,(0,t.createComponent)(r.Show,{get when(){return f.closeIcon},get children(){let e=d();return(0,t.addEventListener)(e,"click",h,!0),(0,t.insert)(e,()=>!0===f.closeIcon?"⛌":f.closeIcon),e}}),null),e})()]}})}(0,l.customElement)("n-tag",{class:void 0,css:void 0,color:void 0,icon:void 0,closeIcon:void 0,onClose:void 0,bordered:!0,disabled:void 0,type:void 0},(e,t)=>{let n=t.element,o=(0,r.mergeProps)({css:n.css,children:[...n.childNodes.values()],onClose(e){n.dispatchEvent(new CustomEvent("close",{detail:e}))}},e);return(0,r.createEffect)(()=>{n.replaceChildren(),n.removeAttribute("css")}),(0,r.createComponent)(f,o)});const m=f;(0,t.delegateEvents)(["click"]);
6
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/tag/index.tsx"],"sourcesContent":["import {\n Show,\n createComponent,\n createEffect,\n createMemo,\n createSignal,\n mergeProps,\n splitProps,\n} from 'solid-js';\nimport { isFunction } from '@moneko/common';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport { style } from './style';\nimport theme, { generateTheme } from '../theme';\nimport type { CustomElement } from '..';\n\nexport interface TagProps {\n /** 自定义样式表 */\n css?: string;\n /** 自定义类名 */\n class?: string;\n /** 自定义颜色 */\n color?: string;\n /** 图标 */\n icon?: JSX.Element;\n /** 内置类型(状态) */\n type?: 'primary' | 'success' | 'error' | 'warning';\n /** 自定义关闭图标 */\n closeIcon?: JSX.Element | boolean;\n /** 显示边框\n * @default true\n */\n bordered?: boolean;\n /** 禁用 */\n disabled?: boolean;\n /** 关闭时的回调方法 */\n onClose?: (e: MouseEvent) => void;\n children?: JSX.Element;\n}\n\nfunction Tag(props: TagProps) {\n const { baseStyle, isDark } = theme;\n const [local, other] = splitProps(props, [\n 'class',\n 'css',\n 'onClose',\n 'color',\n 'icon',\n 'closeIcon',\n 'bordered',\n 'type',\n 'disabled',\n ]);\n const [show, setShow] = createSignal(true);\n\n const customColor = createMemo(() => {\n if (local.color) {\n return css`\n :host {\n ${generateTheme(local.color, {\n dark: isDark(),\n name: 'tag-custom',\n })}\n }\n `;\n }\n return '';\n });\n\n function onClose(e: Event) {\n if (isFunction(local.onClose)) {\n local.onClose(e);\n }\n setShow(false);\n }\n\n return (\n <Show when={show()}>\n <style>\n {baseStyle()}\n {customColor()}\n {style}\n {css(local.css)}\n </style>\n <span\n {...other}\n class={cx(\n 'tag',\n local.type,\n local.color && 'tag-custom',\n local.bordered && 'bordered',\n local.disabled && 'disabled',\n )}\n >\n <Show when={local.icon}>\n <span class=\"icon\">{local.icon}</span>\n </Show>\n {other.children}\n <Show when={local.closeIcon}>\n <span class=\"close\" onClick={onClose}>\n {local.closeIcon === true ? '⛌' : local.closeIcon}\n </span>\n </Show>\n </span>\n </Show>\n );\n}\n\nexport type TagElement = CustomElement<TagProps, 'onClose'>;\n\ncustomElement<TagProps>(\n 'n-tag',\n {\n class: void 0,\n css: void 0,\n color: void 0,\n icon: void 0,\n closeIcon: void 0,\n onClose: void 0,\n bordered: true,\n disabled: void 0,\n type: void 0,\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n css: el.css,\n children: [...el.childNodes.values()],\n onClose(e: Event) {\n el.dispatchEvent(\n new CustomEvent('close', {\n detail: e,\n }),\n );\n },\n },\n _,\n );\n\n createEffect(() => {\n el.replaceChildren();\n el.removeAttribute('css');\n });\n\n return createComponent(Tag, props);\n },\n);\n\nexport default Tag;\n"],"names":["Tag","props","baseStyle","isDark","theme","local","other","splitProps","show","setShow","createSignal","customColor","createMemo","color","css","generateTheme","dark","name","onClose","e","isFunction","Show","style","cx","type","bordered","disabled","icon","children","closeIcon","customElement","class","_","opt","el","element","mergeProps","childNodes","values","dispatchEvent","CustomEvent","detail","createEffect","replaceChildren","removeAttribute","createComponent"],"mappings":"wGAqJA,+CAAA,+CA7IO,yBACoB,wEACH,yBACM,2BACR,geACe,0RA2BrC,SAASA,EAAIC,CAAe,EAC1B,GAAM,CAAEC,UAAAA,CAAS,CAAEC,OAAAA,CAAM,CAAE,CAAGC,SAAK,CAC7B,CAACC,EAAOC,EAAM,CAAGC,GAAAA,YAAU,EAACN,EAAO,CACvC,QACA,MACA,UACA,QACA,OACA,YACA,WACA,OACA,WACD,EACK,CAACO,EAAMC,EAAQ,CAAGC,GAAAA,cAAY,EAAC,CAAA,GAE/BC,EAAcC,GAAAA,YAAU,EAAC,IAC7B,AAAIP,EAAMQ,KAAK,CACNC,GAAAA,KAAG,CAAA,CAAC;;UAEP,EAAEC,GAAAA,eAAa,EAACV,EAAMQ,KAAK,CAAE,CAC3BG,KAAMb,IACNc,KAAM,YACR,GAAG;;MAEP,CAAC,CAEI,IAGT,SAASC,EAAQC,CAAQ,EACnBC,GAAAA,SAAU,EAACf,EAAMa,OAAO,GAC1Bb,EAAMa,OAAO,CAACC,GAEhBV,EAAQ,CAAA,EACV,CAEA,4BACGY,MAAI,oBAAOb,gEAEPN,uBACAS,uBACAW,OAAK,0BACLR,GAAAA,KAAG,EAACT,EAAMS,GAAG,oEAGVR,qBACGiB,GAAAA,IAAE,EACP,MACAlB,EAAMmB,IAAI,CACVnB,EAAMQ,KAAK,EAAI,aACfR,EAAMoB,QAAQ,EAAI,WAClBpB,EAAMqB,QAAQ,EAAI,2DAGnBL,MAAI,oBAAOhB,EAAMsB,IAAI,oDACAtB,EAAMsB,IAAI,gCAE/BrB,EAAMsB,QAAQ,4CACdP,MAAI,oBAAOhB,EAAMwB,SAAS,kEACIX,yBAC1Bb,AAAoB,CAAA,IAApBA,EAAMwB,SAAS,CAAY,IAAMxB,EAAMwB,SAAS,sBAM7D,CAIAC,GAAAA,eAAa,EACX,QACA,CACEC,MAAO,KAAK,EACZjB,IAAK,KAAK,EACVD,MAAO,KAAK,EACZc,KAAM,KAAK,EACXE,UAAW,KAAK,EAChBX,QAAS,KAAK,EACdO,SAAU,CAAA,EACVC,SAAU,KAAK,EACfF,KAAM,KAAK,CACb,EACA,CAACQ,EAAGC,KACF,IAAMC,EAAKD,EAAIE,OAAO,CAChBlC,EAAQmC,GAAAA,YAAU,EACtB,CACEtB,IAAKoB,EAAGpB,GAAG,CACXc,SAAU,IAAIM,EAAGG,UAAU,CAACC,MAAM,GAAG,CACrCpB,QAAQC,CAAQ,EACde,EAAGK,aAAa,CACd,IAAIC,YAAY,QAAS,CACvBC,OAAQtB,CACV,GAEJ,CACF,EACAa,GAQF,MALAU,GAAAA,cAAY,EAAC,KACXR,EAAGS,eAAe,GAClBT,EAAGU,eAAe,CAAC,MACrB,GAEOC,GAAAA,iBAAe,EAAC7C,EAAKC,EAC9B,SAGF,EAAeD"}
1
+ {"version":3,"sources":["../../components/tag/index.tsx"],"sourcesContent":["import {\n Show,\n createComponent,\n createEffect,\n createMemo,\n createSignal,\n mergeProps,\n splitProps,\n} from 'solid-js';\nimport { isFunction } from '@moneko/common';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport { style } from './style';\nimport theme, { generateTheme } from '../theme';\nimport type { CustomElement } from '..';\n\nexport interface TagProps {\n /** 自定义样式表 */\n css?: string;\n /** 自定义类名 */\n class?: string;\n /** 自定义颜色 */\n color?: string;\n /** 图标 */\n icon?: JSX.Element;\n /** 内置类型(状态) */\n type?: 'primary' | 'success' | 'error' | 'warning';\n /** 自定义关闭图标 */\n closeIcon?: JSX.Element | boolean;\n /** 显示边框\n * @default true\n */\n bordered?: boolean;\n /** 禁用 */\n disabled?: boolean;\n /** 关闭时的回调方法 */\n onClose?: (e: MouseEvent) => void;\n children?: JSX.Element;\n}\n\nfunction Tag(props: TagProps) {\n const { baseStyle, isDark } = theme;\n const [local, other] = splitProps(props, [\n 'class',\n 'css',\n 'onClose',\n 'color',\n 'icon',\n 'closeIcon',\n 'bordered',\n 'type',\n 'disabled',\n ]);\n const [show, setShow] = createSignal(true);\n\n const customColor = createMemo(() => {\n if (local.color) {\n return css`\n :host {\n ${generateTheme(local.color, {\n dark: isDark(),\n name: 'tag-custom',\n })}\n }\n `;\n }\n return '';\n });\n\n function onClose(e: Event) {\n if (isFunction(local.onClose)) {\n local.onClose(e);\n }\n setShow(false);\n }\n\n return (\n <Show when={show()}>\n <style>\n {baseStyle()}\n {customColor()}\n {style}\n {css(local.css)}\n </style>\n <span\n {...other}\n class={cx(\n 'tag',\n local.type,\n local.color && 'tag-custom',\n local.bordered && 'bordered',\n local.disabled && 'disabled',\n )}\n >\n <Show when={local.icon}>\n <span class=\"icon\">{local.icon}</span>\n </Show>\n {other.children}\n <Show when={local.closeIcon}>\n <span class=\"close\" onClick={onClose}>\n {local.closeIcon === true ? '⛌' : local.closeIcon}\n </span>\n </Show>\n </span>\n </Show>\n );\n}\n\nexport type TagElement = CustomElement<TagProps, 'onClose'>;\n\ncustomElement<TagProps>(\n 'n-tag',\n {\n class: void 0,\n css: void 0,\n color: void 0,\n icon: void 0,\n closeIcon: void 0,\n onClose: void 0,\n bordered: true,\n disabled: void 0,\n type: void 0,\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n css: el.css,\n children: [...el.childNodes.values()],\n onClose(e: Event) {\n el.dispatchEvent(\n new CustomEvent('close', {\n detail: e,\n }),\n );\n },\n },\n _,\n );\n\n createEffect(() => {\n el.replaceChildren();\n el.removeAttribute('css');\n });\n\n return createComponent(Tag, props);\n },\n);\n\nexport default Tag;\n"],"names":["Tag","props","baseStyle","isDark","theme","local","other","splitProps","show","setShow","createSignal","customColor","createMemo","color","css","generateTheme","dark","name","onClose","e","isFunction","Show","style","cx","type","bordered","disabled","icon","children","closeIcon","customElement","class","_","opt","el","element","mergeProps","childNodes","values","dispatchEvent","CustomEvent","detail","createEffect","replaceChildren","removeAttribute","createComponent"],"rangeMappings":";;;;","mappings":"wGAqJA,+CAAA,+CA7IO,yBACoB,wEACH,yBACM,2BACR,ieACe,0RA2BrC,SAASA,EAAIC,CAAe,EAC1B,GAAM,CAAEC,UAAAA,CAAS,CAAEC,OAAAA,CAAM,CAAE,CAAGC,SAAK,CAC7B,CAACC,EAAOC,EAAM,CAAGC,GAAAA,YAAU,EAACN,EAAO,CACvC,QACA,MACA,UACA,QACA,OACA,YACA,WACA,OACA,WACD,EACK,CAACO,EAAMC,EAAQ,CAAGC,GAAAA,cAAY,EAAC,CAAA,GAE/BC,EAAcC,GAAAA,YAAU,EAAC,IAC7B,AAAIP,EAAMQ,KAAK,CACNC,GAAAA,KAAG,CAAA,CAAC;;UAEP,EAAEC,GAAAA,eAAa,EAACV,EAAMQ,KAAK,CAAE,CAC3BG,KAAMb,IACNc,KAAM,YACR,GAAG;;MAEP,CAAC,CAEI,IAGT,SAASC,EAAQC,CAAQ,EACnBC,GAAAA,SAAU,EAACf,EAAMa,OAAO,GAC1Bb,EAAMa,OAAO,CAACC,GAEhBV,EAAQ,CAAA,EACV,CAEA,4BACGY,MAAI,oBAAOb,gEAEPN,uBACAS,uBACAW,OAAK,0BACLR,GAAAA,KAAG,EAACT,EAAMS,GAAG,oEAGVR,qBACGiB,GAAAA,IAAE,EACP,MACAlB,EAAMmB,IAAI,CACVnB,EAAMQ,KAAK,EAAI,aACfR,EAAMoB,QAAQ,EAAI,WAClBpB,EAAMqB,QAAQ,EAAI,2DAGnBL,MAAI,oBAAOhB,EAAMsB,IAAI,oDACAtB,EAAMsB,IAAI,gCAE/BrB,EAAMsB,QAAQ,4CACdP,MAAI,oBAAOhB,EAAMwB,SAAS,kEACIX,yBAC1Bb,AAAoB,CAAA,IAApBA,EAAMwB,SAAS,CAAY,IAAMxB,EAAMwB,SAAS,sBAM7D,CAIAC,GAAAA,eAAa,EACX,QACA,CACEC,MAAO,KAAK,EACZjB,IAAK,KAAK,EACVD,MAAO,KAAK,EACZc,KAAM,KAAK,EACXE,UAAW,KAAK,EAChBX,QAAS,KAAK,EACdO,SAAU,CAAA,EACVC,SAAU,KAAK,EACfF,KAAM,KAAK,CACb,EACA,CAACQ,EAAGC,KACF,IAAMC,EAAKD,EAAIE,OAAO,CAChBlC,EAAQmC,GAAAA,YAAU,EACtB,CACEtB,IAAKoB,EAAGpB,GAAG,CACXc,SAAU,IAAIM,EAAGG,UAAU,CAACC,MAAM,GAAG,CACrCpB,QAAQC,CAAQ,EACde,EAAGK,aAAa,CACd,IAAIC,YAAY,QAAS,CACvBC,OAAQtB,CACV,GAEJ,CACF,EACAa,GAQF,MALAU,GAAAA,cAAY,EAAC,KACXR,EAAGS,eAAe,GAClBT,EAAGU,eAAe,CAAC,MACrB,GAEOC,GAAAA,iBAAe,EAAC7C,EAAKC,EAC9B,SAGF,EAAeD"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/tag/style.ts"],"sourcesContent":["import { css } from '@moneko/css';\n\nexport const style = css`\n :host {\n display: inline-block;\n }\n\n .tag {\n display: flex;\n align-items: center;\n overflow: hidden;\n border-radius: calc(var(--border-radius) / 1.5);\n padding: 0 8px;\n font-size: var(--font-size-sm);\n color: var(--text-color);\n background-color: var(--component-bg);\n gap: 5px;\n line-height: 20px;\n\n a {\n text-decoration: unset;\n color: inherit;\n }\n }\n\n .icon {\n font-size: var(--font-size-sm);\n line-height: var(--font-size-sm);\n }\n\n .bordered {\n border: 1px solid var(--border-color);\n }\n\n .close {\n font-size: var(--font-size-sm);\n cursor: pointer;\n opacity: 0.5;\n transition: var(--transition-duration) var(--transition-timing-function) opacity;\n user-select: none;\n\n &:hover {\n opacity: 1;\n }\n }\n\n ${['primary', 'success', 'error', 'warning', 'tag-custom']\n .map(\n (s) =>\n `.${s} {--text-color: var(--${s}-color);--border-color: var(--${s}-secondary-bg);--component-bg: var(--${s}-details-bg);}`,\n )\n .join('')}\n\n .disabled {\n --text-color: var(--disable-color);\n --border-color: var(--disable-border);\n --component-bg: var(--disable-bg);\n }\n`;\n"],"names":["style","css","map","s","join"],"mappings":"kGAEaA,6CAAAA,qBAFO,eAEPA,EAAQC,GAAAA,KAAG,CAAA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4CvB,EAAE,CAAC,UAAW,UAAW,QAAS,UAAW,aAAa,CACvDC,GAAG,CACF,AAACC,GACC,CAAC,CAAC,EAAEA,EAAE,sBAAsB,EAAEA,EAAE,8BAA8B,EAAEA,EAAE,qCAAqC,EAAEA,EAAE,cAAc,CAAC,EAE7HC,IAAI,CAAC,IAAI;;;;;;;AAOd,CAAC"}
1
+ {"version":3,"sources":["../../components/tag/style.ts"],"sourcesContent":["import { css } from '@moneko/css';\n\nexport const style = css`\n :host {\n display: inline-block;\n }\n\n .tag {\n display: flex;\n align-items: center;\n overflow: hidden;\n border-radius: calc(var(--border-radius) / 1.5);\n padding: 0 8px;\n font-size: var(--font-size-sm);\n color: var(--text-color);\n background-color: var(--component-bg);\n gap: 5px;\n line-height: 20px;\n\n a {\n text-decoration: unset;\n color: inherit;\n }\n }\n\n .icon {\n font-size: var(--font-size-sm);\n line-height: var(--font-size-sm);\n }\n\n .bordered {\n border: 1px solid var(--border-color);\n }\n\n .close {\n font-size: var(--font-size-sm);\n cursor: pointer;\n opacity: 0.5;\n transition: var(--transition-duration) var(--transition-timing-function) opacity;\n user-select: none;\n\n &:hover {\n opacity: 1;\n }\n }\n\n ${['primary', 'success', 'error', 'warning', 'tag-custom']\n .map(\n (s) =>\n `.${s} {--text-color: var(--${s}-color);--border-color: var(--${s}-secondary-bg);--component-bg: var(--${s}-details-bg);}`,\n )\n .join('')}\n\n .disabled {\n --text-color: var(--disable-color);\n --border-color: var(--disable-border);\n --component-bg: var(--disable-bg);\n }\n`;\n"],"names":["style","css","map","s","join"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"kGAEaA,6CAAAA,qBAFO,eAEPA,EAAQC,GAAAA,KAAG,CAAA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4CvB,EAAE,CAAC,UAAW,UAAW,QAAS,UAAW,aAAa,CACvDC,GAAG,CACF,AAACC,GACC,CAAC,CAAC,EAAEA,EAAE,sBAAsB,EAAEA,EAAE,8BAA8B,EAAEA,EAAE,qCAAqC,EAAEA,EAAE,cAAc,CAAC,EAE7HC,IAAI,CAAC,IAAI;;;;;;;AAOd,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/theme/index.ts"],"sourcesContent":["import {\n type Accessor,\n type Setter,\n createEffect,\n createMemo,\n createRoot,\n createSignal,\n getOwner,\n} from 'solid-js';\nimport { colorParse, mixColor, toneColor } from '@moneko/common';\nimport { css } from '@moneko/css';\nexport { toneColor } from '@moneko/common';\n\n/** 生成主题色调\n * @param {string} base 基础颜色\n * @param {ThemeOption} option 配置项\n * @returns {Record<string, string>} 主题色调\n */\nexport function generateTheme(base: string, option: ThemeOption): Record<string, string> {\n const obj = toneColor(base, option?.dark);\n const textColor = colorParse(obj[5]);\n const baseColor = colorParse(base);\n\n return {\n [`--${option.name}-text`]: textColor.setAlpha(0.65).toRgbaString(),\n [`--${option.name}-secondary`]: textColor.setAlpha(0.45).toRgbaString(),\n [`--${option.name}-heading`]: obj[5],\n [`--${option.name}-active`]: obj[30],\n [`--${option.name}-color`]: obj[40],\n // [`--${option.name}-hover`]: obj[50],\n [`--${option.name}-hover`]: mixColor(obj[40], obj[30], 15),\n [`--${option.name}-secondary-bg`]: obj[70],\n [`--${option.name}-border`]: obj[80],\n // [`--${option.name}-outline`]: obj[90],\n [`--${option.name}-outline`]: mixColor(obj[90], obj[40], 5),\n [`--${option.name}-selection`]: obj[90],\n [`--${option.name}-notify-bg`]: colorParse(obj[90]).setAlpha(0.8).toRgbaString(),\n [`--on-${option.name}-selection`]: obj[10],\n [`--${option.name}-shadow`]: baseColor.setAlpha(0.12).toRgbaString(),\n [`--${option.name}-details-bg`]: obj[95],\n [`--${option.name}-component-bg`]: obj[98],\n [`--${option.name}-bg`]: obj[99],\n [`--on-${option.name}-bg`]: obj[5],\n [`--${option.name}-base-shadow`]: `0 3px 6px -4px ${baseColor\n .setAlpha(0.12)\n .toRgbaString()}, 0 6px 16px 0 ${baseColor\n .setAlpha(0.08)\n .toRgbaString()}, 0 9px 28px 8px ${baseColor.setAlpha(0.05).toRgbaString()}`,\n };\n}\n\n/** 颜色模式 */\nexport enum ColorScheme {\n /** 明亮 */\n light = 'light',\n /** 暗黑 */\n dark = 'dark',\n /** 跟随系统 */\n auto = 'auto',\n}\n\nfunction createTheme() {\n const preset =\n ColorScheme[localStorage.getItem('color-scheme') as keyof typeof ColorScheme] || 'auto';\n /** 检测 prefers-color-scheme 媒体查询是否为 light 模式 */\n const media = window.matchMedia('(prefers-color-scheme: dark)');\n const [scheme, setScheme] = createSignal<keyof typeof ColorScheme>(preset);\n const [isDark, setIsDark] = createSignal(media.matches);\n const [light, setLight] = createSignal({\n primary: '#5794ff',\n warning: '#faad14',\n error: '#ff4d4f',\n success: '#52c41a',\n });\n const [dark, setDark] = createSignal({\n primary: '#4d81dc',\n warning: '#bb8314',\n error: '#901c22',\n success: '#419418',\n });\n const primary = createMemo(() => generateTheme(light().primary, { name: 'primary' }));\n const warning = createMemo(() => generateTheme(light().warning, { name: 'warning' }));\n const success = createMemo(() => generateTheme(light().success, { name: 'success' }));\n const error = createMemo(() => generateTheme(light().error, { name: 'error' }));\n const lightCss = createMemo(() => {\n return css`\n :root,\n :host {\n ${primary()}\n ${warning()}\n ${success()}\n ${error()}\n --bg: transparent;\n --disable-color: rgb(0 0 0 / 25%);\n --disable-bg: rgb(0 0 0 / 4%);\n --disable-border: #d9d9d9;\n --border-color: var(--primary-border);\n --component-bg: var(--primary-bg);\n }\n `;\n });\n const darkPrimary = createMemo(() =>\n generateTheme(dark().primary, { name: 'primary', dark: true }),\n );\n const darkWarning = createMemo(() =>\n generateTheme(dark().warning, { name: 'warning', dark: true }),\n );\n const darkSuccess = createMemo(() =>\n generateTheme(dark().success, { name: 'success', dark: true }),\n );\n const darkError = createMemo(() => generateTheme(dark().error, { name: 'error', dark: true }));\n const darkCss = createMemo(() => {\n return css`\n :root,\n :host {\n ${darkPrimary()}\n ${darkWarning()}\n ${darkError()}\n ${darkSuccess()}\n --bg: #1c1c1c;\n --disable-color: rgb(255 255 255 / 25%);\n --disable-bg: rgb(255 255 255 / 8%);\n --disable-border: #424242;\n --border-color: #303030;\n --component-bg: #141414;\n --primary-shadow: rgb(0 0 0 / 12%);\n --primary-selection: rgb(255 255 255 / 5%);\n --primary-details-bg: rgb(255 255 255 / 3%);\n --primary-component-bg: #000;\n --modal-component-bg: rgb(30 30 30 / 80%);\n }\n `;\n });\n const baseCss = css`\n :root,\n :host {\n --font-size: 14px;\n --font-size-sm: 12px;\n --font-size-xs: 10px;\n --font-size-lg: 16px;\n --border-base: 1px solid var(--border-color);\n --border-radius: 8px;\n --text-color: var(--primary-text);\n --text-secondary: var(--primary-secondary);\n --text-heading: var(--primary-heading);\n --text-selection: var(--primary-selection);\n --box-shadow-base: var(--primary-base-shadow);\n --transition-duration: 0.3s;\n --mask-bg: rgb(0 0 0 / 5%);\n --modal-component-bg: rgb(255 255 255 / 80%);\n --modal-box-shadow: 0 5px 35px rgb(0 0 0 / 10%);\n --notification-box-shadow: 0 4px 16px rgb(0 0 0 / 5%);\n --transition-timing-function: cubic-bezier(0.645, 0.045, 0.355, 1);\n\n font-size: var(--font-size);\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial,\n 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol',\n 'Noto Color Emoji', Helvetica, Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans';\n color: var(--text-color, rgb(0 0 0 / 65%));\n line-height: 1.8;\n }\n\n [disabled]:not([disabled='false']) {\n cursor: not-allowed;\n color: var(--disable-color);\n }\n\n ::selection {\n background-color: var(--text-selection);\n }\n\n ::-webkit-scrollbar {\n inline-size: 4px;\n block-size: 4px;\n }\n `;\n\n function update(e: MediaQueryListEvent) {\n setIsDark(e.matches);\n }\n createEffect(() => {\n const _ = scheme();\n\n setIsDark(_ === 'dark' || (_ === 'auto' && media.matches));\n });\n const baseStyle = createMemo(() => baseCss + (isDark() ? darkCss() : lightCss()));\n\n createEffect(() => {\n if (scheme() === 'auto') {\n // 监听 prefers-color-scheme 媒体查询变化,自动更新颜色方案\n media.addEventListener('change', update);\n } else {\n media.removeEventListener('change', update);\n }\n localStorage.setItem('color-scheme', scheme());\n });\n\n return {\n baseStyle,\n dark,\n setDark,\n light,\n setLight,\n scheme,\n setScheme,\n isDark,\n };\n}\n\n/** API */\nexport interface Theme {\n /** 亮色样式的主要色 */\n light: Accessor<Color>;\n /** 设置亮色样式的主要色 */\n setLight: Setter<Color>;\n /** 黑色样式的主要色 */\n dark: Accessor<Color>;\n /** 设置黑色样式的主要色 */\n setDark: Setter<Color>;\n /** 颜色模式\n * @default 'auto'\n */\n scheme: Accessor<keyof typeof ColorScheme>;\n /** 设置颜色模式 */\n setScheme: Setter<keyof typeof ColorScheme>;\n /** 是否为色模式 */\n isDark: Accessor<boolean>;\n /** 基本都样式表, 响应 scheme 变化 */\n baseStyle: Accessor<string>;\n}\n\n/** 主要色 */\ninterface Color {\n /** 主要\n * @default '#5794ff'\n */\n primary: string;\n /** 警告\n * @default '#faad14'\n */\n warning: string;\n /** 错误\n * @default '#ff4d4f'\n */\n error: string;\n /** 成功\n * @default '#52c41a'\n */\n success: string;\n}\n\nexport interface ThemeOption {\n /** 是否采用暗色算法\n * @default false\n */\n dark?: boolean;\n /** 颜色名称 */\n name: string;\n}\n\nexport default createRoot<Theme>(createTheme, getOwner());\n"],"names":["ColorScheme","generateTheme","toneColor","base","option","obj","dark","textColor","colorParse","baseColor","name","setAlpha","toRgbaString","mixColor","createRoot","preset","localStorage","getItem","media","window","matchMedia","scheme","setScheme","createSignal","isDark","setIsDark","matches","light","setLight","primary","warning","error","success","setDark","createMemo","lightCss","css","darkPrimary","darkWarning","darkSuccess","darkError","darkCss","baseCss","update","e","createEffect","_","baseStyle","addEventListener","removeEventListener","setItem","getOwner"],"mappings":"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"}
1
+ {"version":3,"sources":["../../components/theme/index.ts"],"sourcesContent":["import {\n type Accessor,\n type Setter,\n createEffect,\n createMemo,\n createRoot,\n createSignal,\n getOwner,\n} from 'solid-js';\nimport { colorParse, mixColor, toneColor } from '@moneko/common';\nimport { css } from '@moneko/css';\nexport { toneColor } from '@moneko/common';\n\n/** 生成主题色调\n * @param {string} base 基础颜色\n * @param {ThemeOption} option 配置项\n * @returns {Record<string, string>} 主题色调\n */\nexport function generateTheme(base: string, option: ThemeOption): Record<string, string> {\n const obj = toneColor(base, option?.dark);\n const textColor = colorParse(obj[5]);\n const baseColor = colorParse(base);\n\n return {\n [`--${option.name}-text`]: textColor.setAlpha(0.65).toRgbaString(),\n [`--${option.name}-secondary`]: textColor.setAlpha(0.45).toRgbaString(),\n [`--${option.name}-heading`]: obj[5],\n [`--${option.name}-active`]: obj[30],\n [`--${option.name}-color`]: obj[40],\n // [`--${option.name}-hover`]: obj[50],\n [`--${option.name}-hover`]: mixColor(obj[40], obj[30], 15),\n [`--${option.name}-secondary-bg`]: obj[70],\n [`--${option.name}-border`]: obj[80],\n // [`--${option.name}-outline`]: obj[90],\n [`--${option.name}-outline`]: mixColor(obj[90], obj[40], 5),\n [`--${option.name}-selection`]: obj[90],\n [`--${option.name}-notify-bg`]: colorParse(obj[90]).setAlpha(0.8).toRgbaString(),\n [`--on-${option.name}-selection`]: obj[10],\n [`--${option.name}-shadow`]: baseColor.setAlpha(0.12).toRgbaString(),\n [`--${option.name}-details-bg`]: obj[95],\n [`--${option.name}-component-bg`]: obj[98],\n [`--${option.name}-bg`]: obj[99],\n [`--on-${option.name}-bg`]: obj[5],\n [`--${option.name}-base-shadow`]: `0 3px 6px -4px ${baseColor\n .setAlpha(0.12)\n .toRgbaString()}, 0 6px 16px 0 ${baseColor\n .setAlpha(0.08)\n .toRgbaString()}, 0 9px 28px 8px ${baseColor.setAlpha(0.05).toRgbaString()}`,\n };\n}\n\n/** 颜色模式 */\nexport enum ColorScheme {\n /** 明亮 */\n light = 'light',\n /** 暗黑 */\n dark = 'dark',\n /** 跟随系统 */\n auto = 'auto',\n}\n\nfunction createTheme() {\n const preset =\n ColorScheme[localStorage.getItem('color-scheme') as keyof typeof ColorScheme] || 'auto';\n /** 检测 prefers-color-scheme 媒体查询是否为 light 模式 */\n const media = window.matchMedia('(prefers-color-scheme: dark)');\n const [scheme, setScheme] = createSignal<keyof typeof ColorScheme>(preset);\n const [isDark, setIsDark] = createSignal(media.matches);\n const [light, setLight] = createSignal({\n primary: '#5794ff',\n warning: '#faad14',\n error: '#ff4d4f',\n success: '#52c41a',\n });\n const [dark, setDark] = createSignal({\n primary: '#4d81dc',\n warning: '#bb8314',\n error: '#901c22',\n success: '#419418',\n });\n const primary = createMemo(() => generateTheme(light().primary, { name: 'primary' }));\n const warning = createMemo(() => generateTheme(light().warning, { name: 'warning' }));\n const success = createMemo(() => generateTheme(light().success, { name: 'success' }));\n const error = createMemo(() => generateTheme(light().error, { name: 'error' }));\n const lightCss = createMemo(() => {\n return css`\n :root,\n :host {\n ${primary()}\n ${warning()}\n ${success()}\n ${error()}\n --bg: transparent;\n --disable-color: rgb(0 0 0 / 25%);\n --disable-bg: rgb(0 0 0 / 4%);\n --disable-border: #d9d9d9;\n --border-color: var(--primary-border);\n --component-bg: var(--primary-bg);\n }\n `;\n });\n const darkPrimary = createMemo(() =>\n generateTheme(dark().primary, { name: 'primary', dark: true }),\n );\n const darkWarning = createMemo(() =>\n generateTheme(dark().warning, { name: 'warning', dark: true }),\n );\n const darkSuccess = createMemo(() =>\n generateTheme(dark().success, { name: 'success', dark: true }),\n );\n const darkError = createMemo(() => generateTheme(dark().error, { name: 'error', dark: true }));\n const darkCss = createMemo(() => {\n return css`\n :root,\n :host {\n ${darkPrimary()}\n ${darkWarning()}\n ${darkError()}\n ${darkSuccess()}\n --bg: #1c1c1c;\n --disable-color: rgb(255 255 255 / 25%);\n --disable-bg: rgb(255 255 255 / 8%);\n --disable-border: #424242;\n --border-color: #303030;\n --component-bg: #141414;\n --primary-shadow: rgb(0 0 0 / 12%);\n --primary-selection: rgb(255 255 255 / 5%);\n --primary-details-bg: rgb(255 255 255 / 3%);\n --primary-component-bg: #000;\n --modal-component-bg: rgb(30 30 30 / 80%);\n }\n `;\n });\n const baseCss = css`\n :root,\n :host {\n --font-size: 14px;\n --font-size-sm: 12px;\n --font-size-xs: 10px;\n --font-size-lg: 16px;\n --border-base: 1px solid var(--border-color);\n --border-radius: 8px;\n --text-color: var(--primary-text);\n --text-secondary: var(--primary-secondary);\n --text-heading: var(--primary-heading);\n --text-selection: var(--primary-selection);\n --box-shadow-base: var(--primary-base-shadow);\n --transition-duration: 0.3s;\n --mask-bg: rgb(0 0 0 / 5%);\n --modal-component-bg: rgb(255 255 255 / 80%);\n --modal-box-shadow: 0 5px 35px rgb(0 0 0 / 10%);\n --notification-box-shadow: 0 4px 16px rgb(0 0 0 / 5%);\n --transition-timing-function: cubic-bezier(0.645, 0.045, 0.355, 1);\n\n font-size: var(--font-size);\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial,\n 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol',\n 'Noto Color Emoji', Helvetica, Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans';\n color: var(--text-color, rgb(0 0 0 / 65%));\n line-height: 1.8;\n }\n\n [disabled]:not([disabled='false']) {\n cursor: not-allowed;\n color: var(--disable-color);\n }\n\n ::selection {\n background-color: var(--text-selection);\n }\n\n ::-webkit-scrollbar {\n inline-size: 4px;\n block-size: 4px;\n }\n `;\n\n function update(e: MediaQueryListEvent) {\n setIsDark(e.matches);\n }\n createEffect(() => {\n const _ = scheme();\n\n setIsDark(_ === 'dark' || (_ === 'auto' && media.matches));\n });\n const baseStyle = createMemo(() => baseCss + (isDark() ? darkCss() : lightCss()));\n\n createEffect(() => {\n if (scheme() === 'auto') {\n // 监听 prefers-color-scheme 媒体查询变化,自动更新颜色方案\n media.addEventListener('change', update);\n } else {\n media.removeEventListener('change', update);\n }\n localStorage.setItem('color-scheme', scheme());\n });\n\n return {\n baseStyle,\n dark,\n setDark,\n light,\n setLight,\n scheme,\n setScheme,\n isDark,\n };\n}\n\n/** API */\nexport interface Theme {\n /** 亮色样式的主要色 */\n light: Accessor<Color>;\n /** 设置亮色样式的主要色 */\n setLight: Setter<Color>;\n /** 黑色样式的主要色 */\n dark: Accessor<Color>;\n /** 设置黑色样式的主要色 */\n setDark: Setter<Color>;\n /** 颜色模式\n * @default 'auto'\n */\n scheme: Accessor<keyof typeof ColorScheme>;\n /** 设置颜色模式 */\n setScheme: Setter<keyof typeof ColorScheme>;\n /** 是否为色模式 */\n isDark: Accessor<boolean>;\n /** 基本都样式表, 响应 scheme 变化 */\n baseStyle: Accessor<string>;\n}\n\n/** 主要色 */\ninterface Color {\n /** 主要\n * @default '#5794ff'\n */\n primary: string;\n /** 警告\n * @default '#faad14'\n */\n warning: string;\n /** 错误\n * @default '#ff4d4f'\n */\n error: string;\n /** 成功\n * @default '#52c41a'\n */\n success: string;\n}\n\nexport interface ThemeOption {\n /** 是否采用暗色算法\n * @default false\n */\n dark?: boolean;\n /** 颜色名称 */\n name: string;\n}\n\nexport default createRoot<Theme>(createTheme, getOwner());\n"],"names":["ColorScheme","generateTheme","toneColor","base","option","obj","dark","textColor","colorParse","baseColor","name","setAlpha","toRgbaString","mixColor","createRoot","preset","localStorage","getItem","media","window","matchMedia","scheme","setScheme","createSignal","isDark","setIsDark","matches","light","setLight","primary","warning","error","success","setDark","createMemo","lightCss","css","darkPrimary","darkWarning","darkSuccess","darkError","darkCss","baseCss","update","e","createEffect","_","baseStyle","addEventListener","removeEventListener","setItem","getOwner"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/tree/index.tsx"],"sourcesContent":["import { For, createEffect, createMemo, createSignal } from 'solid-js';\nimport { frameCallback, isFunction, isString } from '@moneko/common';\nimport { css, cx } from '@moneko/css';\nimport './register';\nimport { style } from './style';\nimport schema from '../from-schema';\nimport theme from '../theme';\nimport type {\n TreeData,\n TreeMultipleProps,\n TreeMultipleSchemaProps,\n TreeMultipleStringProps,\n TreeProps,\n TreeSchemaProps,\n TreeStack,\n TreeStringProps,\n} from './type';\n\nfunction Tree(\n _:\n | TreeProps\n | TreeMultipleProps\n | TreeMultipleSchemaProps\n | TreeSchemaProps\n | TreeMultipleStringProps\n | TreeStringProps,\n) {\n const sizeCnt = {\n small: 6,\n normal: 8,\n large: 10,\n };\n const { baseStyle } = theme;\n let el: HTMLUListElement | undefined;\n const [lines, setLines] = createSignal<string[]>([]);\n const [treeData, setTreeData] = createSignal<TreeData[]>([]);\n const rtl = createMemo(() => _.direction === 'rtl');\n const current = createMemo(() => {\n if (_.value !== void 0 && _.value !== null) {\n return Array.isArray(_.value) ? _.value : [_.value];\n }\n return [];\n });\n const path = Symbol('path');\n const pathEnd = Symbol('path-end');\n\n function countLineLen(tree: TreeData[], depth = 0) {\n const lastIdx = tree.length - 1;\n const last = tree[lastIdx];\n const frist = tree[0];\n let line: string[] = [];\n\n for (let i = 0, len = tree.length; i < len; i++) {\n const item = tree[i],\n isLast = i === lastIdx;\n\n if (i === 0 || isLast) {\n item[path] = frist.key + (tree.length === 1 ? '' : `>${last.key}`);\n if (isLast) {\n item[pathEnd] = '';\n }\n line.push(item[path]);\n }\n if (item.children) {\n line = line.concat(countLineLen(item.children, depth + 1));\n }\n }\n return line;\n }\n\n function parseTree(str: string): TreeData[] {\n const depthRegex = /[^\\s|`│├└]/;\n const rows = str.trim().split('\\n');\n const stack: TreeStack[] = [{ title: rows[0], key: rows[0] }];\n\n for (let i = 1; i < rows.length; i++) {\n const depth = rows[i].search(depthRegex);\n\n if (depth === -1) {\n continue;\n }\n const node: Partial<TreeData> = {\n title: rows[i].slice(depth + 3),\n depth,\n };\n\n while (stack.length && depth <= (stack[stack.length - 1].depth || 0)) {\n stack.pop();\n }\n if (!stack.length) {\n return [];\n }\n const parent = stack[stack.length - 1];\n\n if (!parent.children) {\n parent.children = [];\n }\n node.key = `${parent.key}-${node.title}-${depth}-${i}`;\n parent.children.push(node as TreeData);\n stack.push(node as TreeData);\n }\n\n return [stack[0]];\n }\n\n function handleChange(key: string, item: TreeData) {\n if (!_.readonly && isFunction(_.onChange)) {\n let _current = [...current()];\n\n if (_.multiple) {\n const idx = _current.indexOf(key);\n\n if (idx === -1) {\n _current.push(key);\n } else {\n _current.splice(idx, 1);\n }\n } else if (_.toggle && _current[0] === key) {\n _current = [];\n } else {\n _current = [key];\n }\n _.onChange(_.multiple ? _current : _current[0], item);\n }\n }\n function handleClick(e: MouseEvent, item: TreeData) {\n handleChange(item.key, item);\n _.onRowClick?.(e, item.key as never, item as TreeData<never>);\n }\n function renderItem(item: TreeData, title: JSX.Element, subTitle?: JSX.Element): JSX.Element[] {\n const row = _.renderRow?.(item, title, subTitle) || [title, subTitle];\n\n return rtl() ? row.reverse() : row;\n }\n\n function renderTreeRow(list: TreeData[], depth = 0): JSX.Element {\n return (\n <For each={list}>\n {(item) => {\n const { name, title, subTitle, key, children } = item;\n const _title = name === title || !name ? [title] : [name, title];\n\n return (\n <>\n <li\n class={cx(\n 'row',\n current().includes(key) && 'active',\n (_.readonly || !isFunction(_.onChange)) && 'non',\n )}\n onClick={(e) => handleClick(e, item)}\n onDblClick={(e) => _.onRowDoubleClick?.(e, key, item)}\n style={depth ? { '--depth': `${depth * 2}em` } : void 0}\n data-path-end={item[pathEnd]}\n data-path={item[path]}\n >\n {renderItem(\n item,\n <span class=\"title\">{(rtl() ? _title.reverse() : _title).join(': ')}</span>,\n subTitle && <span class=\"sub-title\">{subTitle}</span>,\n )}\n </li>\n {children ? renderTreeRow(children, depth + 1) : null}\n </>\n );\n }}\n </For>\n );\n }\n createEffect(() => {\n const data = _.fromSchema ? schema(_.data) : isString(_.data) ? parseTree(_.data) : _.data;\n\n setLines([...new Set(countLineLen(data))]);\n setTreeData(data);\n });\n\n createEffect(() => {\n const list = lines();\n const size = _.size || 'normal';\n\n frameCallback(() => {\n const len = list.length;\n\n if (el && len) {\n const prefixSize = sizeCnt[size];\n\n for (let i = 0; i < len; i++) {\n const al: NodeListOf<HTMLLIElement> = el.querySelectorAll(`li[data-path=\"${list[i]}\"]`);\n\n if (al.length) {\n const rect1 = al[0].getBoundingClientRect();\n let sideLen = rect1.height / 2 + prefixSize;\n\n if (al.length > 1) {\n const { bottom, height, top } = al[1].getBoundingClientRect();\n\n sideLen = i === 0 ? top - rect1.top : bottom - rect1.top - height / 2 + prefixSize;\n al[1].style.setProperty('--c', 'none');\n } else if (i === 0) {\n al[0].style.setProperty('--c', 'none');\n }\n if (al.length !== 1 || i !== 0) {\n al[0].style.setProperty('--line', `${Math.abs(sideLen)}px`);\n }\n }\n }\n }\n });\n });\n\n return (\n <>\n <style>\n {baseStyle()}\n {style}\n {css(_.css)}\n </style>\n <ul ref={el} class={cx('tree', _.size, _.class, rtl() && 'rtl')}>\n {renderTreeRow(treeData())}\n </ul>\n </>\n );\n}\n\nexport * from './type';\nexport default Tree;\n"],"names":["_","el","sizeCnt","small","normal","large","baseStyle","theme","lines","setLines","createSignal","treeData","setTreeData","rtl","createMemo","direction","current","value","Array","isArray","path","Symbol","pathEnd","createEffect","data","fromSchema","schema","isString","parseTree","str","depthRegex","rows","trim","split","stack","title","key","i","length","depth","search","node","slice","pop","parent","children","push","Set","countLineLen","tree","lastIdx","last","frist","line","len","item","isLast","concat","list","size","frameCallback","prefixSize","al","querySelectorAll","rect1","getBoundingClientRect","sideLen","height","bottom","top","style","setProperty","Math","abs","css","renderTreeRow","For","name","subTitle","_title","e","onRowDoubleClick","handleChange","readonly","isFunction","onChange","_current","multiple","idx","indexOf","splice","toggle","onRowClick","renderItem","row","renderRow","reverse","join","cx","includes","class"],"mappings":"kGAiOA,+CAAA,+CAjO4D,wBACR,iDAAA,8CAAA,0CAC5B,uBACjB,8BACe,uBACH,+BACD,8PA0NJ,6LACd,EA/MA,SACEA,CAMmB,MAQfC,EANJ,IAAMC,EAAU,CACdC,MAAO,EACPC,OAAQ,EACRC,MAAO,EACT,EACM,CAAEC,UAAAA,CAAS,CAAE,CAAGC,SAAK,CAErB,CAACC,EAAOC,EAAS,CAAGC,GAAAA,cAAY,EAAW,EAAE,EAC7C,CAACC,EAAUC,EAAY,CAAGF,GAAAA,cAAY,EAAa,EAAE,EACrDG,EAAMC,GAAAA,YAAU,EAAC,IAAMd,AAAgB,QAAhBA,EAAEe,SAAS,EAClCC,EAAUF,GAAAA,YAAU,EAAC,IACzB,AAAId,AAAY,KAAK,IAAjBA,EAAEiB,KAAK,EAAejB,AAAY,OAAZA,EAAEiB,KAAK,CACxBC,MAAMC,OAAO,CAACnB,EAAEiB,KAAK,EAAIjB,EAAEiB,KAAK,CAAG,CAACjB,EAAEiB,KAAK,CAAC,CAE9C,EAAE,EAELG,EAAOC,OAAO,QACdC,EAAUD,OAAO,YAsKvB,MAzCAE,GAAAA,cAAY,EAAC,KACX,IAAMC,EAAOxB,EAAEyB,UAAU,CAAGC,GAAAA,SAAM,EAAC1B,EAAEwB,IAAI,EAAIG,GAAAA,SAAQ,EAAC3B,EAAEwB,IAAI,EAAII,AApGlE,SAAmBC,CAAW,EAC5B,IAAMC,EAAa,aACbC,EAAOF,EAAIG,IAAI,GAAGC,KAAK,CAAC,MACxBC,EAAqB,CAAC,CAAEC,MAAOJ,CAAI,CAAC,EAAE,CAAEK,IAAKL,CAAI,CAAC,EAAE,AAAC,EAAE,CAE7D,IAAK,IAAIM,EAAI,EAAGA,EAAIN,EAAKO,MAAM,CAAED,IAAK,CACpC,IAAME,EAAQR,CAAI,CAACM,EAAE,CAACG,MAAM,CAACV,GAE7B,GAAIS,AAAU,KAAVA,EACF,SAEF,IAAME,EAA0B,CAC9BN,MAAOJ,CAAI,CAACM,EAAE,CAACK,KAAK,CAACH,EAAQ,GAC7BA,MAAAA,CACF,EAEA,KAAOL,EAAMI,MAAM,EAAIC,GAAUL,CAAAA,CAAK,CAACA,EAAMI,MAAM,CAAG,EAAE,CAACC,KAAK,EAAI,CAAA,GAChEL,EAAMS,GAAG,GAEX,GAAI,CAACT,EAAMI,MAAM,CACf,MAAO,EAAE,CAEX,IAAMM,EAASV,CAAK,CAACA,EAAMI,MAAM,CAAG,EAAE,AAEjCM,CAAAA,EAAOC,QAAQ,EAClBD,CAAAA,EAAOC,QAAQ,CAAG,EAAE,AAAD,EAErBJ,EAAKL,GAAG,CAAG,CAAC,EAAEQ,EAAOR,GAAG,CAAC,CAAC,EAAEK,EAAKN,KAAK,CAAC,CAAC,EAAEI,EAAM,CAAC,EAAEF,EAAE,CAAC,CACtDO,EAAOC,QAAQ,CAACC,IAAI,CAACL,GACrBP,EAAMY,IAAI,CAACL,EACb,CAEA,MAAO,CAACP,CAAK,CAAC,EAAE,CAAC,AACnB,EAmE4ElC,EAAEwB,IAAI,EAAIxB,EAAEwB,IAAI,CAE1Ff,EAAS,IAAI,IAAIsC,IAAIC,AA9HvB,SAASA,EAAaC,CAAgB,CAAEV,EAAQ,CAAC,EAC/C,IAAMW,EAAUD,EAAKX,MAAM,CAAG,EACxBa,EAAOF,CAAI,CAACC,EAAQ,CACpBE,EAAQH,CAAI,CAAC,EAAE,CACjBI,EAAiB,EAAE,CAEvB,IAAK,IAAIhB,EAAI,EAAGiB,EAAML,EAAKX,MAAM,CAAED,EAAIiB,EAAKjB,IAAK,CAC/C,IAAMkB,EAAON,CAAI,CAACZ,EAAE,CAClBmB,EAASnB,IAAMa,EAEbb,CAAAA,AAAM,IAANA,GAAWmB,CAAK,IAClBD,CAAI,CAACnC,EAAK,CAAGgC,EAAMhB,GAAG,CAAIa,CAAAA,AAAgB,IAAhBA,EAAKX,MAAM,CAAS,GAAK,CAAC,CAAC,EAAEa,EAAKf,GAAG,CAAC,CAAC,AAAD,EAC5DoB,GACFD,CAAAA,CAAI,CAACjC,EAAQ,CAAG,EAAC,EAEnB+B,EAAKP,IAAI,CAACS,CAAI,CAACnC,EAAK,GAElBmC,EAAKV,QAAQ,EACfQ,CAAAA,EAAOA,EAAKI,MAAM,CAACT,EAAaO,EAAKV,QAAQ,CAAEN,EAAQ,GAAE,CAE7D,CACA,OAAOc,CACT,EAwGoC7B,IAAO,EACzCZ,EAAYY,EACd,GAEAD,GAAAA,cAAY,EAAC,KACX,IAAMmC,EAAOlD,IACPmD,EAAO3D,EAAE2D,IAAI,EAAI,SAEvBC,GAAAA,SAAa,EAAC,KACZ,IAAMN,EAAMI,EAAKpB,MAAM,CAEvB,GAAIrC,GAAMqD,EAAK,CACb,IAAMO,EAAa3D,CAAO,CAACyD,EAAK,CAEhC,IAAK,IAAItB,EAAI,EAAGA,EAAIiB,EAAKjB,IAAK,CAC5B,IAAMyB,EAAgC7D,EAAG8D,gBAAgB,CAAC,CAAC,cAAc,EAAEL,CAAI,CAACrB,EAAE,CAAC,EAAE,CAAC,EAEtF,GAAIyB,EAAGxB,MAAM,CAAE,CACb,IAAM0B,EAAQF,CAAE,CAAC,EAAE,CAACG,qBAAqB,GACrCC,EAAUF,EAAMG,MAAM,CAAG,EAAIN,EAEjC,GAAIC,EAAGxB,MAAM,CAAG,EAAG,CACjB,GAAM,CAAE8B,OAAAA,CAAM,CAAED,OAAAA,CAAM,CAAEE,IAAAA,CAAG,CAAE,CAAGP,CAAE,CAAC,EAAE,CAACG,qBAAqB,GAE3DC,EAAU7B,AAAM,IAANA,EAAUgC,EAAML,EAAMK,GAAG,CAAGD,EAASJ,EAAMK,GAAG,CAAGF,EAAS,EAAIN,EACxEC,CAAE,CAAC,EAAE,CAACQ,KAAK,CAACC,WAAW,CAAC,MAAO,OACjC,MAAiB,IAANlC,GACTyB,CAAE,CAAC,EAAE,CAACQ,KAAK,CAACC,WAAW,CAAC,MAAO,QAE7BT,CAAAA,AAAc,IAAdA,EAAGxB,MAAM,EAAUD,AAAM,IAANA,CAAM,GAC3ByB,CAAE,CAAC,EAAE,CAACQ,KAAK,CAACC,WAAW,CAAC,SAAU,CAAC,EAAEC,KAAKC,GAAG,CAACP,GAAS,EAAE,CAAC,CAE9D,CACF,CACF,CACF,EACF,yCAKO5D,uBACAgE,OAAK,0BACLI,GAAAA,KAAG,EAAC1E,EAAE0E,GAAG,gCAEHzE,4CAAAA,uBACN0E,AAnFP,CAAA,SAASA,EAAcjB,CAAgB,CAAEnB,EAAQ,CAAC,EAChD,4BACGqC,KAAG,OAAOlB,WACR,AAACH,IACA,GAAM,CAAEsB,KAAAA,CAAI,CAAE1C,MAAAA,CAAK,CAAE2C,SAAAA,CAAQ,CAAE1C,IAAAA,CAAG,CAAES,SAAAA,CAAQ,CAAE,CAAGU,EAC3CwB,EAASF,IAAS1C,GAAU0C,EAAiB,CAACA,EAAM1C,EAAM,CAAvB,CAACA,EAAM,CAEhD,2CASkB,AAAC6C,GAAMhF,EAAEiF,gBAAgB,GAAGD,EAAG5C,EAAKmB,aADvC,AAACyB,IAxBtBE,AArBF,CAAA,SAAsB9C,CAAW,CAAEmB,CAAc,EAC/C,GAAI,CAACvD,EAAEmF,QAAQ,EAAIC,GAAAA,SAAU,EAACpF,EAAEqF,QAAQ,EAAG,CACzC,IAAIC,EAAW,IAAItE,IAAU,CAE7B,GAAIhB,EAAEuF,QAAQ,CAAE,CACd,IAAMC,EAAMF,EAASG,OAAO,CAACrD,EAEzBoD,AAAQ,CAAA,KAARA,EACFF,EAASxC,IAAI,CAACV,GAEdkD,EAASI,MAAM,CAACF,EAAK,EAEzB,MACEF,EADStF,EAAE2F,MAAM,EAAIL,CAAQ,CAAC,EAAE,GAAKlD,EAC1B,EAAE,CAEF,CAACA,EAAI,CAElBpC,EAAEqF,QAAQ,CAACrF,EAAEuF,QAAQ,CAAGD,EAAWA,CAAQ,CAAC,EAAE,CAAE/B,EAClD,CACF,CAAA,EAEeA,AAwB8BA,EAxBzBnB,GAAG,CAwBsBmB,GAvB3CvD,EAAE4F,UAAU,GAuB4BZ,EAvBtBzB,AAuByBA,EAvBpBnB,GAAG,CAuBiBmB,uBAM9BsC,AA3Bf,CAAA,SAAoBtC,CAAc,CAAEpB,CAAkB,CAAE2C,CAAsB,EAC5E,IAAMgB,EAAM9F,EAAE+F,SAAS,GAAGxC,EAAMpB,EAAO2C,IAAa,CAAC3C,EAAO2C,EAAS,CAErE,OAAOjE,IAAQiF,EAAIE,OAAO,GAAKF,CACjC,CAAA,EAwBgBvC,2CACqB,AAAC1C,CAAAA,IAAQkE,EAAOiB,OAAO,GAAKjB,CAAK,EAAGkB,IAAI,CAAC,aAC9DnB,wCAAqCA,kCAdhCoB,GAAAA,IAAE,EACP,MACAlF,IAAUmF,QAAQ,CAAC/D,IAAQ,SAC3B,AAACpC,CAAAA,EAAEmF,QAAQ,EAAI,CAACC,GAAAA,SAAU,EAACpF,EAAEqF,QAAQ,CAAA,GAAM,SAItC9C,EAAQ,CAAE,UAAW,CAAC,EAAEA,AAAQ,EAARA,EAAU,EAAE,CAAC,AAAC,EAAI,KAAK,IACvCgB,CAAI,CAACjC,EAAQ,GACjBiC,CAAI,CAACnC,EAAK,yQAQtByB,EAAW8B,EAAc9B,EAAUN,EAAQ,GAAK,MAGvD,GAGN,CAAA,EAkDqB5B,yCADGuF,GAAAA,IAAE,EAAC,OAAQlG,EAAE2D,IAAI,CAAE3D,EAAEoG,KAAK,CAAEvF,KAAS,eAK/D"}
1
+ {"version":3,"sources":["../../components/tree/index.tsx"],"sourcesContent":["import { For, createEffect, createMemo, createSignal } from 'solid-js';\nimport { frameCallback, isFunction, isString } from '@moneko/common';\nimport { css, cx } from '@moneko/css';\nimport './register';\nimport { style } from './style';\nimport schema from '../from-schema';\nimport theme from '../theme';\nimport type {\n TreeData,\n TreeMultipleProps,\n TreeMultipleSchemaProps,\n TreeMultipleStringProps,\n TreeProps,\n TreeSchemaProps,\n TreeStack,\n TreeStringProps,\n} from './type';\n\nfunction Tree(\n _:\n | TreeProps\n | TreeMultipleProps\n | TreeMultipleSchemaProps\n | TreeSchemaProps\n | TreeMultipleStringProps\n | TreeStringProps,\n) {\n const sizeCnt = {\n small: 6,\n normal: 8,\n large: 10,\n };\n const { baseStyle } = theme;\n let el: HTMLUListElement | undefined;\n const [lines, setLines] = createSignal<string[]>([]);\n const [treeData, setTreeData] = createSignal<TreeData[]>([]);\n const rtl = createMemo(() => _.direction === 'rtl');\n const current = createMemo(() => {\n if (_.value !== void 0 && _.value !== null) {\n return Array.isArray(_.value) ? _.value : [_.value];\n }\n return [];\n });\n const path = Symbol('path');\n const pathEnd = Symbol('path-end');\n\n function countLineLen(tree: TreeData[], depth = 0) {\n const lastIdx = tree.length - 1;\n const last = tree[lastIdx];\n const frist = tree[0];\n let line: string[] = [];\n\n for (let i = 0, len = tree.length; i < len; i++) {\n const item = tree[i],\n isLast = i === lastIdx;\n\n if (i === 0 || isLast) {\n item[path] = frist.key + (tree.length === 1 ? '' : `>${last.key}`);\n if (isLast) {\n item[pathEnd] = '';\n }\n line.push(item[path]);\n }\n if (item.children) {\n line = line.concat(countLineLen(item.children, depth + 1));\n }\n }\n return line;\n }\n\n function parseTree(str: string): TreeData[] {\n const depthRegex = /[^\\s|`│├└]/;\n const rows = str.trim().split('\\n');\n const stack: TreeStack[] = [{ title: rows[0], key: rows[0] }];\n\n for (let i = 1; i < rows.length; i++) {\n const depth = rows[i].search(depthRegex);\n\n if (depth === -1) {\n continue;\n }\n const node: Partial<TreeData> = {\n title: rows[i].slice(depth + 3),\n depth,\n };\n\n while (stack.length && depth <= (stack[stack.length - 1].depth || 0)) {\n stack.pop();\n }\n if (!stack.length) {\n return [];\n }\n const parent = stack[stack.length - 1];\n\n if (!parent.children) {\n parent.children = [];\n }\n node.key = `${parent.key}-${node.title}-${depth}-${i}`;\n parent.children.push(node as TreeData);\n stack.push(node as TreeData);\n }\n\n return [stack[0]];\n }\n\n function handleChange(key: string, item: TreeData) {\n if (!_.readonly && isFunction(_.onChange)) {\n let _current = [...current()];\n\n if (_.multiple) {\n const idx = _current.indexOf(key);\n\n if (idx === -1) {\n _current.push(key);\n } else {\n _current.splice(idx, 1);\n }\n } else if (_.toggle && _current[0] === key) {\n _current = [];\n } else {\n _current = [key];\n }\n _.onChange(_.multiple ? _current : _current[0], item);\n }\n }\n function handleClick(e: MouseEvent, item: TreeData) {\n handleChange(item.key, item);\n _.onRowClick?.(e, item.key as never, item as TreeData<never>);\n }\n function renderItem(item: TreeData, title: JSX.Element, subTitle?: JSX.Element): JSX.Element[] {\n const row = _.renderRow?.(item, title, subTitle) || [title, subTitle];\n\n return rtl() ? row.reverse() : row;\n }\n\n function renderTreeRow(list: TreeData[], depth = 0): JSX.Element {\n return (\n <For each={list}>\n {(item) => {\n const { name, title, subTitle, key, children } = item;\n const _title = name === title || !name ? [title] : [name, title];\n\n return (\n <>\n <li\n class={cx(\n 'row',\n current().includes(key) && 'active',\n (_.readonly || !isFunction(_.onChange)) && 'non',\n )}\n onClick={(e) => handleClick(e, item)}\n onDblClick={(e) => _.onRowDoubleClick?.(e, key, item)}\n style={depth ? { '--depth': `${depth * 2}em` } : void 0}\n data-path-end={item[pathEnd]}\n data-path={item[path]}\n >\n {renderItem(\n item,\n <span class=\"title\">{(rtl() ? _title.reverse() : _title).join(': ')}</span>,\n subTitle && <span class=\"sub-title\">{subTitle}</span>,\n )}\n </li>\n {children ? renderTreeRow(children, depth + 1) : null}\n </>\n );\n }}\n </For>\n );\n }\n createEffect(() => {\n const data = _.fromSchema ? schema(_.data) : isString(_.data) ? parseTree(_.data) : _.data;\n\n setLines([...new Set(countLineLen(data))]);\n setTreeData(data);\n });\n\n createEffect(() => {\n const list = lines();\n const size = _.size || 'normal';\n\n frameCallback(() => {\n const len = list.length;\n\n if (el && len) {\n const prefixSize = sizeCnt[size];\n\n for (let i = 0; i < len; i++) {\n const al: NodeListOf<HTMLLIElement> = el.querySelectorAll(`li[data-path=\"${list[i]}\"]`);\n\n if (al.length) {\n const rect1 = al[0].getBoundingClientRect();\n let sideLen = rect1.height / 2 + prefixSize;\n\n if (al.length > 1) {\n const { bottom, height, top } = al[1].getBoundingClientRect();\n\n sideLen = i === 0 ? top - rect1.top : bottom - rect1.top - height / 2 + prefixSize;\n al[1].style.setProperty('--c', 'none');\n } else if (i === 0) {\n al[0].style.setProperty('--c', 'none');\n }\n if (al.length !== 1 || i !== 0) {\n al[0].style.setProperty('--line', `${Math.abs(sideLen)}px`);\n }\n }\n }\n }\n });\n });\n\n return (\n <>\n <style>\n {baseStyle()}\n {style}\n {css(_.css)}\n </style>\n <ul ref={el} class={cx('tree', _.size, _.class, rtl() && 'rtl')}>\n {renderTreeRow(treeData())}\n </ul>\n </>\n );\n}\n\nexport * from './type';\nexport default Tree;\n"],"names":["_","el","sizeCnt","small","normal","large","baseStyle","theme","lines","setLines","createSignal","treeData","setTreeData","rtl","createMemo","direction","current","value","Array","isArray","path","Symbol","pathEnd","createEffect","data","fromSchema","schema","isString","parseTree","str","depthRegex","rows","trim","split","stack","title","key","i","length","depth","search","node","slice","pop","parent","children","push","Set","countLineLen","tree","lastIdx","last","frist","line","len","item","isLast","concat","list","size","frameCallback","prefixSize","al","querySelectorAll","rect1","getBoundingClientRect","sideLen","height","bottom","top","style","setProperty","Math","abs","css","renderTreeRow","For","name","subTitle","_title","e","onRowDoubleClick","handleChange","readonly","isFunction","onChange","_current","multiple","idx","indexOf","splice","toggle","onRowClick","renderItem","row","renderRow","reverse","join","cx","includes","class"],"rangeMappings":"","mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/tree/register.ts"],"sourcesContent":["import { createComponent, createEffect, mergeProps } from 'solid-js';\nimport { customElement } from 'solid-element';\nimport Tree from './index';\nimport type { TreeData, TreeProps } from './type';\n\ncustomElement<TreeProps>(\n 'n-tree',\n {\n fromSchema: void 0,\n size: void 0,\n data: [],\n multiple: void 0,\n value: void 0,\n onChange: void 0,\n class: void 0,\n css: void 0,\n readonly: void 0,\n toggle: void 0,\n direction: void 0,\n onRowClick: void 0,\n onRowDoubleClick: void 0,\n renderRow: void 0,\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n data: el.data,\n value: el.value,\n multiple: el.multiple,\n fromSchema: el.fromSchema,\n size: el.size,\n css: el.css,\n readonly: el.readonly,\n toggle: el.toggle,\n direction: el.direction,\n onChange(key: string, item: TreeData) {\n el.dispatchEvent(\n new CustomEvent('change', {\n detail: [key, item],\n }),\n );\n },\n onRowClick(e: MouseEvent, key: string, item: TreeData) {\n el.dispatchEvent(\n new CustomEvent('rowclick', {\n detail: [e, key, item],\n }),\n );\n },\n onRowDoubleClick(e: MouseEvent, key: string, item: TreeData) {\n el.dispatchEvent(\n new CustomEvent('rowdoubleclick', {\n detail: [e, key, item],\n }),\n );\n },\n },\n _,\n );\n\n createEffect(() => {\n el.removeAttribute('css');\n el.removeAttribute('data');\n });\n return createComponent(Tree, props);\n },\n);\n"],"names":["customElement","fromSchema","size","data","multiple","value","onChange","class","css","readonly","toggle","direction","onRowClick","onRowDoubleClick","renderRow","_","opt","el","element","props","mergeProps","key","item","dispatchEvent","CustomEvent","detail","e","createEffect","removeAttribute","createComponent","Tree"],"mappings":"0FAA0D,sBAC5B,8BACb,wCAGjBA,GAAAA,eAAa,EACX,SACA,CACEC,WAAY,KAAK,EACjBC,KAAM,KAAK,EACXC,KAAM,EAAE,CACRC,SAAU,KAAK,EACfC,MAAO,KAAK,EACZC,SAAU,KAAK,EACfC,MAAO,KAAK,EACZC,IAAK,KAAK,EACVC,SAAU,KAAK,EACfC,OAAQ,KAAK,EACbC,UAAW,KAAK,EAChBC,WAAY,KAAK,EACjBC,iBAAkB,KAAK,EACvBC,UAAW,KAAK,CAClB,EACA,CAACC,EAAGC,KACF,IAAMC,EAAKD,EAAIE,OAAO,CAChBC,EAAQC,GAAAA,YAAU,EACtB,CACEjB,KAAMc,EAAGd,IAAI,CACbE,MAAOY,EAAGZ,KAAK,CACfD,SAAUa,EAAGb,QAAQ,CACrBH,WAAYgB,EAAGhB,UAAU,CACzBC,KAAMe,EAAGf,IAAI,CACbM,IAAKS,EAAGT,GAAG,CACXC,SAAUQ,EAAGR,QAAQ,CACrBC,OAAQO,EAAGP,MAAM,CACjBC,UAAWM,EAAGN,SAAS,CACvBL,SAASe,CAAW,CAAEC,CAAc,EAClCL,EAAGM,aAAa,CACd,IAAIC,YAAY,SAAU,CACxBC,OAAQ,CAACJ,EAAKC,EAAK,AACrB,GAEJ,EACAV,WAAWc,CAAa,CAAEL,CAAW,CAAEC,CAAc,EACnDL,EAAGM,aAAa,CACd,IAAIC,YAAY,WAAY,CAC1BC,OAAQ,CAACC,EAAGL,EAAKC,EAAK,AACxB,GAEJ,EACAT,iBAAiBa,CAAa,CAAEL,CAAW,CAAEC,CAAc,EACzDL,EAAGM,aAAa,CACd,IAAIC,YAAY,iBAAkB,CAChCC,OAAQ,CAACC,EAAGL,EAAKC,EAAK,AACxB,GAEJ,CACF,EACAP,GAOF,MAJAY,GAAAA,cAAY,EAAC,KACXV,EAAGW,eAAe,CAAC,OACnBX,EAAGW,eAAe,CAAC,OACrB,GACOC,GAAAA,iBAAe,EAACC,SAAI,CAAEX,EAC/B"}
1
+ {"version":3,"sources":["../../components/tree/register.ts"],"sourcesContent":["import { createComponent, createEffect, mergeProps } from 'solid-js';\nimport { customElement } from 'solid-element';\nimport Tree from './index';\nimport type { TreeData, TreeProps } from './type';\n\ncustomElement<TreeProps>(\n 'n-tree',\n {\n fromSchema: void 0,\n size: void 0,\n data: [],\n multiple: void 0,\n value: void 0,\n onChange: void 0,\n class: void 0,\n css: void 0,\n readonly: void 0,\n toggle: void 0,\n direction: void 0,\n onRowClick: void 0,\n onRowDoubleClick: void 0,\n renderRow: void 0,\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n data: el.data,\n value: el.value,\n multiple: el.multiple,\n fromSchema: el.fromSchema,\n size: el.size,\n css: el.css,\n readonly: el.readonly,\n toggle: el.toggle,\n direction: el.direction,\n onChange(key: string, item: TreeData) {\n el.dispatchEvent(\n new CustomEvent('change', {\n detail: [key, item],\n }),\n );\n },\n onRowClick(e: MouseEvent, key: string, item: TreeData) {\n el.dispatchEvent(\n new CustomEvent('rowclick', {\n detail: [e, key, item],\n }),\n );\n },\n onRowDoubleClick(e: MouseEvent, key: string, item: TreeData) {\n el.dispatchEvent(\n new CustomEvent('rowdoubleclick', {\n detail: [e, key, item],\n }),\n );\n },\n },\n _,\n );\n\n createEffect(() => {\n el.removeAttribute('css');\n el.removeAttribute('data');\n });\n return createComponent(Tree, props);\n },\n);\n"],"names":["customElement","fromSchema","size","data","multiple","value","onChange","class","css","readonly","toggle","direction","onRowClick","onRowDoubleClick","renderRow","_","opt","el","element","props","mergeProps","key","item","dispatchEvent","CustomEvent","detail","e","createEffect","removeAttribute","createComponent","Tree"],"rangeMappings":"","mappings":"0FAA0D,sBAC5B,8BACb,wCAGjBA,GAAAA,eAAa,EACX,SACA,CACEC,WAAY,KAAK,EACjBC,KAAM,KAAK,EACXC,KAAM,EAAE,CACRC,SAAU,KAAK,EACfC,MAAO,KAAK,EACZC,SAAU,KAAK,EACfC,MAAO,KAAK,EACZC,IAAK,KAAK,EACVC,SAAU,KAAK,EACfC,OAAQ,KAAK,EACbC,UAAW,KAAK,EAChBC,WAAY,KAAK,EACjBC,iBAAkB,KAAK,EACvBC,UAAW,KAAK,CAClB,EACA,CAACC,EAAGC,KACF,IAAMC,EAAKD,EAAIE,OAAO,CAChBC,EAAQC,GAAAA,YAAU,EACtB,CACEjB,KAAMc,EAAGd,IAAI,CACbE,MAAOY,EAAGZ,KAAK,CACfD,SAAUa,EAAGb,QAAQ,CACrBH,WAAYgB,EAAGhB,UAAU,CACzBC,KAAMe,EAAGf,IAAI,CACbM,IAAKS,EAAGT,GAAG,CACXC,SAAUQ,EAAGR,QAAQ,CACrBC,OAAQO,EAAGP,MAAM,CACjBC,UAAWM,EAAGN,SAAS,CACvBL,SAASe,CAAW,CAAEC,CAAc,EAClCL,EAAGM,aAAa,CACd,IAAIC,YAAY,SAAU,CACxBC,OAAQ,CAACJ,EAAKC,EAAK,AACrB,GAEJ,EACAV,WAAWc,CAAa,CAAEL,CAAW,CAAEC,CAAc,EACnDL,EAAGM,aAAa,CACd,IAAIC,YAAY,WAAY,CAC1BC,OAAQ,CAACC,EAAGL,EAAKC,EAAK,AACxB,GAEJ,EACAT,iBAAiBa,CAAa,CAAEL,CAAW,CAAEC,CAAc,EACzDL,EAAGM,aAAa,CACd,IAAIC,YAAY,iBAAkB,CAChCC,OAAQ,CAACC,EAAGL,EAAKC,EAAK,AACxB,GAEJ,CACF,EACAP,GAOF,MAJAY,GAAAA,cAAY,EAAC,KACXV,EAAGW,eAAe,CAAC,OACnBX,EAAGW,eAAe,CAAC,OACrB,GACOC,GAAAA,iBAAe,EAACC,SAAI,CAAEX,EAC/B"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/tree/style.ts"],"sourcesContent":["import { css } from '@moneko/css';\n\nexport const style = css`\n .tree {\n --size: 8px;\n\n padding-inline-start: 2em;\n inline-size: 100%;\n box-sizing: border-box;\n }\n\n .row {\n position: relative;\n z-index: 0;\n display: flex;\n align-items: baseline;\n border-radius: var(--border-radius);\n padding: 2px 10px;\n color: var(--text-color);\n background-color: var(--component-bg);\n list-style: none;\n box-shadow: 0 0 0 1px var(--border-color);\n margin-inline-start: var(--depth);\n margin-block-end: var(--size);\n cursor: pointer;\n box-sizing: border-box;\n min-inline-size: 160px;\n inline-size: fit-content;\n }\n\n .row.non {\n cursor: auto;\n }\n\n .row::before,\n .row::after {\n position: absolute;\n pointer-events: none;\n z-index: -1;\n inset-inline-start: 0;\n transition-property: border-color;\n }\n\n .row:not(:first-of-type, :last-of-type, [data-path-end])::before {\n content: '';\n inset-inline-start: -1em;\n inset-block-start: 50%;\n inline-size: 1em;\n block-size: 100%;\n border-block-start: 1px solid var(--border-color);\n box-sizing: border-box;\n }\n\n .row[data-path] {\n --r: 0 0 0 var(--border-radius);\n --c: '';\n\n &::after {\n border-style: solid;\n border-width: 0 0 1px 1px;\n border-color: var(--border-color);\n border-radius: var(--r);\n content: var(--c);\n inline-size: 1em;\n inset-block-start: calc(var(--size) * -1);\n inset-inline-start: -1em;\n block-size: var(--line);\n box-sizing: border-box;\n }\n }\n\n .row:first-of-type {\n --r: var(--border-radius) 0 0 var(--border-radius);\n\n &[data-path]::after {\n border-width: 1px 0 1px 1px;\n inset-block-start: 15px;\n }\n }\n\n .row:last-of-type {\n margin-block-end: 0;\n }\n\n .title {\n font-size: 14px;\n font-weight: normal;\n }\n\n .sub-title {\n padding: 0 var(--size);\n font-size: 10px;\n color: var(--text-secondary);\n font-style: italic;\n text-transform: capitalize;\n opacity: 0.5;\n }\n\n .row.active {\n color: var(--primary-color);\n background-color: var(--primary-selection);\n box-shadow: 0 0 0 1px var(--primary-border);\n text-shadow: 2px 2px 2px var(--primary-outline);\n }\n\n .rtl {\n direction: rtl;\n }\n\n .rtl .row {\n flex-direction: row-reverse;\n justify-content: flex-end;\n\n &::before,\n &::after {\n transform: scaleX(-1);\n }\n }\n\n .normal {\n --size: 8px;\n }\n\n .small {\n --size: 6px;\n }\n\n .small .row {\n padding: 1px 9px;\n\n &:first-of-type[data-path]::after {\n inset-block-start: 12px;\n }\n }\n\n .small .title {\n font-size: 13px;\n }\n\n .small .sub-title {\n padding: 0 4px;\n font-size: 9px;\n }\n\n .large {\n --size: 10px;\n }\n\n .large .row {\n padding: 3px 12px;\n\n &:first-of-type[data-path]::after {\n inset-block-start: 17px;\n }\n }\n\n .large .title {\n font-size: 15px;\n }\n\n .large .sub-title {\n padding: 0 10px;\n font-size: 12px;\n }\n`;\n"],"names":["style","css"],"mappings":"kGAEaA,6CAAAA,qBAFO,eAEPA,EAAQC,GAAAA,KAAG,CAAA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkKzB,CAAC"}
1
+ {"version":3,"sources":["../../components/tree/style.ts"],"sourcesContent":["import { css } from '@moneko/css';\n\nexport const style = css`\n .tree {\n --size: 8px;\n\n padding-inline-start: 2em;\n inline-size: 100%;\n box-sizing: border-box;\n }\n\n .row {\n position: relative;\n z-index: 0;\n display: flex;\n align-items: baseline;\n border-radius: var(--border-radius);\n padding: 2px 10px;\n color: var(--text-color);\n background-color: var(--component-bg);\n list-style: none;\n box-shadow: 0 0 0 1px var(--border-color);\n margin-inline-start: var(--depth);\n margin-block-end: var(--size);\n cursor: pointer;\n box-sizing: border-box;\n min-inline-size: 160px;\n inline-size: fit-content;\n }\n\n .row.non {\n cursor: auto;\n }\n\n .row::before,\n .row::after {\n position: absolute;\n pointer-events: none;\n z-index: -1;\n inset-inline-start: 0;\n transition-property: border-color;\n }\n\n .row:not(:first-of-type, :last-of-type, [data-path-end])::before {\n content: '';\n inset-inline-start: -1em;\n inset-block-start: 50%;\n inline-size: 1em;\n block-size: 100%;\n border-block-start: 1px solid var(--border-color);\n box-sizing: border-box;\n }\n\n .row[data-path] {\n --r: 0 0 0 var(--border-radius);\n --c: '';\n\n &::after {\n border-style: solid;\n border-width: 0 0 1px 1px;\n border-color: var(--border-color);\n border-radius: var(--r);\n content: var(--c);\n inline-size: 1em;\n inset-block-start: calc(var(--size) * -1);\n inset-inline-start: -1em;\n block-size: var(--line);\n box-sizing: border-box;\n }\n }\n\n .row:first-of-type {\n --r: var(--border-radius) 0 0 var(--border-radius);\n\n &[data-path]::after {\n border-width: 1px 0 1px 1px;\n inset-block-start: 15px;\n }\n }\n\n .row:last-of-type {\n margin-block-end: 0;\n }\n\n .title {\n font-size: 14px;\n font-weight: normal;\n }\n\n .sub-title {\n padding: 0 var(--size);\n font-size: 10px;\n color: var(--text-secondary);\n font-style: italic;\n text-transform: capitalize;\n opacity: 0.5;\n }\n\n .row.active {\n color: var(--primary-color);\n background-color: var(--primary-selection);\n box-shadow: 0 0 0 1px var(--primary-border);\n text-shadow: 2px 2px 2px var(--primary-outline);\n }\n\n .rtl {\n direction: rtl;\n }\n\n .rtl .row {\n flex-direction: row-reverse;\n justify-content: flex-end;\n\n &::before,\n &::after {\n transform: scaleX(-1);\n }\n }\n\n .normal {\n --size: 8px;\n }\n\n .small {\n --size: 6px;\n }\n\n .small .row {\n padding: 1px 9px;\n\n &:first-of-type[data-path]::after {\n inset-block-start: 12px;\n }\n }\n\n .small .title {\n font-size: 13px;\n }\n\n .small .sub-title {\n padding: 0 4px;\n font-size: 9px;\n }\n\n .large {\n --size: 10px;\n }\n\n .large .row {\n padding: 3px 12px;\n\n &:first-of-type[data-path]::after {\n inset-block-start: 17px;\n }\n }\n\n .large .title {\n font-size: 15px;\n }\n\n .large .sub-title {\n padding: 0 10px;\n font-size: 12px;\n }\n`;\n"],"names":["style","css"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"kGAEaA,6CAAAA,qBAFO,eAEPA,EAAQC,GAAAA,KAAG,CAAA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkKzB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/tree/type.ts"],"names":[],"mappings":""}
1
+ {"version":3,"sources":["../../components/tree/type.ts"],"names":[],"rangeMappings":"","mappings":""}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/typography/index.tsx"],"sourcesContent":["import { createComponent, createEffect, createMemo, mergeProps } from 'solid-js';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport { Dynamic } from 'solid-js/web';\nimport theme from '../theme';\nimport type { CustomElement } from '..';\n\nexport interface TypographyProps {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** 文本格式\n * @default 'text'\n */\n type?: 'primary' | 'warning' | 'success' | 'error' | 'text' | 'secondary';\n /** 启用超出隐藏\n * @default false\n */\n truncated?: boolean | number;\n /** 自定义标签名\n * @default 'span'\n */\n tag?: string;\n /** 禁用 */\n disabled?: boolean;\n children?: JSX.Element;\n style?: Record<string, string | number>;\n}\n\nfunction Typography(props: TypographyProps) {\n const { baseStyle } = theme;\n const _ = mergeProps(\n {\n type: 'text',\n tag: 'span',\n },\n props,\n );\n const customCss = createMemo(() => {\n let color = props.type === 'secondary' ? '--text-secondary' : `--${props.type}-color`;\n\n if (props.type === 'error') {\n color = '--error-color';\n } else if (props.disabled) {\n color = '--disable-color';\n }\n let truncated = '';\n\n if (props.truncated) {\n truncated = css`\n overflow: hidden;\n /* stylelint-disable-next-line */\n display: -webkit-box;\n -webkit-box-orient: block-axis;\n -webkit-line-clamp: ${(typeof props.truncated === 'number' && props.truncated) || 1};\n `;\n }\n\n return css`\n :host {\n display: inline-block;\n max-inline-size: 100%;\n }\n\n .typography {\n font-size: var(--font-size);\n word-break: break-word;\n word-wrap: break-word;\n color: var(${color});\n cursor: ${props.disabled ? 'not-allowed' : 'auto'};\n ${truncated}\n }\n `;\n });\n\n return (\n <>\n <style>\n {baseStyle()}\n {customCss()}\n {css(props.css)}\n </style>\n <Dynamic component={_.tag} class={cx('typography', _.class)} style={_.style}>\n {_.children}\n </Dynamic>\n </>\n );\n}\n\nexport type TypographyElement = CustomElement<TypographyProps>;\n\ncustomElement<TypographyProps>(\n 'n-typography',\n {\n class: void 0,\n css: void 0,\n type: void 0,\n truncated: void 0,\n tag: void 0,\n disabled: void 0,\n style: void 0,\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n children: [...el.childNodes.values()],\n },\n _,\n );\n\n createEffect(() => {\n el.replaceChildren();\n });\n return createComponent(Typography, props);\n },\n);\nexport default Typography;\n"],"names":["Typography","props","baseStyle","theme","_","mergeProps","type","tag","customCss","createMemo","color","disabled","truncated","css","Dynamic","cx","class","style","children","customElement","opt","el","element","childNodes","values","createEffect","replaceChildren","createComponent"],"mappings":"wGAsHA,+CAAA,qBAnHwB,0BAH8C,sBAC9C,yBACM,8BAEZ,qEA0BlB,SAASA,EAAWC,CAAsB,EACxC,GAAM,CAAEC,UAAAA,CAAS,CAAE,CAAGC,SAAK,CACrBC,EAAIC,GAAAA,YAAU,EAClB,CACEC,KAAM,OACNC,IAAK,MACP,EACAN,GAEIO,EAAYC,GAAAA,YAAU,EAAC,KAC3B,IAAIC,EAAQT,AAAe,cAAfA,EAAMK,IAAI,CAAmB,mBAAqB,CAAC,EAAE,EAAEL,EAAMK,IAAI,CAAC,MAAM,CAAC,AAEjFL,AAAe,CAAA,UAAfA,EAAMK,IAAI,CACZI,EAAQ,gBACCT,EAAMU,QAAQ,EACvBD,CAAAA,EAAQ,iBAAgB,EAE1B,IAAIE,EAAY,GAYhB,OAVIX,EAAMW,SAAS,EACjBA,CAAAA,EAAYC,GAAAA,KAAG,CAAA,CAAC;;;;;4BAKM,EAAE,AAA4B,UAA3B,OAAOZ,EAAMW,SAAS,EAAiBX,EAAMW,SAAS,EAAK,EAAE;MACtF,CAAC,AAAD,EAGKC,GAAAA,KAAG,CAAA,CAAC;;;;;;;;;;mBAUI,EAAEH,EAAM;gBACX,EAAET,EAAMU,QAAQ,CAAG,cAAgB,OAAO;QAClD,EAAEC,EAAU;;IAEhB,CAAC,AACH,GAEA,4CAGOV,uBACAM,2BACAK,GAAAA,KAAG,EAACZ,EAAMY,GAAG,oCAEfC,SAAO,yBAAYV,EAAEG,GAAG,oBAASQ,GAAAA,IAAE,EAAC,aAAcX,EAAEY,KAAK,sBAAUZ,EAAEa,KAAK,wBACxEb,EAAEc,QAAQ,IAInB,CAIAC,GAAAA,eAAa,EACX,eACA,CACEH,MAAO,KAAK,EACZH,IAAK,KAAK,EACVP,KAAM,KAAK,EACXM,UAAW,KAAK,EAChBL,IAAK,KAAK,EACVI,SAAU,KAAK,EACfM,MAAO,KAAK,CACd,EACA,CAACb,EAAGgB,KACF,IAAMC,EAAKD,EAAIE,OAAO,CAChBrB,EAAQI,GAAAA,YAAU,EACtB,CACEa,SAAU,IAAIG,EAAGE,UAAU,CAACC,MAAM,GAAG,AACvC,EACApB,GAMF,MAHAqB,GAAAA,cAAY,EAAC,KACXJ,EAAGK,eAAe,EACpB,GACOC,GAAAA,iBAAe,EAAC3B,EAAYC,EACrC,SAEF,EAAeD"}
1
+ {"version":3,"sources":["../../components/typography/index.tsx"],"sourcesContent":["import { createComponent, createEffect, createMemo, mergeProps } from 'solid-js';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport { Dynamic } from 'solid-js/web';\nimport theme from '../theme';\nimport type { CustomElement } from '..';\n\nexport interface TypographyProps {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** 文本格式\n * @default 'text'\n */\n type?: 'primary' | 'warning' | 'success' | 'error' | 'text' | 'secondary';\n /** 启用超出隐藏\n * @default false\n */\n truncated?: boolean | number;\n /** 自定义标签名\n * @default 'span'\n */\n tag?: string;\n /** 禁用 */\n disabled?: boolean;\n children?: JSX.Element;\n style?: Record<string, string | number>;\n}\n\nfunction Typography(props: TypographyProps) {\n const { baseStyle } = theme;\n const _ = mergeProps(\n {\n type: 'text',\n tag: 'span',\n },\n props,\n );\n const customCss = createMemo(() => {\n let color = props.type === 'secondary' ? '--text-secondary' : `--${props.type}-color`;\n\n if (props.type === 'error') {\n color = '--error-color';\n } else if (props.disabled) {\n color = '--disable-color';\n }\n let truncated = '';\n\n if (props.truncated) {\n truncated = css`\n overflow: hidden;\n /* stylelint-disable-next-line */\n display: -webkit-box;\n -webkit-box-orient: block-axis;\n -webkit-line-clamp: ${(typeof props.truncated === 'number' && props.truncated) || 1};\n `;\n }\n\n return css`\n :host {\n display: inline-block;\n max-inline-size: 100%;\n }\n\n .typography {\n font-size: var(--font-size);\n word-break: break-word;\n word-wrap: break-word;\n color: var(${color});\n cursor: ${props.disabled ? 'not-allowed' : 'auto'};\n ${truncated}\n }\n `;\n });\n\n return (\n <>\n <style>\n {baseStyle()}\n {customCss()}\n {css(props.css)}\n </style>\n <Dynamic component={_.tag} class={cx('typography', _.class)} style={_.style}>\n {_.children}\n </Dynamic>\n </>\n );\n}\n\nexport type TypographyElement = CustomElement<TypographyProps>;\n\ncustomElement<TypographyProps>(\n 'n-typography',\n {\n class: void 0,\n css: void 0,\n type: void 0,\n truncated: void 0,\n tag: void 0,\n disabled: void 0,\n style: void 0,\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n children: [...el.childNodes.values()],\n },\n _,\n );\n\n createEffect(() => {\n el.replaceChildren();\n });\n return createComponent(Typography, props);\n },\n);\nexport default Typography;\n"],"names":["Typography","props","baseStyle","theme","_","mergeProps","type","tag","customCss","createMemo","color","disabled","truncated","css","Dynamic","cx","class","style","children","customElement","opt","el","element","childNodes","values","createEffect","replaceChildren","createComponent"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;","mappings":"wGAsHA,+CAAA,qBAnHwB,0BAH8C,sBAC9C,yBACM,8BAEZ,qEA0BlB,SAASA,EAAWC,CAAsB,EACxC,GAAM,CAAEC,UAAAA,CAAS,CAAE,CAAGC,SAAK,CACrBC,EAAIC,GAAAA,YAAU,EAClB,CACEC,KAAM,OACNC,IAAK,MACP,EACAN,GAEIO,EAAYC,GAAAA,YAAU,EAAC,KAC3B,IAAIC,EAAQT,AAAe,cAAfA,EAAMK,IAAI,CAAmB,mBAAqB,CAAC,EAAE,EAAEL,EAAMK,IAAI,CAAC,MAAM,CAAC,AAEjFL,AAAe,CAAA,UAAfA,EAAMK,IAAI,CACZI,EAAQ,gBACCT,EAAMU,QAAQ,EACvBD,CAAAA,EAAQ,iBAAgB,EAE1B,IAAIE,EAAY,GAYhB,OAVIX,EAAMW,SAAS,EACjBA,CAAAA,EAAYC,GAAAA,KAAG,CAAA,CAAC;;;;;4BAKM,EAAE,AAA4B,UAA3B,OAAOZ,EAAMW,SAAS,EAAiBX,EAAMW,SAAS,EAAK,EAAE;MACtF,CAAC,AAAD,EAGKC,GAAAA,KAAG,CAAA,CAAC;;;;;;;;;;mBAUI,EAAEH,EAAM;gBACX,EAAET,EAAMU,QAAQ,CAAG,cAAgB,OAAO;QAClD,EAAEC,EAAU;;IAEhB,CAAC,AACH,GAEA,4CAGOV,uBACAM,2BACAK,GAAAA,KAAG,EAACZ,EAAMY,GAAG,oCAEfC,SAAO,yBAAYV,EAAEG,GAAG,oBAASQ,GAAAA,IAAE,EAAC,aAAcX,EAAEY,KAAK,sBAAUZ,EAAEa,KAAK,wBACxEb,EAAEc,QAAQ,IAInB,CAIAC,GAAAA,eAAa,EACX,eACA,CACEH,MAAO,KAAK,EACZH,IAAK,KAAK,EACVP,KAAM,KAAK,EACXM,UAAW,KAAK,EAChBL,IAAK,KAAK,EACVI,SAAU,KAAK,EACfM,MAAO,KAAK,CACd,EACA,CAACb,EAAGgB,KACF,IAAMC,EAAKD,EAAIE,OAAO,CAChBrB,EAAQI,GAAAA,YAAU,EACtB,CACEa,SAAU,IAAIG,EAAGE,UAAU,CAACC,MAAM,GAAG,AACvC,EACApB,GAMF,MAHAqB,GAAAA,cAAY,EAAC,KACXJ,EAAGK,eAAe,EACpB,GACOC,GAAAA,iBAAe,EAAC3B,EAAYC,EACrC,SAEF,EAAeD"}
package/package.json CHANGED
@@ -1,16 +1,15 @@
1
1
  {
2
2
  "name": "neko-ui",
3
- "version": "2.7.0",
3
+ "version": "2.7.2",
4
4
  "description": "WebComponents UI Libraries",
5
5
  "main": "es/index.js",
6
6
  "scripts": {
7
7
  "build": "mo build library solid",
8
8
  "changelog": "mo changelog CHANGELOG.md && git add CHANGELOG.md",
9
- "prelint": "mo eslint components && mo eslint site",
10
- "stylelint": "mo stylelint components && mo stylelint site",
11
- "lint": "jest --coverage",
12
- "precommit": "yarn lint && yarn changelog",
13
- "ppprepare": "mo githooks pre-commit=\"yarn precommit\" commit-msg=\"npx --no -- commitlint --edit \\${1}\"",
9
+ "lint": "mo eslint components && mo eslint site",
10
+ "postlint": "mo stylelint components && mo stylelint site",
11
+ "precommit": "npm run lint && jest --coverage && npm run changelog",
12
+ "prepare": "mo githooks pre-commit=\"npm run precommit\" commit-msg=\"npx --no -- commitlint --edit \\${1}\"",
14
13
  "start": "rm -rf lib && rm -rf es && mo start library solid",
15
14
  "test": "jest --coverage --watchAll"
16
15
  },
@@ -42,33 +41,34 @@
42
41
  "ui libraries"
43
42
  ],
44
43
  "devDependencies": {
45
- "@commitlint/cli": "18.4.4",
46
- "@commitlint/config-conventional": "18.4.4",
47
- "@moneko/cli": "2.7.0",
48
- "@moneko/core": "3.9.22",
49
- "@moneko/solid": "1.6.1",
50
- "@solidjs/testing-library": "0.8.5",
51
- "@swc/jest": "0.2.30",
52
- "@testing-library/jest-dom": "6.2.0",
53
- "@types/jest": "29.5.11",
44
+ "@commitlint/cli": "19.3.0",
45
+ "@commitlint/config-conventional": "19.2.2",
46
+ "@moneko/cli": "2.9.3",
47
+ "@moneko/core": "3.12.0",
48
+ "@moneko/solid": "1.7.6",
49
+ "@solidjs/testing-library": "0.8.7",
50
+ "@swc/jest": "0.2.36",
51
+ "@testing-library/jest-dom": "6.4.2",
52
+ "@types/jest": "29.5.12",
54
53
  "babel-loader": "9.1.3",
55
- "eslint-config-neko": "2.3.1",
56
- "eslint-plugin-solid": "0.13.1",
57
- "husky": "8.0.3",
54
+ "eslint-config-neko": "2.6.0",
55
+ "eslint-plugin-solid": "0.13.2",
56
+ "husky": "9.0.11",
58
57
  "jest": "29.7.0",
59
58
  "jest-environment-jsdom": "29.7.0",
60
59
  "n-code-live": "1.1.0",
61
60
  "n-katex": "1.0.8",
62
- "shadow-dom-testing-library": "1.11.2"
61
+ "shadow-dom-testing-library": "1.11.2",
62
+ "stylelint-config-moneko": "2.3.1"
63
63
  },
64
64
  "dependencies": {
65
- "@moneko/common": "1.3.1",
66
- "@moneko/css": "1.1.1",
65
+ "@moneko/common": "1.3.2",
66
+ "@moneko/css": "1.1.3",
67
67
  "custom-element-type": "1.0.3",
68
68
  "dayjs": "1.11.10",
69
69
  "marked-completed": "1.2.14",
70
70
  "solid-element": "1.8.0",
71
- "solid-js": "1.8.11"
71
+ "solid-js": "1.8.17"
72
72
  },
73
73
  "files": [
74
74
  "es",