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.
- package/README.md +2 -0
- package/es/back-top/index.js +1 -1
- package/es/back-top/index.js.map +1 -1
- package/es/button/index.d.ts +1 -0
- package/es/button/index.js +1 -1
- package/es/button/index.js.map +1 -1
- package/es/capture-screen/index.js +1 -1
- package/es/capture-screen/index.js.map +1 -1
- package/es/carousel/index.js +1 -1
- package/es/carousel/index.js.map +1 -1
- package/es/checkbox/index.js +1 -1
- package/es/checkbox/index.js.map +1 -1
- package/es/code/index.js +1 -1
- package/es/code/index.js.map +1 -1
- package/es/color-palette/index.js +1 -1
- package/es/color-palette/index.js.map +1 -1
- package/es/color-picker/index.js +1 -1
- package/es/color-picker/index.js.map +1 -1
- package/es/cron/index.js +1 -1
- package/es/cron/index.js.map +1 -1
- package/es/date-picker/date.js +1 -1
- package/es/date-picker/date.js.map +1 -1
- package/es/date-picker/dayjs.js +1 -1
- package/es/date-picker/dayjs.js.map +1 -1
- package/es/date-picker/index.js +1 -1
- package/es/date-picker/index.js.map +1 -1
- package/es/date-picker/month.js +1 -1
- package/es/date-picker/month.js.map +1 -1
- package/es/date-picker/panel.js +1 -1
- package/es/date-picker/panel.js.map +1 -1
- package/es/date-picker/year.js +1 -1
- package/es/date-picker/year.js.map +1 -1
- package/es/dropdown/index.js +1 -1
- package/es/dropdown/index.js.map +1 -1
- package/es/img/index.js +1 -1
- package/es/img/index.js.map +1 -1
- package/es/input/index.js +1 -1
- package/es/input/index.js.map +1 -1
- package/es/input-number/index.js +2 -2
- package/es/input-number/index.js.map +1 -1
- package/es/md/index.js +1 -1
- package/es/md/index.js.map +1 -1
- package/es/menu/index.js +1 -1
- package/es/menu/index.js.map +1 -1
- package/es/modal/index.js +1 -1
- package/es/modal/index.js.map +1 -1
- package/es/notification/notification.js +1 -1
- package/es/notification/notification.js.map +1 -1
- package/es/pagination/index.js +1 -1
- package/es/pagination/index.js.map +1 -1
- package/es/popover/index.js +1 -1
- package/es/popover/index.js.map +1 -1
- package/es/provider/index.js +1 -1
- package/es/provider/index.js.map +1 -1
- package/es/radio/index.js +1 -1
- package/es/radio/index.js.map +1 -1
- package/es/segmented/index.js +3 -3
- package/es/segmented/index.js.map +1 -1
- package/es/select/index.js +1 -1
- package/es/select/index.js.map +1 -1
- package/es/skeleton/index.js +3 -3
- package/es/skeleton/index.js.map +1 -1
- package/es/spin/index.js +2 -2
- package/es/spin/index.js.map +1 -1
- package/es/switch/index.js +1 -1
- package/es/switch/index.js.map +1 -1
- package/es/table/index.js +1 -1
- package/es/table/index.js.map +1 -1
- package/es/tabs/index.d.ts +5 -0
- package/es/tabs/index.js +2 -2
- package/es/tabs/index.js.map +1 -1
- package/es/tag/index.js +3 -3
- package/es/tag/index.js.map +1 -1
- package/es/tree/index.js +1 -1
- package/es/tree/index.js.map +1 -1
- package/es/tree/register.js +1 -1
- package/es/tree/register.js.map +1 -1
- package/es/typography/index.js +3 -3
- package/es/typography/index.js.map +1 -1
- package/lib/back-top/index.js +1 -1
- package/lib/back-top/index.js.map +1 -1
- package/lib/button/index.d.ts +1 -0
- package/lib/button/index.js +1 -1
- package/lib/button/index.js.map +1 -1
- package/lib/capture-screen/index.js +1 -1
- package/lib/capture-screen/index.js.map +1 -1
- package/lib/carousel/index.js +1 -1
- package/lib/carousel/index.js.map +1 -1
- package/lib/checkbox/index.js +1 -1
- package/lib/checkbox/index.js.map +1 -1
- package/lib/code/index.js +1 -1
- package/lib/code/index.js.map +1 -1
- package/lib/color-palette/index.js +1 -1
- package/lib/color-palette/index.js.map +1 -1
- package/lib/color-picker/index.js +1 -1
- package/lib/color-picker/index.js.map +1 -1
- package/lib/cron/index.js +1 -1
- package/lib/cron/index.js.map +1 -1
- package/lib/date-picker/date.js +1 -1
- package/lib/date-picker/date.js.map +1 -1
- package/lib/date-picker/dayjs.js +1 -1
- package/lib/date-picker/dayjs.js.map +1 -1
- package/lib/date-picker/index.js +1 -1
- package/lib/date-picker/index.js.map +1 -1
- package/lib/date-picker/month.js +1 -1
- package/lib/date-picker/month.js.map +1 -1
- package/lib/date-picker/panel.js +1 -1
- package/lib/date-picker/panel.js.map +1 -1
- package/lib/date-picker/year.js +1 -1
- package/lib/date-picker/year.js.map +1 -1
- package/lib/dropdown/index.js +1 -1
- package/lib/dropdown/index.js.map +1 -1
- package/lib/img/index.js +1 -1
- package/lib/img/index.js.map +1 -1
- package/lib/input/index.js +1 -1
- package/lib/input/index.js.map +1 -1
- package/lib/input-number/index.js +1 -1
- package/lib/input-number/index.js.map +1 -1
- package/lib/md/index.js +1 -1
- package/lib/md/index.js.map +1 -1
- package/lib/menu/index.js +1 -1
- package/lib/menu/index.js.map +1 -1
- package/lib/modal/index.js +1 -1
- package/lib/modal/index.js.map +1 -1
- package/lib/notification/notification.js +1 -1
- package/lib/notification/notification.js.map +1 -1
- package/lib/pagination/index.js +1 -1
- package/lib/pagination/index.js.map +1 -1
- package/lib/popover/index.js +1 -1
- package/lib/popover/index.js.map +1 -1
- package/lib/provider/index.js +1 -1
- package/lib/provider/index.js.map +1 -1
- package/lib/radio/index.js +1 -1
- package/lib/radio/index.js.map +1 -1
- package/lib/segmented/index.js +1 -1
- package/lib/segmented/index.js.map +1 -1
- package/lib/select/index.js +1 -1
- package/lib/select/index.js.map +1 -1
- package/lib/skeleton/index.js +4 -4
- package/lib/skeleton/index.js.map +1 -1
- package/lib/spin/index.js +1 -1
- package/lib/spin/index.js.map +1 -1
- package/lib/switch/index.js +1 -1
- package/lib/switch/index.js.map +1 -1
- package/lib/table/index.js +1 -1
- package/lib/table/index.js.map +1 -1
- package/lib/tabs/index.d.ts +5 -0
- package/lib/tabs/index.js +2 -2
- package/lib/tabs/index.js.map +1 -1
- package/lib/tag/index.js +2 -2
- package/lib/tag/index.js.map +1 -1
- package/lib/tree/index.js +1 -1
- package/lib/tree/index.js.map +1 -1
- package/lib/tree/register.js +1 -1
- package/lib/tree/register.js.map +1 -1
- package/lib/typography/index.js +1 -1
- package/lib/typography/index.js.map +1 -1
- package/package.json +10 -11
- package/umd/index.js +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../components/checkbox/index.tsx"],"sourcesContent":["import { For, createComponent, createEffect, createMemo, createSignal, mergeProps } from 'solid-js';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport { style } from './style';\nimport { FieldName } from '../basic-config';\nimport getOptions from '../get-options';\nimport theme from '../theme';\nimport type { BaseOption, BasicConfig, CustomElement } from '..';\n\n/** 通用API\n * @since 1.0.0\n */\nexport interface CheckboxBaseProps {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** input[type=\"checkbox\"] 的 name 属性 */\n name?: string;\n /** 只读 */\n disabled?: boolean;\n /** 选项排列方式\n * @default 'horizontal'\n */\n layout?: 'vertical' | 'horizontal';\n /** 自定义节点 'label'、'value'、'options' 的字段 */\n fieldNames?: BasicConfig['fieldName'];\n}\n/** 复选框API */\nexport interface CheckboxBoolProps extends CheckboxBaseProps {\n /** 一个 bool 值; */\n value?: boolean;\n /** 默认值 */\n defaultValue?: boolean;\n /** 值修改时的回调方法 */\n onChange?: (val: boolean) => void;\n checkAll?: never;\n options?: never;\n}\n/** 通过数据渲染一组复选框按钮的API */\nexport interface CheckboxGroupProps extends CheckboxBaseProps {\n /** 全选 */\n checkAll?: boolean;\n /** 值;\n * 当设置了value时, 将是受控模式;\n * 受控模式可通过 onChange 事件更新 value\n **/\n value?: (string | number)[];\n /** 默认值 */\n defaultValue?: (string | number)[];\n /** 渲染选项所使用的数据,\n * 当没有设置该值时, 将渲染一个切换 bool 值的按钮\n * */\n options?: (CheckboxOption | string)[];\n /** 值修改时的回调方法 */\n onChange?: (val: (string | number)[]) => void;\n}\n/** 复选框选项\n * @since 1.0.0\n */\nexport interface CheckboxOption extends BaseOption {\n /** 不确定状态 */\n indeterminate?: boolean;\n}\n\nfunction Checkbox(props: CheckboxBoolProps | CheckboxGroupProps) {\n const { baseStyle } = theme;\n const [value, setValue] = createSignal<(string | number)[]>([]);\n const fieldNames = createMemo(() => Object.assign({}, FieldName, props.fieldNames));\n\n createEffect(() => {\n const _val = typeof props.value === 'undefined' ? props.defaultValue : props.value;\n let val: (string | number)[] = [];\n\n if (Array.isArray(_val)) {\n val = _val;\n } else if (typeof _val !== 'undefined') {\n val = [_val as unknown as string];\n }\n\n setValue(val);\n });\n const options = createMemo(() => {\n const fieldName = fieldNames();\n\n if (typeof props.options === 'undefined') {\n return getOptions([{ value: 1 } as CheckboxOption], fieldName);\n }\n const checkAll: CheckboxOption[] = [\n { [fieldName.value]: 'all', [fieldName.label]: '全选', indeterminate: false },\n ];\n const arr = props.checkAll ? checkAll : [];\n\n return arr.concat(getOptions(props.options || [], fieldName));\n });\n\n const all = createMemo(() => {\n const allVal: (string | number)[] = [];\n const fieldName = fieldNames();\n\n options().forEach((item) => {\n if (!('indeterminate' in item) && typeof item[fieldName.value] !== 'undefined') {\n allVal.push(item[fieldName.value]!);\n }\n });\n\n return allVal;\n });\n\n function getIndeterminate() {\n let _indeterminate = false;\n\n all().forEach((v) => {\n if (value().length && !value().includes(v)) {\n _indeterminate = true;\n }\n });\n return _indeterminate;\n }\n const checkedAll = createMemo(() => {\n let checked = true;\n const alls = all();\n\n for (let i = 0, len = alls.length; i < len; i++) {\n if (!value().includes(alls[i])) {\n checked = false;\n break;\n }\n }\n return checked;\n });\n\n function onChange(item: CheckboxOption) {\n if (!props.disabled && !item.disabled) {\n const isIndeterminate = 'indeterminate' in item;\n let newVal = isIndeterminate ? [] : [...value()];\n const val = item[fieldNames().value]!;\n\n if (isIndeterminate) {\n if (!checkedAll()) {\n newVal = all();\n }\n } else {\n const idx = newVal.indexOf(val);\n\n if (idx !== -1) {\n newVal.splice(idx, 1);\n } else {\n newVal.push(val);\n }\n }\n if (typeof props.value === 'undefined') {\n setValue(newVal);\n }\n props.onChange?.((typeof props.options === 'undefined' ? !!newVal[0] : newVal) as never);\n }\n }\n function onKeyUp(item: CheckboxOption, e: KeyboardEvent) {\n e.preventDefault();\n if (e.key === 'Enter') {\n onChange(item);\n }\n }\n\n return (\n <>\n <style>\n {baseStyle()}\n {style}\n {css(props.css)}\n </style>\n <section class={cx('box', props.layout, props.class)}>\n <For each={options()}>\n {(item) => {\n const readOnly = props.disabled || item.disabled;\n const fieldName = fieldNames();\n const realVal = item[fieldName.value]!;\n\n if ('indeterminate' in item) {\n createEffect(() => {\n item.ref.indeterminate = getIndeterminate();\n });\n }\n return (\n <span\n class={cx('item', item.class, item.status)}\n aria-disabled={readOnly}\n tabindex={readOnly ? -1 : 0}\n onKeyUp={onKeyUp.bind(null, item)}\n onClick={onChange.bind(null, item)}\n >\n <input\n ref={item.ref}\n class=\"checkbox\"\n type=\"checkbox\"\n name={props.name}\n value={realVal as string}\n disabled={readOnly}\n checked={'indeterminate' in item ? checkedAll() : value().includes(realVal)}\n onChange={onChange.bind(null, item)}\n />\n <label>{item[fieldName.label]}</label>\n </span>\n );\n }}\n </For>\n </section>\n </>\n );\n}\n\nexport type CheckboxGroupElement = CustomElement<CheckboxGroupProps>;\nexport type CheckboxBoolElement = CustomElement<CheckboxBoolProps>;\n\ncustomElement<CheckboxBoolProps | CheckboxGroupProps>(\n 'n-checkbox',\n {\n class: void 0,\n css: void 0,\n name: void 0,\n disabled: void 0,\n value: void 0,\n defaultValue: void 0,\n options: void 0,\n onChange: void 0,\n fieldNames: void 0,\n checkAll: void 0,\n layout: void 0,\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n layout: el.layout || 'horizontal',\n onChange(next: (string | number)[] | boolean) {\n el.dispatchEvent(\n new CustomEvent('change', {\n detail: next,\n }),\n );\n },\n },\n _,\n );\n\n createEffect(() => {\n el.removeAttribute('options');\n el.removeAttribute('field-names');\n el.removeAttribute('css');\n });\n return createComponent(Checkbox, props);\n },\n);\nexport default Checkbox;\n"],"names":["Checkbox","props","baseStyle","theme","value","setValue","createSignal","fieldNames","createMemo","Object","assign","FieldName","createEffect","_val","defaultValue","val","Array","isArray","options","fieldName","getOptions","checkAll","label","indeterminate","arr","concat","all","allVal","forEach","item","push","checkedAll","checked","alls","i","len","length","includes","onChange","disabled","isIndeterminate","newVal","idx","indexOf","splice","onKeyUp","e","preventDefault","key","style","css","For","readOnly","realVal","_indeterminate","ref","v","bind","cx","class","status","name","layout","customElement","_","opt","el","element","mergeProps","next","dispatchEvent","CustomEvent","detail","removeAttribute","createComponent"],"rangeMappings":"","mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../components/checkbox/index.tsx"],"sourcesContent":["import { For, createEffect, createMemo, createSignal, mergeProps } from 'solid-js';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport { style } from './style';\nimport { FieldName } from '../basic-config';\nimport getOptions from '../get-options';\nimport theme from '../theme';\nimport type { BaseOption, BasicConfig, CustomElement } from '..';\n\n/** 通用API\n * @since 1.0.0\n */\nexport interface CheckboxBaseProps {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** input[type=\"checkbox\"] 的 name 属性 */\n name?: string;\n /** 只读 */\n disabled?: boolean;\n /** 选项排列方式\n * @default 'horizontal'\n */\n layout?: 'vertical' | 'horizontal';\n /** 自定义节点 'label'、'value'、'options' 的字段 */\n fieldNames?: BasicConfig['fieldName'];\n}\n/** 复选框API */\nexport interface CheckboxBoolProps extends CheckboxBaseProps {\n /** 一个 bool 值; */\n value?: boolean;\n /** 默认值 */\n defaultValue?: boolean;\n /** 值修改时的回调方法 */\n onChange?: (val: boolean) => void;\n checkAll?: never;\n options?: never;\n}\n/** 通过数据渲染一组复选框按钮的API */\nexport interface CheckboxGroupProps extends CheckboxBaseProps {\n /** 全选 */\n checkAll?: boolean;\n /** 值;\n * 当设置了value时, 将是受控模式;\n * 受控模式可通过 onChange 事件更新 value\n **/\n value?: (string | number)[];\n /** 默认值 */\n defaultValue?: (string | number)[];\n /** 渲染选项所使用的数据,\n * 当没有设置该值时, 将渲染一个切换 bool 值的按钮\n * */\n options?: (CheckboxOption | string)[];\n /** 值修改时的回调方法 */\n onChange?: (val: (string | number)[]) => void;\n}\n/** 复选框选项\n * @since 1.0.0\n */\nexport interface CheckboxOption extends BaseOption {\n /** 不确定状态 */\n indeterminate?: boolean;\n}\n\nfunction Checkbox(props: CheckboxBoolProps | CheckboxGroupProps) {\n const { baseStyle } = theme;\n const [value, setValue] = createSignal<(string | number)[]>([]);\n const fieldNames = createMemo(() => Object.assign({}, FieldName, props.fieldNames));\n\n createEffect(() => {\n const _val = typeof props.value === 'undefined' ? props.defaultValue : props.value;\n let val: (string | number)[] = [];\n\n if (Array.isArray(_val)) {\n val = _val;\n } else if (typeof _val !== 'undefined') {\n val = [_val as unknown as string];\n }\n\n setValue(val);\n });\n const options = createMemo(() => {\n const fieldName = fieldNames();\n\n if (typeof props.options === 'undefined') {\n return getOptions([{ value: 1 } as CheckboxOption], fieldName);\n }\n const checkAll: CheckboxOption[] = [\n { [fieldName.value]: 'all', [fieldName.label]: '全选', indeterminate: false },\n ];\n const arr = props.checkAll ? checkAll : [];\n\n return arr.concat(getOptions(props.options || [], fieldName));\n });\n\n const all = createMemo(() => {\n const allVal: (string | number)[] = [];\n const fieldName = fieldNames();\n\n options().forEach((item) => {\n if (!('indeterminate' in item) && typeof item[fieldName.value] !== 'undefined') {\n allVal.push(item[fieldName.value]!);\n }\n });\n\n return allVal;\n });\n\n function getIndeterminate() {\n let _indeterminate = false;\n\n all().forEach((v) => {\n if (value().length && !value().includes(v)) {\n _indeterminate = true;\n }\n });\n return _indeterminate;\n }\n const checkedAll = createMemo(() => {\n let checked = true;\n const alls = all();\n\n for (let i = 0, len = alls.length; i < len; i++) {\n if (!value().includes(alls[i])) {\n checked = false;\n break;\n }\n }\n return checked;\n });\n\n function onChange(item: CheckboxOption) {\n if (!props.disabled && !item.disabled) {\n const isIndeterminate = 'indeterminate' in item;\n let newVal = isIndeterminate ? [] : [...value()];\n const val = item[fieldNames().value]!;\n\n if (isIndeterminate) {\n if (!checkedAll()) {\n newVal = all();\n }\n } else {\n const idx = newVal.indexOf(val);\n\n if (idx !== -1) {\n newVal.splice(idx, 1);\n } else {\n newVal.push(val);\n }\n }\n if (typeof props.value === 'undefined') {\n setValue(newVal);\n }\n props.onChange?.((typeof props.options === 'undefined' ? !!newVal[0] : newVal) as never);\n }\n }\n function onKeyUp(item: CheckboxOption, e: KeyboardEvent) {\n e.preventDefault();\n if (e.key === 'Enter') {\n onChange(item);\n }\n }\n\n return (\n <>\n <style>\n {baseStyle()}\n {style}\n {css(props.css)}\n </style>\n <section class={cx('box', props.layout, props.class)}>\n <For each={options()}>\n {(item) => {\n const readOnly = props.disabled || item.disabled;\n const fieldName = fieldNames();\n const realVal = item[fieldName.value]!;\n\n if ('indeterminate' in item) {\n createEffect(() => {\n item.ref.indeterminate = getIndeterminate();\n });\n }\n return (\n <span\n class={cx('item', item.class, item.status)}\n aria-disabled={readOnly}\n tabindex={readOnly ? -1 : 0}\n onKeyUp={onKeyUp.bind(null, item)}\n onClick={onChange.bind(null, item)}\n >\n <input\n ref={item.ref}\n class=\"checkbox\"\n type=\"checkbox\"\n name={props.name}\n value={realVal as string}\n disabled={readOnly}\n checked={'indeterminate' in item ? checkedAll() : value().includes(realVal)}\n onChange={onChange.bind(null, item)}\n />\n <label>{item[fieldName.label]}</label>\n </span>\n );\n }}\n </For>\n </section>\n </>\n );\n}\n\nexport type CheckboxGroupElement = CustomElement<CheckboxGroupProps>;\nexport type CheckboxBoolElement = CustomElement<CheckboxBoolProps>;\n\ncustomElement<CheckboxBoolProps | CheckboxGroupProps>(\n 'n-checkbox',\n {\n class: void 0,\n css: void 0,\n name: void 0,\n disabled: void 0,\n value: void 0,\n defaultValue: void 0,\n options: void 0,\n onChange: void 0,\n fieldNames: void 0,\n checkAll: void 0,\n layout: void 0,\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n layout: el.layout || 'horizontal',\n onChange(next: (string | number)[] | boolean) {\n el.dispatchEvent(\n new CustomEvent('change', {\n detail: next,\n }),\n );\n },\n },\n _,\n );\n\n createEffect(() => {\n el.removeAttribute('options');\n el.removeAttribute('field-names');\n el.removeAttribute('css');\n });\n return <Checkbox {...props} />;\n },\n);\nexport default Checkbox;\n"],"names":["Checkbox","props","baseStyle","theme","value","setValue","createSignal","fieldNames","createMemo","Object","assign","FieldName","createEffect","_val","defaultValue","val","Array","isArray","options","fieldName","getOptions","checkAll","label","indeterminate","arr","concat","all","allVal","forEach","item","push","checkedAll","checked","alls","i","len","length","includes","onChange","disabled","isIndeterminate","newVal","idx","indexOf","splice","onKeyUp","e","preventDefault","key","style","css","For","readOnly","realVal","_indeterminate","ref","v","bind","cx","class","status","name","layout","customElement","_","opt","el","element","mergeProps","next","dispatchEvent","CustomEvent","detail","removeAttribute"],"rangeMappings":"","mappings":"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"}
|
package/lib/code/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return p}});const e=require("solid-js/web"),t=require("solid-js"),n=c(require("@moneko/common/lib/isFunction")),r=c(require("@moneko/common/lib/setClipboard")),l=require("@moneko/css"),o=require("solid-element"),i=require("./style"),s=c(require("../prism/css"));require("../prism/prism.js");const a=c(require("../theme"));function c(e){return e&&e.__esModule?e:{default:e}}const u=(0,e.template)('<div class="toolbar"><button class="toolbar-copy">'),d=(0,e.template)("<pre><code>"),g=(0,e.template)("<style>"),v=(0,e.template)("<div><textarea>"),m=/^diff-([\w-]+)/i;function f(o){let c;let{baseStyle:f}=a.default,[p,b]=(0,t.createSignal)(""),[h,$]=(0,t.createSignal)(20),[_,C]=(0,t.createSignal)(!1),y=new IntersectionObserver(e=>{C(e[0].isIntersecting)});function P(){(0,r.default)((0,t.untrack)(p),c)}function q(){return(()=>{let n=d(),r=n.firstChild,
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return p}});const e=require("solid-js/web"),t=require("solid-js"),n=c(require("@moneko/common/lib/isFunction")),r=c(require("@moneko/common/lib/setClipboard")),l=require("@moneko/css"),o=require("solid-element"),i=require("./style"),s=c(require("../prism/css"));require("../prism/prism.js");const a=c(require("../theme"));function c(e){return e&&e.__esModule?e:{default:e}}const u=(0,e.template)('<div class="toolbar"><button class="toolbar-copy">'),d=(0,e.template)("<pre><code>"),g=(0,e.template)("<style>"),v=(0,e.template)("<div><textarea>"),m=/^diff-([\w-]+)/i;function f(o){let c;let{baseStyle:f}=a.default,[p,b]=(0,t.createSignal)(""),[h,$]=(0,t.createSignal)(20),[_,C]=(0,t.createSignal)(!1),y=new IntersectionObserver(e=>{C(e[0].isIntersecting)});function P(){(0,r.default)((0,t.untrack)(p),c)}function q(){return(()=>{let n=d(),r=n.firstChild,l=c;return(0,e.insert)(n,(0,e.createComponent)(t.Show,{get when(){return o.toolbar},get children(){let t=u(),n=t.firstChild;return(0,e.addEventListener)(n,"click",P,!0),(0,e.effect)(()=>(0,e.setAttribute)(t,"data-lang",o.lang?.split(" ")[0])),t}}),r),"function"==typeof l?(0,e.use)(l,r):c=r,(0,e.effect)(t=>{let l={[`language-${o.lang}`]:!!o.lang,"line-numbers":o.lineNumber,"not-toolbar":!o.toolbar,[o.class]:!o.edit},i=`language-${o.lang}`;return t._v$=(0,e.classList)(n,l,t._v$),i!==t._v$2&&(0,e.className)(r,t._v$2=i),t},{_v$:void 0,_v$2:void 0}),n})()}function k({target:e}){let t=`${e.value}${/\n$/.test(e.value)?"":""}`;b(t),(0,n.default)(o.onChange)&&o.onChange(t)}return(0,t.createEffect)(()=>{if(o.code){let e=o.code.replace(/^\n/,"");try{b(decodeURIComponent(e))}catch(t){b(e)}}else b("")}),(0,t.createEffect)(()=>{!function(e){if(!e.code||!_())return;y.unobserve(c),y.disconnect(),m.test(e.lang)&&!Prism.languages[e.lang]&&(Prism.languages[e.lang]=Prism.languages.diff);let t=Prism.languages[e.lang]||Prism.languages.markup;c.innerHTML=Prism.highlight(e.code,t,e.lang),$(c.getBoundingClientRect().height-(o.toolbar?40:16))}({lang:o.lang||"markup",code:p()})}),(0,t.onMount)(()=>{y.observe(c)}),(0,t.onCleanup)(()=>{y.unobserve(c),y.disconnect()}),[(()=>{let t=g();return(0,e.insert)(t,f,null),(0,e.insert)(t,s.default,null),(0,e.insert)(t,i.style,null),(0,e.insert)(t,()=>(0,l.css)(o.css),null),t})(),(0,e.createComponent)(t.Show,{get when(){return o.edit},get fallback(){return q()},get children(){let t=v(),n=t.firstChild;return(0,e.addEventListener)(n,"input",k,!0),(0,e.insert)(t,q,null),(0,e.effect)(r=>{let i=(0,l.cx)("n-editor",o.class),s=!!o.lineNumber,a=!o.toolbar,c=`${h()}px`;return i!==r._v$3&&(0,e.className)(t,r._v$3=i),s!==r._v$4&&n.classList.toggle("line-numbers",r._v$4=s),a!==r._v$5&&n.classList.toggle("not-toolbar",r._v$5=a),c!==r._v$6&&(null!=(r._v$6=c)?n.style.setProperty("height",c):n.style.removeProperty("height")),r},{_v$3:void 0,_v$4:void 0,_v$5:void 0,_v$6:void 0}),(0,e.effect)(()=>n.value=p()),t}})]}(0,o.customElement)("n-code",{class:void 0,code:void 0,lang:void 0,children:void 0,edit:void 0,toolbar:void 0,css:void 0,lineNumber:void 0,onChange:void 0},(n,r)=>{let l=r.element,o=(0,t.mergeProps)({code:l.textContent,css:l.css,onChange(e){l.dispatchEvent(new CustomEvent("change",{detail:e}))}},n);return(0,t.createEffect)(()=>{l.replaceChildren(),l.removeAttribute("css")}),(0,e.createComponent)(f,o)});const p=f;(0,e.delegateEvents)(["click","input"]);
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/lib/code/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../components/code/index.tsx"],"sourcesContent":["import {\n Show,\n
|
|
1
|
+
{"version":3,"sources":["../../components/code/index.tsx"],"sourcesContent":["import {\n Show,\n createEffect,\n createSignal,\n mergeProps,\n onCleanup,\n onMount,\n untrack,\n} from 'solid-js';\nimport { isFunction, setClipboard } from '@moneko/common';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport { style } from './style';\nimport prismCss from '../prism/css';\nimport '../prism/prism.js';\nimport theme from '../theme';\nimport type { CustomElement } from '..';\n\ndeclare const Prism: {\n disableWorkerMessageHandler: boolean;\n languages: Record<string, unknown>;\n highlight(code: string, langs: unknown, lang: string): string;\n};\n\nexport interface CodeProps {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** 内容 */\n code?: string;\n /** 语言 */\n lang?: string;\n /** 显示代码行号 */\n lineNumber?: boolean;\n /** 支持编辑 */\n edit?: boolean;\n /** 开启代码块工具条 */\n toolbar?: boolean;\n /** 编辑修改时的回调 */\n onChange?: (code: string) => void;\n children?: JSX.Element;\n}\n\nexport type CodeElement = CustomElement<CodeProps>;\n\nconst diffLang = /^diff-([\\w-]+)/i;\n\nfunction Code(props: CodeProps) {\n const { baseStyle } = theme;\n let codeEl: HTMLPreElement;\n const [code, setCode] = createSignal<string>('');\n const [hei, setHei] = createSignal(20);\n const [isIntersecting, setIsIntersecting] = createSignal(false);\n const observer = new IntersectionObserver((entries) => {\n setIsIntersecting(entries[0].isIntersecting);\n });\n\n function copy() {\n setClipboard(untrack(code), codeEl);\n }\n function pre() {\n return (\n <pre\n classList={{\n [`language-${props.lang}`]: !!props.lang,\n 'line-numbers': props.lineNumber,\n 'not-toolbar': !props.toolbar,\n [props.class as string]: !props.edit,\n }}\n >\n <Show when={props.toolbar}>\n <div class=\"toolbar\" data-lang={props.lang?.split(' ')[0]}>\n <button class=\"toolbar-copy\" onClick={copy} />\n </div>\n </Show>\n <code ref={codeEl} class={`language-${props.lang}`} />\n </pre>\n );\n }\n function change({ target }: { target: HTMLTextAreaElement }) {\n const c = `${target.value}${/\\n$/.test(target.value) ? '\\u200b' : ''}`;\n\n setCode(c);\n if (isFunction(props.onChange)) {\n props.onChange(c);\n }\n }\n function postMessage(opt: { lang: string; code?: string }) {\n if (!opt.code || !isIntersecting()) return;\n observer.unobserve(codeEl);\n observer.disconnect();\n if (diffLang.test(opt.lang) && !Prism.languages[opt.lang]) {\n Prism.languages[opt.lang] = Prism.languages.diff;\n }\n const language = Prism.languages[opt.lang] || Prism.languages.markup;\n\n codeEl.innerHTML = Prism.highlight(opt.code, language, opt.lang);\n setHei(codeEl.getBoundingClientRect().height - (props.toolbar ? 40 : 16));\n }\n\n // const work = new Worker(new URL(\"./worker.ts\", import.meta.url), {\n // name: \"wastedTime\",\n // /* webpackEntryOptions: { filename: \"workers/[name].js\" } */\n // });\n // work.addEventListener('message', update);\n\n // work.postMessage({\n // lang: props.lang,\n // code: code(),\n // });\n // onCleanup(() => {\n // work.terminate();\n // });\n createEffect(() => {\n if (props.code) {\n const _code = props.code.replace(/^\\n/, '');\n\n try {\n setCode(decodeURIComponent(_code));\n } catch (error) {\n setCode(_code);\n }\n } else {\n setCode('');\n }\n });\n createEffect(() => {\n postMessage({\n lang: props.lang || 'markup',\n code: code(),\n });\n });\n onMount(() => {\n // 开始观察目标元素\n observer.observe(codeEl);\n });\n onCleanup(() => {\n // 停止观察目标元素\n observer.unobserve(codeEl);\n observer.disconnect();\n });\n\n return (\n <>\n <style>\n {baseStyle()}\n {prismCss()}\n {style}\n {css(props.css)}\n </style>\n <Show when={props.edit} fallback={pre()}>\n <div class={cx('n-editor', props.class)}>\n <textarea\n value={code()}\n classList={{\n 'line-numbers': props.lineNumber,\n 'not-toolbar': !props.toolbar,\n }}\n style={{ height: `${hei()}px` }}\n onInput={change}\n />\n {pre()}\n </div>\n </Show>\n </>\n );\n}\n\ncustomElement<CodeProps>(\n 'n-code',\n {\n class: void 0,\n code: void 0,\n lang: void 0,\n children: void 0,\n edit: void 0,\n toolbar: void 0,\n css: void 0,\n lineNumber: void 0,\n onChange: void 0,\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n code: el.textContent,\n css: el.css,\n onChange(val: string) {\n el.dispatchEvent(\n new CustomEvent('change', {\n detail: val,\n }),\n );\n },\n },\n _,\n );\n\n createEffect(() => {\n el.replaceChildren();\n el.removeAttribute('css');\n });\n\n return <Code {...props} />;\n },\n);\nexport default Code;\n"],"names":["diffLang","Code","props","codeEl","baseStyle","theme","code","setCode","createSignal","hei","setHei","isIntersecting","setIsIntersecting","observer","IntersectionObserver","entries","copy","setClipboard","untrack","pre","Show","toolbar","lang","split","lineNumber","class","edit","change","target","c","value","test","isFunction","onChange","createEffect","_code","replace","decodeURIComponent","error","postMessage","opt","unobserve","disconnect","Prism","languages","diff","language","markup","innerHTML","highlight","getBoundingClientRect","height","onMount","observe","onCleanup","prismCss","style","css","cx","customElement","children","_","el","element","mergeProps","textContent","val","dispatchEvent","CustomEvent","detail","replaceChildren","removeAttribute"],"rangeMappings":"","mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(exports,{default:function(){return C},defaultColorPaletteProps:function(){return y}});const e=require("solid-js/web"),t=require("solid-js"),n=d(require("@moneko/common/lib/colorParse")),r=d(require("@moneko/common/lib/isFunction")),l=d(require("@moneko/common/lib/passiveSupported")),a=d(require("@moneko/common/lib/setClipboard")),i=d(require("@moneko/common/lib/throttle")),o=require("@moneko/css"),u=require("solid-element"),s=require("./style");require("../dropdown"),require("../input"),require("../input-number");const c=d(require("../theme"));function d(e){return e&&e.__esModule?e:{default:e}}const p=(0,e.template)("<style>"),m=(0,e.template)("<n-input>",!0,!1),f=(0,e.template)('<i class="eye-dropper">'),v=(0,e.template)('<div><div class="picker"></div><div class="chooser"><div class="range"><input class="slider hue" min="0" max="360" type="range"><input class="slider opacity" min="0" max="1" step="0.01" type="range"></div><div class="preview"></div></div><div class="form"><n-dropdown placement="right" trigger="click"><span class="switch"></span></n-dropdown></div><div class="color">',!0,!1),g=(0,e.template)("<n-input-number>",!0,!1),h=(0,e.template)("<i>");function b(u){let d;let{baseStyle:b}=c.default,y=(0,t.mergeProps)({defaultValue:"#5794ff"},u),C=[{label:"RGBA",value:"rgba",handleClosed:!1},{label:"HSLA",value:"hsla",handleClosed:!1},{label:"HEXA",value:"hexa",handleClosed:!1}],w=["#f44336","#E91E63","#9C27B0","#673AB7","#3F51B5","#2196F3","#00BCD4","#009688","#4CAF50","#CDDC39","#FF9800","#795548","#607D8B"],x={class:"input",size:"small",css:".input{text-align:center;font-size:12px;}"},[E,k]=(0,t.createSignal)((0,n.default)(y.value||y.defaultValue)),[S,q]=(0,t.createSignal)(!1);function P(e){return e?Number((100*e).toFixed()):e}function $(e){let t=e;return"string"==typeof e&&(t=e.replace(/[^\d]/g,"")),t/100}let L=(0,t.createMemo)(()=>{var e;let t=E(),n=t[e=t.type,`to${e[0].toUpperCase()+e.slice(1)}`]();return(0,r.default)(y.onChange)&&n.toString()!==y.value&&y.onChange(n.toString()),n});function M(e=y.defaultValue){(0,t.untrack)(L).toString()!==e&&k((0,n.default)(e))}function B(e){e.target&&(e.target.value=e.detail)}function F(e){e.target?.value&&M(e.target.value)}function D(e){"Enter"===e.key&&"string"==typeof e.target?.value&&M(e.target.value)}function _(e){if(d){let{x:n,y:r,width:l,height:a}=d.getBoundingClientRect(),i=(0,t.untrack)(E),o=i.value;o[1]=Math.floor(Math.min(Math.max(0,(e.clientX-n)/l*100),100)),o[2]=Math.floor(100-Math.min(Math.max(0,(e.clientY-r)/a*100),100)),k({...i,value:o})}}function O(e,r,l){if("number"==typeof r){let a=(0,t.untrack)(E),i=3===e||"hsva"===l,o=i?a.value:(0,t.untrack)(L);o[e]=r||0,i?k({...a,value:o}):k((0,n.default)(o.toString()))}}function j(e){q(!0),_(e)}function A(){q(!1)}function H(e){k(t=>({...t,type:e.detail[0]}))}function R(e){(0,a.default)((0,t.untrack)(L).toString(),e.target)}async function N(){if(window.EyeDropper){let e=await new window.EyeDropper().open();e.sRGBHex&&M(e.sRGBHex);return}}let V=(0,t.createMemo)(()=>{let e=E(),t=e.value;return`.palette {--c:${e.toRgbaString()};--h:${t[0]};--s:${t[1]};--v:${t[2]};--a:${t[3]};}`});return(0,t.createEffect)(()=>{(0,i.default)(M,8)(y.value)}),(0,t.createEffect)(()=>{S()&&document.body.addEventListener("mousemove",_,{passive:l.default}),(0,t.onCleanup)(()=>{document.body.removeEventListener("mousemove",_,!1)})}),(0,t.onMount)(()=>{document.body.addEventListener("mouseup",A,{passive:l.default})}),(0,t.onCleanup)(()=>{document.body.removeEventListener("mouseup",A,!1)}),[(()=>{let t=p();return(0,e.insert)(t,b,null),(0,e.insert)(t,s.style,null),(0,e.insert)(t,V,null),(0,e.insert)(t,()=>(0,o.css)(y.css),null),t})(),(()=>{let n=v(),r=n.firstChild,l=d,a=r.nextSibling,i=a.firstChild,u=i.firstChild,c=u.nextSibling,p=i.nextSibling,b=a.nextSibling,k=b.firstChild,S=k.firstChild,q=b.nextSibling;return(0,e.addEventListener)(r,"mousedown",j,!0),"function"==typeof l?(0,e.use)(l,r):d=r,u.$$input=e=>O(0,Number(e.target.value),"hsva"),c.$$input=e=>O(3,Number(e.target.value)),(0,e.addEventListener)(p,"click",R,!0),(0,e.insert)(b,(0,e.createComponent)(t.Show,{get when(){return"hexa"===E().type},get fallback(){return(0,e.createComponent)(t.Index,{get each(){return L()},children:(n,r)=>{let l=Object.assign({},x,3===r&&{step:.01,formatter:P,parse:$});return(()=>{let a=g();return(0,e.spread)(a,(0,e.mergeProps)(l,{get value(){return n()},get max(){return(0,t.untrack)(L).max[r]},min:0,onChange:e=>{O(r,e.detail)}}),!1,!1),a._$owner=(0,e.getOwner)(),a})()}})},get children(){let t=m();return(0,e.spread)(t,(0,e.mergeProps)(x,{get value(){return E().toHexaString()},onChange:B,onBlur:F,onKeyUp:D}),!1,!1),t._$owner=(0,e.getOwner)(),t}}),k),(0,e.addEventListener)(k,"change",H),k.css=s.switchCss,k.items=C,k._$owner=(0,e.getOwner)(),(0,e.insert)(S,()=>E().type),(0,e.insert)(q,(0,e.createComponent)(t.Show,{get when(){return window.EyeDropper},get fallback(){return(()=>{let t=h();return(0,e.addEventListener)(t,"click",M.bind(null,"rgba(168,16,16,0.15)"),!0),t.style.setProperty("--c","rgba(168,16,16,0.15)"),t})()},get children(){let t=f();return(0,e.addEventListener)(t,"click",N,!0),t.style.setProperty("--c","transparent"),t}}),null),(0,e.insert)(q,(0,e.createComponent)(t.For,{each:w,children:t=>(()=>{let n=h();return(0,e.addEventListener)(n,"click",M.bind(null,t),!0),null!=t?n.style.setProperty("--c",t):n.style.removeProperty("--c"),n})()}),null),(0,e.effect)(()=>(0,e.className)(n,(0,o.cx)("palette",y.class))),(0,e.effect)(()=>u.value=E().value[0]),(0,e.effect)(()=>c.value=E().value[3]),(0,e.effect)(()=>k.value=E().type),n})()]}const y={class:void 0,style:void 0,css:void 0,value:void 0,defaultValue:void 0,onChange:void 0};(0,u.customElement)("n-color-palette",y,(
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(exports,{default:function(){return C},defaultColorPaletteProps:function(){return y}});const e=require("solid-js/web"),t=require("solid-js"),n=d(require("@moneko/common/lib/colorParse")),r=d(require("@moneko/common/lib/isFunction")),l=d(require("@moneko/common/lib/passiveSupported")),a=d(require("@moneko/common/lib/setClipboard")),i=d(require("@moneko/common/lib/throttle")),o=require("@moneko/css"),u=require("solid-element"),s=require("./style");require("../dropdown"),require("../input"),require("../input-number");const c=d(require("../theme"));function d(e){return e&&e.__esModule?e:{default:e}}const p=(0,e.template)("<style>"),m=(0,e.template)("<n-input>",!0,!1),f=(0,e.template)('<i class="eye-dropper">'),v=(0,e.template)('<div><div class="picker"></div><div class="chooser"><div class="range"><input class="slider hue" min="0" max="360" type="range"><input class="slider opacity" min="0" max="1" step="0.01" type="range"></div><div class="preview"></div></div><div class="form"><n-dropdown placement="right" trigger="click"><span class="switch"></span></n-dropdown></div><div class="color">',!0,!1),g=(0,e.template)("<n-input-number>",!0,!1),h=(0,e.template)("<i>");function b(u){let d;let{baseStyle:b}=c.default,y=(0,t.mergeProps)({defaultValue:"#5794ff"},u),C=[{label:"RGBA",value:"rgba",handleClosed:!1},{label:"HSLA",value:"hsla",handleClosed:!1},{label:"HEXA",value:"hexa",handleClosed:!1}],w=["#f44336","#E91E63","#9C27B0","#673AB7","#3F51B5","#2196F3","#00BCD4","#009688","#4CAF50","#CDDC39","#FF9800","#795548","#607D8B"],x={class:"input",size:"small",css:".input{text-align:center;font-size:12px;}"},[E,k]=(0,t.createSignal)((0,n.default)(y.value||y.defaultValue)),[S,q]=(0,t.createSignal)(!1);function P(e){return e?Number((100*e).toFixed()):e}function $(e){let t=e;return"string"==typeof e&&(t=e.replace(/[^\d]/g,"")),t/100}let L=(0,t.createMemo)(()=>{var e;let t=E(),n=t[e=t.type,`to${e[0].toUpperCase()+e.slice(1)}`]();return(0,r.default)(y.onChange)&&n.toString()!==y.value&&y.onChange(n.toString()),n});function M(e=y.defaultValue){(0,t.untrack)(L).toString()!==e&&k((0,n.default)(e))}function B(e){e.target&&(e.target.value=e.detail)}function F(e){e.target?.value&&M(e.target.value)}function D(e){"Enter"===e.key&&"string"==typeof e.target?.value&&M(e.target.value)}function _(e){if(d){let{x:n,y:r,width:l,height:a}=d.getBoundingClientRect(),i=(0,t.untrack)(E),o=i.value;o[1]=Math.floor(Math.min(Math.max(0,(e.clientX-n)/l*100),100)),o[2]=Math.floor(100-Math.min(Math.max(0,(e.clientY-r)/a*100),100)),k({...i,value:o})}}function O(e,r,l){if("number"==typeof r){let a=(0,t.untrack)(E),i=3===e||"hsva"===l,o=i?a.value:(0,t.untrack)(L);o[e]=r||0,i?k({...a,value:o}):k((0,n.default)(o.toString()))}}function j(e){q(!0),_(e)}function A(){q(!1)}function H(e){k(t=>({...t,type:e.detail[0]}))}function R(e){(0,a.default)((0,t.untrack)(L).toString(),e.target)}async function N(){if(window.EyeDropper){let e=await new window.EyeDropper().open();e.sRGBHex&&M(e.sRGBHex);return}}let V=(0,t.createMemo)(()=>{let e=E(),t=e.value;return`.palette {--c:${e.toRgbaString()};--h:${t[0]};--s:${t[1]};--v:${t[2]};--a:${t[3]};}`});return(0,t.createEffect)(()=>{(0,i.default)(M,8)(y.value)}),(0,t.createEffect)(()=>{S()&&document.body.addEventListener("mousemove",_,{passive:l.default}),(0,t.onCleanup)(()=>{document.body.removeEventListener("mousemove",_,!1)})}),(0,t.onMount)(()=>{document.body.addEventListener("mouseup",A,{passive:l.default})}),(0,t.onCleanup)(()=>{document.body.removeEventListener("mouseup",A,!1)}),[(()=>{let t=p();return(0,e.insert)(t,b,null),(0,e.insert)(t,s.style,null),(0,e.insert)(t,V,null),(0,e.insert)(t,()=>(0,o.css)(y.css),null),t})(),(()=>{let n=v(),r=n.firstChild,l=d,a=r.nextSibling,i=a.firstChild,u=i.firstChild,c=u.nextSibling,p=i.nextSibling,b=a.nextSibling,k=b.firstChild,S=k.firstChild,q=b.nextSibling;return(0,e.addEventListener)(r,"mousedown",j,!0),"function"==typeof l?(0,e.use)(l,r):d=r,u.$$input=e=>O(0,Number(e.target.value),"hsva"),c.$$input=e=>O(3,Number(e.target.value)),(0,e.addEventListener)(p,"click",R,!0),(0,e.insert)(b,(0,e.createComponent)(t.Show,{get when(){return"hexa"===E().type},get fallback(){return(0,e.createComponent)(t.Index,{get each(){return L()},children:(n,r)=>{let l=Object.assign({},x,3===r&&{step:.01,formatter:P,parse:$});return(()=>{let a=g();return(0,e.spread)(a,(0,e.mergeProps)(l,{get value(){return n()},get max(){return(0,t.untrack)(L).max[r]},min:0,onChange:e=>{O(r,e.detail)}}),!1,!1),a._$owner=(0,e.getOwner)(),a})()}})},get children(){let t=m();return(0,e.spread)(t,(0,e.mergeProps)(x,{get value(){return E().toHexaString()},onChange:B,onBlur:F,onKeyUp:D}),!1,!1),t._$owner=(0,e.getOwner)(),t}}),k),(0,e.addEventListener)(k,"change",H),k.css=s.switchCss,k.items=C,k._$owner=(0,e.getOwner)(),(0,e.insert)(S,()=>E().type),(0,e.insert)(q,(0,e.createComponent)(t.Show,{get when(){return window.EyeDropper},get fallback(){return(()=>{let t=h();return(0,e.addEventListener)(t,"click",M.bind(null,"rgba(168,16,16,0.15)"),!0),t.style.setProperty("--c","rgba(168,16,16,0.15)"),t})()},get children(){let t=f();return(0,e.addEventListener)(t,"click",N,!0),t.style.setProperty("--c","transparent"),t}}),null),(0,e.insert)(q,(0,e.createComponent)(t.For,{each:w,children:t=>(()=>{let n=h();return(0,e.addEventListener)(n,"click",M.bind(null,t),!0),null!=t?n.style.setProperty("--c",t):n.style.removeProperty("--c"),n})()}),null),(0,e.effect)(()=>(0,e.className)(n,(0,o.cx)("palette",y.class))),(0,e.effect)(()=>u.value=E().value[0]),(0,e.effect)(()=>c.value=E().value[3]),(0,e.effect)(()=>k.value=E().type),n})()]}const y={class:void 0,style:void 0,css:void 0,value:void 0,defaultValue:void 0,onChange:void 0};(0,u.customElement)("n-color-palette",y,(n,r)=>{let l=r.element,a=(0,t.mergeProps)({onChange(e){l.dispatchEvent(new CustomEvent("change",{detail:e}))}},n);return(0,e.createComponent)(b,a)});const C=b;(0,e.delegateEvents)(["click","input","mousedown"]);
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -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":["defaultColorPaletteProps","ColorPalette","_","picker","baseStyle","theme","props","mergeProps","defaultValue","types","label","value","handleClosed","material","inputProps","class","size","css","hsva","setHsva","createSignal","colorParse","drag","setDrag","formatterOpacity","v","Number","toFixed","parseOpacity","_val","replace","color","createMemo","str","s","c","type","toUpperCase","slice","isFunction","onChange","toString","setColor","untrack","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","setClipboard","eyeDropper","window","EyeDropper","res","open","sRGBHex","colorVar","h","toRgbaString","createEffect","throttle","document","body","addEventListener","passive","passiveSupported","onCleanup","removeEventListener","onMount","style","Show","Index","n","inp","Object","assign","step","formatter","parse","toHexaString","switchCss","bind","For","cx","customElement","opts","el","element","val","dispatchEvent","CustomEvent","createComponent"],"rangeMappings":"","mappings":"+JAoWA,OAA4B,mBAA5B,GA3BaA,wBAAwB,mBAAxBA,+CA7TN,wBAUA,8CAAA,8CAAA,oDAAA,gDAAA,0CACiB,yBACM,2BACG,mBAC1B,uBACA,oBACA,qCACW,goBAmBlB,SAASC,EAAaC,CAAoB,MAGpCC,EAFJ,GAAM,CAAEC,UAAAA,CAAS,CAAE,CAAGC,SAAK,CACrBC,EAAQC,GAAAA,YAAU,EAAC,CAAEC,aAAc,SAAU,EAAGN,GAEhDO,EAAQ,CACZ,CAAEC,MAAO,OAAQC,MAAO,OAAQC,aAAc,CAAA,CAAM,EACpD,CAAEF,MAAO,OAAQC,MAAO,OAAQC,aAAc,CAAA,CAAM,EACpD,CAAEF,MAAO,OAAQC,MAAO,OAAQC,aAAc,CAAA,CAAM,EACrD,CACKC,EAAW,CACf,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACD,CACKC,EAA+B,CACnCC,MAAO,QACPC,KAAM,QACNC,IAAK,2CACP,EACM,CAACC,EAAMC,EAAQ,CAAGC,GAAAA,cAAY,EAElCC,GAAAA,SAAU,EAACf,EAAMK,KAAK,EAAIL,EAAME,YAAY,GAExC,CAACc,EAAMC,EAAQ,CAAGH,GAAAA,cAAY,EAAC,CAAA,GAIrC,SAASI,EAAiBC,CAAmB,EAC3C,OAAOA,EAAIC,OAAO,AAAC,CAAA,AAAgB,IAAfD,CAAiB,EAAGE,OAAO,IAAMF,CACvD,CACA,SAASG,EAAaH,CAAmB,EACvC,IAAII,EAAOJ,EAKX,MAHiB,UAAb,OAAOA,GACTI,CAAAA,EAAOJ,EAAEK,OAAO,CAAC,SAAU,GAAE,EAExB,AAACD,EAAkB,GAC5B,CAIA,IAAME,EAAQC,GAAAA,YAAU,EAAC,SAHPC,EAIhB,IAAMC,EAAIhB,IACJiB,EAAID,CAAC,CALKD,EAKKC,EAAEE,IAAI,CAJpB,CAAC,EAAE,EAAEH,CAAG,CAAC,EAAE,CAACI,WAAW,GAAKJ,EAAIK,KAAK,CAAC,GAAG,CAAC,CAIpB,GAK7B,MAHIC,GAAAA,SAAU,EAACjC,EAAMkC,QAAQ,GAAKL,EAAEM,QAAQ,KAAOnC,EAAMK,KAAK,EAC5DL,EAAMkC,QAAQ,CAACL,EAAEM,QAAQ,IAEpBN,CACT,GAEA,SAASO,EAASP,EAAI7B,EAAME,YAAY,EAClCmC,GAAAA,SAAO,EAACZ,GAAOU,QAAQ,KAAON,GAChChB,EAAQE,GAAAA,SAAU,EAACc,GAEvB,CACA,SAASS,EAAWC,CAAc,EAC5BA,EAAEC,MAAM,EACV,CAAA,AAACD,EAAEC,MAAM,CAAsBnC,KAAK,CAAGkC,EAAEE,MAAM,AAAD,CAElD,CACA,SAASC,EAAeH,CAA6C,EAC/DA,EAAEC,MAAM,EAAEnC,OACZ+B,EAASG,EAAEC,MAAM,CAACnC,KAAK,CAE3B,CACA,SAASsC,EAAgBJ,CAAgD,EACzD,UAAVA,EAAEK,GAAG,EAAgB,AAA2B,UAA3B,OAAOL,EAAEC,MAAM,EAAEnC,OACxC+B,EAASG,EAAEC,MAAM,CAACnC,KAAK,CAE3B,CACA,SAASwC,EAAYC,CAAc,EACjC,GAAIjD,EAAQ,CACV,GAAM,CAAEkD,EAAAA,CAAC,CAAEC,EAAAA,CAAC,CAAEC,MAAAA,CAAK,CAAEC,OAAAA,CAAM,CAAE,CAAGrD,EAAOsD,qBAAqB,GACtDC,EAAOf,GAAAA,SAAO,EAACzB,GACfyC,EAAOD,EAAK/C,KAAK,AAEvBgD,CAAAA,CAAI,CAAC,EAAE,CAAGC,KAAKC,KAAK,CAACD,KAAKE,GAAG,CAACF,KAAKG,GAAG,CAAC,EAAG,AAAEX,CAAAA,EAAGY,OAAO,CAAGX,CAAAA,EAAKE,EAAS,KAAM,MAC7EI,CAAI,CAAC,EAAE,CAAGC,KAAKC,KAAK,CAAC,IAAMD,KAAKE,GAAG,CAACF,KAAKG,GAAG,CAAC,EAAG,AAAEX,CAAAA,EAAGa,OAAO,CAAGX,CAAAA,EAAKE,EAAU,KAAM,MAEpFrC,EAAQ,CAAE,GAAGuC,CAAI,CAAE/C,MAAOgD,CAAK,EACjC,CACF,CAEA,SAASO,EAAaC,CAAS,CAAE1C,CAAU,CAAE2C,CAAa,EACxD,GAAI,AAAa,UAAb,OAAO3C,EAAgB,CACzB,IAAMiC,EAAOf,GAAAA,SAAO,EAACzB,GACfmD,EAAYF,AAAM,IAANA,GAAWC,AAAM,SAANA,EACvBT,EAAOU,EAAYX,EAAK/C,KAAK,CAAIgC,GAAAA,SAAO,EAACZ,EAE/C4B,CAAAA,CAAI,CAACQ,EAAE,CAAG1C,GAAK,EACX4C,EACFlD,EAAQ,CACN,GAAGuC,CAAI,CACP/C,MAAOgD,CACT,GAEAxC,EAAQE,GAAAA,SAAU,EAACsC,EAAKlB,QAAQ,IAEpC,CACF,CACA,SAAS6B,EAAUzB,CAAa,EAC9BtB,EAAQ,CAAA,GACR4B,EAAYN,EACd,CACA,SAAS0B,IACPhD,EAAQ,CAAA,EACV,CACA,SAASiD,EAAa3B,CAAc,EAClC1B,EAAQ,AAACuC,GAAU,CAAA,CACjB,GAAGA,CAAI,CACPtB,KAAMS,EAAEE,MAAM,CAAC,EAAE,AACnB,CAAA,EACF,CAEA,SAAS0B,EAAK5B,CAAa,EACzB6B,GAAAA,SAAY,EAAC/B,GAAAA,SAAO,EAACZ,GAAOU,QAAQ,GAAII,EAAEC,MAAM,CAClD,CACA,eAAe6B,IACb,GAAIC,OAAOC,UAAU,CAAE,CACrB,IAAMC,EAAM,MAAM,IAAIF,OAAOC,UAAU,GAAGE,IAAI,EAE1CD,CAAAA,EAAIE,OAAO,EACbtC,EAASoC,EAAIE,OAAO,EAEtB,MACF,CACF,CACA,IAAMC,EAAWjD,GAAAA,YAAU,EAAC,KAC1B,IAAMkD,EAAIhE,IACRP,EAAQuE,EAAEvE,KAAK,CAEjB,MAAO,CAAC,cAAc,EAAEuE,EAAEC,YAAY,GAAG,KAAK,EAAExE,CAAK,CAAC,EAAE,CAAC,KAAK,EAAEA,CAAK,CAAC,EAAE,CAAC,KAAK,EAAEA,CAAK,CAAC,EAAE,CAAC,KAAK,EAC5FA,CAAK,CAAC,EAAE,CACT,EAAE,CAAC,AACN,GAyBA,MAvBAyE,GAAAA,cAAY,EAAC,KACXC,GAAAA,SAAQ,EAAC3C,EAAU,GAAGpC,EAAMK,KAAK,CACnC,GAEAyE,GAAAA,cAAY,EAAC,KACP9D,KACFgE,SAASC,IAAI,CAACC,gBAAgB,CAAC,YAAarC,EAAa,CACvDsC,QAASC,SAAgB,AAC3B,GAEFC,GAAAA,WAAS,EAAC,KACRL,SAASC,IAAI,CAACK,mBAAmB,CAAC,YAAazC,EAAa,CAAA,EAC9D,EACF,GACA0C,GAAAA,SAAO,EAAC,KACNP,SAASC,IAAI,CAACC,gBAAgB,CAAC,UAAWjB,EAAS,CACjDkB,QAASC,SAAgB,AAC3B,EACF,GACAC,GAAAA,WAAS,EAAC,KACRL,SAASC,IAAI,CAACK,mBAAmB,CAAC,UAAWrB,EAAS,CAAA,EACxD,yCAKOnE,uBACA0F,OAAK,sBACLb,2BACAhE,GAAAA,KAAG,EAACX,EAAMW,GAAG,+CAGJd,yLAAoCmE,0CAApCnE,cASK,AAAC0C,GAAMqB,EAAa,EAAGxC,OAAOmB,EAAEC,MAAM,CAACnC,KAAK,EAAG,kBAS/C,AAACkC,GAAMqB,EAAa,EAAGxC,OAAOmB,EAAEC,MAAM,CAACnC,KAAK,oCAG3B8D,2CAG7BsB,MAAI,mBACG7E,AAAgB,SAAhBA,IAAOkB,IAAI,6CAGZ4D,OAAK,oBAAOjE,cACV,CAACkE,EAAG9B,KACH,IAAM+B,EAAMC,OAAOC,MAAM,CACvB,CAAC,EACDtF,EACAqD,AAAM,IAANA,GAAW,CACTkC,KAAM,IACNC,UAAW9E,EACX+E,MAAO3E,CACT,GAGF,4DAEQsE,sBACGD,qBAEL,AACEtD,GAAAA,SAAO,EAACZ,GAGRgC,GAAG,CAACI,EAAE,MAEL,WACK,AAACtB,IACTqB,EAAaC,EAAGtB,EAAEE,MAAM,CAC1B,2CAGN,oEAMAjC,sBACGI,IAAOsF,YAAY,aAChB5D,SACFI,UACCC,gFASDuB,SALLiC,WAAS,SAEPhG,gDAKeS,IAAOkB,IAAI,uCAIlC2D,MAAI,oBACGnB,OAAOC,UAAU,8EAIVnC,EAASgE,IAAI,CAAC,KAAM,qJAIgC/B,+FAElEgC,KAAG,OAAO9F,WACR,AAACsB,0DAAuCO,EAASgE,IAAI,CAAC,KAAMvE,aAAlCA,4BAAAA,kFA/FrByE,GAAAA,IAAE,EAAC,UAAWtG,EAAMS,KAAK,6BAStBG,IAAOP,KAAK,CAAC,EAAE,2BASfO,IAAOP,KAAK,CAAC,EAAE,2BAuDjBO,IAAOkB,IAAI,QA4B9B,CAEO,MAAMpC,EAA2B,CACtCe,MAAO,KAAK,EACZ+E,MAAO,KAAK,EACZ7E,IAAK,KAAK,EACVN,MAAO,KAAK,EACZH,aAAc,KAAK,EACnBgC,SAAU,KAAK,CACjB,EAEAqE,GAAAA,eAAa,EAAoB,kBAAmB7G,EAA0B,CAACE,EAAG4G,KAChF,IAAMC,EAAKD,EAAKE,OAAO,CACjB1G,EAAQC,GAAAA,YAAU,EACtB,CACEiC,SAASyE,CAAY,EACnBF,EAAGG,aAAa,CACd,IAAIC,YAAY,SAAU,CACxBpE,OAAQkE,CACV,GAEJ,CACF,EACA/G,GAGF,MAAOkH,GAAAA,iBAAe,EAACnH,EAAcK,EACvC,SAEA,EAAeL"}
|
|
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":["defaultColorPaletteProps","ColorPalette","_","picker","baseStyle","theme","props","mergeProps","defaultValue","types","label","value","handleClosed","material","inputProps","class","size","css","hsva","setHsva","createSignal","colorParse","drag","setDrag","formatterOpacity","v","Number","toFixed","parseOpacity","_val","replace","color","createMemo","str","s","c","type","toUpperCase","slice","isFunction","onChange","toString","setColor","untrack","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","setClipboard","eyeDropper","window","EyeDropper","res","open","sRGBHex","colorVar","h","toRgbaString","createEffect","throttle","document","body","addEventListener","passive","passiveSupported","onCleanup","removeEventListener","onMount","style","Show","Index","n","inp","Object","assign","step","formatter","parse","toHexaString","switchCss","bind","For","cx","customElement","opts","el","element","val","dispatchEvent","CustomEvent"],"rangeMappings":"","mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return p}});const e=require("solid-js/web"),t=require("solid-js"),r=require("@moneko/css"),n=require("solid-element"),o=require("./style");require("../color-palette");const l=function(e,t){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=u(void 0);if(r&&r.has(e))return r.get(e);var n={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var l in e)if("default"!==l&&Object.prototype.hasOwnProperty.call(e,l)){var a=o?Object.getOwnPropertyDescriptor(e,l):null;a&&(a.get||a.set)?Object.defineProperty(n,l,a):n[l]=e[l]}return n.default=e,r&&r.set(e,n),n}(require("../popover"));function u(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(u=function(e){return e?r:t})(e)}const a=(0,e.template)("<span>"),i=(0,e.template)("<n-color-palette>",!0,!1);function c(n){let[u,c]=(0,t.splitProps)(n,["css","value","defaultValue","onChange","popupClass","popupCss","size"]),[p,s]=(0,t.createSignal)(u.defaultValue);function d(e){void 0===u.value&&s(e.detail),u.onChange?.(e.detail)}(0,t.onMount)(()=>{void 0===u.value&&u.defaultValue&&s(u.defaultValue)}),(0,t.createEffect)(()=>{void 0!==u.value&&u.value!==(0,t.untrack)(p)&&s(u.value)});let f=(0,t.createMemo)(()=>`.color-picker {padding: 10px;inline-size: 216px;}${u.popupCss||""}`),g=(0,t.createMemo)(()=>`${o.style+(u.css||"")}.trigger {--c: ${p()};}`);return(0,e.createComponent)(l.default,(0,e.mergeProps)(c,{arrow:!0,trigger:"click",get content(){return(()=>{let t=i();return(0,e.addEventListener)(t,"change",d),t._$owner=(0,e.getOwner)(),(0,e.effect)(()=>t.value=p()),t})()},get popupClass(){return(0,r.cx)("color-picker",u.popupClass)},get popupCss(){return f()},get css(){return g()},get children(){let t=a();return(0,e.effect)(()=>(0,e.className)(t,(0,r.cx)("trigger",u.size))),t}}))}(0,n.customElement)("n-color-picker",{...l.defaultProps,value:void 0,defaultValue:void 0,onChange:void 0,size:void 0},(
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return p}});const e=require("solid-js/web"),t=require("solid-js"),r=require("@moneko/css"),n=require("solid-element"),o=require("./style");require("../color-palette");const l=function(e,t){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=u(void 0);if(r&&r.has(e))return r.get(e);var n={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var l in e)if("default"!==l&&Object.prototype.hasOwnProperty.call(e,l)){var a=o?Object.getOwnPropertyDescriptor(e,l):null;a&&(a.get||a.set)?Object.defineProperty(n,l,a):n[l]=e[l]}return n.default=e,r&&r.set(e,n),n}(require("../popover"));function u(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(u=function(e){return e?r:t})(e)}const a=(0,e.template)("<span>"),i=(0,e.template)("<n-color-palette>",!0,!1);function c(n){let[u,c]=(0,t.splitProps)(n,["css","value","defaultValue","onChange","popupClass","popupCss","size"]),[p,s]=(0,t.createSignal)(u.defaultValue);function d(e){void 0===u.value&&s(e.detail),u.onChange?.(e.detail)}(0,t.onMount)(()=>{void 0===u.value&&u.defaultValue&&s(u.defaultValue)}),(0,t.createEffect)(()=>{void 0!==u.value&&u.value!==(0,t.untrack)(p)&&s(u.value)});let f=(0,t.createMemo)(()=>`.color-picker {padding: 10px;inline-size: 216px;}${u.popupCss||""}`),g=(0,t.createMemo)(()=>`${o.style+(u.css||"")}.trigger {--c: ${p()};}`);return(0,e.createComponent)(l.default,(0,e.mergeProps)(c,{arrow:!0,trigger:"click",get content(){return(()=>{let t=i();return(0,e.addEventListener)(t,"change",d),t._$owner=(0,e.getOwner)(),(0,e.effect)(()=>t.value=p()),t})()},get popupClass(){return(0,r.cx)("color-picker",u.popupClass)},get popupCss(){return f()},get css(){return g()},get children(){let t=a();return(0,e.effect)(()=>(0,e.className)(t,(0,r.cx)("trigger",u.size))),t}}))}(0,n.customElement)("n-color-picker",{...l.defaultProps,value:void 0,defaultValue:void 0,onChange:void 0,size:void 0},(r,n)=>{let o=n.element,l=(0,t.mergeProps)({onChange(e){o.dispatchEvent(new CustomEvent("change",{detail:e}))},children:o.children},r);return(0,e.createComponent)(c,l)});const p=c;
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../components/color-picker/index.tsx"],"sourcesContent":["import {\n
|
|
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":["ColorPicker","props","local","others","splitProps","color","setColor","createSignal","defaultValue","handleChange","e","value","detail","onChange","onMount","createEffect","untrack","popupCss","createMemo","css","style","Popover","cx","popupClass","size","customElement","defaultProps","_","opts","el","element","mergeProps","val","dispatchEvent","CustomEvent","children"],"rangeMappings":"","mappings":"kGAmHA,+CAAA,+CA3GO,sBACY,yBACW,2BACR,mBACf,gfAC+B,2NAwBtC,SAASA,EAAYC,CAAuB,EAC1C,GAAM,CAACC,EAAOC,EAAO,CAAGC,GAAAA,YAAU,EAACH,EAAO,CACxC,MACA,QACA,eACA,WACA,aACA,WACA,OACD,EACK,CAACI,EAAOC,EAAS,CAAGC,GAAAA,cAAY,EAAqBL,EAAMM,YAAY,EAE7E,SAASC,EAAaC,CAAsB,EACtB,KAAK,IAArBR,EAAMS,KAAK,EACbL,EAASI,EAAEE,MAAM,EAEnBV,EAAMW,QAAQ,GAAGH,EAAEE,MAAM,CAC3B,CAEAE,GAAAA,SAAO,EAAC,KACc,KAAK,IAArBZ,EAAMS,KAAK,EAAeT,EAAMM,YAAY,EAC9CF,EAASJ,EAAMM,YAAY,CAE/B,GACAO,GAAAA,cAAY,EAAC,KACS,KAAK,IAArBb,EAAMS,KAAK,EAAeT,EAAMS,KAAK,GAAKK,GAAAA,SAAO,EAACX,IACpDC,EAASJ,EAAMS,KAAK,CAExB,GACA,IAAMM,EAAWC,GAAAA,YAAU,EACzB,IAAM,CAAC,iDAAiD,EAAEhB,EAAMe,QAAQ,EAAI,GAAG,CAAC,EAE5EE,EAAMD,GAAAA,YAAU,EAAC,IAAM,CAAC,EAAEE,OAAK,CAAIlB,CAAAA,EAAMiB,GAAG,EAAI,EAAC,EAAG,eAAe,EAAEd,IAAQ,EAAE,CAAC,EAEtF,4BACGgB,SAAO,kBACFlB,SACG,CAAA,8FAE6CM,uDAAnBJ,mCACrBiB,GAAAA,IAAE,EAAC,eAAgBpB,EAAMqB,UAAU,yBACrCN,sBACLE,uEAEQG,GAAAA,IAAE,EAAC,UAAWpB,EAAMsB,IAAI,SAG3C,CAEAC,GAAAA,eAAa,EACX,iBACA,CACE,GAAGC,cAAY,CACff,MAAO,KAAK,EACZH,aAAc,KAAK,EACnBK,SAAU,KAAK,EACfW,KAAM,KAAK,CACb,EACA,CAACG,EAAGC,KACF,IAAMC,EAAKD,EAAKE,OAAO,CACjB7B,EAAQ8B,GAAAA,YAAU,EACtB,CACElB,SAASmB,CAAY,EACnBH,EAAGI,aAAa,CACd,IAAIC,YAAY,SAAU,CACxBtB,OAAQoB,CACV,GAEJ,EACAG,SAAUN,EAAGM,QAAQ,AACvB,EACAR,GAGF,4BAAQ3B,EAAgBC,EAC1B,SAGF,EAAeD"}
|
package/lib/cron/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return b}});const e=require("solid-js/web"),t=require("solid-js"),n=require("@moneko/css"),r=require("solid-element"),a=d(require("./day")),u=d(require("./hour")),l=d(require("./minute")),o=d(require("./month")),s=d(require("./second")),i=d(require("./week")),c=d(require("./year"));function d(e){return e&&e.__esModule?e:{default:e}}require("../button"),require("../input-number"),require("../radio"),require("../select"),require("../tabs");const y=(0,e.template)("<style>"),p=(0,e.template)("<n-tabs>",!0,!1),m=(0,e.template)("<code>");function v(r){let[d]=(0,t.splitProps)(r,["value","defaultValue","exclude","onChange","type","showCron","css","class"]),[v,b]=(0,t.createSignal)(d.defaultValue),g=new Date().getFullYear(),f={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:g,end:g+1,begin:g,beginEvery:1,some:[g],value:""}},h=[],C=[];for(let e=1;e<32;e++)h.push({label:e<10?`0${e}`:`${e}`,value:e}),C.push(e);let[w,$]=(0,t.createSignal)("second"),[k,q]=(0,t.createSignal)({second:{type:"*",...f.hms},minute:{type:"*",...f.hms},hour:{type:"*",...f.hms},day:{type:"*",last:1,closeWorkDay:1,...f.mwd},month:{type:"*",...f.mwd},week:{last:1,type:"?",...f.mwd},year:{type:"",...f.year}});function E(e,n){(0,t.batch)(()=>{!function(){let e=(0,t.untrack)(k),n="day"===w();if(n||"week"===w()){let t=n?"week":"day",r="?"===e[t].type&&"?"===e[w()].type?"*":"?";r!==e[t].type&&q(e=>({...e,[t]:{...e[t],type:r}}))}}(),q(t=>{let r={...t[w()],[e]:n};return("start"===e||"end"===e)&&r.end-r.start<=1&&("end"===e?r.start=n-1:r.end=n+1),{...t,[w()]:r}})})}function N(e){$(e.detail[0])}function P(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 n=e.value.split(t?"#":"/");t?(e.begin=Number(n[1]),e.beginEvery=Number(n[0])):(e.begin=Number(n[0]),e.beginEvery=Number(n[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 W(e){return"number"!=typeof e||isNaN(e)?e:`${e}`}function D(e,t){switch(e.type){case"period":return`${W(e.start)}-${W(e.end)}`;case"beginInterval":if(t)return`${W(e.beginEvery)}#${W(e.begin)}`;return`${W(e.begin)}/${W(e.beginEvery)}`;case"closeWorkDay":return`${W(e.closeWorkDay||1)}W`;case"last":return t?`${W(e.last)}L`:"L";case"some":return e.some.join(",");default:return e.type}}(0,t.createEffect)(()=>{void 0!==d.value&&(0,t.untrack)(v)!==d.value&&b(d.value)}),(0,t.createEffect)(()=>{let e=v();if(e){let n=e.toUpperCase().split(" ");(0,t.batch)(()=>{q(e=>({second:P({...e.second,value:n[0]||"?"}),minute:P({...e.minute,value:n[1]||"?"}),hour:P({...e.hour,value:n[2]||"?"}),day:P({...e.day,value:n[3]||""}),month:P({...e.month,value:n[4]||""}),week:P({...e.week,value:n[5]||""},!0),year:P({...e.year,value:n[6]||""})}))})}}),(0,t.createEffect)(()=>{let{second:e,minute:t,hour:n,day:a,month:u,week:l,year:o}=k(),s=`${D(e)} ${D(t)} ${D(n)} ${D(a)} ${D(u)} ${D(l,!0)} ${D(o)}`;b(e=>e===s?e:(r.onChange?.(s),s))});let j=[{value:"second",label:"秒",content:(0,e.createComponent)(s.default,{get state(){return k().second},onChange:E})},{value:"minute",label:"分钟",content:(0,e.createComponent)(l.default,{get state(){return k().minute},onChange:E})},{value:"hour",label:"小时",content:(0,e.createComponent)(u.default,{get state(){return k().hour},onChange:E})},{value:"day",label:"日",content:(0,e.createComponent)(a.default,{get state(){return k().day},onChange:E})},{value:"week",label:"周",content:(0,e.createComponent)(i.default,{get state(){return k().week},onChange:E})},{value:"month",label:"月",content:(0,e.createComponent)(o.default,{get state(){return k().month},onChange:E})},{value:"year",label:"年",content:(0,e.createComponent)(c.default,{get state(){return k().year},onChange:E})}];return[(()=>{let t=y();return(0,e.insert)(t,()=>(0,n.css)(d.css)),t})(),(()=>{let t=p();return(0,e.addEventListener)(t,"change",N),t.items=j,t._$owner=(0,e.getOwner)(),(0,e.effect)(()=>t.type=d.type),(0,e.effect)(()=>t.value=w()),t})(),(0,e.createComponent)(t.Show,{get when(){return d.showCron},get children(){let t=m();return t.style.setProperty("width","100%"),t.style.setProperty("display","block"),t.style.setProperty("background","var(--component-bg)"),t.style.setProperty("border-radius","var(--border-radius)"),t.style.setProperty("text-align","center"),(0,e.insert)(t,v),t}})]}(0,r.customElement)("n-cron",{value:void 0,defaultValue:"0 0 0 * * ? *",onChange:void 0,type:"line",exclude:[],showCron:!0},(
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return b}});const e=require("solid-js/web"),t=require("solid-js"),n=require("@moneko/css"),r=require("solid-element"),a=d(require("./day")),u=d(require("./hour")),l=d(require("./minute")),o=d(require("./month")),s=d(require("./second")),i=d(require("./week")),c=d(require("./year"));function d(e){return e&&e.__esModule?e:{default:e}}require("../button"),require("../input-number"),require("../radio"),require("../select"),require("../tabs");const y=(0,e.template)("<style>"),p=(0,e.template)("<n-tabs>",!0,!1),m=(0,e.template)("<code>");function v(r){let[d]=(0,t.splitProps)(r,["value","defaultValue","exclude","onChange","type","showCron","css","class"]),[v,b]=(0,t.createSignal)(d.defaultValue),g=new Date().getFullYear(),f={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:g,end:g+1,begin:g,beginEvery:1,some:[g],value:""}},h=[],C=[];for(let e=1;e<32;e++)h.push({label:e<10?`0${e}`:`${e}`,value:e}),C.push(e);let[w,$]=(0,t.createSignal)("second"),[k,q]=(0,t.createSignal)({second:{type:"*",...f.hms},minute:{type:"*",...f.hms},hour:{type:"*",...f.hms},day:{type:"*",last:1,closeWorkDay:1,...f.mwd},month:{type:"*",...f.mwd},week:{last:1,type:"?",...f.mwd},year:{type:"",...f.year}});function E(e,n){(0,t.batch)(()=>{!function(){let e=(0,t.untrack)(k),n="day"===w();if(n||"week"===w()){let t=n?"week":"day",r="?"===e[t].type&&"?"===e[w()].type?"*":"?";r!==e[t].type&&q(e=>({...e,[t]:{...e[t],type:r}}))}}(),q(t=>{let r={...t[w()],[e]:n};return("start"===e||"end"===e)&&r.end-r.start<=1&&("end"===e?r.start=n-1:r.end=n+1),{...t,[w()]:r}})})}function N(e){$(e.detail[0])}function P(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 n=e.value.split(t?"#":"/");t?(e.begin=Number(n[1]),e.beginEvery=Number(n[0])):(e.begin=Number(n[0]),e.beginEvery=Number(n[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 W(e){return"number"!=typeof e||isNaN(e)?e:`${e}`}function D(e,t){switch(e.type){case"period":return`${W(e.start)}-${W(e.end)}`;case"beginInterval":if(t)return`${W(e.beginEvery)}#${W(e.begin)}`;return`${W(e.begin)}/${W(e.beginEvery)}`;case"closeWorkDay":return`${W(e.closeWorkDay||1)}W`;case"last":return t?`${W(e.last)}L`:"L";case"some":return e.some.join(",");default:return e.type}}(0,t.createEffect)(()=>{void 0!==d.value&&(0,t.untrack)(v)!==d.value&&b(d.value)}),(0,t.createEffect)(()=>{let e=v();if(e){let n=e.toUpperCase().split(" ");(0,t.batch)(()=>{q(e=>({second:P({...e.second,value:n[0]||"?"}),minute:P({...e.minute,value:n[1]||"?"}),hour:P({...e.hour,value:n[2]||"?"}),day:P({...e.day,value:n[3]||""}),month:P({...e.month,value:n[4]||""}),week:P({...e.week,value:n[5]||""},!0),year:P({...e.year,value:n[6]||""})}))})}}),(0,t.createEffect)(()=>{let{second:e,minute:t,hour:n,day:a,month:u,week:l,year:o}=k(),s=`${D(e)} ${D(t)} ${D(n)} ${D(a)} ${D(u)} ${D(l,!0)} ${D(o)}`;b(e=>e===s?e:(r.onChange?.(s),s))});let j=[{value:"second",label:"秒",content:(0,e.createComponent)(s.default,{get state(){return k().second},onChange:E})},{value:"minute",label:"分钟",content:(0,e.createComponent)(l.default,{get state(){return k().minute},onChange:E})},{value:"hour",label:"小时",content:(0,e.createComponent)(u.default,{get state(){return k().hour},onChange:E})},{value:"day",label:"日",content:(0,e.createComponent)(a.default,{get state(){return k().day},onChange:E})},{value:"week",label:"周",content:(0,e.createComponent)(i.default,{get state(){return k().week},onChange:E})},{value:"month",label:"月",content:(0,e.createComponent)(o.default,{get state(){return k().month},onChange:E})},{value:"year",label:"年",content:(0,e.createComponent)(c.default,{get state(){return k().year},onChange:E})}];return[(()=>{let t=y();return(0,e.insert)(t,()=>(0,n.css)(d.css)),t})(),(()=>{let t=p();return(0,e.addEventListener)(t,"change",N),t.items=j,t._$owner=(0,e.getOwner)(),(0,e.effect)(()=>t.type=d.type),(0,e.effect)(()=>t.value=w()),t})(),(0,e.createComponent)(t.Show,{get when(){return d.showCron},get children(){let t=m();return t.style.setProperty("width","100%"),t.style.setProperty("display","block"),t.style.setProperty("background","var(--component-bg)"),t.style.setProperty("border-radius","var(--border-radius)"),t.style.setProperty("text-align","center"),(0,e.insert)(t,v),t}})]}(0,r.customElement)("n-cron",{value:void 0,defaultValue:"0 0 0 * * ? *",onChange:void 0,type:"line",exclude:[],showCron:!0},(n,r)=>{let a=r.element,u=(0,t.mergeProps)({onChange(e){a.dispatchEvent(new CustomEvent("change",{detail:e}))}},n);return(0,e.createComponent)(v,u)});const b=v;
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/lib/cron/index.js.map
CHANGED
|
@@ -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":["Cron","props","local","splitProps","value","setValue","createSignal","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","batch","prefixWeekDay","store","untrack","isDay","key","next","prev","changeActiveKey","e","detail","parseVal","item","isWeek","includes","period","split","Number","beginInterval","test","map","nts","num","isNaN","fmt","join","createEffect","valuesArray","toUpperCase","items","content","Second","Minute","Hour","Day","Week","Month","Year","css","Show","showCron","customElement","exclude","_","opts","el","element","mergeProps","dispatchEvent","CustomEvent","createComponent"],"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":["Cron","props","local","splitProps","value","setValue","createSignal","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","batch","prefixWeekDay","store","untrack","isDay","key","next","prev","changeActiveKey","e","detail","parseVal","item","isWeek","includes","period","split","Number","beginInterval","test","map","nts","num","isNaN","fmt","join","createEffect","valuesArray","toUpperCase","items","content","Second","Minute","Hour","Day","Week","Month","Year","css","Show","showCron","customElement","exclude","_","opts","el","element","mergeProps","dispatchEvent","CustomEvent"],"rangeMappings":"","mappings":"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"}
|
package/lib/date-picker/date.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return n}});const e=require("solid-js/web"),t=require("solid-js"),r=(0,e.template)('<n-button type="primary">',!0,!1),n=function(n){let a=(0,t.createMemo)(()=>{let e=n.current.startOf("month").day();if(!e)return[];let t=[],r=n.current.subtract(1,"month").endOf("month");for(let n=e-1;n>=0;n--)t.push(r.subtract(n,"day").get("date"));return t}),c=(0,t.createMemo)(()=>Array.from({length:6-n.current.endOf("month").day()},(e,t)=>t+1)),o=(0,t.createMemo)(()=>[...a(),...Array.from({length:n.current.daysInMonth()},(e,t)=>t+1),...c()]);function u(e){return e<a().length}function l(e){return e>=o().length-c().length}return(0,e.createComponent)(t.For,{get each(){return o()},children:(a,c)=>{let o=(0,t.createMemo)(()=>{let e=c();return u(e)||l(e)?"date-day date-opacity":"date-day"}),d=(0,t.createMemo)(()=>{let e=c();return!u(e)&&!l(e)&&n.current.get("date")===a});function i(e){let t=c(),r=n.current.subtract(1,"month"),a=n.current.subtract(-1,"month"),o=(u(t)?r:l(t)?a:n.current).set("date",e);n.current.isSame(o)||n.onChange(o)}return(()=>{let t=r();return(0,e.addEventListener)(t,"click",i.bind(null,a),!0),t.circle=!0,t.flat=!0,t._$owner=(0,e.getOwner)(),(0,e.insert)(t,a),(0,e.effect)(r=>{let n=o(),a=!!d(),c=d()?"strong":"button";return n!==r._v$&&(0,e.className)(t,r._v$=n),a!==r._v$2&&t.classList.toggle("date-active",r._v$2=a),c!==r._v$3&&(t.tag=r._v$3=c),r},{_v$:void 0,_v$2:void 0,_v$3:void 0}),t})()}})};(0,e.delegateEvents)(["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
|
|
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":["props","prevDays","createMemo","len","current","startOf","day","_","lastDayOfMonth","subtract","endOf","i","push","get","nextDays","Array","from","length","allDays","_dayjs","daysInMonth","isPrev","idx","isNext","For","d","cls","isActive","setDate","date","previousMonth","nextMonth","next","set","isSame","onChange","bind"],"rangeMappings":"","mappings":"kGAuFA,+CAAA,+CAvFgC,gEAuFhC,EAhFA,SAAmBA,CAAqB,EAItC,IAAMC,EAAWC,GAAAA,YAAU,EAAC,KAC1B,IAAMC,EAAMH,EAAMI,OAAO,CAACC,OAAO,CAAC,SAASC,GAAG,GAE9C,GAAI,CAACH,EAAK,MAAO,EAAE,CACnB,IAAMI,EAAc,EAAE,CAChBC,EAAiBR,EAAMI,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,EAAWZ,GAAAA,YAAU,EAAC,IAC1Ba,MAAMC,IAAI,CAAC,CAAEC,OAAQ,EAAIjB,EAAMI,OAAO,CAACM,KAAK,CAAC,SAASJ,GAAG,EAAG,EAAG,CAACC,EAAGI,IAAMA,EAAI,IAGzEO,EAAUhB,GAAAA,YAAU,EAAC,IAAM,IAAID,OAnB5Bc,MAAMC,IAAI,CAAC,CAAEC,OAAQE,AAmB8BnB,EAAMI,OAAO,CAnBpCgB,WAAW,EAAG,EAAG,CAACb,EAAGI,IAAMA,EAAI,MAmBWG,IAAW,EAE1F,SAASO,EAAOC,CAAW,EACzB,OAAOA,EAAMrB,IAAWgB,MAAM,AAChC,CACA,SAASM,EAAOD,CAAW,EACzB,OAAOA,GAAOJ,IAAUD,MAAM,CAAGH,IAAWG,MAAM,AACpD,CACA,4BACGO,KAAG,oBAAON,cACR,CAACO,EAAGd,KACH,IAAMe,EAAMxB,GAAAA,YAAU,EAAC,KACrB,IAAMoB,EAAMX,WAEZ,AAAIU,EAAOC,IACPC,EAAOD,GADa,wBAEjB,UACT,GACMK,EAAWzB,GAAAA,YAAU,EAAC,KAC1B,IAAMoB,EAAMX,IAEZ,MAAO,CAACU,EAAOC,IAAQ,CAACC,EAAOD,IAAQtB,EAAMI,OAAO,CAACS,GAAG,CAAC,UAAYY,CACvE,GAEA,SAASG,EAAQC,CAAY,EAC3B,IAAMP,EAAMX,IACNmB,EAAgB9B,EAAMI,OAAO,CAACK,QAAQ,CAAC,EAAG,SAC1CsB,EAAY/B,EAAMI,OAAO,CAACK,QAAQ,CAAC,GAAI,SAEvCuB,EAAO,AAACX,CAAAA,EAAOC,GAAOQ,EAAgBP,EAAOD,GAAOS,EAAY/B,EAAMI,OAAO,AAAD,EAAG6B,GAAG,CACtF,OACAJ,GAGG7B,EAAMI,OAAO,CAAC8B,MAAM,CAACF,IACxBhC,EAAMmC,QAAQ,CAACH,EAEnB,CAEA,6DAUaJ,EAAQQ,IAAI,CAAC,KAAMX,gBAPpB,CAAA,SACF,CAAA,4CAQLA,0BAPMC,QAEUC,MAEZA,IAAa,SAAW,wLAMnC,GAGN"}
|
package/lib/date-picker/dayjs.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return
|
|
1
|
+
"use strict";var e;Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return o}});const t=function(e,t){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=n(void 0);if(r&&r.has(e))return r.get(e);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&Object.prototype.hasOwnProperty.call(e,a)){var l=u?Object.getOwnPropertyDescriptor(e,a):null;l&&(l.get||l.set)?Object.defineProperty(o,a,l):o[a]=e[a]}return o.default=e,r&&r.set(e,o),o}(require("dayjs"));require("dayjs/locale/zh-cn");const r=(e=require("dayjs/plugin/localeData"))&&e.__esModule?e:{default:e};function n(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(n=function(e){return e?r:t})(e)}(0,t.extend)(r.default),(0,t.locale)("zh-cn");const o=t.default;
|
|
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\
|
|
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":["extend","localData","locale","dayjs"],"rangeMappings":"","mappings":"wGAOA,+CAAA,ieAPsC,kBAC/B,yCACe,uLAEtBA,GAAAA,QAAM,EAACC,SAAS,EAChBC,GAAAA,QAAM,EAAC,eAEP,EAAeC,SAAK"}
|
package/lib/date-picker/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e,t;Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return f}});const n=require("solid-js/web"),o=require("solid-js"),r=require("solid-element"),a=d(require("./dayjs")),u=d(require("./panel")),s=require("./style");require("../button"),require("../menu");const i=function(e,t){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=l(void 0);if(n&&n.has(e))return n.get(e);var o={__proto__:null},r=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&Object.prototype.hasOwnProperty.call(e,a)){var u=r?Object.getOwnPropertyDescriptor(e,a):null;u&&(u.get||u.set)?Object.defineProperty(o,a,u):o[a]=e[a]}return o.default=e,n&&n.set(e,o),o}(require("../popover"));function d(e){return e&&e.__esModule?e:{default:e}}function l(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(l=function(e){return e?n:t})(e)}const c=(0,n.template)('<n-input part="value">',!0,!1);function p(e){let t;let r=(0,o.mergeProps)({type:"date",parser:"YYYY-MM-DD HH:mm:ss"},e),[d,l]=(0,o.splitProps)(r,["class","css","value","defaultValue","onChange","type","content","onOpenChange","open","format","popupCss","trigger","parser","showTime","showHour","showMinute","showSecond","prefixIcon","suffixIcon","placeholder","showToday","showHeader"]),[p,f]=(0,o.createSignal)(null),[v,h]=(0,o.createSignal)((0,a.default)(d.defaultValue)),g=(0,o.createMemo)(()=>d.format?d.format:d.showTime?"YYYY-MM-DD HH:mm:ss":({month:"YYYY-MM",date:"YYYY-MM-DD",year:"YYYY"})[d.type||"date"]);function m(e){l.disabled||(d.onOpenChange?.(e),void 0===d.open&&f(e))}function w(e){e.stopPropagation(),e.preventDefault(),m(!0)}function y(){(0,o.untrack)(p)&&m(!1)}function _(e){e.target===t?.shadowRoot?.activeElement&&m(!(0,o.untrack)(p))}function Y(e){void 0===d.value&&h(e),r.onChange?.(e.format(d.parser),e)}function M(e){if(e.detail){let t=(0,a.default)(e.detail);t.isValid()&&Y(t)}}return(0,o.createEffect)(()=>{void 0!==d.open&&d.open!==(0,o.untrack)(p)&&f(d.open)}),(0,o.createEffect)(()=>{let e=(0,a.default)(d.value||d.defaultValue);void 0!==d.value&&e.isValid()&&h(e)}),(0,n.createComponent)(i.default,(0,n.mergeProps)({trigger:"none",placement:"left",get open(){return p()},onOpenChange:m,get css(){return d.css},popupCss:s.styles,get content(){return(0,n.createComponent)(u.default,{get type(){return d.type},get current(){return v()},get open(){return p()},onChange:Y,openChange:m,get showHour(){return d.showHour},get showMinute(){return d.showMinute},get showSecond(){return d.showSecond},get showTime(){return d.showTime},get showToday(){return d.showToday},get showHeader(){return d.showHeader}})}},l,{get children(){let e=c(),o=t;return(0,n.addEventListener)(e,"change",M),(0,n.addEventListener)(e,"blur",y),(0,n.addEventListener)(e,"focus",w),(0,n.addEventListener)(e,"mousedown",_,!0),"function"==typeof o?(0,n.use)(o,e):t=e,e._$owner=(0,n.getOwner)(),(0,n.effect)(t=>{let n=l.disabled,o=d.suffixIcon,r=d.prefixIcon,a=d.placeholder;return n!==t._v$&&(e.disabled=t._v$=n),o!==t._v$2&&(e.suffixIcon=t._v$2=o),r!==t._v$3&&(e.prefixIcon=t._v$3=r),a!==t._v$4&&(e.placeholder=t._v$4=a),t},{_v$:void 0,_v$2:void 0,_v$3:void 0,_v$4:void 0}),(0,n.effect)(()=>e.value=v().format(g())),e}}))}(t=e||(e={})).date="date",t.month="month",t.year="year",(0,r.customElement)("n-data-picker",{...i.defaultProps,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,t)=>{let
|
|
1
|
+
"use strict";var e,t;Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return f}});const n=require("solid-js/web"),o=require("solid-js"),r=require("solid-element"),a=d(require("./dayjs")),u=d(require("./panel")),s=require("./style");require("../button"),require("../menu");const i=function(e,t){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=l(void 0);if(n&&n.has(e))return n.get(e);var o={__proto__:null},r=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&Object.prototype.hasOwnProperty.call(e,a)){var u=r?Object.getOwnPropertyDescriptor(e,a):null;u&&(u.get||u.set)?Object.defineProperty(o,a,u):o[a]=e[a]}return o.default=e,n&&n.set(e,o),o}(require("../popover"));function d(e){return e&&e.__esModule?e:{default:e}}function l(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(l=function(e){return e?n:t})(e)}const c=(0,n.template)('<n-input part="value">',!0,!1);function p(e){let t;let r=(0,o.mergeProps)({type:"date",parser:"YYYY-MM-DD HH:mm:ss"},e),[d,l]=(0,o.splitProps)(r,["class","css","value","defaultValue","onChange","type","content","onOpenChange","open","format","popupCss","trigger","parser","showTime","showHour","showMinute","showSecond","prefixIcon","suffixIcon","placeholder","showToday","showHeader"]),[p,f]=(0,o.createSignal)(null),[v,h]=(0,o.createSignal)((0,a.default)(d.defaultValue)),g=(0,o.createMemo)(()=>d.format?d.format:d.showTime?"YYYY-MM-DD HH:mm:ss":({month:"YYYY-MM",date:"YYYY-MM-DD",year:"YYYY"})[d.type||"date"]);function m(e){l.disabled||(d.onOpenChange?.(e),void 0===d.open&&f(e))}function w(e){e.stopPropagation(),e.preventDefault(),m(!0)}function y(){(0,o.untrack)(p)&&m(!1)}function _(e){e.target===t?.shadowRoot?.activeElement&&m(!(0,o.untrack)(p))}function Y(e){void 0===d.value&&h(e),r.onChange?.(e.format(d.parser),e)}function M(e){if(e.detail){let t=(0,a.default)(e.detail);t.isValid()&&Y(t)}}return(0,o.createEffect)(()=>{void 0!==d.open&&d.open!==(0,o.untrack)(p)&&f(d.open)}),(0,o.createEffect)(()=>{let e=(0,a.default)(d.value||d.defaultValue);void 0!==d.value&&e.isValid()&&h(e)}),(0,n.createComponent)(i.default,(0,n.mergeProps)({trigger:"none",placement:"left",get open(){return p()},onOpenChange:m,get css(){return d.css},popupCss:s.styles,get content(){return(0,n.createComponent)(u.default,{get type(){return d.type},get current(){return v()},get open(){return p()},onChange:Y,openChange:m,get showHour(){return d.showHour},get showMinute(){return d.showMinute},get showSecond(){return d.showSecond},get showTime(){return d.showTime},get showToday(){return d.showToday},get showHeader(){return d.showHeader}})}},l,{get children(){let e=c(),o=t;return(0,n.addEventListener)(e,"change",M),(0,n.addEventListener)(e,"blur",y),(0,n.addEventListener)(e,"focus",w),(0,n.addEventListener)(e,"mousedown",_,!0),"function"==typeof o?(0,n.use)(o,e):t=e,e._$owner=(0,n.getOwner)(),(0,n.effect)(t=>{let n=l.disabled,o=d.suffixIcon,r=d.prefixIcon,a=d.placeholder;return n!==t._v$&&(e.disabled=t._v$=n),o!==t._v$2&&(e.suffixIcon=t._v$2=o),r!==t._v$3&&(e.prefixIcon=t._v$3=r),a!==t._v$4&&(e.placeholder=t._v$4=a),t},{_v$:void 0,_v$2:void 0,_v$3:void 0,_v$4:void 0}),(0,n.effect)(()=>e.value=v().format(g())),e}}))}(t=e||(e={})).date="date",t.month="month",t.year="year",(0,r.customElement)("n-data-picker",{...i.defaultProps,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,t)=>{let r=t.element,a=(0,o.mergeProps)({css:r.css,onChange(e,t){r.dispatchEvent(new CustomEvent("change",{detail:[e,t]}))},onOpenChange(e){r.dispatchEvent(new CustomEvent("openchange",{detail:e}))}},e);return(0,o.createEffect)(()=>{r.removeAttribute("css")}),(0,n.createComponent)(p,a)});const f=p;(0,n.delegateEvents)(["mousedown"]);
|
|
2
2
|
//# sourceMappingURL=index.js.map
|