neko-ui 2.8.1 → 2.8.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 (159) hide show
  1. package/README.md +2 -0
  2. package/es/back-top/index.js +1 -1
  3. package/es/back-top/index.js.map +1 -1
  4. package/es/button/index.d.ts +1 -0
  5. package/es/button/index.js +1 -1
  6. package/es/button/index.js.map +1 -1
  7. package/es/capture-screen/index.js +1 -1
  8. package/es/capture-screen/index.js.map +1 -1
  9. package/es/carousel/index.js +1 -1
  10. package/es/carousel/index.js.map +1 -1
  11. package/es/checkbox/index.js +1 -1
  12. package/es/checkbox/index.js.map +1 -1
  13. package/es/code/index.js +1 -1
  14. package/es/code/index.js.map +1 -1
  15. package/es/color-palette/index.js +1 -1
  16. package/es/color-palette/index.js.map +1 -1
  17. package/es/color-picker/index.js +1 -1
  18. package/es/color-picker/index.js.map +1 -1
  19. package/es/cron/index.js +1 -1
  20. package/es/cron/index.js.map +1 -1
  21. package/es/date-picker/date.js +1 -1
  22. package/es/date-picker/date.js.map +1 -1
  23. package/es/date-picker/dayjs.js +1 -1
  24. package/es/date-picker/dayjs.js.map +1 -1
  25. package/es/date-picker/index.js +1 -1
  26. package/es/date-picker/index.js.map +1 -1
  27. package/es/date-picker/month.js +1 -1
  28. package/es/date-picker/month.js.map +1 -1
  29. package/es/date-picker/panel.js +1 -1
  30. package/es/date-picker/panel.js.map +1 -1
  31. package/es/date-picker/year.js +1 -1
  32. package/es/date-picker/year.js.map +1 -1
  33. package/es/dropdown/index.js +1 -1
  34. package/es/dropdown/index.js.map +1 -1
  35. package/es/img/index.js +1 -1
  36. package/es/img/index.js.map +1 -1
  37. package/es/input/index.js +1 -1
  38. package/es/input/index.js.map +1 -1
  39. package/es/input-number/index.js +2 -2
  40. package/es/input-number/index.js.map +1 -1
  41. package/es/md/index.js +1 -1
  42. package/es/md/index.js.map +1 -1
  43. package/es/menu/index.js +1 -1
  44. package/es/menu/index.js.map +1 -1
  45. package/es/modal/index.js +1 -1
  46. package/es/modal/index.js.map +1 -1
  47. package/es/notification/notification.js +1 -1
  48. package/es/notification/notification.js.map +1 -1
  49. package/es/pagination/index.js +1 -1
  50. package/es/pagination/index.js.map +1 -1
  51. package/es/popover/index.js +1 -1
  52. package/es/popover/index.js.map +1 -1
  53. package/es/provider/index.js +1 -1
  54. package/es/provider/index.js.map +1 -1
  55. package/es/radio/index.js +1 -1
  56. package/es/radio/index.js.map +1 -1
  57. package/es/segmented/index.js +3 -3
  58. package/es/segmented/index.js.map +1 -1
  59. package/es/select/index.js +1 -1
  60. package/es/select/index.js.map +1 -1
  61. package/es/skeleton/index.js +3 -3
  62. package/es/skeleton/index.js.map +1 -1
  63. package/es/spin/index.js +2 -2
  64. package/es/spin/index.js.map +1 -1
  65. package/es/switch/index.js +1 -1
  66. package/es/switch/index.js.map +1 -1
  67. package/es/table/index.js +1 -1
  68. package/es/table/index.js.map +1 -1
  69. package/es/tabs/index.d.ts +5 -0
  70. package/es/tabs/index.js +2 -2
  71. package/es/tabs/index.js.map +1 -1
  72. package/es/tag/index.js +3 -3
  73. package/es/tag/index.js.map +1 -1
  74. package/es/tree/index.js +1 -1
  75. package/es/tree/index.js.map +1 -1
  76. package/es/tree/register.js +1 -1
  77. package/es/tree/register.js.map +1 -1
  78. package/es/typography/index.js +3 -3
  79. package/es/typography/index.js.map +1 -1
  80. package/lib/back-top/index.js +1 -1
  81. package/lib/back-top/index.js.map +1 -1
  82. package/lib/button/index.d.ts +1 -0
  83. package/lib/button/index.js +1 -1
  84. package/lib/button/index.js.map +1 -1
  85. package/lib/capture-screen/index.js +1 -1
  86. package/lib/capture-screen/index.js.map +1 -1
  87. package/lib/carousel/index.js +1 -1
  88. package/lib/carousel/index.js.map +1 -1
  89. package/lib/checkbox/index.js +1 -1
  90. package/lib/checkbox/index.js.map +1 -1
  91. package/lib/code/index.js +1 -1
  92. package/lib/code/index.js.map +1 -1
  93. package/lib/color-palette/index.js +1 -1
  94. package/lib/color-palette/index.js.map +1 -1
  95. package/lib/color-picker/index.js +1 -1
  96. package/lib/color-picker/index.js.map +1 -1
  97. package/lib/cron/index.js +1 -1
  98. package/lib/cron/index.js.map +1 -1
  99. package/lib/date-picker/date.js +1 -1
  100. package/lib/date-picker/date.js.map +1 -1
  101. package/lib/date-picker/dayjs.js +1 -1
  102. package/lib/date-picker/dayjs.js.map +1 -1
  103. package/lib/date-picker/index.js +1 -1
  104. package/lib/date-picker/index.js.map +1 -1
  105. package/lib/date-picker/month.js +1 -1
  106. package/lib/date-picker/month.js.map +1 -1
  107. package/lib/date-picker/panel.js +1 -1
  108. package/lib/date-picker/panel.js.map +1 -1
  109. package/lib/date-picker/year.js +1 -1
  110. package/lib/date-picker/year.js.map +1 -1
  111. package/lib/dropdown/index.js +1 -1
  112. package/lib/dropdown/index.js.map +1 -1
  113. package/lib/img/index.js +1 -1
  114. package/lib/img/index.js.map +1 -1
  115. package/lib/input/index.js +1 -1
  116. package/lib/input/index.js.map +1 -1
  117. package/lib/input-number/index.js +1 -1
  118. package/lib/input-number/index.js.map +1 -1
  119. package/lib/md/index.js +1 -1
  120. package/lib/md/index.js.map +1 -1
  121. package/lib/menu/index.js +1 -1
  122. package/lib/menu/index.js.map +1 -1
  123. package/lib/modal/index.js +1 -1
  124. package/lib/modal/index.js.map +1 -1
  125. package/lib/notification/notification.js +1 -1
  126. package/lib/notification/notification.js.map +1 -1
  127. package/lib/pagination/index.js +1 -1
  128. package/lib/pagination/index.js.map +1 -1
  129. package/lib/popover/index.js +1 -1
  130. package/lib/popover/index.js.map +1 -1
  131. package/lib/provider/index.js +1 -1
  132. package/lib/provider/index.js.map +1 -1
  133. package/lib/radio/index.js +1 -1
  134. package/lib/radio/index.js.map +1 -1
  135. package/lib/segmented/index.js +1 -1
  136. package/lib/segmented/index.js.map +1 -1
  137. package/lib/select/index.js +1 -1
  138. package/lib/select/index.js.map +1 -1
  139. package/lib/skeleton/index.js +4 -4
  140. package/lib/skeleton/index.js.map +1 -1
  141. package/lib/spin/index.js +1 -1
  142. package/lib/spin/index.js.map +1 -1
  143. package/lib/switch/index.js +1 -1
  144. package/lib/switch/index.js.map +1 -1
  145. package/lib/table/index.js +1 -1
  146. package/lib/table/index.js.map +1 -1
  147. package/lib/tabs/index.d.ts +5 -0
  148. package/lib/tabs/index.js +2 -2
  149. package/lib/tabs/index.js.map +1 -1
  150. package/lib/tag/index.js +2 -2
  151. package/lib/tag/index.js.map +1 -1
  152. package/lib/tree/index.js +1 -1
  153. package/lib/tree/index.js.map +1 -1
  154. package/lib/tree/register.js +1 -1
  155. package/lib/tree/register.js.map +1 -1
  156. package/lib/typography/index.js +1 -1
  157. package/lib/typography/index.js.map +1 -1
  158. package/package.json +10 -11
  159. package/umd/index.js +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/color-palette/index.tsx"],"sourcesContent":["import {\n For,\n Index,\n Show,\n createComponent,\n createEffect,\n createMemo,\n createSignal,\n mergeProps,\n onCleanup,\n onMount,\n untrack,\n} from 'solid-js';\nimport {\n type ColorParse,\n type ColorType,\n type HSVA,\n colorParse,\n isFunction,\n passiveSupported,\n setClipboard,\n throttle,\n} from '@moneko/common';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport { style, switchCss } from './style';\nimport '../dropdown';\nimport '../input';\nimport '../input-number';\nimport theme from '../theme';\nimport type { CustomElement, InputNumberProps } from '..';\n\nexport interface ColorPaletteProps {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** 颜色值 */\n value?: string;\n /** 默认值\n * @default '#5794ff'\n */\n defaultValue?: string;\n /** 变更时触发的方法 */\n onChange?: (color: string) => void;\n}\nexport type ColorPaletteElement = CustomElement<ColorPaletteProps>;\n\nfunction ColorPalette(_: ColorPaletteProps) {\n const { baseStyle } = theme;\n const props = mergeProps({ defaultValue: '#5794ff' }, _);\n let picker: HTMLDivElement | undefined;\n const types = [\n { label: 'RGBA', value: 'rgba', handleClosed: false },\n { label: 'HSLA', value: 'hsla', handleClosed: false },\n { label: 'HEXA', value: 'hexa', handleClosed: false },\n ];\n const material = [\n '#f44336',\n '#E91E63',\n '#9C27B0',\n '#673AB7',\n '#3F51B5',\n '#2196F3',\n '#00BCD4',\n '#009688',\n '#4CAF50',\n '#CDDC39',\n '#FF9800',\n '#795548',\n '#607D8B',\n ];\n const inputProps: InputNumberProps = {\n class: 'input',\n size: 'small',\n css: '.input{text-align:center;font-size:12px;}',\n };\n const [hsva, setHsva] = createSignal<ColorParse<HSVA>>(\n // eslint-disable-next-line solid/reactivity\n colorParse(props.value || props.defaultValue),\n );\n const [drag, setDrag] = createSignal(false);\n\n type HsvaToColorVoid = 'toHexa' | 'toRgba' | 'toHsla' | 'toCmyk' | 'toHsva';\n\n function formatterOpacity(v?: number | string) {\n return v ? Number(((v as number) * 100).toFixed()) : v;\n }\n function parseOpacity(v?: string | number) {\n let _val = v;\n\n if (typeof v === 'string') {\n _val = v.replace(/[^\\d]/g, '');\n }\n return (_val as number) / 100;\n }\n function capFirst(str: string) {\n return `to${str[0].toUpperCase() + str.slice(1)}` as HsvaToColorVoid;\n }\n const color = createMemo(() => {\n const s = hsva();\n const c = s[capFirst(s.type)]();\n\n if (isFunction(props.onChange) && c.toString() !== props.value) {\n props.onChange(c.toString());\n }\n return c;\n });\n\n function setColor(c = props.defaultValue) {\n if (untrack(color).toString() !== c) {\n setHsva(colorParse(c as string));\n }\n }\n function handleHexa(e: CustomEvent) {\n if (e.target) {\n (e.target as HTMLInputElement).value = e.detail;\n }\n }\n function handleHexaBlur(e: FocusEvent & { target: { value: string } }) {\n if (e.target?.value) {\n setColor(e.target.value);\n }\n }\n function handleHexaEnter(e: KeyboardEvent & { target: { value: string } }) {\n if (e.key === 'Enter' && typeof e.target?.value === 'string') {\n setColor(e.target.value);\n }\n }\n function changeColor(ev: MouseEvent) {\n if (picker) {\n const { x, y, width, height } = picker.getBoundingClientRect();\n const prev = untrack(hsva);\n const next = prev.value;\n\n next[1] = Math.floor(Math.min(Math.max(0, ((ev.clientX - x) / width) * 100), 100));\n next[2] = Math.floor(100 - Math.min(Math.max(0, ((ev.clientY - y) / height) * 100), 100));\n\n setHsva({ ...prev, value: next });\n }\n }\n\n function handleChange(i: number, v?: number, t?: ColorType) {\n if (typeof v === 'number') {\n const prev = untrack(hsva);\n const changeHsv = i === 3 || t === 'hsva';\n const next = changeHsv ? prev.value : (untrack(color) as HSVA);\n\n next[i] = v || 0;\n if (changeHsv) {\n setHsva({\n ...prev,\n value: next,\n });\n } else {\n setHsva(colorParse(next.toString()));\n }\n }\n }\n function mouseDown(e: MouseEvent) {\n setDrag(true);\n changeColor(e);\n }\n function mouseUp() {\n setDrag(false);\n }\n function handleSwitch(e: CustomEvent) {\n setHsva((prev) => ({\n ...prev,\n type: e.detail[0],\n }));\n }\n\n function copy(e: MouseEvent) {\n setClipboard(untrack(color).toString(), e.target as HTMLElement);\n }\n async function eyeDropper() {\n if (window.EyeDropper) {\n const res = await new window.EyeDropper().open();\n\n if (res.sRGBHex) {\n setColor(res.sRGBHex);\n }\n return;\n }\n }\n const colorVar = createMemo(() => {\n const h = hsva(),\n value = h.value;\n\n return `.palette {--c:${h.toRgbaString()};--h:${value[0]};--s:${value[1]};--v:${value[2]};--a:${\n value[3]\n };}`;\n });\n\n createEffect(() => {\n throttle(setColor, 8)(props.value);\n });\n\n createEffect(() => {\n if (drag()) {\n document.body.addEventListener('mousemove', changeColor, {\n passive: passiveSupported,\n });\n }\n onCleanup(() => {\n document.body.removeEventListener('mousemove', changeColor, false);\n });\n });\n onMount(() => {\n document.body.addEventListener('mouseup', mouseUp, {\n passive: passiveSupported,\n });\n });\n onCleanup(() => {\n document.body.removeEventListener('mouseup', mouseUp, false);\n });\n\n return (\n <>\n <style>\n {baseStyle()}\n {style}\n {colorVar()}\n {css(props.css)}\n </style>\n <div class={cx('palette', props.class)}>\n <div ref={picker} class=\"picker\" onMouseDown={mouseDown} />\n <div class=\"chooser\">\n <div class=\"range\">\n <input\n class=\"slider hue\"\n min=\"0\"\n max=\"360\"\n type=\"range\"\n value={hsva().value[0]}\n onInput={(e) => handleChange(0, Number(e.target.value), 'hsva')}\n />\n <input\n class=\"slider opacity\"\n min=\"0\"\n max=\"1\"\n step=\"0.01\"\n type=\"range\"\n value={hsva().value[3]}\n onInput={(e) => handleChange(3, Number(e.target.value))}\n />\n </div>\n <div class=\"preview\" onClick={copy} />\n </div>\n <div class=\"form\">\n <Show\n when={hsva().type === 'hexa'}\n fallback={\n <>\n <Index each={color()}>\n {(n, i) => {\n const inp = Object.assign(\n {},\n inputProps,\n i === 3 && {\n step: 0.01,\n formatter: formatterOpacity,\n parse: parseOpacity,\n },\n );\n\n return (\n <n-input-number\n {...inp}\n value={n() as number}\n max={\n (\n untrack(color) as HSVA & {\n max: [360, 100, 100, 1];\n }\n ).max[i]\n }\n min={0}\n onChange={(e) => {\n handleChange(i, e.detail);\n }}\n />\n );\n }}\n </Index>\n </>\n }\n >\n <n-input\n {...inputProps}\n value={hsva().toHexaString()}\n onChange={handleHexa}\n onBlur={handleHexaBlur}\n onKeyUp={handleHexaEnter}\n />\n </Show>\n <n-dropdown\n css={switchCss}\n value={hsva().type}\n items={types}\n placement=\"right\"\n trigger=\"click\"\n onChange={handleSwitch}\n >\n <span class=\"switch\">{hsva().type}</span>\n </n-dropdown>\n </div>\n <div class=\"color\">\n <Show\n when={window.EyeDropper}\n fallback={\n <i\n style={{ '--c': 'rgba(168,16,16,0.15)' }}\n onClick={setColor.bind(null, 'rgba(168,16,16,0.15)')}\n />\n }\n >\n <i class=\"eye-dropper\" style={{ '--c': 'transparent' }} onClick={eyeDropper} />\n </Show>\n <For each={material}>\n {(c) => <i style={{ '--c': c }} onClick={setColor.bind(null, c)} />}\n </For>\n </div>\n </div>\n </>\n );\n}\n\nexport const defaultColorPaletteProps = {\n class: void 0,\n style: void 0,\n css: void 0,\n value: void 0,\n defaultValue: void 0,\n onChange: void 0,\n};\n\ncustomElement<ColorPaletteProps>('n-color-palette', defaultColorPaletteProps, (_, opts) => {\n const el = opts.element;\n const props = mergeProps(\n {\n onChange(val?: string) {\n el.dispatchEvent(\n new CustomEvent('change', {\n detail: val,\n }),\n );\n },\n },\n _,\n );\n\n return createComponent(ColorPalette, props);\n});\n\nexport default ColorPalette;\n"],"names":["For","Index","Show","createComponent","createEffect","createMemo","createSignal","mergeProps","onCleanup","onMount","untrack","colorParse","isFunction","passiveSupported","setClipboard","throttle","css","cx","customElement","style","switchCss","theme","ColorPalette","_","picker","baseStyle","props","defaultValue","types","label","value","handleClosed","material","inputProps","class","size","hsva","setHsva","drag","setDrag","formatterOpacity","v","Number","toFixed","parseOpacity","_val","replace","color","str","s","c","type","toUpperCase","slice","onChange","toString","setColor","handleHexa","e","target","detail","handleHexaBlur","handleHexaEnter","key","changeColor","ev","x","y","width","height","getBoundingClientRect","prev","next","Math","floor","min","max","clientX","clientY","handleChange","i","t","changeHsv","mouseDown","mouseUp","handleSwitch","copy","eyeDropper","window","EyeDropper","res","open","sRGBHex","colorVar","h","toRgbaString","document","body","addEventListener","passive","removeEventListener","n","inp","Object","assign","step","formatter","parse","toHexaString","bind","defaultColorPaletteProps","opts","el","element","val","dispatchEvent","CustomEvent"],"rangeMappings":"","mappings":"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"}
1
+ {"version":3,"sources":["../../components/color-palette/index.tsx"],"sourcesContent":["import {\n For,\n Index,\n Show,\n createEffect,\n createMemo,\n createSignal,\n mergeProps,\n onCleanup,\n onMount,\n untrack,\n} from 'solid-js';\nimport {\n type ColorParse,\n type ColorType,\n type HSVA,\n colorParse,\n isFunction,\n passiveSupported,\n setClipboard,\n throttle,\n} from '@moneko/common';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport { style, switchCss } from './style';\nimport '../dropdown';\nimport '../input';\nimport '../input-number';\nimport theme from '../theme';\nimport type { CustomElement, InputNumberProps } from '..';\n\nexport interface ColorPaletteProps {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** 颜色值 */\n value?: string;\n /** 默认值\n * @default '#5794ff'\n */\n defaultValue?: string;\n /** 变更时触发的方法 */\n onChange?: (color: string) => void;\n}\nexport type ColorPaletteElement = CustomElement<ColorPaletteProps>;\n\nfunction ColorPalette(_: ColorPaletteProps) {\n const { baseStyle } = theme;\n const props = mergeProps({ defaultValue: '#5794ff' }, _);\n let picker: HTMLDivElement | undefined;\n const types = [\n { label: 'RGBA', value: 'rgba', handleClosed: false },\n { label: 'HSLA', value: 'hsla', handleClosed: false },\n { label: 'HEXA', value: 'hexa', handleClosed: false },\n ];\n const material = [\n '#f44336',\n '#E91E63',\n '#9C27B0',\n '#673AB7',\n '#3F51B5',\n '#2196F3',\n '#00BCD4',\n '#009688',\n '#4CAF50',\n '#CDDC39',\n '#FF9800',\n '#795548',\n '#607D8B',\n ];\n const inputProps: InputNumberProps = {\n class: 'input',\n size: 'small',\n css: '.input{text-align:center;font-size:12px;}',\n };\n const [hsva, setHsva] = createSignal<ColorParse<HSVA>>(\n // eslint-disable-next-line solid/reactivity\n colorParse(props.value || props.defaultValue),\n );\n const [drag, setDrag] = createSignal(false);\n\n type HsvaToColorVoid = 'toHexa' | 'toRgba' | 'toHsla' | 'toCmyk' | 'toHsva';\n\n function formatterOpacity(v?: number | string) {\n return v ? Number(((v as number) * 100).toFixed()) : v;\n }\n function parseOpacity(v?: string | number) {\n let _val = v;\n\n if (typeof v === 'string') {\n _val = v.replace(/[^\\d]/g, '');\n }\n return (_val as number) / 100;\n }\n function capFirst(str: string) {\n return `to${str[0].toUpperCase() + str.slice(1)}` as HsvaToColorVoid;\n }\n const color = createMemo(() => {\n const s = hsva();\n const c = s[capFirst(s.type)]();\n\n if (isFunction(props.onChange) && c.toString() !== props.value) {\n props.onChange(c.toString());\n }\n return c;\n });\n\n function setColor(c = props.defaultValue) {\n if (untrack(color).toString() !== c) {\n setHsva(colorParse(c as string));\n }\n }\n function handleHexa(e: CustomEvent) {\n if (e.target) {\n (e.target as HTMLInputElement).value = e.detail;\n }\n }\n function handleHexaBlur(e: FocusEvent & { target: { value: string } }) {\n if (e.target?.value) {\n setColor(e.target.value);\n }\n }\n function handleHexaEnter(e: KeyboardEvent & { target: { value: string } }) {\n if (e.key === 'Enter' && typeof e.target?.value === 'string') {\n setColor(e.target.value);\n }\n }\n function changeColor(ev: MouseEvent) {\n if (picker) {\n const { x, y, width, height } = picker.getBoundingClientRect();\n const prev = untrack(hsva);\n const next = prev.value;\n\n next[1] = Math.floor(Math.min(Math.max(0, ((ev.clientX - x) / width) * 100), 100));\n next[2] = Math.floor(100 - Math.min(Math.max(0, ((ev.clientY - y) / height) * 100), 100));\n\n setHsva({ ...prev, value: next });\n }\n }\n\n function handleChange(i: number, v?: number, t?: ColorType) {\n if (typeof v === 'number') {\n const prev = untrack(hsva);\n const changeHsv = i === 3 || t === 'hsva';\n const next = changeHsv ? prev.value : (untrack(color) as HSVA);\n\n next[i] = v || 0;\n if (changeHsv) {\n setHsva({\n ...prev,\n value: next,\n });\n } else {\n setHsva(colorParse(next.toString()));\n }\n }\n }\n function mouseDown(e: MouseEvent) {\n setDrag(true);\n changeColor(e);\n }\n function mouseUp() {\n setDrag(false);\n }\n function handleSwitch(e: CustomEvent) {\n setHsva((prev) => ({\n ...prev,\n type: e.detail[0],\n }));\n }\n\n function copy(e: MouseEvent) {\n setClipboard(untrack(color).toString(), e.target as HTMLElement);\n }\n async function eyeDropper() {\n if (window.EyeDropper) {\n const res = await new window.EyeDropper().open();\n\n if (res.sRGBHex) {\n setColor(res.sRGBHex);\n }\n return;\n }\n }\n const colorVar = createMemo(() => {\n const h = hsva(),\n value = h.value;\n\n return `.palette {--c:${h.toRgbaString()};--h:${value[0]};--s:${value[1]};--v:${value[2]};--a:${\n value[3]\n };}`;\n });\n\n createEffect(() => {\n throttle(setColor, 8)(props.value);\n });\n\n createEffect(() => {\n if (drag()) {\n document.body.addEventListener('mousemove', changeColor, {\n passive: passiveSupported,\n });\n }\n onCleanup(() => {\n document.body.removeEventListener('mousemove', changeColor, false);\n });\n });\n onMount(() => {\n document.body.addEventListener('mouseup', mouseUp, {\n passive: passiveSupported,\n });\n });\n onCleanup(() => {\n document.body.removeEventListener('mouseup', mouseUp, false);\n });\n\n return (\n <>\n <style>\n {baseStyle()}\n {style}\n {colorVar()}\n {css(props.css)}\n </style>\n <div class={cx('palette', props.class)}>\n <div ref={picker} class=\"picker\" onMouseDown={mouseDown} />\n <div class=\"chooser\">\n <div class=\"range\">\n <input\n class=\"slider hue\"\n min=\"0\"\n max=\"360\"\n type=\"range\"\n value={hsva().value[0]}\n onInput={(e) => handleChange(0, Number(e.target.value), 'hsva')}\n />\n <input\n class=\"slider opacity\"\n min=\"0\"\n max=\"1\"\n step=\"0.01\"\n type=\"range\"\n value={hsva().value[3]}\n onInput={(e) => handleChange(3, Number(e.target.value))}\n />\n </div>\n <div class=\"preview\" onClick={copy} />\n </div>\n <div class=\"form\">\n <Show\n when={hsva().type === 'hexa'}\n fallback={\n <>\n <Index each={color()}>\n {(n, i) => {\n const inp = Object.assign(\n {},\n inputProps,\n i === 3 && {\n step: 0.01,\n formatter: formatterOpacity,\n parse: parseOpacity,\n },\n );\n\n return (\n <n-input-number\n {...inp}\n value={n() as number}\n max={\n (\n untrack(color) as HSVA & {\n max: [360, 100, 100, 1];\n }\n ).max[i]\n }\n min={0}\n onChange={(e) => {\n handleChange(i, e.detail);\n }}\n />\n );\n }}\n </Index>\n </>\n }\n >\n <n-input\n {...inputProps}\n value={hsva().toHexaString()}\n onChange={handleHexa}\n onBlur={handleHexaBlur}\n onKeyUp={handleHexaEnter}\n />\n </Show>\n <n-dropdown\n css={switchCss}\n value={hsva().type}\n items={types}\n placement=\"right\"\n trigger=\"click\"\n onChange={handleSwitch}\n >\n <span class=\"switch\">{hsva().type}</span>\n </n-dropdown>\n </div>\n <div class=\"color\">\n <Show\n when={window.EyeDropper}\n fallback={\n <i\n style={{ '--c': 'rgba(168,16,16,0.15)' }}\n onClick={setColor.bind(null, 'rgba(168,16,16,0.15)')}\n />\n }\n >\n <i class=\"eye-dropper\" style={{ '--c': 'transparent' }} onClick={eyeDropper} />\n </Show>\n <For each={material}>\n {(c) => <i style={{ '--c': c }} onClick={setColor.bind(null, c)} />}\n </For>\n </div>\n </div>\n </>\n );\n}\n\nexport const defaultColorPaletteProps = {\n class: void 0,\n style: void 0,\n css: void 0,\n value: void 0,\n defaultValue: void 0,\n onChange: void 0,\n};\n\ncustomElement<ColorPaletteProps>('n-color-palette', defaultColorPaletteProps, (_, opts) => {\n const el = opts.element;\n const props = mergeProps(\n {\n onChange(val?: string) {\n el.dispatchEvent(\n new CustomEvent('change', {\n detail: val,\n }),\n );\n },\n },\n _,\n );\n\n return <ColorPalette {...props} />;\n});\n\nexport default ColorPalette;\n"],"names":["For","Index","Show","createEffect","createMemo","createSignal","mergeProps","onCleanup","onMount","untrack","colorParse","isFunction","passiveSupported","setClipboard","throttle","css","cx","customElement","style","switchCss","theme","ColorPalette","_","picker","baseStyle","props","defaultValue","types","label","value","handleClosed","material","inputProps","class","size","hsva","setHsva","drag","setDrag","formatterOpacity","v","Number","toFixed","parseOpacity","_val","replace","color","str","s","c","type","toUpperCase","slice","onChange","toString","setColor","handleHexa","e","target","detail","handleHexaBlur","handleHexaEnter","key","changeColor","ev","x","y","width","height","getBoundingClientRect","prev","next","Math","floor","min","max","clientX","clientY","handleChange","i","t","changeHsv","mouseDown","mouseUp","handleSwitch","copy","eyeDropper","window","EyeDropper","res","open","sRGBHex","colorVar","h","toRgbaString","document","body","addEventListener","passive","removeEventListener","n","inp","Object","assign","step","formatter","parse","toHexaString","bind","defaultColorPaletteProps","opts","el","element","val","dispatchEvent","CustomEvent"],"rangeMappings":"","mappings":"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"}
@@ -1,2 +1,2 @@
1
- function e(){return(e=Object.assign||function(e){for(var o=1;o<arguments.length;o++){var r=arguments[o];for(var t in r)Object.prototype.hasOwnProperty.call(r,t)&&(e[t]=r[t])}return e}).apply(this,arguments)}import{template as o}from"solid-js/web";import{mergeProps as r}from"solid-js/web";import{getOwner as t}from"solid-js/web";import{effect as l}from"solid-js/web";import{createComponent as s}from"solid-js/web";import{className as a}from"solid-js/web";import{addEventListener as i}from"solid-js/web";let n=o("<span>"),p=o("<n-color-palette>",!0,!1);import{createComponent as u,createEffect as c,createMemo as d,createSignal as m,mergeProps as f,onMount as g,splitProps as v,untrack as h}from"solid-js";import{cx as C}from"@moneko/css";import{customElement as w}from"solid-element";import{style as j}from"./style";import"../color-palette";import b,{defaultProps as k}from"../popover";function V(e){let[o,u]=v(e,["css","value","defaultValue","onChange","popupClass","popupCss","size"]),[f,w]=m(o.defaultValue);function k(e){void 0===o.value&&w(e.detail),null==o.onChange||o.onChange.call(o,e.detail)}g(()=>{void 0===o.value&&o.defaultValue&&w(o.defaultValue)}),c(()=>{void 0!==o.value&&o.value!==h(f)&&w(o.value)});let V=d(()=>`.color-picker {padding: 10px;inline-size: 216px;}${o.popupCss||""}`),y=d(()=>`${j+(o.css||"")}.trigger {--c: ${f()};}`);return s(b,r(u,{arrow:!0,trigger:"click",get content(){return(()=>{let e=p();return i(e,"change",k),e._$owner=t(),l(()=>e.value=f()),e})()},get popupClass(){return C("color-picker",o.popupClass)},get popupCss(){return V()},get css(){return y()},get children(){let e=n();return l(()=>a(e,C("trigger",o.size))),e}}))}w("n-color-picker",e({},k,{value:void 0,defaultValue:void 0,onChange:void 0,size:void 0}),(e,o)=>{let r=o.element;return u(V,f({onChange(e){r.dispatchEvent(new CustomEvent("change",{detail:e}))},children:r.children},e))});export default V;
1
+ function e(){return(e=Object.assign||function(e){for(var o=1;o<arguments.length;o++){var r=arguments[o];for(var t in r)Object.prototype.hasOwnProperty.call(r,t)&&(e[t]=r[t])}return e}).apply(this,arguments)}import{template as o}from"solid-js/web";import{mergeProps as r}from"solid-js/web";import{getOwner as t}from"solid-js/web";import{effect as l}from"solid-js/web";import{createComponent as s}from"solid-js/web";import{className as a}from"solid-js/web";import{addEventListener as i}from"solid-js/web";let n=o("<span>"),p=o("<n-color-palette>",!0,!1);import{createEffect as u,createMemo as c,createSignal as d,mergeProps as m,onMount as f,splitProps as g,untrack as v}from"solid-js";import{cx as h}from"@moneko/css";import{customElement as C}from"solid-element";import{style as w}from"./style";import"../color-palette";import j,{defaultProps as b}from"../popover";function k(e){let[o,m]=g(e,["css","value","defaultValue","onChange","popupClass","popupCss","size"]),[C,b]=d(o.defaultValue);function k(e){void 0===o.value&&b(e.detail),null==o.onChange||o.onChange.call(o,e.detail)}f(()=>{void 0===o.value&&o.defaultValue&&b(o.defaultValue)}),u(()=>{void 0!==o.value&&o.value!==v(C)&&b(o.value)});let V=c(()=>`.color-picker {padding: 10px;inline-size: 216px;}${o.popupCss||""}`),y=c(()=>`${w+(o.css||"")}.trigger {--c: ${C()};}`);return s(j,r(m,{arrow:!0,trigger:"click",get content(){return(()=>{let e=p();return i(e,"change",k),e._$owner=t(),l(()=>e.value=C()),e})()},get popupClass(){return h("color-picker",o.popupClass)},get popupCss(){return V()},get css(){return y()},get children(){let e=n();return l(()=>a(e,h("trigger",o.size))),e}}))}C("n-color-picker",e({},b,{value:void 0,defaultValue:void 0,onChange:void 0,size:void 0}),(e,o)=>{let r=o.element;return s(k,m({onChange(e){r.dispatchEvent(new CustomEvent("change",{detail:e}))},children:r.children},e))});export default k;
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/color-picker/index.tsx"],"sourcesContent":["import {\n createComponent,\n createEffect,\n createMemo,\n createSignal,\n mergeProps,\n onMount,\n splitProps,\n untrack,\n} from 'solid-js';\nimport { cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport { style } from './style';\nimport '../color-palette';\nimport Popover, { defaultProps } from '../popover';\nimport type { BasicConfig, ColorPaletteProps, CustomElement, PopoverProps } from '..';\n\n/** 颜色选择器\n * @since 2.0.0\n */\nexport interface ColorPickerProps\n extends ColorPaletteProps,\n Omit<PopoverProps, 'children' | 'content'> {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** 关闭后是否销毁 */\n destroyInactive?: boolean;\n /** 尺寸\n * @default 'normal'\n */\n size?: BasicConfig['size'];\n /** 默认值 */\n defaultValue?: string;\n}\nexport type ColorPickerElement = CustomElement<ColorPickerProps>;\n\nfunction ColorPicker(props: ColorPickerProps) {\n const [local, others] = splitProps(props, [\n 'css',\n 'value',\n 'defaultValue',\n 'onChange',\n 'popupClass',\n 'popupCss',\n 'size',\n ]);\n const [color, setColor] = createSignal<string | undefined>(local.defaultValue);\n\n function handleChange(e: CustomEvent<string>) {\n if (local.value === void 0) {\n setColor(e.detail);\n }\n local.onChange?.(e.detail);\n }\n\n onMount(() => {\n if (local.value === void 0 && local.defaultValue) {\n setColor(local.defaultValue);\n }\n });\n createEffect(() => {\n if (local.value !== void 0 && local.value !== untrack(color)) {\n setColor(local.value);\n }\n });\n const popupCss = createMemo(\n () => `.color-picker {padding: 10px;inline-size: 216px;}${local.popupCss || ''}`,\n );\n const css = createMemo(() => `${style + (local.css || '')}.trigger {--c: ${color()};}`);\n\n return (\n <Popover\n {...others}\n arrow={true}\n trigger=\"click\"\n content={<n-color-palette value={color()} onChange={handleChange} />}\n popupClass={cx('color-picker', local.popupClass)}\n popupCss={popupCss()}\n css={css()}\n >\n <span class={cx('trigger', local.size)} />\n </Popover>\n );\n}\n\ncustomElement<ColorPickerProps>(\n 'n-color-picker',\n {\n ...defaultProps,\n value: void 0,\n defaultValue: void 0,\n onChange: void 0,\n size: void 0,\n },\n (_, opts) => {\n const el = opts.element;\n const props = mergeProps(\n {\n onChange(val?: string) {\n el.dispatchEvent(\n new CustomEvent('change', {\n detail: val,\n }),\n );\n },\n children: el.children,\n },\n _,\n );\n\n return createComponent(ColorPicker, props);\n },\n);\n\nexport default ColorPicker;\n"],"names":["createComponent","createEffect","createMemo","createSignal","mergeProps","onMount","splitProps","untrack","cx","customElement","style","Popover","defaultProps","ColorPicker","props","local","others","color","setColor","defaultValue","handleChange","e","value","detail","onChange","popupCss","css","popupClass","size","_","opts","el","element","val","dispatchEvent","CustomEvent","children"],"rangeMappings":"","mappings":"uiBAAA,QACEA,mBAAAA,CAAe,CACfC,gBAAAA,CAAY,CACZC,cAAAA,CAAU,CACVC,gBAAAA,CAAY,CACZC,cAAAA,CAAU,CACVC,WAAAA,CAAO,CACPC,cAAAA,CAAU,CACVC,WAAAA,CAAO,KACF,UAAW,AAClB,QAASC,MAAAA,CAAE,KAAQ,aAAc,AACjC,QAASC,iBAAAA,CAAa,KAAQ,eAAgB,AAC9C,QAASC,SAAAA,CAAK,KAAQ,SAAU,AAChC,OAAO,kBAAmB,AAC1B,QAAOC,GAAWC,gBAAAA,CAAY,KAAQ,YAAa,CAwBnD,SAASC,EAAYC,CAAuB,EAC1C,GAAM,CAACC,EAAOC,EAAO,CAAGV,EAAWQ,EAAO,CACxC,MACA,QACA,eACA,WACA,aACA,WACA,OACD,EACK,CAACG,EAAOC,EAAS,CAAGf,EAAiCY,EAAMI,YAAY,EAE7E,SAASC,EAAaC,CAAsB,EACtB,KAAK,IAArBN,EAAMO,KAAK,EACbJ,EAASG,EAAEE,MAAM,QAEnBR,EAAMS,QAAQ,EAAdT,EAAMS,QAAQ,MAAdT,EAAiBM,EAAEE,MAAM,CAC3B,CAEAlB,EAAQ,KACc,KAAK,IAArBU,EAAMO,KAAK,EAAeP,EAAMI,YAAY,EAC9CD,EAASH,EAAMI,YAAY,CAE/B,GACAlB,EAAa,KACS,KAAK,IAArBc,EAAMO,KAAK,EAAeP,EAAMO,KAAK,GAAKf,EAAQU,IACpDC,EAASH,EAAMO,KAAK,CAExB,GACA,IAAMG,EAAWvB,EACf,IAAM,CAAC,iDAAiD,EAAEa,EAAMU,QAAQ,EAAI,GAAG,CAAC,EAE5EC,EAAMxB,EAAW,IAAM,CAAC,EAAEQ,EAASK,CAAAA,EAAMW,GAAG,EAAI,EAAC,EAAG,eAAe,EAAET,IAAQ,EAAE,CAAC,EAEtF,SACGN,IACKK,SACG,CAAA,0EAE6CI,+BAAnBH,oCACrBT,EAAG,eAAgBO,EAAMY,UAAU,yBACrCF,sBACLC,+CAEQlB,EAAG,UAAWO,EAAMa,IAAI,SAG3C,CAEAnB,EACE,iBACA,KACKG,GACHU,MAAO,KAAK,EACZH,aAAc,KAAK,EACnBK,SAAU,KAAK,EACfI,KAAM,KAAK,IAEb,CAACC,EAAGC,KACF,IAAMC,EAAKD,EAAKE,OAAO,CAevB,OAAOhC,EAAgBa,EAdTT,EACZ,CACEoB,SAASS,CAAY,EACnBF,EAAGG,aAAa,CACd,IAAIC,YAAY,SAAU,CACxBZ,OAAQU,CACV,GAEJ,EACAG,SAAUL,EAAGK,QAAQ,AACvB,EACAP,GAIJ,EAGF,gBAAehB,CAAY"}
1
+ {"version":3,"sources":["../../components/color-picker/index.tsx"],"sourcesContent":["import {\n createEffect,\n createMemo,\n createSignal,\n mergeProps,\n onMount,\n splitProps,\n untrack,\n} from 'solid-js';\nimport { cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport { style } from './style';\nimport '../color-palette';\nimport Popover, { defaultProps } from '../popover';\nimport type { BasicConfig, ColorPaletteProps, CustomElement, PopoverProps } from '..';\n\n/** 颜色选择器\n * @since 2.0.0\n */\nexport interface ColorPickerProps\n extends ColorPaletteProps,\n Omit<PopoverProps, 'children' | 'content'> {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** 关闭后是否销毁 */\n destroyInactive?: boolean;\n /** 尺寸\n * @default 'normal'\n */\n size?: BasicConfig['size'];\n /** 默认值 */\n defaultValue?: string;\n}\nexport type ColorPickerElement = CustomElement<ColorPickerProps>;\n\nfunction ColorPicker(props: ColorPickerProps) {\n const [local, others] = splitProps(props, [\n 'css',\n 'value',\n 'defaultValue',\n 'onChange',\n 'popupClass',\n 'popupCss',\n 'size',\n ]);\n const [color, setColor] = createSignal<string | undefined>(local.defaultValue);\n\n function handleChange(e: CustomEvent<string>) {\n if (local.value === void 0) {\n setColor(e.detail);\n }\n local.onChange?.(e.detail);\n }\n\n onMount(() => {\n if (local.value === void 0 && local.defaultValue) {\n setColor(local.defaultValue);\n }\n });\n createEffect(() => {\n if (local.value !== void 0 && local.value !== untrack(color)) {\n setColor(local.value);\n }\n });\n const popupCss = createMemo(\n () => `.color-picker {padding: 10px;inline-size: 216px;}${local.popupCss || ''}`,\n );\n const css = createMemo(() => `${style + (local.css || '')}.trigger {--c: ${color()};}`);\n\n return (\n <Popover\n {...others}\n arrow={true}\n trigger=\"click\"\n content={<n-color-palette value={color()} onChange={handleChange} />}\n popupClass={cx('color-picker', local.popupClass)}\n popupCss={popupCss()}\n css={css()}\n >\n <span class={cx('trigger', local.size)} />\n </Popover>\n );\n}\n\ncustomElement<ColorPickerProps>(\n 'n-color-picker',\n {\n ...defaultProps,\n value: void 0,\n defaultValue: void 0,\n onChange: void 0,\n size: void 0,\n },\n (_, opts) => {\n const el = opts.element;\n const props = mergeProps(\n {\n onChange(val?: string) {\n el.dispatchEvent(\n new CustomEvent('change', {\n detail: val,\n }),\n );\n },\n children: el.children,\n },\n _,\n );\n\n return <ColorPicker {...props} />;\n },\n);\n\nexport default ColorPicker;\n"],"names":["createEffect","createMemo","createSignal","mergeProps","onMount","splitProps","untrack","cx","customElement","style","Popover","defaultProps","ColorPicker","props","local","others","color","setColor","defaultValue","handleChange","e","value","detail","onChange","popupCss","css","popupClass","size","_","opts","el","element","val","dispatchEvent","CustomEvent","children"],"rangeMappings":"","mappings":"uiBAAA,QACEA,gBAAAA,CAAY,CACZC,cAAAA,CAAU,CACVC,gBAAAA,CAAY,CACZC,cAAAA,CAAU,CACVC,WAAAA,CAAO,CACPC,cAAAA,CAAU,CACVC,WAAAA,CAAO,KACF,UAAW,AAClB,QAASC,MAAAA,CAAE,KAAQ,aAAc,AACjC,QAASC,iBAAAA,CAAa,KAAQ,eAAgB,AAC9C,QAASC,SAAAA,CAAK,KAAQ,SAAU,AAChC,OAAO,kBAAmB,AAC1B,QAAOC,GAAWC,gBAAAA,CAAY,KAAQ,YAAa,CAwBnD,SAASC,EAAYC,CAAuB,EAC1C,GAAM,CAACC,EAAOC,EAAO,CAAGV,EAAWQ,EAAO,CACxC,MACA,QACA,eACA,WACA,aACA,WACA,OACD,EACK,CAACG,EAAOC,EAAS,CAAGf,EAAiCY,EAAMI,YAAY,EAE7E,SAASC,EAAaC,CAAsB,EACtB,KAAK,IAArBN,EAAMO,KAAK,EACbJ,EAASG,EAAEE,MAAM,QAEnBR,EAAMS,QAAQ,EAAdT,EAAMS,QAAQ,MAAdT,EAAiBM,EAAEE,MAAM,CAC3B,CAEAlB,EAAQ,KACc,KAAK,IAArBU,EAAMO,KAAK,EAAeP,EAAMI,YAAY,EAC9CD,EAASH,EAAMI,YAAY,CAE/B,GACAlB,EAAa,KACS,KAAK,IAArBc,EAAMO,KAAK,EAAeP,EAAMO,KAAK,GAAKf,EAAQU,IACpDC,EAASH,EAAMO,KAAK,CAExB,GACA,IAAMG,EAAWvB,EACf,IAAM,CAAC,iDAAiD,EAAEa,EAAMU,QAAQ,EAAI,GAAG,CAAC,EAE5EC,EAAMxB,EAAW,IAAM,CAAC,EAAEQ,EAASK,CAAAA,EAAMW,GAAG,EAAI,EAAC,EAAG,eAAe,EAAET,IAAQ,EAAE,CAAC,EAEtF,SACGN,IACKK,SACG,CAAA,0EAE6CI,+BAAnBH,oCACrBT,EAAG,eAAgBO,EAAMY,UAAU,yBACrCF,sBACLC,+CAEQlB,EAAG,UAAWO,EAAMa,IAAI,SAG3C,CAEAnB,EACE,iBACA,KACKG,GACHU,MAAO,KAAK,EACZH,aAAc,KAAK,EACnBK,SAAU,KAAK,EACfI,KAAM,KAAK,IAEb,CAACC,EAAGC,KACF,IAAMC,EAAKD,EAAKE,OAAO,CAevB,SAAQnB,EAdMT,EACZ,CACEoB,SAASS,CAAY,EACnBF,EAAGG,aAAa,CACd,IAAIC,YAAY,SAAU,CACxBZ,OAAQU,CACV,GAEJ,EACAG,SAAUL,EAAGK,QAAQ,AACvB,EACAP,GAIJ,EAGF,gBAAehB,CAAY"}
package/es/cron/index.js CHANGED
@@ -1,2 +1,2 @@
1
- function e(){return(e=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}import{template as t}from"solid-js/web";import{insert as r}from"solid-js/web";import{getOwner as n}from"solid-js/web";import{effect as a}from"solid-js/web";import{createComponent as o}from"solid-js/web";import{addEventListener as l}from"solid-js/web";let s=t("<style>"),u=t("<n-tabs>",!0,!1),i=t("<code>");import{Show as m,batch as p,createComponent as d,createEffect as y,createSignal as c,mergeProps as v,splitProps as b,untrack as g}from"solid-js";import{css as f}from"@moneko/css";import{customElement as h}from"solid-element";import w from"./day";import $ from"./hour";import C from"./minute";import k from"./month";import N from"./second";import j from"./week";import E from"./year";import"../button";import"../input-number";import"../radio";import"../select";import"../tabs";function W(t){let[d]=b(t,["value","defaultValue","exclude","onChange","type","showCron","css","class"]),[v,h]=c(d.defaultValue),W=new Date().getFullYear(),D={hms:{start:0,end:1,begin:0,beginEvery:1,some:[0],value:""},mwd:{start:1,end:2,begin:1,beginEvery:1,some:[1],value:""},year:{start:W,end:W+1,begin:W,beginEvery:1,some:[W],value:""}},P=[],L=[];for(let e=1;e<32;e++)P.push({label:e<10?`0${e}`:`${e}`,value:e}),L.push(e);let[x,O]=c("second"),[V,I]=c({second:e({type:"*"},D.hms),minute:e({type:"*"},D.hms),hour:e({type:"*"},D.hms),day:e({type:"*",last:1,closeWorkDay:1},D.mwd),month:e({type:"*"},D.mwd),week:e({last:1,type:"?"},D.mwd),year:e({type:""},D.year)});function F(t,r){p(()=>{!function(){let t=g(V),r="day"===x();if(r||"week"===x()){let n=r?"week":"day",a="?"===t[n].type&&"?"===t[x()].type?"*":"?";a!==t[n].type&&I(t=>e({},t,{[n]:e({},t[n],{type:a})}))}}(),I(n=>{let a=e({},n[x()],{[t]:r});return("start"===t||"end"===t)&&a.end-a.start<=1&&("end"===t?a.start=r-1:a.end=r+1),e({},n,{[x()]:a})})})}function U(e){O(e.detail[0])}function Y(e,t){if(e.value.includes("-")){e.type="period";let t=e.value.split("-");e.start=Number(t[0]),e.end=Number(t[1])}else if(e.value.includes("W"))e.type="closeWorkDay",e.closeWorkDay=Number(e.value.split("W")[0])||1;else if(e.value.includes("L"))e.type="last",e.last=Number(e.value.split("L")[0])||1;else if(e.value.includes(t?"#":"/")){e.type="beginInterval";let r=e.value.split(t?"#":"/");t?(e.begin=Number(r[1]),e.beginEvery=Number(r[0])):(e.begin=Number(r[0]),e.beginEvery=Number(r[1]))}else e.value.includes(",")||/^[0-9]+$/.test(e.value)?(e.type="some",e.some=e.value.split(",").map(Number)):e.type=e.value;return e}function _(e){return"number"!=typeof e||isNaN(e)?e:`${e}`}function q(e,t){switch(e.type){case"period":return`${_(e.start)}-${_(e.end)}`;case"beginInterval":if(t)return`${_(e.beginEvery)}#${_(e.begin)}`;return`${_(e.begin)}/${_(e.beginEvery)}`;case"closeWorkDay":return`${_(e.closeWorkDay||1)}W`;case"last":return t?`${_(e.last)}L`:"L";case"some":return e.some.join(",");default:return e.type}}y(()=>{void 0!==d.value&&g(v)!==d.value&&h(d.value)}),y(()=>{let t=v();if(t){let r=t.toUpperCase().split(" ");p(()=>{I(t=>({second:Y(e({},t.second,{value:r[0]||"?"})),minute:Y(e({},t.minute,{value:r[1]||"?"})),hour:Y(e({},t.hour,{value:r[2]||"?"})),day:Y(e({},t.day,{value:r[3]||""})),month:Y(e({},t.month,{value:r[4]||""})),week:Y(e({},t.week,{value:r[5]||""}),!0),year:Y(e({},t.year,{value:r[6]||""}))}))})}}),y(()=>{let{second:e,minute:r,hour:n,day:a,month:o,week:l,year:s}=V(),u=`${q(e)} ${q(r)} ${q(n)} ${q(a)} ${q(o)} ${q(l,!0)} ${q(s)}`;h(e=>e===u?e:(null==t.onChange||t.onChange.call(t,u),u))});let z=[{value:"second",label:"秒",content:o(N,{get state(){return V().second},onChange:F})},{value:"minute",label:"分钟",content:o(C,{get state(){return V().minute},onChange:F})},{value:"hour",label:"小时",content:o($,{get state(){return V().hour},onChange:F})},{value:"day",label:"日",content:o(w,{get state(){return V().day},onChange:F})},{value:"week",label:"周",content:o(j,{get state(){return V().week},onChange:F})},{value:"month",label:"月",content:o(k,{get state(){return V().month},onChange:F})},{value:"year",label:"年",content:o(E,{get state(){return V().year},onChange:F})}];return[(()=>{let e=s();return r(e,()=>f(d.css)),e})(),(()=>{let e=u();return l(e,"change",U),e.items=z,e._$owner=n(),a(()=>e.type=d.type),a(()=>e.value=x()),e})(),o(m,{get when(){return d.showCron},get children(){let e=i();return e.style.setProperty("width","100%"),e.style.setProperty("display","block"),e.style.setProperty("background","var(--component-bg)"),e.style.setProperty("border-radius","var(--border-radius)"),e.style.setProperty("text-align","center"),r(e,v),e}})]}h("n-cron",{value:void 0,defaultValue:"0 0 0 * * ? *",onChange:void 0,type:"line",exclude:[],showCron:!0},(e,t)=>{let r=t.element;return d(W,v({onChange(e){r.dispatchEvent(new CustomEvent("change",{detail:e}))}},e))});export default W;
1
+ function e(){return(e=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}import{template as t}from"solid-js/web";import{insert as r}from"solid-js/web";import{getOwner as n}from"solid-js/web";import{effect as a}from"solid-js/web";import{createComponent as o}from"solid-js/web";import{addEventListener as l}from"solid-js/web";let s=t("<style>"),u=t("<n-tabs>",!0,!1),i=t("<code>");import{Show as m,batch as p,createEffect as d,createSignal as y,mergeProps as c,splitProps as v,untrack as b}from"solid-js";import{css as g}from"@moneko/css";import{customElement as f}from"solid-element";import h from"./day";import w from"./hour";import $ from"./minute";import C from"./month";import k from"./second";import N from"./week";import j from"./year";import"../button";import"../input-number";import"../radio";import"../select";import"../tabs";function E(t){let[c]=v(t,["value","defaultValue","exclude","onChange","type","showCron","css","class"]),[f,E]=y(c.defaultValue),W=new Date().getFullYear(),D={hms:{start:0,end:1,begin:0,beginEvery:1,some:[0],value:""},mwd:{start:1,end:2,begin:1,beginEvery:1,some:[1],value:""},year:{start:W,end:W+1,begin:W,beginEvery:1,some:[W],value:""}},P=[],L=[];for(let e=1;e<32;e++)P.push({label:e<10?`0${e}`:`${e}`,value:e}),L.push(e);let[x,O]=y("second"),[V,I]=y({second:e({type:"*"},D.hms),minute:e({type:"*"},D.hms),hour:e({type:"*"},D.hms),day:e({type:"*",last:1,closeWorkDay:1},D.mwd),month:e({type:"*"},D.mwd),week:e({last:1,type:"?"},D.mwd),year:e({type:""},D.year)});function F(t,r){p(()=>{!function(){let t=b(V),r="day"===x();if(r||"week"===x()){let n=r?"week":"day",a="?"===t[n].type&&"?"===t[x()].type?"*":"?";a!==t[n].type&&I(t=>e({},t,{[n]:e({},t[n],{type:a})}))}}(),I(n=>{let a=e({},n[x()],{[t]:r});return("start"===t||"end"===t)&&a.end-a.start<=1&&("end"===t?a.start=r-1:a.end=r+1),e({},n,{[x()]:a})})})}function U(e){O(e.detail[0])}function Y(e,t){if(e.value.includes("-")){e.type="period";let t=e.value.split("-");e.start=Number(t[0]),e.end=Number(t[1])}else if(e.value.includes("W"))e.type="closeWorkDay",e.closeWorkDay=Number(e.value.split("W")[0])||1;else if(e.value.includes("L"))e.type="last",e.last=Number(e.value.split("L")[0])||1;else if(e.value.includes(t?"#":"/")){e.type="beginInterval";let r=e.value.split(t?"#":"/");t?(e.begin=Number(r[1]),e.beginEvery=Number(r[0])):(e.begin=Number(r[0]),e.beginEvery=Number(r[1]))}else e.value.includes(",")||/^[0-9]+$/.test(e.value)?(e.type="some",e.some=e.value.split(",").map(Number)):e.type=e.value;return e}function _(e){return"number"!=typeof e||isNaN(e)?e:`${e}`}function q(e,t){switch(e.type){case"period":return`${_(e.start)}-${_(e.end)}`;case"beginInterval":if(t)return`${_(e.beginEvery)}#${_(e.begin)}`;return`${_(e.begin)}/${_(e.beginEvery)}`;case"closeWorkDay":return`${_(e.closeWorkDay||1)}W`;case"last":return t?`${_(e.last)}L`:"L";case"some":return e.some.join(",");default:return e.type}}d(()=>{void 0!==c.value&&b(f)!==c.value&&E(c.value)}),d(()=>{let t=f();if(t){let r=t.toUpperCase().split(" ");p(()=>{I(t=>({second:Y(e({},t.second,{value:r[0]||"?"})),minute:Y(e({},t.minute,{value:r[1]||"?"})),hour:Y(e({},t.hour,{value:r[2]||"?"})),day:Y(e({},t.day,{value:r[3]||""})),month:Y(e({},t.month,{value:r[4]||""})),week:Y(e({},t.week,{value:r[5]||""}),!0),year:Y(e({},t.year,{value:r[6]||""}))}))})}}),d(()=>{let{second:e,minute:r,hour:n,day:a,month:o,week:l,year:s}=V(),u=`${q(e)} ${q(r)} ${q(n)} ${q(a)} ${q(o)} ${q(l,!0)} ${q(s)}`;E(e=>e===u?e:(null==t.onChange||t.onChange.call(t,u),u))});let z=[{value:"second",label:"秒",content:o(k,{get state(){return V().second},onChange:F})},{value:"minute",label:"分钟",content:o($,{get state(){return V().minute},onChange:F})},{value:"hour",label:"小时",content:o(w,{get state(){return V().hour},onChange:F})},{value:"day",label:"日",content:o(h,{get state(){return V().day},onChange:F})},{value:"week",label:"周",content:o(N,{get state(){return V().week},onChange:F})},{value:"month",label:"月",content:o(C,{get state(){return V().month},onChange:F})},{value:"year",label:"年",content:o(j,{get state(){return V().year},onChange:F})}];return[(()=>{let e=s();return r(e,()=>g(c.css)),e})(),(()=>{let e=u();return l(e,"change",U),e.items=z,e._$owner=n(),a(()=>e.type=c.type),a(()=>e.value=x()),e})(),o(m,{get when(){return c.showCron},get children(){let e=i();return e.style.setProperty("width","100%"),e.style.setProperty("display","block"),e.style.setProperty("background","var(--component-bg)"),e.style.setProperty("border-radius","var(--border-radius)"),e.style.setProperty("text-align","center"),r(e,f),e}})]}f("n-cron",{value:void 0,defaultValue:"0 0 0 * * ? *",onChange:void 0,type:"line",exclude:[],showCron:!0},(e,t)=>{let r=t.element;return o(E,c({onChange(e){r.dispatchEvent(new CustomEvent("change",{detail:e}))}},e))});export default E;
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/cron/index.tsx"],"sourcesContent":["import {\n Show,\n batch,\n createComponent,\n createEffect,\n createSignal,\n mergeProps,\n splitProps,\n untrack,\n} from 'solid-js';\nimport { css } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport Day from './day';\nimport Hour from './hour';\nimport Minute from './minute';\nimport Month from './month';\nimport Second from './second';\nimport Week from './week';\nimport Year from './year';\nimport '../button';\nimport '../input-number';\nimport '../radio';\nimport '../select';\nimport '../tabs';\nimport type { BaseOption, CustomElement, TabOption } from '..';\n\nexport interface CronProps {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** 隐藏域 */\n exclude?: string[];\n /** 显示表达式\n * @default true\n */\n showCron?: boolean;\n /** 标签页类型\n * @default 'line'\n */\n type?: 'line' | 'card';\n /** 值 */\n value?: string;\n /** 默认值\n * @default 0 0 0 * * ? *\n */\n defaultValue?: string;\n /** 值改变触发a */\n onChange?(val?: string): void;\n}\n\nexport type CronElement = CustomElement<CronProps>;\nexport type SecondType = '*' | 'period' | 'beginInterval' | 'some';\nexport type MinuteType = SecondType;\nexport type HourType = SecondType;\nexport type DayType = SecondType | 'closeWorkDay' | '?' | 'last';\nexport type WeekType = SecondType | 'last' | '?';\nexport type MonthType = SecondType;\nexport type YearType = SecondType | '';\nexport type CronData<T extends string = string> = {\n start: number;\n end: number;\n begin: number;\n beginEvery: number;\n type: T;\n some: number[];\n value: string;\n};\n\nexport type ActiveTab = keyof CronType;\nexport type CronType = {\n second: CronData<SecondType>;\n minute: CronData<MinuteType>;\n hour: CronData<HourType>;\n day: CronData<DayType> & { last: number; closeWorkDay: number };\n week: CronData<WeekType> & { last: number };\n month: CronData<MonthType>;\n year: CronData<YearType>;\n};\n\nfunction Cron(props: CronProps) {\n const [local] = splitProps(props, [\n 'value',\n 'defaultValue',\n 'exclude',\n 'onChange',\n 'type',\n 'showCron',\n 'css',\n 'class',\n ]);\n const [value, setValue] = createSignal(local.defaultValue);\n const date = new Date();\n const fullYear = date.getFullYear();\n const defaultState = {\n hms: {\n start: 0,\n end: 1,\n begin: 0,\n beginEvery: 1,\n some: [0],\n value: '',\n },\n mwd: {\n start: 1,\n end: 2,\n begin: 1,\n beginEvery: 1,\n some: [1],\n value: '',\n },\n year: {\n start: fullYear,\n end: fullYear + 1,\n begin: fullYear,\n beginEvery: 1,\n some: [fullYear],\n value: '',\n },\n };\n const days: BaseOption[] = [];\n const daysBeginEvery: number[] = [];\n\n for (let x = 1; x < 32; x++) {\n days.push({\n label: x < 10 ? `0${x}` : `${x}`,\n value: x,\n });\n daysBeginEvery.push(x);\n }\n const [active, setActive] = createSignal<ActiveTab>('second');\n const [state, setState] = createSignal<CronType>({\n second: { type: '*', ...defaultState.hms },\n minute: { type: '*', ...defaultState.hms },\n hour: { type: '*', ...defaultState.hms },\n day: {\n type: '*',\n last: 1,\n closeWorkDay: 1,\n ...defaultState.mwd,\n },\n month: {\n type: '*',\n ...defaultState.mwd,\n },\n week: {\n last: 1,\n type: '?',\n ...defaultState.mwd,\n },\n year: {\n type: '',\n ...defaultState.year,\n },\n });\n\n function prefixWeekDay() {\n const store = untrack(state);\n const isDay = active() === 'day';\n\n if (isDay || active() === 'week') {\n const key = isDay ? 'week' : 'day';\n const next = store[key].type === '?' && store[active()].type === '?' ? '*' : '?';\n\n if (next !== store[key].type) {\n setState((prev) => {\n return {\n ...prev,\n [key]: {\n ...prev[key],\n type: next,\n },\n };\n });\n }\n }\n }\n\n function onChange<T extends CronType[ActiveTab]>(type: keyof T, val: T[keyof T]) {\n batch(() => {\n prefixWeekDay();\n setState((prev) => {\n const next = {\n ...prev[active()],\n [type]: val,\n };\n\n if (type === 'start' || type === 'end') {\n if (next.end - next.start <= 1) {\n if (type === 'end') {\n next.start = (val as number) - 1;\n } else {\n next.end = (val as number) + 1;\n }\n }\n }\n\n return {\n ...prev,\n [active()]: next,\n };\n });\n });\n }\n function changeActiveKey(e: CustomEvent<[string, TabOption, Event]>) {\n setActive(e.detail[0] as ActiveTab);\n }\n function parseVal<T extends ActiveTab>(item: CronType[T], isWeek?: boolean) {\n if (item.value.includes('-')) {\n item.type = 'period';\n const period = item.value.split('-');\n\n item.start = Number(period[0]);\n item.end = Number(period[1]);\n } else if (item.value.includes('W')) {\n item.type = 'closeWorkDay';\n (item as CronType['day']).closeWorkDay = Number(item.value.split('W')[0]) || 1;\n } else if (item.value.includes('L')) {\n item.type = 'last';\n (item as CronType['day']).last = Number(item.value.split('L')[0]) || 1;\n } else if (item.value.includes(isWeek ? '#' : '/')) {\n item.type = 'beginInterval';\n const beginInterval = item.value.split(isWeek ? '#' : '/');\n\n if (isWeek) {\n item.begin = Number(beginInterval[1]);\n item.beginEvery = Number(beginInterval[0]);\n } else {\n item.begin = Number(beginInterval[0]);\n item.beginEvery = Number(beginInterval[1]);\n }\n } else if (item.value.includes(',') || /^[0-9]+$/.test(item.value)) {\n item.type = 'some';\n item.some = item.value.split(',').map(Number);\n } else {\n item.type = item.value as CronType[T]['type'];\n }\n return item;\n }\n\n function nts(num?: string | number) {\n if (typeof num === 'number' && !isNaN(num)) {\n return `${num}`;\n }\n return num;\n }\n\n function fmt<T extends ActiveTab>(item: CronType[T], isWeek?: boolean) {\n switch (item.type) {\n case 'period':\n return `${nts(item.start)}-${nts(item.end)}`;\n case 'beginInterval':\n if (isWeek) return `${nts(item.beginEvery)}#${nts(item.begin)}`;\n return `${nts(item.begin)}/${nts(item.beginEvery)}`;\n case 'closeWorkDay':\n return `${nts(item.closeWorkDay || 1)}W`;\n case 'last':\n return isWeek ? `${nts(item.last)}L` : 'L';\n case 'some':\n return item.some.join(',');\n default:\n return item.type;\n }\n }\n\n createEffect(() => {\n if (local.value !== void 0 && untrack(value) !== local.value) {\n setValue(local.value);\n }\n });\n\n createEffect(() => {\n const val = value();\n\n if (val) {\n const valuesArray = val.toUpperCase().split(' ');\n\n batch(() => {\n setState((prev) => {\n return {\n second: parseVal<'second'>({ ...prev.second, value: valuesArray[0] || '?' }),\n minute: parseVal<'minute'>({ ...prev.minute, value: valuesArray[1] || '?' }),\n hour: parseVal<'hour'>({ ...prev.hour, value: valuesArray[2] || '?' }),\n day: parseVal<'day'>({ ...prev.day, value: valuesArray[3] || '' }),\n month: parseVal<'month'>({ ...prev.month, value: valuesArray[4] || '' }),\n week: parseVal<'week'>({ ...prev.week, value: valuesArray[5] || '' }, true),\n year: parseVal<'year'>({ ...prev.year, value: valuesArray[6] || '' }),\n };\n });\n });\n }\n });\n createEffect(() => {\n const { second, minute, hour, day, month, week, year } = state();\n const next = `${fmt(second)} ${fmt(minute)} ${fmt(hour)} ${fmt(day)} ${fmt(month)} ${fmt(\n week,\n true,\n )} ${fmt(year)}`;\n\n setValue((prev) => {\n if (prev === next) return prev;\n props.onChange?.(next);\n return next;\n });\n });\n\n const items = [\n {\n value: 'second',\n label: '秒',\n content: <Second state={state().second} onChange={onChange} />,\n },\n {\n value: 'minute',\n label: '分钟',\n content: <Minute state={state().minute} onChange={onChange} />,\n },\n {\n value: 'hour',\n label: '小时',\n content: <Hour state={state().hour} onChange={onChange} />,\n },\n {\n value: 'day',\n label: '日',\n content: <Day state={state().day} onChange={onChange} />,\n },\n {\n value: 'week',\n label: '周',\n content: <Week state={state().week} onChange={onChange} />,\n },\n {\n value: 'month',\n label: '月',\n content: <Month state={state().month} onChange={onChange} />,\n },\n {\n value: 'year',\n label: '年',\n content: <Year state={state().year} onChange={onChange} />,\n },\n ];\n\n return (\n <>\n <style>{css(local.css)}</style>\n <n-tabs type={local.type} items={items} value={active()} onChange={changeActiveKey} />\n <Show when={local.showCron}>\n <code\n style={{\n width: '100%',\n display: 'block',\n background: 'var(--component-bg)',\n 'border-radius': 'var(--border-radius)',\n 'text-align': 'center',\n }}\n >\n {value()}\n </code>\n </Show>\n </>\n );\n}\n\ncustomElement<CronProps>(\n 'n-cron',\n {\n value: void 0,\n defaultValue: '0 0 0 * * ? *',\n onChange: void 0,\n type: 'line',\n exclude: [],\n showCron: true,\n } as CronProps,\n (_, opts) => {\n const el = opts.element;\n const props = mergeProps(\n {\n onChange(val?: string) {\n el.dispatchEvent(\n new CustomEvent('change', {\n detail: val,\n }),\n );\n },\n },\n _,\n );\n\n return createComponent(Cron, props);\n },\n);\nexport default Cron;\n"],"names":["Show","batch","createComponent","createEffect","createSignal","mergeProps","splitProps","untrack","css","customElement","Day","Hour","Minute","Month","Second","Week","Year","Cron","props","local","value","setValue","defaultValue","fullYear","date","Date","getFullYear","defaultState","hms","start","end","begin","beginEvery","some","mwd","year","days","daysBeginEvery","x","push","label","active","setActive","state","setState","second","type","minute","hour","day","last","closeWorkDay","month","week","onChange","val","prefixWeekDay","store","isDay","key","next","prev","changeActiveKey","e","detail","parseVal","item","isWeek","includes","period","split","Number","beginInterval","test","map","nts","num","isNaN","fmt","join","valuesArray","toUpperCase","items","content","showCron","exclude","_","opts","el","element","dispatchEvent","CustomEvent"],"rangeMappings":"","mappings":"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"}
1
+ {"version":3,"sources":["../../components/cron/index.tsx"],"sourcesContent":["import { Show, batch, createEffect, createSignal, mergeProps, splitProps, untrack } from 'solid-js';\nimport { css } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport Day from './day';\nimport Hour from './hour';\nimport Minute from './minute';\nimport Month from './month';\nimport Second from './second';\nimport Week from './week';\nimport Year from './year';\nimport '../button';\nimport '../input-number';\nimport '../radio';\nimport '../select';\nimport '../tabs';\nimport type { BaseOption, CustomElement, TabOption } from '..';\n\nexport interface CronProps {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** 隐藏域 */\n exclude?: string[];\n /** 显示表达式\n * @default true\n */\n showCron?: boolean;\n /** 标签页类型\n * @default 'line'\n */\n type?: 'line' | 'card';\n /** 值 */\n value?: string;\n /** 默认值\n * @default 0 0 0 * * ? *\n */\n defaultValue?: string;\n /** 值改变触发a */\n onChange?(val?: string): void;\n}\n\nexport type CronElement = CustomElement<CronProps>;\nexport type SecondType = '*' | 'period' | 'beginInterval' | 'some';\nexport type MinuteType = SecondType;\nexport type HourType = SecondType;\nexport type DayType = SecondType | 'closeWorkDay' | '?' | 'last';\nexport type WeekType = SecondType | 'last' | '?';\nexport type MonthType = SecondType;\nexport type YearType = SecondType | '';\nexport type CronData<T extends string = string> = {\n start: number;\n end: number;\n begin: number;\n beginEvery: number;\n type: T;\n some: number[];\n value: string;\n};\n\nexport type ActiveTab = keyof CronType;\nexport type CronType = {\n second: CronData<SecondType>;\n minute: CronData<MinuteType>;\n hour: CronData<HourType>;\n day: CronData<DayType> & { last: number; closeWorkDay: number };\n week: CronData<WeekType> & { last: number };\n month: CronData<MonthType>;\n year: CronData<YearType>;\n};\n\nfunction Cron(props: CronProps) {\n const [local] = splitProps(props, [\n 'value',\n 'defaultValue',\n 'exclude',\n 'onChange',\n 'type',\n 'showCron',\n 'css',\n 'class',\n ]);\n const [value, setValue] = createSignal(local.defaultValue);\n const date = new Date();\n const fullYear = date.getFullYear();\n const defaultState = {\n hms: {\n start: 0,\n end: 1,\n begin: 0,\n beginEvery: 1,\n some: [0],\n value: '',\n },\n mwd: {\n start: 1,\n end: 2,\n begin: 1,\n beginEvery: 1,\n some: [1],\n value: '',\n },\n year: {\n start: fullYear,\n end: fullYear + 1,\n begin: fullYear,\n beginEvery: 1,\n some: [fullYear],\n value: '',\n },\n };\n const days: BaseOption[] = [];\n const daysBeginEvery: number[] = [];\n\n for (let x = 1; x < 32; x++) {\n days.push({\n label: x < 10 ? `0${x}` : `${x}`,\n value: x,\n });\n daysBeginEvery.push(x);\n }\n const [active, setActive] = createSignal<ActiveTab>('second');\n const [state, setState] = createSignal<CronType>({\n second: { type: '*', ...defaultState.hms },\n minute: { type: '*', ...defaultState.hms },\n hour: { type: '*', ...defaultState.hms },\n day: {\n type: '*',\n last: 1,\n closeWorkDay: 1,\n ...defaultState.mwd,\n },\n month: {\n type: '*',\n ...defaultState.mwd,\n },\n week: {\n last: 1,\n type: '?',\n ...defaultState.mwd,\n },\n year: {\n type: '',\n ...defaultState.year,\n },\n });\n\n function prefixWeekDay() {\n const store = untrack(state);\n const isDay = active() === 'day';\n\n if (isDay || active() === 'week') {\n const key = isDay ? 'week' : 'day';\n const next = store[key].type === '?' && store[active()].type === '?' ? '*' : '?';\n\n if (next !== store[key].type) {\n setState((prev) => {\n return {\n ...prev,\n [key]: {\n ...prev[key],\n type: next,\n },\n };\n });\n }\n }\n }\n\n function onChange<T extends CronType[ActiveTab]>(type: keyof T, val: T[keyof T]) {\n batch(() => {\n prefixWeekDay();\n setState((prev) => {\n const next = {\n ...prev[active()],\n [type]: val,\n };\n\n if (type === 'start' || type === 'end') {\n if (next.end - next.start <= 1) {\n if (type === 'end') {\n next.start = (val as number) - 1;\n } else {\n next.end = (val as number) + 1;\n }\n }\n }\n\n return {\n ...prev,\n [active()]: next,\n };\n });\n });\n }\n function changeActiveKey(e: CustomEvent<[string, TabOption, Event]>) {\n setActive(e.detail[0] as ActiveTab);\n }\n function parseVal<T extends ActiveTab>(item: CronType[T], isWeek?: boolean) {\n if (item.value.includes('-')) {\n item.type = 'period';\n const period = item.value.split('-');\n\n item.start = Number(period[0]);\n item.end = Number(period[1]);\n } else if (item.value.includes('W')) {\n item.type = 'closeWorkDay';\n (item as CronType['day']).closeWorkDay = Number(item.value.split('W')[0]) || 1;\n } else if (item.value.includes('L')) {\n item.type = 'last';\n (item as CronType['day']).last = Number(item.value.split('L')[0]) || 1;\n } else if (item.value.includes(isWeek ? '#' : '/')) {\n item.type = 'beginInterval';\n const beginInterval = item.value.split(isWeek ? '#' : '/');\n\n if (isWeek) {\n item.begin = Number(beginInterval[1]);\n item.beginEvery = Number(beginInterval[0]);\n } else {\n item.begin = Number(beginInterval[0]);\n item.beginEvery = Number(beginInterval[1]);\n }\n } else if (item.value.includes(',') || /^[0-9]+$/.test(item.value)) {\n item.type = 'some';\n item.some = item.value.split(',').map(Number);\n } else {\n item.type = item.value as CronType[T]['type'];\n }\n return item;\n }\n\n function nts(num?: string | number) {\n if (typeof num === 'number' && !isNaN(num)) {\n return `${num}`;\n }\n return num;\n }\n\n function fmt<T extends ActiveTab>(item: CronType[T], isWeek?: boolean) {\n switch (item.type) {\n case 'period':\n return `${nts(item.start)}-${nts(item.end)}`;\n case 'beginInterval':\n if (isWeek) return `${nts(item.beginEvery)}#${nts(item.begin)}`;\n return `${nts(item.begin)}/${nts(item.beginEvery)}`;\n case 'closeWorkDay':\n return `${nts(item.closeWorkDay || 1)}W`;\n case 'last':\n return isWeek ? `${nts(item.last)}L` : 'L';\n case 'some':\n return item.some.join(',');\n default:\n return item.type;\n }\n }\n\n createEffect(() => {\n if (local.value !== void 0 && untrack(value) !== local.value) {\n setValue(local.value);\n }\n });\n\n createEffect(() => {\n const val = value();\n\n if (val) {\n const valuesArray = val.toUpperCase().split(' ');\n\n batch(() => {\n setState((prev) => {\n return {\n second: parseVal<'second'>({ ...prev.second, value: valuesArray[0] || '?' }),\n minute: parseVal<'minute'>({ ...prev.minute, value: valuesArray[1] || '?' }),\n hour: parseVal<'hour'>({ ...prev.hour, value: valuesArray[2] || '?' }),\n day: parseVal<'day'>({ ...prev.day, value: valuesArray[3] || '' }),\n month: parseVal<'month'>({ ...prev.month, value: valuesArray[4] || '' }),\n week: parseVal<'week'>({ ...prev.week, value: valuesArray[5] || '' }, true),\n year: parseVal<'year'>({ ...prev.year, value: valuesArray[6] || '' }),\n };\n });\n });\n }\n });\n createEffect(() => {\n const { second, minute, hour, day, month, week, year } = state();\n const next = `${fmt(second)} ${fmt(minute)} ${fmt(hour)} ${fmt(day)} ${fmt(month)} ${fmt(\n week,\n true,\n )} ${fmt(year)}`;\n\n setValue((prev) => {\n if (prev === next) return prev;\n props.onChange?.(next);\n return next;\n });\n });\n\n const items = [\n {\n value: 'second',\n label: '秒',\n content: <Second state={state().second} onChange={onChange} />,\n },\n {\n value: 'minute',\n label: '分钟',\n content: <Minute state={state().minute} onChange={onChange} />,\n },\n {\n value: 'hour',\n label: '小时',\n content: <Hour state={state().hour} onChange={onChange} />,\n },\n {\n value: 'day',\n label: '日',\n content: <Day state={state().day} onChange={onChange} />,\n },\n {\n value: 'week',\n label: '周',\n content: <Week state={state().week} onChange={onChange} />,\n },\n {\n value: 'month',\n label: '月',\n content: <Month state={state().month} onChange={onChange} />,\n },\n {\n value: 'year',\n label: '年',\n content: <Year state={state().year} onChange={onChange} />,\n },\n ];\n\n return (\n <>\n <style>{css(local.css)}</style>\n <n-tabs type={local.type} items={items} value={active()} onChange={changeActiveKey} />\n <Show when={local.showCron}>\n <code\n style={{\n width: '100%',\n display: 'block',\n background: 'var(--component-bg)',\n 'border-radius': 'var(--border-radius)',\n 'text-align': 'center',\n }}\n >\n {value()}\n </code>\n </Show>\n </>\n );\n}\n\ncustomElement<CronProps>(\n 'n-cron',\n {\n value: void 0,\n defaultValue: '0 0 0 * * ? *',\n onChange: void 0,\n type: 'line',\n exclude: [],\n showCron: true,\n } as CronProps,\n (_, opts) => {\n const el = opts.element;\n const props = mergeProps(\n {\n onChange(val?: string) {\n el.dispatchEvent(\n new CustomEvent('change', {\n detail: val,\n }),\n );\n },\n },\n _,\n );\n\n return <Cron {...props} />;\n },\n);\nexport default Cron;\n"],"names":["Show","batch","createEffect","createSignal","mergeProps","splitProps","untrack","css","customElement","Day","Hour","Minute","Month","Second","Week","Year","Cron","props","local","value","setValue","defaultValue","fullYear","date","Date","getFullYear","defaultState","hms","start","end","begin","beginEvery","some","mwd","year","days","daysBeginEvery","x","push","label","active","setActive","state","setState","second","type","minute","hour","day","last","closeWorkDay","month","week","onChange","val","prefixWeekDay","store","isDay","key","next","prev","changeActiveKey","e","detail","parseVal","item","isWeek","includes","period","split","Number","beginInterval","test","map","nts","num","isNaN","fmt","join","valuesArray","toUpperCase","items","content","showCron","exclude","_","opts","el","element","dispatchEvent","CustomEvent"],"rangeMappings":"","mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{template as t}from"solid-js/web";import{insert as e}from"solid-js/web";import{getOwner as r}from"solid-js/web";import{effect as n}from"solid-js/web";import{delegateEvents as o}from"solid-js/web";import{createComponent as a}from"solid-js/web";import{className as s}from"solid-js/web";import{addEventListener as i}from"solid-js/web";let l=t('<n-button type="primary">',!0,!1);import{For as m,createMemo as u}from"solid-js";import{cx as d}from"@moneko/css";export default function(t){let o=u(()=>{let e=t.current.startOf("month").day();if(!e)return[];let r=[],n=t.current.subtract(1,"month").endOf("month");for(let t=e-1;t>=0;t--)r.push(n.subtract(t,"day").get("date"));return r}),c=u(()=>Array.from({length:6-t.current.endOf("month").day()},(t,e)=>e+1)),f=u(()=>[...o(),...Array.from({length:t.current.daysInMonth()},(t,e)=>e+1),...c()]);function p(t){return t<o().length}function h(t){return t>=f().length-c().length}return a(m,{get each(){return f()},children:(o,a)=>{let m=u(()=>{let t=a();return p(t)||h(t)?"date-day date-opacity":"date-day"}),c=u(()=>{let e=a();return!p(e)&&!h(e)&&t.current.get("date")===o});function f(e){let r=a(),n=t.current.subtract(1,"month"),o=t.current.subtract(-1,"month"),s=(p(r)?n:h(r)?o:t.current).set("date",e);t.current.isSame(s)||t.onChange(s)}return(()=>{let t=l();return i(t,"click",f.bind(null,o),!0),t.circle=!0,t.flat=!0,t._$owner=r(),e(t,o),n(e=>{let r=d(m(),c()&&"date-active"),n=c()?"strong":"button";return r!==e._v$&&s(t,e._v$=r),n!==e._v$2&&(t.tag=e._v$2=n),e},{_v$:void 0,_v$2:void 0}),t})()}})}o(["click"]);
1
+ import{template as t}from"solid-js/web";import{insert as e}from"solid-js/web";import{getOwner as r}from"solid-js/web";import{effect as n}from"solid-js/web";import{delegateEvents as o}from"solid-js/web";import{createComponent as a}from"solid-js/web";import{className as s}from"solid-js/web";import{addEventListener as i}from"solid-js/web";let l=t('<n-button type="primary">',!0,!1);import{For as d,createMemo as u}from"solid-js";export default function(t){let o=u(()=>{let e=t.current.startOf("month").day();if(!e)return[];let r=[],n=t.current.subtract(1,"month").endOf("month");for(let t=e-1;t>=0;t--)r.push(n.subtract(t,"day").get("date"));return r}),c=u(()=>Array.from({length:6-t.current.endOf("month").day()},(t,e)=>e+1)),m=u(()=>[...o(),...Array.from({length:t.current.daysInMonth()},(t,e)=>e+1),...c()]);function f(t){return t<o().length}function h(t){return t>=m().length-c().length}return a(d,{get each(){return m()},children:(o,a)=>{let d=u(()=>{let t=a();return f(t)||h(t)?"date-day date-opacity":"date-day"}),c=u(()=>{let e=a();return!f(e)&&!h(e)&&t.current.get("date")===o});function m(e){let r=a(),n=t.current.subtract(1,"month"),o=t.current.subtract(-1,"month"),s=(f(r)?n:h(r)?o:t.current).set("date",e);t.current.isSame(s)||t.onChange(s)}return(()=>{let t=l();return i(t,"click",m.bind(null,o),!0),t.circle=!0,t.flat=!0,t._$owner=r(),e(t,o),n(e=>{let r=d(),n=!!c(),o=c()?"strong":"button";return r!==e._v$&&s(t,e._v$=r),n!==e._v$2&&t.classList.toggle("date-active",e._v$2=n),o!==e._v$3&&(t.tag=e._v$3=o),e},{_v$:void 0,_v$2:void 0,_v$3:void 0}),t})()}})}o(["click"]);
2
2
  //# sourceMappingURL=date.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/date-picker/date.tsx"],"sourcesContent":["import { For, createMemo } from 'solid-js';\nimport { cx } from '@moneko/css';\nimport dayjs from './dayjs';\n\ntype DatePanelProps = {\n current: dayjs.Dayjs;\n onChange(next: dayjs.Dayjs): void;\n};\nfunction DatePanel(props: DatePanelProps) {\n function getDays(_dayjs: dayjs.Dayjs): number[] {\n return Array.from({ length: _dayjs.daysInMonth() }, (_, i) => i + 1);\n }\n const prevDays = createMemo(() => {\n const len = props.current.startOf('month').day();\n\n if (!len) return [];\n const _: number[] = [];\n const lastDayOfMonth = props.current.subtract(1, 'month').endOf('month');\n\n for (let i = len - 1; i >= 0; i--) {\n _.push(lastDayOfMonth.subtract(i, 'day').get('date'));\n }\n\n return _;\n });\n const nextDays = createMemo(() =>\n Array.from({ length: 6 - props.current.endOf('month').day() }, (_, i) => i + 1),\n );\n\n const allDays = createMemo(() => [...prevDays(), ...getDays(props.current), ...nextDays()]);\n\n function isPrev(idx: number) {\n return idx < prevDays().length;\n }\n function isNext(idx: number) {\n return idx >= allDays().length - nextDays().length;\n }\n return (\n <For each={allDays()}>\n {(d, i) => {\n const cls = createMemo(() => {\n const idx = i();\n\n if (isPrev(idx)) return 'date-day date-opacity';\n if (isNext(idx)) return 'date-day date-opacity';\n return 'date-day';\n });\n const isActive = createMemo(() => {\n const idx = i();\n\n return !isPrev(idx) && !isNext(idx) && props.current.get('date') === d;\n });\n\n function setDate(date: number) {\n const idx = i();\n const previousMonth = props.current.subtract(1, 'month');\n const nextMonth = props.current.subtract(-1, 'month');\n\n const next = (isPrev(idx) ? previousMonth : isNext(idx) ? nextMonth : props.current).set(\n 'date',\n date,\n );\n\n if (!props.current.isSame(next)) {\n props.onChange(next);\n }\n }\n\n return (\n <n-button\n type=\"primary\"\n circle={true}\n flat={true}\n class={cx(cls(), isActive() && 'date-active')}\n tag={isActive() ? 'strong' : 'button'}\n onClick={setDate.bind(null, d)}\n >\n {d}\n </n-button>\n );\n }}\n </For>\n );\n}\n\nexport default DatePanel;\n"],"names":["For","createMemo","cx","props","prevDays","len","current","startOf","day","_","lastDayOfMonth","subtract","endOf","i","push","get","nextDays","Array","from","length","allDays","_dayjs","daysInMonth","isPrev","idx","isNext","d","cls","isActive","setDate","date","previousMonth","nextMonth","next","set","isSame","onChange","bind"],"rangeMappings":"","mappings":"4XAAA,QAASA,OAAAA,CAAG,CAAEC,cAAAA,CAAU,KAAQ,UAAW,AAC3C,QAASC,MAAAA,CAAE,KAAQ,aAAc,AAoFjC,gBA7EA,SAAmBC,CAAqB,EAItC,IAAMC,EAAWH,EAAW,KAC1B,IAAMI,EAAMF,EAAMG,OAAO,CAACC,OAAO,CAAC,SAASC,GAAG,GAE9C,GAAI,CAACH,EAAK,MAAO,EAAE,CACnB,IAAMI,EAAc,EAAE,CAChBC,EAAiBP,EAAMG,OAAO,CAACK,QAAQ,CAAC,EAAG,SAASC,KAAK,CAAC,SAEhE,IAAK,IAAIC,EAAIR,EAAM,EAAGQ,GAAK,EAAGA,IAC5BJ,EAAEK,IAAI,CAACJ,EAAeC,QAAQ,CAACE,EAAG,OAAOE,GAAG,CAAC,SAG/C,OAAON,CACT,GACMO,EAAWf,EAAW,IAC1BgB,MAAMC,IAAI,CAAC,CAAEC,OAAQ,EAAIhB,EAAMG,OAAO,CAACM,KAAK,CAAC,SAASJ,GAAG,EAAG,EAAG,CAACC,EAAGI,IAAMA,EAAI,IAGzEO,EAAUnB,EAAW,IAAM,IAAIG,OAnB5Ba,MAAMC,IAAI,CAAC,CAAEC,OAAQE,AAmB8BlB,EAAMG,OAAO,CAnBpCgB,WAAW,EAAG,EAAG,CAACb,EAAGI,IAAMA,EAAI,MAmBWG,IAAW,EAE1F,SAASO,EAAOC,CAAW,EACzB,OAAOA,EAAMpB,IAAWe,MAAM,AAChC,CACA,SAASM,EAAOD,CAAW,EACzB,OAAOA,GAAOJ,IAAUD,MAAM,CAAGH,IAAWG,MAAM,AACpD,CACA,SACGnB,qBAAUoB,cACR,CAACM,EAAGb,KACH,IAAMc,EAAM1B,EAAW,KACrB,IAAMuB,EAAMX,WAEZ,AAAIU,EAAOC,IACPC,EAAOD,GADa,wBAEjB,UACT,GACMI,EAAW3B,EAAW,KAC1B,IAAMuB,EAAMX,IAEZ,MAAO,CAACU,EAAOC,IAAQ,CAACC,EAAOD,IAAQrB,EAAMG,OAAO,CAACS,GAAG,CAAC,UAAYW,CACvE,GAEA,SAASG,EAAQC,CAAY,EAC3B,IAAMN,EAAMX,IACNkB,EAAgB5B,EAAMG,OAAO,CAACK,QAAQ,CAAC,EAAG,SAC1CqB,EAAY7B,EAAMG,OAAO,CAACK,QAAQ,CAAC,GAAI,SAEvCsB,EAAO,AAACV,CAAAA,EAAOC,GAAOO,EAAgBN,EAAOD,GAAOQ,EAAY7B,EAAMG,OAAO,AAAD,EAAG4B,GAAG,CACtF,OACAJ,GAGG3B,EAAMG,OAAO,CAAC6B,MAAM,CAACF,IACxB9B,EAAMiC,QAAQ,CAACH,EAEnB,CAEA,yCAOaJ,EAAQQ,IAAI,CAAC,KAAMX,gBAJpB,CAAA,SACF,CAAA,oBAKLA,eAJMxB,EAAGyB,IAAOC,KAAc,iBAC1BA,IAAa,SAAW,uGAMnC,GAGN"}
1
+ {"version":3,"sources":["../../components/date-picker/date.tsx"],"sourcesContent":["import { For, createMemo } from 'solid-js';\nimport dayjs from './dayjs';\n\ntype DatePanelProps = {\n current: dayjs.Dayjs;\n onChange(next: dayjs.Dayjs): void;\n};\nfunction DatePanel(props: DatePanelProps) {\n function getDays(_dayjs: dayjs.Dayjs): number[] {\n return Array.from({ length: _dayjs.daysInMonth() }, (_, i) => i + 1);\n }\n const prevDays = createMemo(() => {\n const len = props.current.startOf('month').day();\n\n if (!len) return [];\n const _: number[] = [];\n const lastDayOfMonth = props.current.subtract(1, 'month').endOf('month');\n\n for (let i = len - 1; i >= 0; i--) {\n _.push(lastDayOfMonth.subtract(i, 'day').get('date'));\n }\n\n return _;\n });\n const nextDays = createMemo(() =>\n Array.from({ length: 6 - props.current.endOf('month').day() }, (_, i) => i + 1),\n );\n\n const allDays = createMemo(() => [...prevDays(), ...getDays(props.current), ...nextDays()]);\n\n function isPrev(idx: number) {\n return idx < prevDays().length;\n }\n function isNext(idx: number) {\n return idx >= allDays().length - nextDays().length;\n }\n return (\n <For each={allDays()}>\n {(d, i) => {\n const cls = createMemo(() => {\n const idx = i();\n\n if (isPrev(idx)) return 'date-day date-opacity';\n if (isNext(idx)) return 'date-day date-opacity';\n return 'date-day';\n });\n const isActive = createMemo(() => {\n const idx = i();\n\n return !isPrev(idx) && !isNext(idx) && props.current.get('date') === d;\n });\n\n function setDate(date: number) {\n const idx = i();\n const previousMonth = props.current.subtract(1, 'month');\n const nextMonth = props.current.subtract(-1, 'month');\n\n const next = (isPrev(idx) ? previousMonth : isNext(idx) ? nextMonth : props.current).set(\n 'date',\n date,\n );\n\n if (!props.current.isSame(next)) {\n props.onChange(next);\n }\n }\n\n return (\n <n-button\n type=\"primary\"\n circle={true}\n flat={true}\n class={cls()}\n classList={{\n 'date-active': isActive(),\n }}\n tag={isActive() ? 'strong' : 'button'}\n onClick={setDate.bind(null, d)}\n >\n {d}\n </n-button>\n );\n }}\n </For>\n );\n}\n\nexport default DatePanel;\n"],"names":["For","createMemo","props","prevDays","len","current","startOf","day","_","lastDayOfMonth","subtract","endOf","i","push","get","nextDays","Array","from","length","allDays","_dayjs","daysInMonth","isPrev","idx","isNext","d","cls","isActive","setDate","date","previousMonth","nextMonth","next","set","isSame","onChange","bind"],"rangeMappings":"","mappings":"4XAAA,QAASA,OAAAA,CAAG,CAAEC,cAAAA,CAAU,KAAQ,UAAW,AAuF3C,gBAhFA,SAAmBC,CAAqB,EAItC,IAAMC,EAAWF,EAAW,KAC1B,IAAMG,EAAMF,EAAMG,OAAO,CAACC,OAAO,CAAC,SAASC,GAAG,GAE9C,GAAI,CAACH,EAAK,MAAO,EAAE,CACnB,IAAMI,EAAc,EAAE,CAChBC,EAAiBP,EAAMG,OAAO,CAACK,QAAQ,CAAC,EAAG,SAASC,KAAK,CAAC,SAEhE,IAAK,IAAIC,EAAIR,EAAM,EAAGQ,GAAK,EAAGA,IAC5BJ,EAAEK,IAAI,CAACJ,EAAeC,QAAQ,CAACE,EAAG,OAAOE,GAAG,CAAC,SAG/C,OAAON,CACT,GACMO,EAAWd,EAAW,IAC1Be,MAAMC,IAAI,CAAC,CAAEC,OAAQ,EAAIhB,EAAMG,OAAO,CAACM,KAAK,CAAC,SAASJ,GAAG,EAAG,EAAG,CAACC,EAAGI,IAAMA,EAAI,IAGzEO,EAAUlB,EAAW,IAAM,IAAIE,OAnB5Ba,MAAMC,IAAI,CAAC,CAAEC,OAAQE,AAmB8BlB,EAAMG,OAAO,CAnBpCgB,WAAW,EAAG,EAAG,CAACb,EAAGI,IAAMA,EAAI,MAmBWG,IAAW,EAE1F,SAASO,EAAOC,CAAW,EACzB,OAAOA,EAAMpB,IAAWe,MAAM,AAChC,CACA,SAASM,EAAOD,CAAW,EACzB,OAAOA,GAAOJ,IAAUD,MAAM,CAAGH,IAAWG,MAAM,AACpD,CACA,SACGlB,qBAAUmB,cACR,CAACM,EAAGb,KACH,IAAMc,EAAMzB,EAAW,KACrB,IAAMsB,EAAMX,WAEZ,AAAIU,EAAOC,IACPC,EAAOD,GADa,wBAEjB,UACT,GACMI,EAAW1B,EAAW,KAC1B,IAAMsB,EAAMX,IAEZ,MAAO,CAACU,EAAOC,IAAQ,CAACC,EAAOD,IAAQrB,EAAMG,OAAO,CAACS,GAAG,CAAC,UAAYW,CACvE,GAEA,SAASG,EAAQC,CAAY,EAC3B,IAAMN,EAAMX,IACNkB,EAAgB5B,EAAMG,OAAO,CAACK,QAAQ,CAAC,EAAG,SAC1CqB,EAAY7B,EAAMG,OAAO,CAACK,QAAQ,CAAC,GAAI,SAEvCsB,EAAO,AAACV,CAAAA,EAAOC,GAAOO,EAAgBN,EAAOD,GAAOQ,EAAY7B,EAAMG,OAAO,AAAD,EAAG4B,GAAG,CACtF,OACAJ,GAGG3B,EAAMG,OAAO,CAAC6B,MAAM,CAACF,IACxB9B,EAAMiC,QAAQ,CAACH,EAEnB,CAEA,yCAUaJ,EAAQQ,IAAI,CAAC,KAAMX,gBAPpB,CAAA,SACF,CAAA,oBAQLA,eAPMC,QAEUC,MAEZA,IAAa,SAAW,0KAMnC,GAGN"}
@@ -1,2 +1,2 @@
1
- import a from"dayjs";import"dayjs/locale/zh-cn";import o from"dayjs/plugin/localeData";a.extend(o),a.locale("zh-cn");export default a;
1
+ import a,{extend as o,locale as l}from"dayjs";import"dayjs/locale/zh-cn";import r from"dayjs/plugin/localeData";o(r),l("zh-cn");export default a;
2
2
  //# sourceMappingURL=dayjs.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/date-picker/dayjs.ts"],"sourcesContent":["import dayjs from 'dayjs';\nimport 'dayjs/locale/zh-cn';\nimport localData from 'dayjs/plugin/localeData';\n\ndayjs.extend(localData);\ndayjs.locale('zh-cn');\n\nexport default dayjs;\n"],"names":["dayjs","localData","extend","locale"],"rangeMappings":"","mappings":"AAAA,OAAOA,MAAW,OAAQ,AAC1B,OAAO,oBAAqB,AAC5B,QAAOC,MAAe,yBAA0B,CAEhDD,EAAME,MAAM,CAACD,GACbD,EAAMG,MAAM,CAAC,QAEb,gBAAeH,CAAM"}
1
+ {"version":3,"sources":["../../components/date-picker/dayjs.ts"],"sourcesContent":["import dayjs, { extend, locale } from 'dayjs';\nimport 'dayjs/locale/zh-cn';\nimport localData from 'dayjs/plugin/localeData';\n\nextend(localData);\nlocale('zh-cn');\n\nexport default dayjs;\n"],"names":["dayjs","extend","locale","localData"],"rangeMappings":"","mappings":"AAAA,OAAOA,GAASC,UAAAA,CAAM,CAAEC,UAAAA,CAAM,KAAQ,OAAQ,AAC9C,OAAO,oBAAqB,AAC5B,QAAOC,MAAe,yBAA0B,CAEhDF,EAAOE,GACPD,EAAO,QAEP,gBAAeF,CAAM"}
@@ -1,2 +1,2 @@
1
- var e,o;function t(){return(t=Object.assign||function(e){for(var o=1;o<arguments.length;o++){var t=arguments[o];for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])}return e}).apply(this,arguments)}import{use as n}from"solid-js/web";import{template as r}from"solid-js/web";import{mergeProps as a}from"solid-js/web";import{getOwner as s}from"solid-js/web";import{effect as i}from"solid-js/web";import{delegateEvents as d}from"solid-js/web";import{createComponent as l}from"solid-js/web";import{addEventListener as p}from"solid-js/web";let u=r('<n-input part="value">',!0,!1);import{createComponent as m,createEffect as f,createMemo as v,createSignal as h,mergeProps as c,splitProps as w,untrack as g}from"solid-js";import{customElement as Y}from"solid-element";import y from"./dayjs";import C from"./panel";import{styles as b}from"./style";import"../button";import"../menu";import $,{defaultProps as _}from"../popover";function j(e){let o;let t=c({type:"date",parser:"YYYY-MM-DD HH:mm:ss"},e),[r,d]=w(t,["class","css","value","defaultValue","onChange","type","content","onOpenChange","open","format","popupCss","trigger","parser","showTime","showHour","showMinute","showSecond","prefixIcon","suffixIcon","placeholder","showToday","showHeader"]),[m,Y]=h(null),[_,j]=h(y(r.defaultValue)),H=v(()=>r.format?r.format:r.showTime?"YYYY-MM-DD HH:mm:ss":({month:"YYYY-MM",date:"YYYY-MM-DD",year:"YYYY"})[r.type||"date"]);function M(e){d.disabled||(null==r.onOpenChange||r.onOpenChange.call(r,e),void 0===r.open&&Y(e))}function O(e){e.stopPropagation(),e.preventDefault(),M(!0)}function x(){g(m)&&M(!1)}function T(e){var t;e.target===(null==o?void 0:null==(t=o.shadowRoot)?void 0:t.activeElement)&&M(!g(m))}function I(e){void 0===r.value&&j(e),null==t.onChange||t.onChange.call(t,e.format(r.parser),e)}function D(e){if(e.detail){let o=y(e.detail);o.isValid()&&I(o)}}return f(()=>{void 0!==r.open&&r.open!==g(m)&&Y(r.open)}),f(()=>{let e=y(r.value||r.defaultValue);void 0!==r.value&&e.isValid()&&j(e)}),l($,a({trigger:"none",placement:"left",get open(){return m()},onOpenChange:M,get css(){return r.css},popupCss:b,get content(){return l(C,{get type(){return r.type},get current(){return _()},get open(){return m()},onChange:I,openChange:M,get showHour(){return r.showHour},get showMinute(){return r.showMinute},get showSecond(){return r.showSecond},get showTime(){return r.showTime},get showToday(){return r.showToday},get showHeader(){return r.showHeader}})}},d,{get children(){let e=u(),t=o;return p(e,"change",D),p(e,"blur",x),p(e,"focus",O),p(e,"mousedown",T,!0),"function"==typeof t?n(t,e):o=e,e._$owner=s(),i(o=>{let t=d.disabled,n=r.suffixIcon,a=r.prefixIcon,s=r.placeholder;return t!==o._v$&&(e.disabled=o._v$=t),n!==o._v$2&&(e.suffixIcon=o._v$2=n),a!==o._v$3&&(e.prefixIcon=o._v$3=a),s!==o._v$4&&(e.placeholder=o._v$4=s),o},{_v$:void 0,_v$2:void 0,_v$3:void 0,_v$4:void 0}),i(()=>e.value=_().format(H())),e}}))}(o=e||(e={})).date="date",o.month="month",o.year="year",Y("n-data-picker",t({},_,{value:void 0,defaultValue:void 0,disabled:void 0,onChange:void 0,open:void 0,onOpenChange:void 0,type:void 0,format:void 0,parser:void 0,showTime:void 0,suffixIcon:"📅",prefixIcon:void 0,placeholder:void 0,showHour:!0,showMinute:!0,showSecond:!0,showToday:!0,showHeader:!0}),(e,o)=>{let t=o.element,n=c({css:t.css,onChange(e,o){t.dispatchEvent(new CustomEvent("change",{detail:[e,o]}))},onOpenChange(e){t.dispatchEvent(new CustomEvent("openchange",{detail:e}))}},e);return f(()=>{t.removeAttribute("css")}),m(j,n)});export default j;d(["mousedown"]);
1
+ var e,o;function t(){return(t=Object.assign||function(e){for(var o=1;o<arguments.length;o++){var t=arguments[o];for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])}return e}).apply(this,arguments)}import{use as n}from"solid-js/web";import{template as r}from"solid-js/web";import{mergeProps as a}from"solid-js/web";import{getOwner as s}from"solid-js/web";import{effect as i}from"solid-js/web";import{delegateEvents as d}from"solid-js/web";import{createComponent as l}from"solid-js/web";import{addEventListener as p}from"solid-js/web";let u=r('<n-input part="value">',!0,!1);import{createEffect as m,createMemo as f,createSignal as v,mergeProps as h,splitProps as c,untrack as w}from"solid-js";import{customElement as g}from"solid-element";import Y from"./dayjs";import y from"./panel";import{styles as C}from"./style";import"../button";import"../menu";import b,{defaultProps as $}from"../popover";function _(e){let o;let t=h({type:"date",parser:"YYYY-MM-DD HH:mm:ss"},e),[r,d]=c(t,["class","css","value","defaultValue","onChange","type","content","onOpenChange","open","format","popupCss","trigger","parser","showTime","showHour","showMinute","showSecond","prefixIcon","suffixIcon","placeholder","showToday","showHeader"]),[g,$]=v(null),[_,j]=v(Y(r.defaultValue)),H=f(()=>r.format?r.format:r.showTime?"YYYY-MM-DD HH:mm:ss":({month:"YYYY-MM",date:"YYYY-MM-DD",year:"YYYY"})[r.type||"date"]);function M(e){d.disabled||(null==r.onOpenChange||r.onOpenChange.call(r,e),void 0===r.open&&$(e))}function O(e){e.stopPropagation(),e.preventDefault(),M(!0)}function x(){w(g)&&M(!1)}function T(e){var t;e.target===(null==o?void 0:null==(t=o.shadowRoot)?void 0:t.activeElement)&&M(!w(g))}function I(e){void 0===r.value&&j(e),null==t.onChange||t.onChange.call(t,e.format(r.parser),e)}function D(e){if(e.detail){let o=Y(e.detail);o.isValid()&&I(o)}}return m(()=>{void 0!==r.open&&r.open!==w(g)&&$(r.open)}),m(()=>{let e=Y(r.value||r.defaultValue);void 0!==r.value&&e.isValid()&&j(e)}),l(b,a({trigger:"none",placement:"left",get open(){return g()},onOpenChange:M,get css(){return r.css},popupCss:C,get content(){return l(y,{get type(){return r.type},get current(){return _()},get open(){return g()},onChange:I,openChange:M,get showHour(){return r.showHour},get showMinute(){return r.showMinute},get showSecond(){return r.showSecond},get showTime(){return r.showTime},get showToday(){return r.showToday},get showHeader(){return r.showHeader}})}},d,{get children(){let e=u(),t=o;return p(e,"change",D),p(e,"blur",x),p(e,"focus",O),p(e,"mousedown",T,!0),"function"==typeof t?n(t,e):o=e,e._$owner=s(),i(o=>{let t=d.disabled,n=r.suffixIcon,a=r.prefixIcon,s=r.placeholder;return t!==o._v$&&(e.disabled=o._v$=t),n!==o._v$2&&(e.suffixIcon=o._v$2=n),a!==o._v$3&&(e.prefixIcon=o._v$3=a),s!==o._v$4&&(e.placeholder=o._v$4=s),o},{_v$:void 0,_v$2:void 0,_v$3:void 0,_v$4:void 0}),i(()=>e.value=_().format(H())),e}}))}(o=e||(e={})).date="date",o.month="month",o.year="year",g("n-data-picker",t({},$,{value:void 0,defaultValue:void 0,disabled:void 0,onChange:void 0,open:void 0,onOpenChange:void 0,type:void 0,format:void 0,parser:void 0,showTime:void 0,suffixIcon:"📅",prefixIcon:void 0,placeholder:void 0,showHour:!0,showMinute:!0,showSecond:!0,showToday:!0,showHeader:!0}),(e,o)=>{let t=o.element,n=h({css:t.css,onChange(e,o){t.dispatchEvent(new CustomEvent("change",{detail:[e,o]}))},onOpenChange(e){t.dispatchEvent(new CustomEvent("openchange",{detail:e}))}},e);return m(()=>{t.removeAttribute("css")}),l(_,n)});export default _;d(["mousedown"]);
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/date-picker/index.tsx"],"sourcesContent":["import {\n createComponent,\n createEffect,\n createMemo,\n createSignal,\n mergeProps,\n splitProps,\n untrack,\n} from 'solid-js';\nimport { customElement } from 'solid-element';\nimport dayjs from './dayjs';\nimport Panel from './panel';\nimport { styles } from './style';\nimport '../button';\nimport '../menu';\nimport Popover, { defaultProps } from '../popover';\nimport type { CustomElement, InputElement, PopoverProps } from '..';\n\nfunction DatePicker(_props: DatePickerProps) {\n let ref: InputElement | undefined;\n const props = mergeProps(\n {\n type: 'date' as DatePickerProps['type'],\n parser: 'YYYY-MM-DD HH:mm:ss',\n },\n _props,\n );\n const [local, other] = splitProps(props, [\n 'class',\n 'css',\n 'value',\n 'defaultValue',\n 'onChange',\n 'type',\n 'content',\n 'onOpenChange',\n 'open',\n 'format',\n 'popupCss',\n 'trigger',\n 'parser',\n 'showTime',\n 'showHour',\n 'showMinute',\n 'showSecond',\n 'prefixIcon',\n 'suffixIcon',\n 'placeholder',\n 'showToday',\n 'showHeader',\n ]);\n const [open, setOpen] = createSignal<boolean | null>(null);\n const [current, setCurrent] = createSignal(dayjs(local.defaultValue));\n\n const format = createMemo(() => {\n if (local.format) {\n return local.format;\n }\n if (local.showTime) return 'YYYY-MM-DD HH:mm:ss';\n return {\n month: 'YYYY-MM',\n date: 'YYYY-MM-DD',\n year: 'YYYY',\n }[local.type || 'date'];\n });\n\n function openChange(next: boolean | null) {\n if (!other.disabled) {\n local.onOpenChange?.(next);\n if (local.open === void 0) {\n setOpen(next);\n }\n }\n }\n\n function focus(e: FocusEvent | MouseEvent) {\n e.stopPropagation();\n e.preventDefault();\n openChange(true);\n }\n function blur() {\n if (untrack(open)) {\n openChange(false);\n }\n }\n function inputMouseDown(e: MouseEvent) {\n if (e.target === (ref?.shadowRoot as ShadowRoot)?.activeElement) {\n openChange(!untrack(open));\n }\n }\n function handleChange(next: dayjs.Dayjs) {\n if (local.value === void 0) {\n setCurrent(next);\n }\n props.onChange?.(next.format(local.parser), next);\n }\n function handleInputChange(e: CustomEvent<string | number | undefined>) {\n if (e.detail) {\n const next = dayjs(e.detail);\n\n if (next.isValid()) {\n handleChange(next);\n }\n }\n }\n\n createEffect(() => {\n if (local.open !== void 0 && local.open !== untrack(open)) {\n setOpen(local.open);\n }\n });\n createEffect(() => {\n const next = dayjs(local.value || local.defaultValue);\n\n if (local.value !== void 0 && next.isValid()) {\n setCurrent(next);\n }\n });\n return (\n <Popover\n trigger=\"none\"\n placement=\"left\"\n open={open()}\n onOpenChange={openChange}\n css={local.css}\n popupCss={styles}\n content={\n <Panel\n type={local.type}\n current={current()}\n open={open()}\n onChange={handleChange}\n openChange={openChange}\n showHour={local.showHour}\n showMinute={local.showMinute}\n showSecond={local.showSecond}\n showTime={local.showTime}\n showToday={local.showToday}\n showHeader={local.showHeader}\n />\n }\n {...other}\n >\n <n-input\n ref={ref}\n onMouseDown={inputMouseDown}\n onFocus={focus}\n onBlur={blur}\n disabled={other.disabled}\n value={current().format(format())}\n suffix-icon={local.suffixIcon}\n prefix-icon={local.prefixIcon}\n placeholder={local.placeholder}\n part=\"value\"\n onChange={handleInputChange}\n />\n </Popover>\n );\n}\n/** API\n * @since 2.1.0\n */\nexport interface DatePickerProps extends Partial<PopoverProps> {\n /** 自定义类名 */\n class?: string;\n /** 自定义类名 */\n css?: string;\n /** 类型\n * @default 'date'\n */\n type?: keyof typeof PickerType;\n /** 值 */\n value?: string | number;\n /** 默认值\n * @default 当前时间\n */\n defaultValue?: string | number;\n /** 禁用 */\n disabled?: boolean;\n /** 格式化回填到输入框的内容\n * @default 'YYYY-MM-DD'\n */\n format?: string;\n /** 格式化获取的值\n * @default 'YYYY-MM-DD HH:mm:ss'\n */\n parser?: string;\n /** 前缀 */\n prefixIcon?: JSX.Element;\n /** 后缀\n * @default '📅'\n */\n suffixIcon?: JSX.Element;\n /** 变更时的回调 */\n onChange?(val: string, time: dayjs.Dayjs): void;\n /** 显示时间选择\n * @default false\n */\n showTime?: boolean;\n /** 显示小时选择\n * @default true\n **/\n showHour?: boolean;\n /** 显示分钟选择\n * @default true\n **/\n showMinute?: boolean;\n /** 显示秒选择\n * @default true\n **/\n showSecond?: boolean;\n /** 占位文本 */\n placeholder?: string;\n /** 显示今日按钮\n * @default true\n */\n showToday?: boolean;\n /** 显示顶部\n * @default true\n */\n showHeader?: boolean;\n}\n\nenum PickerType {\n /** 日期选择 */\n date = 'date',\n /** 月份选择 */\n month = 'month',\n /** 年份选择 */\n year = 'year',\n}\n\nexport type DatePickerElement = CustomElement<DatePickerProps, 'onChange' | 'onOpenChange'>;\n\ncustomElement<DatePickerProps>(\n 'n-data-picker',\n {\n ...defaultProps,\n value: void 0,\n defaultValue: void 0,\n disabled: void 0,\n onChange: void 0,\n open: void 0,\n onOpenChange: void 0,\n type: void 0,\n format: void 0,\n parser: void 0,\n showTime: void 0,\n suffixIcon: '📅',\n prefixIcon: void 0,\n placeholder: void 0,\n showHour: true,\n showMinute: true,\n showSecond: true,\n showToday: true,\n showHeader: true,\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n css: el.css,\n onChange(val: string, time: dayjs.Dayjs) {\n el.dispatchEvent(\n new CustomEvent('change', {\n detail: [val, time],\n }),\n );\n },\n onOpenChange(open: boolean | null) {\n el.dispatchEvent(\n new CustomEvent('openchange', {\n detail: open,\n }),\n );\n },\n },\n _,\n );\n\n createEffect(() => {\n el.removeAttribute('css');\n });\n return createComponent(DatePicker, props);\n },\n);\nexport default DatePicker;\n"],"names":["PickerType","createComponent","createEffect","createMemo","createSignal","mergeProps","splitProps","untrack","customElement","dayjs","Panel","styles","Popover","defaultProps","DatePicker","_props","ref","props","type","parser","local","other","open","setOpen","current","setCurrent","defaultValue","format","showTime","month","date","year","openChange","next","disabled","onOpenChange","focus","e","stopPropagation","preventDefault","blur","inputMouseDown","target","shadowRoot","activeElement","handleChange","value","onChange","handleInputChange","detail","isValid","css","showHour","showMinute","showSecond","showToday","showHeader","suffixIcon","prefixIcon","placeholder","_","opt","el","element","val","time","dispatchEvent","CustomEvent","removeAttribute"],"rangeMappings":"","mappings":"MA+NKA,wkBA/NL,QACEC,mBAAAA,CAAe,CACfC,gBAAAA,CAAY,CACZC,cAAAA,CAAU,CACVC,gBAAAA,CAAY,CACZC,cAAAA,CAAU,CACVC,cAAAA,CAAU,CACVC,WAAAA,CAAO,KACF,UAAW,AAClB,QAASC,iBAAAA,CAAa,KAAQ,eAAgB,AAC9C,QAAOC,MAAW,SAAU,AAC5B,QAAOC,MAAW,SAAU,AAC5B,QAASC,UAAAA,CAAM,KAAQ,SAAU,AACjC,OAAO,WAAY,AACnB,OAAO,SAAU,AACjB,QAAOC,GAAWC,gBAAAA,CAAY,KAAQ,YAAa,CAGnD,SAASC,EAAWC,CAAuB,MACrCC,EACJ,IAAMC,EAAQZ,EACZ,CACEa,KAAM,OACNC,OAAQ,qBACV,EACAJ,GAEI,CAACK,EAAOC,EAAM,CAAGf,EAAWW,EAAO,CACvC,QACA,MACA,QACA,eACA,WACA,OACA,UACA,eACA,OACA,SACA,WACA,UACA,SACA,WACA,WACA,aACA,aACA,aACA,aACA,cACA,YACA,aACD,EACK,CAACK,EAAMC,EAAQ,CAAGnB,EAA6B,MAC/C,CAACoB,EAASC,EAAW,CAAGrB,EAAaK,EAAMW,EAAMM,YAAY,GAE7DC,EAASxB,EAAW,IACxB,AAAIiB,EAAMO,MAAM,CACPP,EAAMO,MAAM,CAEjBP,EAAMQ,QAAQ,CAAS,sBACpB,CAAA,CACLC,MAAO,UACPC,KAAM,aACNC,KAAM,MACR,CAAA,CAAC,CAACX,EAAMF,IAAI,EAAI,OAAO,EAGzB,SAASc,EAAWC,CAAoB,EACjCZ,EAAMa,QAAQ,SACjBd,EAAMe,YAAY,EAAlBf,EAAMe,YAAY,MAAlBf,EAAqBa,GACF,KAAK,IAApBb,EAAME,IAAI,EACZC,EAAQU,GAGd,CAEA,SAASG,EAAMC,CAA0B,EACvCA,EAAEC,eAAe,GACjBD,EAAEE,cAAc,GAChBP,EAAW,CAAA,EACb,CACA,SAASQ,IACHjC,EAAQe,IACVU,EAAW,CAAA,EAEf,CACA,SAASS,EAAeJ,CAAa,MACjBrB,CAAdqB,CAAAA,EAAEK,MAAM,UAAM1B,gBAAAA,EAAAA,EAAK2B,UAAU,SAAhB,AAAC3B,EAAgC4B,aAAa,GAC7DZ,EAAW,CAACzB,EAAQe,GAExB,CACA,SAASuB,EAAaZ,CAAiB,EACjB,KAAK,IAArBb,EAAM0B,KAAK,EACbrB,EAAWQ,SAEbhB,EAAM8B,QAAQ,EAAd9B,EAAM8B,QAAQ,MAAd9B,EAAiBgB,EAAKN,MAAM,CAACP,EAAMD,MAAM,EAAGc,EAC9C,CACA,SAASe,EAAkBX,CAA2C,EACpE,GAAIA,EAAEY,MAAM,CAAE,CACZ,IAAMhB,EAAOxB,EAAM4B,EAAEY,MAAM,EAEvBhB,EAAKiB,OAAO,IACdL,EAAaZ,EAEjB,CACF,CAcA,OAZA/B,EAAa,KACQ,KAAK,IAApBkB,EAAME,IAAI,EAAeF,EAAME,IAAI,GAAKf,EAAQe,IAClDC,EAAQH,EAAME,IAAI,CAEtB,GACApB,EAAa,KACX,IAAM+B,EAAOxB,EAAMW,EAAM0B,KAAK,EAAI1B,EAAMM,YAAY,CAEhC,MAAK,IAArBN,EAAM0B,KAAK,EAAeb,EAAKiB,OAAO,IACxCzB,EAAWQ,EAEf,KAEGrB,uDAGOU,kBACQU,mBACTZ,EAAM+B,GAAG,WACJxC,yBAEPD,qBACOU,EAAMF,IAAI,uBACPM,uBACHF,cACIuB,aACEb,wBACFZ,EAAMgC,QAAQ,0BACZhC,EAAMiC,UAAU,0BAChBjC,EAAMkC,UAAU,wBAClBlC,EAAMQ,QAAQ,yBACbR,EAAMmC,SAAS,0BACdnC,EAAMoC,UAAU,MAG5BnC,8BAGGL,sBAUKgC,cAPFR,eADCJ,mBADIK,kCADRzB,8BAIKK,EAAMa,QAAQ,GAEXd,EAAMqC,UAAU,GAChBrC,EAAMsC,UAAU,GAChBtC,EAAMuC,WAAW,wNAHvBnC,IAAUG,MAAM,CAACA,WAShC,EAiEK3B,EAAAA,IAAAA,iDAWLQ,EACE,gBACA,KACKK,GACHiC,MAAO,KAAK,EACZpB,aAAc,KAAK,EACnBQ,SAAU,KAAK,EACfa,SAAU,KAAK,EACfzB,KAAM,KAAK,EACXa,aAAc,KAAK,EACnBjB,KAAM,KAAK,EACXS,OAAQ,KAAK,EACbR,OAAQ,KAAK,EACbS,SAAU,KAAK,EACf6B,WAAY,KACZC,WAAY,KAAK,EACjBC,YAAa,KAAK,EAClBP,SAAU,CAAA,EACVC,WAAY,CAAA,EACZC,WAAY,CAAA,EACZC,UAAW,CAAA,EACXC,WAAY,CAAA,IAEd,CAACI,EAAGC,KACF,IAAMC,EAAKD,EAAIE,OAAO,CAChB9C,EAAQZ,EACZ,CACE8C,IAAKW,EAAGX,GAAG,CACXJ,SAASiB,CAAW,CAAEC,CAAiB,EACrCH,EAAGI,aAAa,CACd,IAAIC,YAAY,SAAU,CACxBlB,OAAQ,CAACe,EAAKC,EAAK,AACrB,GAEJ,EACA9B,aAAab,CAAoB,EAC/BwC,EAAGI,aAAa,CACd,IAAIC,YAAY,aAAc,CAC5BlB,OAAQ3B,CACV,GAEJ,CACF,EACAsC,GAMF,OAHA1D,EAAa,KACX4D,EAAGM,eAAe,CAAC,MACrB,GACOnE,EAAgBa,EAAYG,EACrC,EAEF,gBAAeH,CAAW"}
1
+ {"version":3,"sources":["../../components/date-picker/index.tsx"],"sourcesContent":["import { createEffect, createMemo, createSignal, mergeProps, splitProps, untrack } from 'solid-js';\nimport { customElement } from 'solid-element';\nimport dayjs from './dayjs';\nimport Panel from './panel';\nimport { styles } from './style';\nimport '../button';\nimport '../menu';\nimport Popover, { defaultProps } from '../popover';\nimport type { CustomElement, InputElement, PopoverProps } from '..';\n\nfunction DatePicker(_props: DatePickerProps) {\n let ref: InputElement | undefined;\n const props = mergeProps(\n {\n type: 'date' as DatePickerProps['type'],\n parser: 'YYYY-MM-DD HH:mm:ss',\n },\n _props,\n );\n const [local, other] = splitProps(props, [\n 'class',\n 'css',\n 'value',\n 'defaultValue',\n 'onChange',\n 'type',\n 'content',\n 'onOpenChange',\n 'open',\n 'format',\n 'popupCss',\n 'trigger',\n 'parser',\n 'showTime',\n 'showHour',\n 'showMinute',\n 'showSecond',\n 'prefixIcon',\n 'suffixIcon',\n 'placeholder',\n 'showToday',\n 'showHeader',\n ]);\n const [open, setOpen] = createSignal<boolean | null>(null);\n const [current, setCurrent] = createSignal(dayjs(local.defaultValue));\n\n const format = createMemo(() => {\n if (local.format) {\n return local.format;\n }\n if (local.showTime) return 'YYYY-MM-DD HH:mm:ss';\n return {\n month: 'YYYY-MM',\n date: 'YYYY-MM-DD',\n year: 'YYYY',\n }[local.type || 'date'];\n });\n\n function openChange(next: boolean | null) {\n if (!other.disabled) {\n local.onOpenChange?.(next);\n if (local.open === void 0) {\n setOpen(next);\n }\n }\n }\n\n function focus(e: FocusEvent | MouseEvent) {\n e.stopPropagation();\n e.preventDefault();\n openChange(true);\n }\n function blur() {\n if (untrack(open)) {\n openChange(false);\n }\n }\n function inputMouseDown(e: MouseEvent) {\n if (e.target === (ref?.shadowRoot as ShadowRoot)?.activeElement) {\n openChange(!untrack(open));\n }\n }\n function handleChange(next: dayjs.Dayjs) {\n if (local.value === void 0) {\n setCurrent(next);\n }\n props.onChange?.(next.format(local.parser), next);\n }\n function handleInputChange(e: CustomEvent<string | number | undefined>) {\n if (e.detail) {\n const next = dayjs(e.detail);\n\n if (next.isValid()) {\n handleChange(next);\n }\n }\n }\n\n createEffect(() => {\n if (local.open !== void 0 && local.open !== untrack(open)) {\n setOpen(local.open);\n }\n });\n createEffect(() => {\n const next = dayjs(local.value || local.defaultValue);\n\n if (local.value !== void 0 && next.isValid()) {\n setCurrent(next);\n }\n });\n return (\n <Popover\n trigger=\"none\"\n placement=\"left\"\n open={open()}\n onOpenChange={openChange}\n css={local.css}\n popupCss={styles}\n content={\n <Panel\n type={local.type}\n current={current()}\n open={open()}\n onChange={handleChange}\n openChange={openChange}\n showHour={local.showHour}\n showMinute={local.showMinute}\n showSecond={local.showSecond}\n showTime={local.showTime}\n showToday={local.showToday}\n showHeader={local.showHeader}\n />\n }\n {...other}\n >\n <n-input\n ref={ref}\n onMouseDown={inputMouseDown}\n onFocus={focus}\n onBlur={blur}\n disabled={other.disabled}\n value={current().format(format())}\n suffix-icon={local.suffixIcon}\n prefix-icon={local.prefixIcon}\n placeholder={local.placeholder}\n part=\"value\"\n onChange={handleInputChange}\n />\n </Popover>\n );\n}\n/** API\n * @since 2.1.0\n */\nexport interface DatePickerProps extends Partial<PopoverProps> {\n /** 自定义类名 */\n class?: string;\n /** 自定义类名 */\n css?: string;\n /** 类型\n * @default 'date'\n */\n type?: keyof typeof PickerType;\n /** 值 */\n value?: string | number;\n /** 默认值\n * @default 当前时间\n */\n defaultValue?: string | number;\n /** 禁用 */\n disabled?: boolean;\n /** 格式化回填到输入框的内容\n * @default 'YYYY-MM-DD'\n */\n format?: string;\n /** 格式化获取的值\n * @default 'YYYY-MM-DD HH:mm:ss'\n */\n parser?: string;\n /** 前缀 */\n prefixIcon?: JSX.Element;\n /** 后缀\n * @default '📅'\n */\n suffixIcon?: JSX.Element;\n /** 变更时的回调 */\n onChange?(val: string, time: dayjs.Dayjs): void;\n /** 显示时间选择\n * @default false\n */\n showTime?: boolean;\n /** 显示小时选择\n * @default true\n **/\n showHour?: boolean;\n /** 显示分钟选择\n * @default true\n **/\n showMinute?: boolean;\n /** 显示秒选择\n * @default true\n **/\n showSecond?: boolean;\n /** 占位文本 */\n placeholder?: string;\n /** 显示今日按钮\n * @default true\n */\n showToday?: boolean;\n /** 显示顶部\n * @default true\n */\n showHeader?: boolean;\n}\n\nenum PickerType {\n /** 日期选择 */\n date = 'date',\n /** 月份选择 */\n month = 'month',\n /** 年份选择 */\n year = 'year',\n}\n\nexport type DatePickerElement = CustomElement<DatePickerProps, 'onChange' | 'onOpenChange'>;\n\ncustomElement<DatePickerProps>(\n 'n-data-picker',\n {\n ...defaultProps,\n value: void 0,\n defaultValue: void 0,\n disabled: void 0,\n onChange: void 0,\n open: void 0,\n onOpenChange: void 0,\n type: void 0,\n format: void 0,\n parser: void 0,\n showTime: void 0,\n suffixIcon: '📅',\n prefixIcon: void 0,\n placeholder: void 0,\n showHour: true,\n showMinute: true,\n showSecond: true,\n showToday: true,\n showHeader: true,\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n css: el.css,\n onChange(val: string, time: dayjs.Dayjs) {\n el.dispatchEvent(\n new CustomEvent('change', {\n detail: [val, time],\n }),\n );\n },\n onOpenChange(open: boolean | null) {\n el.dispatchEvent(\n new CustomEvent('openchange', {\n detail: open,\n }),\n );\n },\n },\n _,\n );\n\n createEffect(() => {\n el.removeAttribute('css');\n });\n return <DatePicker {...props} />;\n },\n);\nexport default DatePicker;\n"],"names":["PickerType","createEffect","createMemo","createSignal","mergeProps","splitProps","untrack","customElement","dayjs","Panel","styles","Popover","defaultProps","DatePicker","_props","ref","props","type","parser","local","other","open","setOpen","current","setCurrent","defaultValue","format","showTime","month","date","year","openChange","next","disabled","onOpenChange","focus","e","stopPropagation","preventDefault","blur","inputMouseDown","target","shadowRoot","activeElement","handleChange","value","onChange","handleInputChange","detail","isValid","css","showHour","showMinute","showSecond","showToday","showHeader","suffixIcon","prefixIcon","placeholder","_","opt","el","element","val","time","dispatchEvent","CustomEvent","removeAttribute"],"rangeMappings":"","mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{template as t}from"solid-js/web";import{insert as o}from"solid-js/web";import{getOwner as e}from"solid-js/web";import{effect as r}from"solid-js/web";import{delegateEvents as s}from"solid-js/web";import{createComponent as m}from"solid-js/web";import{className as n}from"solid-js/web";import{addEventListener as i}from"solid-js/web";let a=t('<n-button type="primary">',!0,!1);import{For as l,createMemo as d}from"solid-js";import{cx as p}from"@moneko/css";import c from"./dayjs";export const months=c.monthsShort();export default function(t){return m(l,{each:months,children:(s,m)=>{let l=d(()=>t.current.get("month")===m());function c(){t.onChange(t.current.set("month",m()))}return(()=>{let t=a();return i(t,"click",c,!0),t.flat=!0,t._$owner=e(),o(t,s),r(o=>{let e=p("date-picker-month",l()&&"date-active"),r=l()?"strong":"button";return e!==o._v$&&n(t,o._v$=e),r!==o._v$2&&(t.tag=o._v$2=r),o},{_v$:void 0,_v$2:void 0}),t})()}})}s(["click"]);
1
+ import{template as t}from"solid-js/web";import{insert as e}from"solid-js/web";import{getOwner as o}from"solid-js/web";import{effect as r}from"solid-js/web";import{delegateEvents as s}from"solid-js/web";import{createComponent as n}from"solid-js/web";import{addEventListener as i}from"solid-js/web";let m=t('<n-button type="primary" class="date-picker-month">',!0,!1);import{For as a,createMemo as l}from"solid-js";import d from"./dayjs";export const months=d.monthsShort();export default function(t){return n(a,{each:months,children:(s,n)=>{let a=l(()=>t.current.get("month")===n());function d(){t.onChange(t.current.set("month",n()))}return(()=>{let t=m();return i(t,"click",d,!0),t.flat=!0,t._$owner=o(),e(t,s),r(e=>{let o=!!a(),r=a()?"strong":"button";return o!==e._v$&&t.classList.toggle("date-active",e._v$=o),r!==e._v$2&&(t.tag=e._v$2=r),e},{_v$:void 0,_v$2:void 0}),t})()}})}s(["click"]);
2
2
  //# sourceMappingURL=month.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/date-picker/month.tsx"],"sourcesContent":["import { For, createMemo } from 'solid-js';\nimport { cx } from '@moneko/css';\nimport dayjs from './dayjs';\n\ntype MonthPanelProps = { current: dayjs.Dayjs; onChange(next: dayjs.Dayjs): void };\n\nexport const months = dayjs.monthsShort();\n\nfunction MonthPanel(props: MonthPanelProps) {\n return (\n <For each={months}>\n {(m, i) => {\n const isActive = createMemo(() => {\n return props.current.get('month') === i();\n });\n\n function onChange() {\n props.onChange(props.current.set('month', i()));\n }\n\n return (\n <n-button\n type=\"primary\"\n flat={true}\n class={cx('date-picker-month', isActive() && 'date-active')}\n tag={isActive() ? 'strong' : 'button'}\n onClick={onChange}\n >\n {m}\n </n-button>\n );\n }}\n </For>\n );\n}\n\nexport default MonthPanel;\n"],"names":["For","createMemo","cx","dayjs","months","monthsShort","props","m","i","isActive","current","get","onChange","set"],"rangeMappings":"","mappings":"4XAAA,QAASA,OAAAA,CAAG,CAAEC,cAAAA,CAAU,KAAQ,UAAW,AAC3C,QAASC,MAAAA,CAAE,KAAQ,aAAc,AACjC,QAAOC,MAAW,SAAU,AAI5B,QAAO,MAAMC,OAASD,EAAME,WAAW,EAAG,AA8B1C,gBA5BA,SAAoBC,CAAsB,EACxC,SACGN,QAAUI,gBACR,CAACG,EAAGC,KACH,IAAMC,EAAWR,EAAW,IACnBK,EAAMI,OAAO,CAACC,GAAG,CAAC,WAAaH,KAGxC,SAASI,IACPN,EAAMM,QAAQ,CAACN,EAAMI,OAAO,CAACG,GAAG,CAAC,QAASL,KAC5C,CAEA,yCAMaI,aAHH,CAAA,oBAKLL,eAJML,EAAG,oBAAqBO,KAAc,iBACxCA,IAAa,SAAW,uGAMnC,GAGN"}
1
+ {"version":3,"sources":["../../components/date-picker/month.tsx"],"sourcesContent":["import { For, createMemo } from 'solid-js';\nimport dayjs from './dayjs';\n\ntype MonthPanelProps = { current: dayjs.Dayjs; onChange(next: dayjs.Dayjs): void };\n\nexport const months = dayjs.monthsShort();\n\nfunction MonthPanel(props: MonthPanelProps) {\n return (\n <For each={months}>\n {(m, i) => {\n const isActive = createMemo(() => {\n return props.current.get('month') === i();\n });\n\n function onChange() {\n props.onChange(props.current.set('month', i()));\n }\n\n return (\n <n-button\n type=\"primary\"\n flat={true}\n class=\"date-picker-month\"\n classList={{\n 'date-active': isActive(),\n }}\n tag={isActive() ? 'strong' : 'button'}\n onClick={onChange}\n >\n {m}\n </n-button>\n );\n }}\n </For>\n );\n}\n\nexport default MonthPanel;\n"],"names":["For","createMemo","dayjs","months","monthsShort","props","m","i","isActive","current","get","onChange","set"],"rangeMappings":"","mappings":"6WAAA,QAASA,OAAAA,CAAG,CAAEC,cAAAA,CAAU,KAAQ,UAAW,AAC3C,QAAOC,MAAW,SAAU,AAI5B,QAAO,MAAMC,OAASD,EAAME,WAAW,EAAG,AAiC1C,gBA/BA,SAAoBC,CAAsB,EACxC,SACGL,QAAUG,gBACR,CAACG,EAAGC,KACH,IAAMC,EAAWP,EAAW,IACnBI,EAAMI,OAAO,CAACC,GAAG,CAAC,WAAaH,KAGxC,SAASI,IACPN,EAAMM,QAAQ,CAACN,EAAMI,OAAO,CAACG,GAAG,CAAC,QAASL,KAC5C,CAEA,yCASaI,aANH,CAAA,oBAQLL,iBALgBE,MAEZA,IAAa,SAAW,oIAMnC,GAGN"}
@@ -1,2 +1,2 @@
1
- import{use as e}from"solid-js/web";import{template as t}from"solid-js/web";import"solid-js/web";import{insert as r}from"solid-js/web";import{getOwner as n}from"solid-js/web";import{effect as o}from"solid-js/web";import{delegateEvents as i}from"solid-js/web";import{createComponent as s}from"solid-js/web";import{className as a}from"solid-js/web";import{addEventListener as c}from"solid-js/web";let l=t(`<n-button class="prev-month" type="primary">〈`,!0,!1),u=t("<n-button><strong>",!0,!1),h=t(`<n-button class="next-month" type="primary">〉`,!0,!1),d=t(`<section class="date-picker-header"><span><n-button class="prev-year" type="primary">《</n-button></span><span class="date-value"><n-button><strong></strong></n-button></span><span><n-button class="next-year" type="primary">》`,!0,!1),g=t('<section class="date-picker-weeks">'),m=t(`<section class="date-picker-footer"><n-button type="primary">今日`,!0,!1),p=t('<div class="date-time-picker"><div class="date-picker"><section class="date-picker-items">'),f=t("<span>");import{For as w,Match as y,Show as b,Switch as $,createEffect as C,createMemo as k,createSignal as v}from"solid-js";import{cx as _}from"@moneko/css";import j from"./date";import x from"./dayjs";import S from"./month";import H from"./time";import M from"./year";export default function(t){let i;let[E,P]=v(0),[T,D]=v("date"),I=x.weekdaysMin(),L=k(()=>"date"===T()),N=k(()=>10*parseInt(`${t.current.get("years")/10+E()}`));function O(e){t.open&&(e.stopPropagation(),e.preventDefault())}function q(){"year"===T()?P(e=>e-1):t.onChange(t.current.subtract(1,"year"))}function z(){"year"===T()?P(e=>e+1):t.onChange(t.current.subtract(-1,"year"))}function A(){t.onChange(t.current.subtract(1,"month"))}function B(){t.onChange(t.current.subtract(-1,"month"))}function F(e){t.onChange(e),T()===t.type?t.openChange(!1):D(t.type)}return C(()=>{"year"!==T()&&P(e=>e?0:e)}),C(()=>{t.type&&D(t.type)}),(()=>{let C=p(),k=C.firstChild,v=i,E=k.firstChild;return c(k,"mousedown",O,!0),"function"==typeof v?e(v,k):i=k,r(k,s(b,{get when(){return t.showHeader},get children(){let e=d(),i=e.firstChild,g=i.firstChild,m=i.nextSibling,p=m.firstChild,f=p.firstChild,w=m.nextSibling,y=w.firstChild;return c(g,"click",q,!0),g.circle=!0,g.flat=!0,g._$owner=n(),r(i,s(b,{get when(){return L()},get children(){let e=l();return c(e,"click",A,!0),e.circle=!0,e.flat=!0,e._$owner=n(),e}}),null),p.$$click=()=>D("year"),p.ghost=!0,p.flat=!0,p._$owner=n(),r(f,s(b,{get when(){return"year"===T()},get fallback(){return`${t.current.get("years")}年`},get children(){return`${N()}-${N()+9}年`}})),r(m,s(b,{get when(){return L()},get children(){let e=u(),o=e.firstChild;return e.$$click=()=>D("month"),e.ghost=!0,e.flat=!0,e._$owner=n(),r(o,()=>`${t.current.get("months")+1}月`),e}}),null),r(w,s(b,{get when(){return L()},get children(){let e=h();return c(e,"click",B,!0),e.circle=!0,e.flat=!0,e._$owner=n(),e}}),y),c(y,"click",z,!0),y.circle=!0,y.flat=!0,y._$owner=n(),o(e=>{let t=_("date-prev",!L()&&"not-date"),r=_("date-next",!L()&&"not-date");return t!==e._v$&&a(i,e._v$=t),r!==e._v$2&&a(w,e._v$2=r),e},{_v$:void 0,_v$2:void 0}),e}}),E),r(k,s(b,{get when(){return L()},get children(){let e=g();return r(e,s(w,{each:I,children:e=>(()=>{let t=f();return r(t,e),t})()})),e}}),E),r(E,s($,{get children(){return[s(y,{get when(){return L()},get children(){return s(j,{get current(){return t.current},onChange:F})}}),s(y,{get when(){return"month"===T()},get children(){return s(S,{get current(){return t.current},onChange:F})}}),s(y,{get when(){return"year"===T()},get children(){return s(M,{get current(){return t.current},onChange:F,get start(){return N()}})}})]}})),r(k,s(b,{get when(){return L()&&t.showToday},get children(){let e=m(),r=e.firstChild;return r.$$click=()=>t.onChange(x()),r.block=!0,r.link=!0,r._$owner=n(),e}}),null),r(C,s(b,{get when(){return L()&&t.showTime},get children(){return s(H,{get current(){return t.current},get onChange(){return t.onChange},get showHour(){return t.showHour},get showMinute(){return t.showMinute},get showSecond(){return t.showSecond},datePicker:i})}}),null),C})()}i(["click","mousedown"]);
1
+ import{use as e}from"solid-js/web";import{template as t}from"solid-js/web";import"solid-js/web";import{insert as r}from"solid-js/web";import{getOwner as n}from"solid-js/web";import{effect as o}from"solid-js/web";import{delegateEvents as i}from"solid-js/web";import{createComponent as s}from"solid-js/web";import{addEventListener as a}from"solid-js/web";let l=t(`<n-button class="prev-month" type="primary">〈`,!0,!1),c=t("<n-button><strong>",!0,!1),u=t(`<n-button class="next-month" type="primary">〉`,!0,!1),h=t(`<section class="date-picker-header"><span class="date-prev"><n-button class="prev-year" type="primary">《</n-button></span><span class="date-value"><n-button><strong></strong></n-button></span><span class="date-next"><n-button class="next-year" type="primary">》`,!0,!1),d=t('<section class="date-picker-weeks">'),g=t(`<section class="date-picker-footer"><n-button type="primary">今日`,!0,!1),p=t('<div class="date-time-picker"><div class="date-picker"><section class="date-picker-items">'),m=t("<span>");import{For as f,Match as w,Show as y,Switch as b,createEffect as $,createMemo as C,createSignal as k}from"solid-js";import v from"./date";import _ from"./dayjs";import j from"./month";import x from"./time";import S from"./year";export default function(t){let i;let[H,L]=k(0),[M,E]=k("date"),P=_.weekdaysMin(),T=C(()=>"date"===M()),D=C(()=>10*parseInt(`${t.current.get("years")/10+H()}`));function I(e){t.open&&(e.stopPropagation(),e.preventDefault())}function O(){"year"===M()?L(e=>e-1):t.onChange(t.current.subtract(1,"year"))}function q(){"year"===M()?L(e=>e+1):t.onChange(t.current.subtract(-1,"year"))}function z(){t.onChange(t.current.subtract(1,"month"))}function A(){t.onChange(t.current.subtract(-1,"month"))}function B(e){t.onChange(e),M()===t.type?t.openChange(!1):E(t.type)}return $(()=>{"year"!==M()&&L(e=>e?0:e)}),$(()=>{t.type&&E(t.type)}),(()=>{let $=p(),C=$.firstChild,k=i,H=C.firstChild;return a(C,"mousedown",I,!0),"function"==typeof k?e(k,C):i=C,r(C,s(y,{get when(){return t.showHeader},get children(){let e=h(),i=e.firstChild,d=i.firstChild,g=i.nextSibling,p=g.firstChild,m=p.firstChild,f=g.nextSibling,w=f.firstChild;return a(d,"click",O,!0),d.circle=!0,d.flat=!0,d._$owner=n(),r(i,s(y,{get when(){return T()},get children(){let e=l();return a(e,"click",z,!0),e.circle=!0,e.flat=!0,e._$owner=n(),e}}),null),p.$$click=()=>E("year"),p.ghost=!0,p.flat=!0,p._$owner=n(),r(m,s(y,{get when(){return"year"===M()},get fallback(){return`${t.current.get("years")}年`},get children(){return`${D()}-${D()+9}年`}})),r(g,s(y,{get when(){return T()},get children(){let e=c(),o=e.firstChild;return e.$$click=()=>E("month"),e.ghost=!0,e.flat=!0,e._$owner=n(),r(o,()=>`${t.current.get("months")+1}月`),e}}),null),r(f,s(y,{get when(){return T()},get children(){let e=u();return a(e,"click",A,!0),e.circle=!0,e.flat=!0,e._$owner=n(),e}}),w),a(w,"click",q,!0),w.circle=!0,w.flat=!0,w._$owner=n(),o(e=>{let t=!T(),r=!T();return t!==e._v$&&i.classList.toggle("not-date",e._v$=t),r!==e._v$2&&f.classList.toggle("not-date",e._v$2=r),e},{_v$:void 0,_v$2:void 0}),e}}),H),r(C,s(y,{get when(){return T()},get children(){let e=d();return r(e,s(f,{each:P,children:e=>(()=>{let t=m();return r(t,e),t})()})),e}}),H),r(H,s(b,{get children(){return[s(w,{get when(){return T()},get children(){return s(v,{get current(){return t.current},onChange:B})}}),s(w,{get when(){return"month"===M()},get children(){return s(j,{get current(){return t.current},onChange:B})}}),s(w,{get when(){return"year"===M()},get children(){return s(S,{get current(){return t.current},onChange:B,get start(){return D()}})}})]}})),r(C,s(y,{get when(){return T()&&t.showToday},get children(){let e=g(),r=e.firstChild;return r.$$click=()=>t.onChange(_()),r.block=!0,r.link=!0,r._$owner=n(),e}}),null),r($,s(y,{get when(){return T()&&t.showTime},get children(){return s(x,{get current(){return t.current},get onChange(){return t.onChange},get showHour(){return t.showHour},get showMinute(){return t.showMinute},get showSecond(){return t.showSecond},datePicker:i})}}),null),$})()}i(["click","mousedown"]);
2
2
  //# sourceMappingURL=panel.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/date-picker/panel.tsx"],"sourcesContent":["import { For, Match, Show, Switch, createEffect, createMemo, createSignal } from 'solid-js';\nimport { cx } from '@moneko/css';\nimport DatePanel from './date';\nimport dayjs from './dayjs';\nimport MonthPanel from './month';\nimport TimePicker from './time';\nimport YearPanel from './year';\nimport type { DatePickerProps } from '.';\n\ntype PanelProps = {\n current: dayjs.Dayjs;\n type?: DatePickerProps['type'];\n onChange(val: dayjs.Dayjs): void;\n open: boolean | null;\n openChange(val: boolean | null): void;\n showHour?: boolean;\n showMinute?: boolean;\n showSecond?: boolean;\n showTime?: boolean;\n showToday?: boolean;\n showHeader?: boolean;\n};\n\nfunction preventDefault(e: Event) {\n e.stopPropagation();\n e.preventDefault();\n}\n\nfunction Panel(props: PanelProps) {\n let datePicker: HTMLDivElement | undefined;\n const [offset, setOffset] = createSignal(0);\n const [type, setType] = createSignal<DatePickerProps['type']>('date');\n\n const weekdays = dayjs.weekdaysMin();\n const isDate = createMemo(() => type() === 'date');\n const startYear = createMemo(\n () => parseInt(`${props.current.get('years') / 10 + offset()}`) * 10,\n );\n\n function handleMouseDown(e: MouseEvent) {\n if (props.open) {\n preventDefault(e);\n }\n }\n function setPrevYear() {\n if (type() === 'year') {\n setOffset((prev) => prev - 1);\n } else {\n props.onChange(props.current.subtract(1, 'year'));\n }\n }\n function setNextYear() {\n if (type() === 'year') {\n setOffset((prev) => prev + 1);\n } else {\n props.onChange(props.current.subtract(-1, 'year'));\n }\n }\n function setPrevMonth() {\n props.onChange(props.current.subtract(1, 'month'));\n }\n function setNextMonth() {\n props.onChange(props.current.subtract(-1, 'month'));\n }\n function handleChange(next: dayjs.Dayjs) {\n props.onChange(next);\n if (type() === props.type) {\n props.openChange(false);\n } else {\n setType(props.type);\n }\n }\n createEffect(() => {\n if (type() !== 'year') {\n setOffset((prev) => {\n if (prev) return 0;\n return prev;\n });\n }\n });\n\n createEffect(() => {\n if (props.type) {\n setType(props.type);\n }\n });\n return (\n <div class=\"date-time-picker\">\n <div ref={datePicker} class=\"date-picker\" onMouseDown={handleMouseDown}>\n <Show when={props.showHeader}>\n <section class=\"date-picker-header\">\n <span class={cx('date-prev', !isDate() && 'not-date')}>\n <n-button\n class=\"prev-year\"\n type=\"primary\"\n circle={true}\n flat={true}\n onClick={setPrevYear}\n >\n 《\n </n-button>\n <Show when={isDate()}>\n <n-button\n class=\"prev-month\"\n type=\"primary\"\n circle={true}\n flat={true}\n onClick={setPrevMonth}\n >\n 〈\n </n-button>\n </Show>\n </span>\n <span class=\"date-value\">\n <n-button ghost={true} flat={true} onClick={() => setType('year')}>\n <strong>\n <Show when={type() === 'year'} fallback={`${props.current.get('years')}年`}>\n {`${startYear()}-${startYear() + 9}年`}\n </Show>\n </strong>\n </n-button>\n <Show when={isDate()}>\n <n-button ghost={true} flat={true} onClick={() => setType('month')}>\n <strong>{`${props.current.get('months') + 1}月`}</strong>\n </n-button>\n </Show>\n </span>\n <span class={cx('date-next', !isDate() && 'not-date')}>\n <Show when={isDate()}>\n <n-button\n class=\"next-month\"\n type=\"primary\"\n circle={true}\n flat={true}\n onClick={setNextMonth}\n >\n 〉\n </n-button>\n </Show>\n <n-button\n class=\"next-year\"\n type=\"primary\"\n circle={true}\n flat={true}\n onClick={setNextYear}\n >\n 》\n </n-button>\n </span>\n </section>\n </Show>\n <Show when={isDate()}>\n <section class=\"date-picker-weeks\">\n <For each={weekdays}>{(e) => <span>{e}</span>}</For>\n </section>\n </Show>\n <section class=\"date-picker-items\">\n <Switch>\n <Match when={isDate()}>\n <DatePanel current={props.current} onChange={handleChange} />\n </Match>\n <Match when={type() === 'month'}>\n <MonthPanel current={props.current} onChange={handleChange} />\n </Match>\n <Match when={type() === 'year'}>\n <YearPanel current={props.current} onChange={handleChange} start={startYear()} />\n </Match>\n </Switch>\n </section>\n <Show when={isDate() && props.showToday}>\n <section class=\"date-picker-footer\">\n <n-button\n type=\"primary\"\n block={true}\n link={true}\n onClick={() => props.onChange(dayjs())}\n >\n 今日\n </n-button>\n </section>\n </Show>\n </div>\n <Show when={isDate() && props.showTime}>\n <TimePicker\n current={props.current}\n onChange={props.onChange}\n showHour={props.showHour}\n showMinute={props.showMinute}\n showSecond={props.showSecond}\n datePicker={datePicker}\n />\n </Show>\n </div>\n );\n}\n\nexport default Panel;\n"],"names":["For","Match","Show","Switch","createEffect","createMemo","createSignal","cx","DatePanel","dayjs","MonthPanel","TimePicker","YearPanel","props","datePicker","offset","setOffset","type","setType","weekdays","weekdaysMin","isDate","startYear","parseInt","current","get","handleMouseDown","e","open","stopPropagation","preventDefault","setPrevYear","prev","onChange","subtract","setNextYear","setPrevMonth","setNextMonth","handleChange","next","openChange","showHeader","showToday","showTime","showHour","showMinute","showSecond"],"rangeMappings":"","mappings":"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"}
1
+ {"version":3,"sources":["../../components/date-picker/panel.tsx"],"sourcesContent":["import { For, Match, Show, Switch, createEffect, createMemo, createSignal } from 'solid-js';\nimport DatePanel from './date';\nimport dayjs from './dayjs';\nimport MonthPanel from './month';\nimport TimePicker from './time';\nimport YearPanel from './year';\nimport type { DatePickerProps } from '.';\n\ntype PanelProps = {\n current: dayjs.Dayjs;\n type?: DatePickerProps['type'];\n onChange(val: dayjs.Dayjs): void;\n open: boolean | null;\n openChange(val: boolean | null): void;\n showHour?: boolean;\n showMinute?: boolean;\n showSecond?: boolean;\n showTime?: boolean;\n showToday?: boolean;\n showHeader?: boolean;\n};\n\nfunction preventDefault(e: Event) {\n e.stopPropagation();\n e.preventDefault();\n}\n\nfunction Panel(props: PanelProps) {\n let datePicker: HTMLDivElement | undefined;\n const [offset, setOffset] = createSignal(0);\n const [type, setType] = createSignal<DatePickerProps['type']>('date');\n\n const weekdays = dayjs.weekdaysMin();\n const isDate = createMemo(() => type() === 'date');\n const startYear = createMemo(\n () => parseInt(`${props.current.get('years') / 10 + offset()}`) * 10,\n );\n\n function handleMouseDown(e: MouseEvent) {\n if (props.open) {\n preventDefault(e);\n }\n }\n function setPrevYear() {\n if (type() === 'year') {\n setOffset((prev) => prev - 1);\n } else {\n props.onChange(props.current.subtract(1, 'year'));\n }\n }\n function setNextYear() {\n if (type() === 'year') {\n setOffset((prev) => prev + 1);\n } else {\n props.onChange(props.current.subtract(-1, 'year'));\n }\n }\n function setPrevMonth() {\n props.onChange(props.current.subtract(1, 'month'));\n }\n function setNextMonth() {\n props.onChange(props.current.subtract(-1, 'month'));\n }\n function handleChange(next: dayjs.Dayjs) {\n props.onChange(next);\n if (type() === props.type) {\n props.openChange(false);\n } else {\n setType(props.type);\n }\n }\n createEffect(() => {\n if (type() !== 'year') {\n setOffset((prev) => {\n if (prev) return 0;\n return prev;\n });\n }\n });\n\n createEffect(() => {\n if (props.type) {\n setType(props.type);\n }\n });\n return (\n <div class=\"date-time-picker\">\n <div ref={datePicker} class=\"date-picker\" onMouseDown={handleMouseDown}>\n <Show when={props.showHeader}>\n <section class=\"date-picker-header\">\n <span\n class=\"date-prev\"\n classList={{\n 'not-date': !isDate(),\n }}\n >\n <n-button\n class=\"prev-year\"\n type=\"primary\"\n circle={true}\n flat={true}\n onClick={setPrevYear}\n >\n 《\n </n-button>\n <Show when={isDate()}>\n <n-button\n class=\"prev-month\"\n type=\"primary\"\n circle={true}\n flat={true}\n onClick={setPrevMonth}\n >\n 〈\n </n-button>\n </Show>\n </span>\n <span class=\"date-value\">\n <n-button ghost={true} flat={true} onClick={() => setType('year')}>\n <strong>\n <Show when={type() === 'year'} fallback={`${props.current.get('years')}年`}>\n {`${startYear()}-${startYear() + 9}年`}\n </Show>\n </strong>\n </n-button>\n <Show when={isDate()}>\n <n-button ghost={true} flat={true} onClick={() => setType('month')}>\n <strong>{`${props.current.get('months') + 1}月`}</strong>\n </n-button>\n </Show>\n </span>\n <span\n class=\"date-next\"\n classList={{\n 'not-date': !isDate(),\n }}\n >\n <Show when={isDate()}>\n <n-button\n class=\"next-month\"\n type=\"primary\"\n circle={true}\n flat={true}\n onClick={setNextMonth}\n >\n 〉\n </n-button>\n </Show>\n <n-button\n class=\"next-year\"\n type=\"primary\"\n circle={true}\n flat={true}\n onClick={setNextYear}\n >\n 》\n </n-button>\n </span>\n </section>\n </Show>\n <Show when={isDate()}>\n <section class=\"date-picker-weeks\">\n <For each={weekdays}>{(e) => <span>{e}</span>}</For>\n </section>\n </Show>\n <section class=\"date-picker-items\">\n <Switch>\n <Match when={isDate()}>\n <DatePanel current={props.current} onChange={handleChange} />\n </Match>\n <Match when={type() === 'month'}>\n <MonthPanel current={props.current} onChange={handleChange} />\n </Match>\n <Match when={type() === 'year'}>\n <YearPanel current={props.current} onChange={handleChange} start={startYear()} />\n </Match>\n </Switch>\n </section>\n <Show when={isDate() && props.showToday}>\n <section class=\"date-picker-footer\">\n <n-button\n type=\"primary\"\n block={true}\n link={true}\n onClick={() => props.onChange(dayjs())}\n >\n 今日\n </n-button>\n </section>\n </Show>\n </div>\n <Show when={isDate() && props.showTime}>\n <TimePicker\n current={props.current}\n onChange={props.onChange}\n showHour={props.showHour}\n showMinute={props.showMinute}\n showSecond={props.showSecond}\n datePicker={datePicker}\n />\n </Show>\n </div>\n );\n}\n\nexport default Panel;\n"],"names":["For","Match","Show","Switch","createEffect","createMemo","createSignal","DatePanel","dayjs","MonthPanel","TimePicker","YearPanel","props","datePicker","offset","setOffset","type","setType","weekdays","weekdaysMin","isDate","startYear","parseInt","current","get","handleMouseDown","e","open","stopPropagation","preventDefault","setPrevYear","prev","onChange","subtract","setNextYear","setPrevMonth","setNextMonth","handleChange","next","openChange","showHeader","showToday","showTime","showHour","showMinute","showSecond"],"rangeMappings":"","mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{template as e}from"solid-js/web";import{insert as t}from"solid-js/web";import{getOwner as r}from"solid-js/web";import{effect as o}from"solid-js/web";import{delegateEvents as s}from"solid-js/web";import{createComponent as i}from"solid-js/web";import{className as n}from"solid-js/web";import{addEventListener as a}from"solid-js/web";let m=e('<n-button type="primary">',!0,!1);import{For as l,createMemo as d}from"solid-js";import{cx as c}from"@moneko/css";export default function(e){let s=d(()=>{let t=e.start;return[t-1,...Array.from({length:10},(e,r)=>t+r),t+10]});return i(l,{get each(){return s()},children:(i,l)=>{function d(){e.onChange(e.current.set("years",i))}return(()=>{let f=m();return a(f,"click",d,!0),f.flat=!0,f._$owner=r(),t(f,i),o(t=>{let r=c("date-picker-month",(0===l()||l()===s().length-1)&&"date-opacity",e.current.get("years")===i&&"date-active"),o=e.current.get("years")===i?"strong":"button";return r!==t._v$&&n(f,t._v$=r),o!==t._v$2&&(f.tag=t._v$2=o),t},{_v$:void 0,_v$2:void 0}),f})()}})}s(["click"]);
1
+ import{template as t}from"solid-js/web";import{insert as e}from"solid-js/web";import{getOwner as r}from"solid-js/web";import{effect as o}from"solid-js/web";import{delegateEvents as s}from"solid-js/web";import{createComponent as i}from"solid-js/web";import{addEventListener as n}from"solid-js/web";let a=t('<n-button type="primary" class="date-picker-month">',!0,!1);import{For as l,createMemo as m}from"solid-js";export default function(t){let s=m(()=>{let e=t.start;return[e-1,...Array.from({length:10},(t,r)=>e+r),e+10]});return i(l,{get each(){return s()},children:(i,l)=>{function m(){t.onChange(t.current.set("years",i))}return(()=>{let c=a();return n(c,"click",m,!0),c.flat=!0,c._$owner=r(),e(c,i),o(e=>{let r=!(0!==l()&&l()!==s().length-1),o=!(t.current.get("years")!==i),n=t.current.get("years")===i?"strong":"button";return r!==e._v$&&c.classList.toggle("date-opacity",e._v$=r),o!==e._v$2&&c.classList.toggle("date-active",e._v$2=o),n!==e._v$3&&(c.tag=e._v$3=n),e},{_v$:void 0,_v$2:void 0,_v$3:void 0}),c})()}})}s(["click"]);
2
2
  //# sourceMappingURL=year.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/date-picker/year.tsx"],"sourcesContent":["import { For, createMemo } from 'solid-js';\nimport { cx } from '@moneko/css';\nimport dayjs from './dayjs';\n\ntype YearPanelProps = {\n current: dayjs.Dayjs;\n start: number;\n onChange(next: dayjs.Dayjs): void;\n};\nfunction YearPanel(props: YearPanelProps) {\n const years = createMemo(() => {\n const start = props.start;\n\n return [start - 1, ...Array.from({ length: 10 }, (__, i) => start + i), start + 10];\n });\n\n return (\n <For each={years()}>\n {(y, i) => {\n function onChange() {\n props.onChange(props.current.set('years', y));\n }\n return (\n <n-button\n type=\"primary\"\n flat={true}\n class={cx(\n 'date-picker-month',\n (i() === 0 || i() === years().length - 1) && 'date-opacity',\n props.current.get('years') === y && 'date-active',\n )}\n tag={props.current.get('years') === y ? 'strong' : 'button'}\n onClick={onChange}\n >\n {y}\n </n-button>\n );\n }}\n </For>\n );\n}\n\nexport default YearPanel;\n"],"names":["For","createMemo","cx","props","years","start","Array","from","length","__","i","y","onChange","current","set","get"],"rangeMappings":"","mappings":"4XAAA,QAASA,OAAAA,CAAG,CAAEC,cAAAA,CAAU,KAAQ,UAAW,AAC3C,QAASC,MAAAA,CAAE,KAAQ,aAAc,AAyCjC,gBAjCA,SAAmBC,CAAqB,EACtC,IAAMC,EAAQH,EAAW,KACvB,IAAMI,EAAQF,EAAME,KAAK,CAEzB,MAAO,CAACA,EAAQ,KAAMC,MAAMC,IAAI,CAAC,CAAEC,OAAQ,EAAG,EAAG,CAACC,EAAIC,IAAML,EAAQK,GAAIL,EAAQ,GAAG,AACrF,GAEA,SACGL,qBAAUI,cACR,CAACO,EAAGD,KACH,SAASE,IACPT,EAAMS,QAAQ,CAACT,EAAMU,OAAO,CAACC,GAAG,CAAC,QAASH,GAC5C,CACA,yCAUaC,aAPH,CAAA,oBASLD,eARMT,EACL,oBACA,AAACQ,CAAAA,AAAQ,IAARA,KAAaA,MAAQN,IAAQI,MAAM,CAAG,CAAA,GAAM,eAC7CL,EAAMU,OAAO,CAACE,GAAG,CAAC,WAAaJ,GAAK,iBAEjCR,EAAMU,OAAO,CAACE,GAAG,CAAC,WAAaJ,EAAI,SAAW,uGAMzD,GAGN"}
1
+ {"version":3,"sources":["../../components/date-picker/year.tsx"],"sourcesContent":["import { For, createMemo } from 'solid-js';\nimport dayjs from './dayjs';\n\ntype YearPanelProps = {\n current: dayjs.Dayjs;\n start: number;\n onChange(next: dayjs.Dayjs): void;\n};\nfunction YearPanel(props: YearPanelProps) {\n const years = createMemo(() => {\n const start = props.start;\n\n return [start - 1, ...Array.from({ length: 10 }, (__, i) => start + i), start + 10];\n });\n\n return (\n <For each={years()}>\n {(y, i) => {\n function onChange() {\n props.onChange(props.current.set('years', y));\n }\n return (\n <n-button\n type=\"primary\"\n flat={true}\n class=\"date-picker-month\"\n classList={{\n 'date-opacity': i() === 0 || i() === years().length - 1,\n 'date-active': props.current.get('years') === y,\n }}\n tag={props.current.get('years') === y ? 'strong' : 'button'}\n onClick={onChange}\n >\n {y}\n </n-button>\n );\n }}\n </For>\n );\n}\n\nexport default YearPanel;\n"],"names":["For","createMemo","props","years","start","Array","from","length","__","i","y","onChange","current","set","get"],"rangeMappings":"","mappings":"6WAAA,QAASA,OAAAA,CAAG,CAAEC,cAAAA,CAAU,KAAQ,UAAW,AAyC3C,gBAjCA,SAAmBC,CAAqB,EACtC,IAAMC,EAAQF,EAAW,KACvB,IAAMG,EAAQF,EAAME,KAAK,CAEzB,MAAO,CAACA,EAAQ,KAAMC,MAAMC,IAAI,CAAC,CAAEC,OAAQ,EAAG,EAAG,CAACC,EAAIC,IAAML,EAAQK,GAAIL,EAAQ,GAAG,AACrF,GAEA,SACGJ,qBAAUG,cACR,CAACO,EAAGD,KACH,SAASE,IACPT,EAAMS,QAAQ,CAACT,EAAMU,OAAO,CAACC,GAAG,CAAC,QAASH,GAC5C,CACA,yCAUaC,aAPH,CAAA,oBASLD,gBANiBD,CAAAA,AAAQ,IAARA,KAAaA,MAAQN,IAAQI,MAAM,CAAG,CAAA,MACvCL,EAAMU,OAAO,CAACE,GAAG,CAAC,WAAaJ,KAE3CR,EAAMU,OAAO,CAACE,GAAG,CAAC,WAAaJ,EAAI,SAAW,wMAMzD,GAGN"}
@@ -1,2 +1,2 @@
1
- function e(){return(e=Object.assign||function(e){for(var o=1;o<arguments.length;o++){var t=arguments[o];for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])}return e}).apply(this,arguments)}import{use as o}from"solid-js/web";import{template as t}from"solid-js/web";import{mergeProps as n}from"solid-js/web";import{insert as i}from"solid-js/web";import{getOwner as r}from"solid-js/web";import{effect as l}from"solid-js/web";import{createComponent as s}from"solid-js/web";import{addEventListener as a}from"solid-js/web";let p=t("<n-menu>",!0,!1),d=t('<div class="container">');import{Show as v,createComponent as u,createEffect as m,createSignal as f,mergeProps as g,splitProps as c,untrack as h}from"solid-js";import $ from"@moneko/common/lib/isFunction";import{customElement as _}from"solid-element";import C from"../empty";import"../menu";import b,{defaultProps as w}from"../popover";function y(e){let t;let[u,g]=c(e,["popupClass","popupCss","value","defaultValue","onChange","open","onOpenChange","fieldNames","items","multiple","toggle"]),[_,w]=f([]),[y,j]=f(null),[O,A]=f([]);function E(e){$(u.onOpenChange)&&u.onOpenChange(e),void 0===u.open&&j(e)}function N(e){let[o,t]=e.detail;$(u.onChange)&&u.onChange(o,t),void 0===u.value&&w(Array.isArray(o)?o:[o]),u.multiple||E(!1)}function P(e){A(e.detail)}return m(()=>{void 0!==u.value&&null!==u.value?w(Array.isArray(u.value)?u.value:[u.value]):w([])}),m(()=>{void 0!==u.open&&h(y)!==u.open&&j(u.open)}),s(b,n({get popupClass(){return u.popupClass},get popupCss(){return u.popupCss},get open(){return y()},onOpenChange:E,get content(){return(()=>{let e=d(),n=t;return"function"==typeof n?o(n,e):t=e,i(e,s(v,{get when(){var m;return null==(m=u.items)?void 0:m.length},get fallback(){return s(C,{style:{width:"100%"}})},get children(){let e=p();return a(e,"openchange",P),a(e,"change",N),e._$owner=r(),l(o=>{let t=u.items,n=u.defaultValue,i=u.multiple,r=u.fieldNames,l=u.toggle,s=g.disabled,a=O();return t!==o._v$&&(e.items=o._v$=t),n!==o._v$2&&(e.defaultValue=o._v$2=n),i!==o._v$3&&(e.multiple=o._v$3=i),r!==o._v$4&&(e.fieldNames=o._v$4=r),l!==o._v$5&&(e.toggle=o._v$5=l),s!==o._v$6&&(e.disabled=o._v$6=s),a!==o._v$7&&(e.openKeys=o._v$7=a),o},{_v$:void 0,_v$2:void 0,_v$3:void 0,_v$4:void 0,_v$5:void 0,_v$6:void 0,_v$7:void 0}),l(()=>e.value=_()),e}})),e})()}},g))}export const defaultProps=e({},w,{fieldNames:void 0,toggle:void 0,value:void 0,defaultValue:void 0,onChange:void 0,multiple:void 0,disabled:void 0,type:void 0,onOpenChange:void 0,openKeys:void 0});_("n-dropdown",e({},defaultProps,{items:[]}),(e,o)=>{let t=o.element,n=g({items:t.items,onChange(e,o){t.dispatchEvent(new CustomEvent("change",{detail:[e,o]}))},onOpenChange(e){t.dispatchEvent(new CustomEvent("openchange",{detail:e}))},children:[...t.childNodes.values()]},e);return m(()=>{t.removeAttribute("items"),t.removeAttribute("field-names"),t.removeAttribute("css")}),u(y,n)});export default y;
1
+ function e(){return(e=Object.assign||function(e){for(var o=1;o<arguments.length;o++){var t=arguments[o];for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])}return e}).apply(this,arguments)}import{use as o}from"solid-js/web";import{template as t}from"solid-js/web";import{mergeProps as n}from"solid-js/web";import{insert as i}from"solid-js/web";import{getOwner as r}from"solid-js/web";import{effect as l}from"solid-js/web";import{createComponent as s}from"solid-js/web";import{addEventListener as a}from"solid-js/web";let p=t("<n-menu>",!0,!1),d=t('<div class="container">');import{Show as v,createEffect as u,createSignal as m,mergeProps as f,splitProps as g,untrack as c}from"solid-js";import h from"@moneko/common/lib/isFunction";import{customElement as $}from"solid-element";import _ from"../empty";import"../menu";import C,{defaultProps as b}from"../popover";function w(e){let t;let[f,$]=g(e,["popupClass","popupCss","value","defaultValue","onChange","open","onOpenChange","fieldNames","items","multiple","toggle"]),[b,w]=m([]),[y,j]=m(null),[O,A]=m([]);function E(e){h(f.onOpenChange)&&f.onOpenChange(e),void 0===f.open&&j(e)}function N(e){let[o,t]=e.detail;h(f.onChange)&&f.onChange(o,t),void 0===f.value&&w(Array.isArray(o)?o:[o]),f.multiple||E(!1)}function P(e){A(e.detail)}return u(()=>{void 0!==f.value&&null!==f.value?w(Array.isArray(f.value)?f.value:[f.value]):w([])}),u(()=>{void 0!==f.open&&c(y)!==f.open&&j(f.open)}),s(C,n({get popupClass(){return f.popupClass},get popupCss(){return f.popupCss},get open(){return y()},onOpenChange:E,get content(){return(()=>{let e=d(),n=t;return"function"==typeof n?o(n,e):t=e,i(e,s(v,{get when(){var u;return null==(u=f.items)?void 0:u.length},get fallback(){return s(_,{style:{width:"100%"}})},get children(){let e=p();return a(e,"openchange",P),a(e,"change",N),e._$owner=r(),l(o=>{let t=f.items,n=f.defaultValue,i=f.multiple,r=f.fieldNames,l=f.toggle,s=$.disabled,a=O();return t!==o._v$&&(e.items=o._v$=t),n!==o._v$2&&(e.defaultValue=o._v$2=n),i!==o._v$3&&(e.multiple=o._v$3=i),r!==o._v$4&&(e.fieldNames=o._v$4=r),l!==o._v$5&&(e.toggle=o._v$5=l),s!==o._v$6&&(e.disabled=o._v$6=s),a!==o._v$7&&(e.openKeys=o._v$7=a),o},{_v$:void 0,_v$2:void 0,_v$3:void 0,_v$4:void 0,_v$5:void 0,_v$6:void 0,_v$7:void 0}),l(()=>e.value=b()),e}})),e})()}},$))}export const defaultProps=e({},b,{fieldNames:void 0,toggle:void 0,value:void 0,defaultValue:void 0,onChange:void 0,multiple:void 0,disabled:void 0,type:void 0,onOpenChange:void 0,openKeys:void 0});$("n-dropdown",e({},defaultProps,{items:[]}),(e,o)=>{let t=o.element,n=f({items:t.items,onChange(e,o){t.dispatchEvent(new CustomEvent("change",{detail:[e,o]}))},onOpenChange(e){t.dispatchEvent(new CustomEvent("openchange",{detail:e}))},children:[...t.childNodes.values()]},e);return u(()=>{t.removeAttribute("items"),t.removeAttribute("field-names"),t.removeAttribute("css")}),s(w,n)});export default w;
2
2
  //# sourceMappingURL=index.js.map