@robot-admin/naive-ui-components 0.13.8 → 0.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +17 -0
- package/README.md +63 -5
- package/README_EN.md +63 -5
- package/dist/C_ActionBar.css +11 -10
- package/dist/C_AntV.css +206 -204
- package/dist/C_AudioPlayer.css +11 -10
- package/dist/C_AvatarGroup.css +7 -5
- package/dist/C_Barcode.css +3 -1
- package/dist/C_Breadcrumb.css +17 -16
- package/dist/C_Captcha.css +14 -13
- package/dist/C_Cascade.css +7 -5
- package/dist/C_Chat.css +9 -8
- package/dist/C_City.css +8 -6
- package/dist/C_Code.css +15 -14
- package/dist/C_CollapsePanel.css +12 -11
- package/dist/C_ContextMenu.css +28 -28
- package/dist/C_Cron.cjs +1 -1
- package/dist/C_Cron.css +472 -251
- package/dist/C_Cron.d.cts +2 -2
- package/dist/C_Cron.d.ts +2 -2
- package/dist/C_Cron.js +1 -1
- package/dist/C_Cron2.cjs +1 -1
- package/dist/C_Cron2.js +1 -1
- package/dist/C_Date.css +2 -1
- package/dist/C_Draggable.css +2 -1
- package/dist/C_Editor.css +2 -1
- package/dist/C_FilePreview.css +185 -184
- package/dist/C_Form.base.css +334 -332
- package/dist/C_Form.css +333 -332
- package/dist/C_FormModal.css +13 -11
- package/dist/C_FormSearch.css +2 -1
- package/dist/C_FormulaEditor.cjs +1 -1
- package/dist/C_FormulaEditor.css +430 -273
- package/dist/C_FormulaEditor.d.cts +2 -2
- package/dist/C_FormulaEditor.d.ts +2 -2
- package/dist/C_FormulaEditor.js +1 -1
- package/dist/C_FullCalendar.css +12 -11
- package/dist/C_GlobalSearch.css +13 -11
- package/dist/C_Guide.css +8 -8
- package/dist/C_Icon.css +9 -7
- package/dist/C_ImageCropper.css +70 -68
- package/dist/C_Language.css +8 -8
- package/dist/C_Loading.css +10 -8
- package/dist/C_Login.css +20 -21
- package/dist/C_Map.css +24 -22
- package/dist/C_Markdown.css +8 -6
- package/dist/C_Menu.css +2 -1
- package/dist/C_NotificationCenter.css +362 -360
- package/dist/C_OrgChart.css +6 -5
- package/dist/C_PageLoading.cjs +1 -0
- package/dist/C_PageLoading.css +153 -0
- package/dist/C_PageLoading.d.cts +2 -0
- package/dist/C_PageLoading.d.ts +2 -0
- package/dist/C_PageLoading.js +1 -0
- package/dist/C_Progress.css +1 -1
- package/dist/C_QRCode.css +7 -5
- package/dist/C_Signature.css +7 -5
- package/dist/C_Skeleton.css +8 -6
- package/dist/C_SplitPane.css +25 -23
- package/dist/C_Steps.css +7 -5
- package/dist/C_Table.base.css +536 -537
- package/dist/C_Table.css +536 -538
- package/dist/C_Tabs.css +78 -1
- package/dist/C_TagsView.css +8 -8
- package/dist/C_Theme.css +9 -7
- package/dist/C_Time.css +3 -1
- package/dist/C_Timeline.css +9 -8
- package/dist/C_Transfer.css +10 -9
- package/dist/C_Tree.css +2 -1
- package/dist/C_Upload.css +176 -174
- package/dist/C_VideoPlayer.css +186 -184
- package/dist/C_VtableGantt.css +2 -1
- package/dist/C_WaterFall.css +19 -17
- package/dist/C_WorkFlow.css +976 -976
- package/dist/constants.d.cts +15 -20
- package/dist/constants.d.ts +15 -20
- package/dist/constants2.d.cts +44 -19
- package/dist/constants2.d.ts +44 -19
- package/dist/constants3.d.cts +4 -4
- package/dist/constants3.d.ts +4 -4
- package/dist/constants4.d.cts +6 -6
- package/dist/constants4.d.ts +6 -6
- package/dist/constants5.d.cts +2 -2
- package/dist/constants5.d.ts +2 -2
- package/dist/createPageLoading.cjs +1 -0
- package/dist/createPageLoading.d.cts +32 -0
- package/dist/createPageLoading.d.ts +32 -0
- package/dist/createPageLoading.js +1 -0
- package/dist/data.d.cts +8 -8
- package/dist/data.d.ts +8 -8
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +24 -23
- package/dist/index.d.ts +24 -23
- package/dist/index.js +1 -1
- package/dist/index.vue.d.cts +4 -4
- package/dist/index.vue.d.ts +4 -4
- package/dist/index10.vue.d.cts +3 -3
- package/dist/index10.vue.d.ts +1 -1
- package/dist/index11.vue.d.cts +1 -1
- package/dist/index11.vue.d.ts +2 -2
- package/dist/index12.vue.d.cts +2 -2
- package/dist/index12.vue.d.ts +2 -2
- package/dist/index13.vue.d.cts +2 -2
- package/dist/index13.vue.d.ts +5 -5
- package/dist/index14.vue.d.cts +5 -5
- package/dist/index14.vue.d.ts +6 -6
- package/dist/index15.vue.d.cts +6 -6
- package/dist/index15.vue.d.ts +1 -1
- package/dist/index16.vue.d.cts +1 -1
- package/dist/index17.vue.d.ts +1 -1
- package/dist/index18.vue.d.cts +1 -1
- package/dist/index18.vue.d.ts +5 -5
- package/dist/index19.vue.d.cts +5 -5
- package/dist/index19.vue.d.ts +1 -1
- package/dist/index2.vue.d.cts +2 -2
- package/dist/index2.vue.d.ts +2 -2
- package/dist/index20.vue.d.cts +1 -1
- package/dist/index20.vue.d.ts +1 -1
- package/dist/index21.vue.d.cts +1 -1
- package/dist/index21.vue.d.ts +1 -1
- package/dist/index22.vue.d.cts +1 -1
- package/dist/index22.vue.d.ts +1 -1
- package/dist/index23.vue.d.cts +2 -2
- package/dist/index23.vue.d.ts +2 -2
- package/dist/index25.vue.d.cts +4 -4
- package/dist/index25.vue.d.ts +4 -4
- package/dist/index27.vue.d.cts +2 -2
- package/dist/index27.vue.d.ts +2 -2
- package/dist/index28.vue.d.cts +1 -1
- package/dist/index28.vue.d.ts +1 -1
- package/dist/index3.vue.d.cts +4 -4
- package/dist/index3.vue.d.ts +4 -4
- package/dist/index4.vue.d.cts +1 -1
- package/dist/index6.vue.d.ts +2 -2
- package/dist/index7.vue.d.cts +2 -2
- package/dist/index8.vue.d.ts +3 -3
- package/dist/index9.vue.d.cts +3 -3
- package/dist/index9.vue.d.ts +3 -3
- package/dist/mapUtils.d.cts +2 -2
- package/dist/mapUtils.d.ts +2 -2
- package/dist/presets.d.cts +1 -1
- package/dist/presets.d.ts +1 -1
- package/dist/resolver.cjs +1 -1
- package/dist/resolver.d.cts +1 -1
- package/dist/resolver.d.ts +1 -1
- package/dist/resolver.js +1 -1
- package/dist/style.css +9976 -9652
- package/dist/useCropperCore.d.cts +9 -9
- package/dist/useCropperCore.d.ts +9 -9
- package/dist/useDraggableLayout.d.cts +6 -6
- package/dist/useDraggableLayout.d.ts +6 -6
- package/dist/useDynamicFormState.d.cts +2 -2
- package/dist/useDynamicFormState.d.ts +2 -2
- package/dist/useEdgeInteraction.d.cts +2 -2
- package/dist/useEdgeInteraction.d.ts +2 -2
- package/dist/useFormulaEvaluator.cjs +2 -0
- package/dist/useFormulaEvaluator.js +2 -0
- package/dist/useInfiniteScroll.d.cts +2 -2
- package/dist/useInfiniteScroll.d.ts +2 -2
- package/dist/useQRCode.d.cts +4 -4
- package/dist/useQRCode.d.ts +4 -4
- package/dist/useSearchState.d.cts +8 -8
- package/dist/useSearchState.d.ts +8 -8
- package/dist/useSignatureHistory.d.cts +3 -3
- package/dist/useSignatureHistory.d.ts +3 -3
- package/dist/useSplitResize.d.cts +4 -4
- package/dist/useSplitResize.d.ts +4 -4
- package/dist/useTableQuery.d.cts +1 -1
- package/dist/useTableQuery.d.ts +1 -1
- package/dist/useTimeSelection.d.cts +1 -1
- package/dist/useTimeSelection.d.ts +1 -1
- package/dist/useTreeOperations.d.cts +5 -5
- package/dist/useTreeOperations.d.ts +5 -5
- package/dist/useWorkflowValidation.d.cts +4 -4
- package/dist/useWorkflowValidation.d.ts +4 -4
- package/dist/verification.d.cts +4 -4
- package/dist/verification.d.ts +4 -4
- package/package.json +1 -1
- package/dist/C_FormulaEditor2.cjs +0 -2
- package/dist/C_FormulaEditor2.js +0 -2
package/dist/C_Cron.d.cts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { _ as
|
|
2
|
-
export { CRON_FIELD_META, CRON_TEMPLATES, _default as C_Cron, type CronEmits, type CronExpose, type CronFieldMeta, type CronFieldMode, type CronFieldType, type CronFieldValue, type CronProps, type CronTemplate, type CronValidation, type CronValue, DEFAULT_CRON_EXPRESSION, DEFAULT_CRON_VALUE, DEFAULT_FIELD_VALUE, MONTH_LABELS, WEEK_LABELS, useCronDescription, useCronParser, useCronPreview };
|
|
1
|
+
import { S as CronValue, _ as CronFieldType, a as DEFAULT_FIELD_VALUE, b as CronTemplate, c as useCronDescription, d as _default, f as CronConfig, g as CronFieldMode, h as CronFieldMeta, i as DEFAULT_CRON_VALUE, l as useCronPreview, m as CronExpose, n as CRON_TEMPLATES, o as MONTH_LABELS, p as CronEmits, r as DEFAULT_CRON_EXPRESSION, s as WEEK_LABELS, t as CRON_FIELD_META, u as useCronParser, v as CronFieldValue, x as CronValidation, y as CronProps } from "./constants.cjs";
|
|
2
|
+
export { CRON_FIELD_META, CRON_TEMPLATES, _default as C_Cron, type CronConfig, type CronEmits, type CronExpose, type CronFieldMeta, type CronFieldMode, type CronFieldType, type CronFieldValue, type CronProps, type CronTemplate, type CronValidation, type CronValue, DEFAULT_CRON_EXPRESSION, DEFAULT_CRON_VALUE, DEFAULT_FIELD_VALUE, MONTH_LABELS, WEEK_LABELS, useCronDescription, useCronParser, useCronPreview };
|
package/dist/C_Cron.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { _ as
|
|
2
|
-
export { CRON_FIELD_META, CRON_TEMPLATES, _default as C_Cron, type CronEmits, type CronExpose, type CronFieldMeta, type CronFieldMode, type CronFieldType, type CronFieldValue, type CronProps, type CronTemplate, type CronValidation, type CronValue, DEFAULT_CRON_EXPRESSION, DEFAULT_CRON_VALUE, DEFAULT_FIELD_VALUE, MONTH_LABELS, WEEK_LABELS, useCronDescription, useCronParser, useCronPreview };
|
|
1
|
+
import { S as CronValue, _ as CronFieldType, a as DEFAULT_FIELD_VALUE, b as CronTemplate, c as useCronDescription, d as _default, f as CronConfig, g as CronFieldMode, h as CronFieldMeta, i as DEFAULT_CRON_VALUE, l as useCronPreview, m as CronExpose, n as CRON_TEMPLATES, o as MONTH_LABELS, p as CronEmits, r as DEFAULT_CRON_EXPRESSION, s as WEEK_LABELS, t as CRON_FIELD_META, u as useCronParser, v as CronFieldValue, x as CronValidation, y as CronProps } from "./constants.js";
|
|
2
|
+
export { CRON_FIELD_META, CRON_TEMPLATES, _default as C_Cron, type CronConfig, type CronEmits, type CronExpose, type CronFieldMeta, type CronFieldMode, type CronFieldType, type CronFieldValue, type CronProps, type CronTemplate, type CronValidation, type CronValue, DEFAULT_CRON_EXPRESSION, DEFAULT_CRON_VALUE, DEFAULT_FIELD_VALUE, MONTH_LABELS, WEEK_LABELS, useCronDescription, useCronParser, useCronPreview };
|
package/dist/C_Cron.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./C_Icon2.js";import{a as e,c as t,d as n,i as r,l as i,n as a,o,r as s,s as c,t as l,u}from"./C_Cron2.js";export{e as CRON_FIELD_META,o as CRON_TEMPLATES,l as C_Cron,c as DEFAULT_CRON_EXPRESSION,t as DEFAULT_CRON_VALUE,i as DEFAULT_FIELD_VALUE,u as MONTH_LABELS,n as WEEK_LABELS,a as useCronDescription,r as useCronParser,s as useCronPreview};
|
|
1
|
+
import"./C_Icon2.js";import"./C_Loading2.js";import{a as e,c as t,d as n,i as r,l as i,n as a,o,r as s,s as c,t as l,u}from"./C_Cron2.js";export{e as CRON_FIELD_META,o as CRON_TEMPLATES,l as C_Cron,c as DEFAULT_CRON_EXPRESSION,t as DEFAULT_CRON_VALUE,i as DEFAULT_FIELD_VALUE,u as MONTH_LABELS,n as WEEK_LABELS,a as useCronDescription,r as useCronParser,s as useCronPreview};
|
package/dist/C_Cron2.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`./chunk.cjs`);const e=require(`./C_Icon2.cjs`),t=require(`./export-helper.cjs`);let n=require(`vue`),r=require(`naive-ui`);const i=[{type:`second`,label:`秒`,min:0,max:59},{type:`minute`,label:`分`,min:0,max:59},{type:`hour`,label:`时`,min:0,max:23},{type:`day`,label:`日`,min:1,max:31},{type:`month`,label:`月`,min:1,max:12},{type:`week`,label:`周`,min:1,max:7,valueLabels:{1:`周日`,2:`周一`,3:`周二`,4:`周三`,5:`周四`,6:`周五`,7:`周六`}}],a={mode:`every`,rangeStart:0,rangeEnd:0,stepStart:0,stepInterval:1,specificValues:[]},o={second:{...a,rangeEnd:59},minute:{...a,rangeEnd:59},hour:{...a,rangeEnd:23},day:{...a,rangeStart:1,rangeEnd:31},month:{...a,rangeStart:1,rangeEnd:12},week:{...a,mode:`none`,rangeStart:1,rangeEnd:7}},s=`0 0 0 * * ?`,c=[{label:`每秒执行`,value:`* * * * * ?`,description:`每秒执行一次`,icon:`mdi:timer-sand`},{label:`每分钟执行`,value:`0 * * * * ?`,description:`每分钟第 0 秒执行`,icon:`mdi:clock-outline`},{label:`每小时执行`,value:`0 0 * * * ?`,description:`每小时整点执行`,icon:`mdi:clock-time-twelve-outline`},{label:`每天 0 点`,value:`0 0 0 * * ?`,description:`每天凌晨 00:00 执行`,icon:`mdi:weather-night`},{label:`每天 8:30`,value:`0 30 8 * * ?`,description:`每天早上 08:30 执行`,icon:`mdi:weather-sunny`},{label:`每天 12:00`,value:`0 0 12 * * ?`,description:`每天中午 12:00 执行`,icon:`mdi:food`},{label:`工作日 9:00`,value:`0 0 9 ? * 2-6`,description:`周一至周五 09:00 执行`,icon:`mdi:briefcase-outline`},{label:`每周一 0 点`,value:`0 0 0 ? * 2`,description:`每周一凌晨 00:00 执行`,icon:`mdi:calendar-week`},{label:`每月 1 号 0 点`,value:`0 0 0 1 * ?`,description:`每月 1 号凌晨 00:00 执行`,icon:`mdi:calendar-month`},{label:`每 5 分钟`,value:`0 0/5 * * * ?`,description:`每隔 5 分钟执行一次`,icon:`mdi:timer-5`},{label:`每 30 分钟`,value:`0 0/30 * * * ?`,description:`每隔 30 分钟执行一次`,icon:`mdi:timer-30`},{label:`每 2 小时`,value:`0 0 0/2 * * ?`,description:`每隔 2 小时执行一次`,icon:`mdi:timer-2`}],l={1:`一月`,2:`二月`,3:`三月`,4:`四月`,5:`五月`,6:`六月`,7:`七月`,8:`八月`,9:`九月`,10:`十月`,11:`十一月`,12:`十二月`},u={1:`周日`,2:`周一`,3:`周二`,4:`周三`,5:`周四`,6:`周五`,7:`周六`},d=[`second`,`minute`,`hour`,`day`,`month`,`week`];function f(){let e=structuredClone(o);for(let t of d)e[t].specificValues=[];let t=(0,n.ref)(e);function r(e){switch(e.mode){case`every`:return`*`;case`range`:return`${e.rangeStart}-${e.rangeEnd}`;case`step`:return`${e.stepStart}/${e.stepInterval}`;case`specific`:return e.specificValues.length>0?[...e.specificValues].sort((e,t)=>e-t).join(`,`):`*`;case`none`:return`?`;default:return`*`}}function a(e,t,n={}){return{mode:t,rangeStart:e.min,rangeEnd:e.max,stepStart:e.min,stepInterval:1,specificValues:[],...n}}function s(e,t){let[n,r]=e.split(`/`).map(Number);return a(t,`step`,{stepStart:isNaN(n)?t.min:n,stepInterval:isNaN(r)?1:r})}function c(e,t){let[n,r]=e.split(`-`).map(Number);return a(t,`range`,{rangeStart:isNaN(n)?t.min:n,rangeEnd:isNaN(r)?t.max:r})}function l(e,t){let n=i.find(e=>e.type===t);if(e===`?`)return a(n,`none`);if(e===`*`)return a(n,`every`);if(e.includes(`/`))return s(e,n);if(e.includes(`-`)&&!e.includes(`,`))return c(e,n);let r=e.split(`,`).map(Number).filter(e=>!isNaN(e));return r.length>0?a(n,`specific`,{specificValues:r}):a(n,`every`)}function u(){return d.map(e=>r(t.value[e])).join(` `)}function f(e){if(!m(e).valid)return!1;let n=e.trim().split(/\s+/);return d.forEach((e,r)=>{t.value[e]=l(n[r],e)}),!0}function p(e){e===`day`?t.value.day.mode!==`none`&&(t.value.week={...t.value.week,mode:`none`}):t.value.week.mode!==`none`&&(t.value.day={...t.value.day,mode:`none`})}function m(e){let t=(e??u()).trim().split(/\s+/);if(t.length!==6)return{valid:!1,message:`表达式应包含 6 个字段,当前为 ${t.length} 个`};let n=t[3],r=t[5];if(n!==`?`&&r!==`?`)return{valid:!1,message:`日和周不能同时指定,其中一个必须为 ?`,field:`day`};if(n===`?`&&r===`?`)return{valid:!1,message:`日和周不能同时为 ?,至少指定一个`,field:`day`};for(let e=0;e<d.length;e++){let n=d[e],r=t[e],a=v(r,i.find(e=>e.type===n));if(!a.valid)return{...a,field:n}}return{valid:!0,message:`表达式合法`}}function h(e,t){let[n,r]=e.split(`/`),i=n===`*`?t.min:Number(n),a=Number(r);return!Number.isInteger(i)||!Number.isInteger(a)?{valid:!1,message:`${t.label}字段步进格式错误`}:i<t.min||i>t.max?{valid:!1,message:`${t.label}字段步进起始值超出范围 (${t.min}-${t.max})`}:a<1?{valid:!1,message:`${t.label}字段步进间隔必须大于 0`}:{valid:!0,message:``}}function g(e,t){let[n,r]=e.split(`-`).map(Number);return!Number.isInteger(n)||!Number.isInteger(r)?{valid:!1,message:`${t.label}字段范围格式错误`}:n<t.min||r>t.max?{valid:!1,message:`${t.label}字段范围超出 (${t.min}-${t.max})`}:n>r?{valid:!1,message:`${t.label}字段范围起始不能大于结束`}:{valid:!0,message:``}}function _(e,t){let n=e.split(`,`).map(Number);return n.some(e=>!Number.isInteger(e))?{valid:!1,message:`${t.label}字段包含非数字字符`}:n.some(e=>e<t.min||e>t.max)?{valid:!1,message:`${t.label}字段值超出范围 (${t.min}-${t.max})`}:{valid:!0,message:``}}function v(e,t){return e===`*`?{valid:!0,message:``}:e===`?`?t.type===`day`||t.type===`week`?{valid:!0,message:``}:{valid:!1,message:`${t.label}字段不能使用 ?`}:/^(\*|\d+)\/\d+$/.test(e)?h(e,t):/^\d+-\d+$/.test(e)?g(e,t):/^\d+(,\d+)*$/.test(e)?_(e,t):{valid:!1,message:`${t.label}字段格式错误`}}return{cronValue:t,expression:(0,n.computed)(()=>u()),validation:(0,n.computed)(()=>m()),parse:f,generate:u,validate:m,handleDayWeekExclusion:p}}function p(e,t,n){if(t===`*`||t===`?`)return!0;if(t.includes(`/`)){let[r,i]=t.split(`/`),a=r===`*`?n:Number(r),o=Number(i);return o>0&&e>=a&&(e-a)%o===0}if(t.includes(`-`)){let[n,r]=t.split(`-`).map(Number);return e>=n&&e<=r}return t.split(`,`).some(t=>Number(t)===e)}function m(e,t){let[,n,r,i,a,o]=t;return p(e.getMinutes(),n,0)&&p(e.getHours(),r,0)&&p(e.getDate(),i,1)&&p(e.getMonth()+1,a,1)&&p(e.getDay()+1,o,1)}function h(e,t,n,r,i){for(let a of n){let n=new Date(t.getTime()+a*1e3);if(!(n.getTime()<=r.getTime())&&(e.push(n),e.length>=i))return!0}return!1}function g(e){return Number.isFinite(e)?Math.min(100,Math.max(1,Math.trunc(e))):10}function _(e){return e>0&&e%1e4==0}async function v(e,t,n=new Date,r=()=>!1){let i=e.trim().split(/\s+/);if(i.length!==6)return[];let a=Array.from({length:60},(e,t)=>t).filter(e=>p(e,i[0],0));if(a.length===0)return[];let o=g(t),s=[],c=new Date(n);c.setSeconds(0,0);for(let e=0;e<527040;e++){if(r())return[];if(m(c,i)&&h(s,c,a,n,o))return s;c.setTime(c.getTime()+6e4),_(e)&&await new Promise(e=>setTimeout(e,0))}return s}function y(e,t,r){let i=(0,n.ref)([]),a=(0,n.ref)(!1),o=0,s=null;(0,n.watch)([e,r,t],()=>{o+=1;let n=o;if(s&&clearTimeout(s),!t.value.valid){i.value=[],a.value=!1,s=null;return}a.value=!0,s=setTimeout(async()=>{let t=await v(e.value,r.value,new Date,()=>n!==o);n===o&&(i.value=t,a.value=!1,s=null)},0)},{immediate:!0}),(0,n.onScopeDispose)(()=>{o+=1,s&&clearTimeout(s)});function c(e){let t=e=>String(e).padStart(2,`0`);return`${e.getFullYear()}-${t(e.getMonth()+1)}-${t(e.getDate())} ${t(e.getHours())}:${t(e.getMinutes())}:${t(e.getSeconds())}`}function l(e){return[`周日`,`周一`,`周二`,`周三`,`周四`,`周五`,`周六`][e.getDay()]}return{nextExecutions:i,computing:a,formatDate:c,formatWeekDay:l}}function b(e){return u[Number(e)]||`周${e}`}function x(e,t){let r=(0,n.computed)(()=>t.value.valid?i(e.value):`表达式不合法`);function i(e){let t=e.trim().split(/\s+/);if(t.length!==6)return`表达式格式错误`;let[n,r,i,l,f,p]=t,m=[];return m.push(u(f)),p===`?`?m.push(c(l)):m.push(d(p)),m.push(s(i)),m.push(o(r)),m.push(a(n)),m.filter(Boolean).join(` `)+` 执行`}function a(e){return e===`0`?``:e===`*`?`每秒`:f(e,`秒`)}function o(e){return e===`*`?`每分钟`:e===`0`?``:f(e,`分`)}function s(e){return e===`*`?`每小时`:/^\d+$/.test(e)?`${e.padStart(2,`0`)}:`:f(e,`时`)}function c(e){if(e===`*`||e===`?`)return`每天`;if(/^\d+$/.test(e))return`每月 ${e} 号`;if(e.includes(`/`)){let[t,n]=e.split(`/`);return`从 ${t} 号开始每 ${n} 天`}if(e.includes(`-`)){let[t,n]=e.split(`-`);return`${t} 号到 ${n} 号`}return e.includes(`,`)?`每月 ${e} 号`:``}function u(e){if(e===`*`)return``;if(/^\d+$/.test(e)){let t=Number(e);return l[t]?`${l[t]}`:`${t} 月`}if(e.includes(`/`)){let[t,n]=e.split(`/`);return`从 ${t} 月开始每 ${n} 个月`}if(e.includes(`-`)){let[t,n]=e.split(`-`);return`${t} 月到 ${n} 月`}return e.includes(`,`)?e.split(`,`).map(e=>l[Number(e)]||`${e}月`).join(`、`):``}function d(e){return e===`*`||e===`?`?``:/^\d+$/.test(e)?`每${b(e)}`:e.includes(`/`)?`从${b(e.split(`/`)[0])}开始每 ${e.split(`/`)[1]} 天`:e.includes(`-`)?`${b(e.split(`-`)[0])}到${b(e.split(`-`)[1])}`:e.includes(`,`)?`每${e.split(`,`).map(b).join(`、`)}`:``}function f(e,t){if(e.includes(`/`)){let[n,r]=e.split(`/`);return`${n===`*`||n===`0`?``:`从第 ${n} ${t}开始`}每 ${r} ${t}`}if(e.includes(`-`)){let[n,r]=e.split(`-`);return`${n} ${t}到 ${r} ${t}`}return e.includes(`,`)?`第 ${e} ${t}`:/^\d+$/.test(e)?`${e.padStart(2,`0`)}`:``}return{description:r}}const S={class:`cron-field-editor`},C=[`disabled`,`aria-pressed`,`onClick`],w=(0,n.defineComponent)({__name:`CronFieldEditor`,props:{modelValue:{},meta:{},disabled:{type:Boolean}},emits:[`update:modelValue`],setup(e,{emit:t}){let r=e,i=t,a=(0,n.computed)(()=>{switch(r.meta.type){case`second`:case`minute`:return 10;case`hour`:return 12;case`day`:return 7;case`month`:return 6;case`week`:return 7;default:return 10}}),o=(0,n.computed)(()=>{let e=[];for(let t=r.meta.min;t<=r.meta.max;t++)e.push({value:t,label:r.meta.valueLabels?.[t]??String(t)});return e}),s=(0,n.computed)(()=>{let{modelValue:e,meta:t}=r,n=new Set;switch(e.mode){case`every`:for(let e=t.min;e<=t.max;e++)n.add(e);break;case`none`:break;case`range`:for(let t=e.rangeStart;t<=e.rangeEnd;t++)n.add(t);break;case`step`:for(let r=e.stepStart;r<=t.max;r+=Math.max(1,e.stepInterval))n.add(r);break;case`specific`:e.specificValues.forEach(e=>n.add(e));break}return n});function c(e){if(r.disabled||r.modelValue.mode!==`specific`)return;let t=[...r.modelValue.specificValues],n=t.indexOf(e);n>=0?t.splice(n,1):t.push(e),i(`update:modelValue`,{...r.modelValue,specificValues:t})}return(t,r)=>((0,n.openBlock)(),(0,n.createElementBlock)(`div`,S,[(0,n.createElementVNode)(`div`,{class:`cron-field-editor__grid`,style:(0,n.normalizeStyle)({"--cols":a.value})},[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(o.value,t=>((0,n.openBlock)(),(0,n.createElementBlock)(`button`,{key:t.value,type:`button`,class:(0,n.normalizeClass)([`cron-field-editor__cell`,{"cron-field-editor__cell--on":s.value.has(t.value),"cron-field-editor__cell--pick":e.modelValue.mode===`specific`}]),disabled:e.disabled||e.modelValue.mode!==`specific`,"aria-pressed":e.modelValue.mode===`specific`?s.value.has(t.value):void 0,onClick:e=>c(t.value)},(0,n.toDisplayString)(t.label),11,C))),128))],4)]))}});var T=t.t(w,[[`__scopeId`,`data-v-153f242b`]]);const E={class:`cron-preview`},D={class:`cron-preview__header`},O={key:0,class:`cron-preview__list`},k={class:`cron-preview__idx`},A={class:`cron-preview__date`},j={class:`cron-preview__week`},M=(0,n.defineComponent)({__name:`CronPreview`,props:{nextExecutions:{},computing:{type:Boolean},count:{},formatDate:{type:Function},formatWeekDay:{type:Function}},setup(t){return(i,a)=>{let o=r.NSpin,s=r.NEmpty,c=r.NScrollbar;return(0,n.openBlock)(),(0,n.createElementBlock)(`div`,E,[(0,n.createElementVNode)(`div`,D,[(0,n.createVNode)(e.t,{name:`mdi:calendar-clock`,size:15}),a[0]||=(0,n.createElementVNode)(`span`,null,`未来执行`,-1),t.computing?((0,n.openBlock)(),(0,n.createBlock)(o,{key:0,size:14})):(0,n.createCommentVNode)(`v-if`,!0)]),(0,n.createVNode)(c,{style:{"max-height":`220px`}},{default:(0,n.withCtx)(()=>[t.nextExecutions.length>0?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,O,[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(t.nextExecutions,(e,r)=>((0,n.openBlock)(),(0,n.createElementBlock)(`div`,{key:r,class:`cron-preview__item`},[(0,n.createElementVNode)(`span`,k,(0,n.toDisplayString)(r+1),1),(0,n.createElementVNode)(`span`,A,(0,n.toDisplayString)(t.formatDate(e)),1),(0,n.createElementVNode)(`span`,j,(0,n.toDisplayString)(t.formatWeekDay(e)),1)]))),128))])):((0,n.openBlock)(),(0,n.createBlock)(s,{key:1,size:`small`,description:`暂无匹配`}))]),_:1})])}}});var N=t.t(M,[[`__scopeId`,`data-v-15b88794`]]);const P={class:`cron-templates`},F={class:`cron-templates__header`},I={class:`cron-templates__cards`},L=[`disabled`,`aria-pressed`,`onClick`],R={class:`cron-templates__card-name`},z={class:`cron-templates__card-expr`},B=(0,n.defineComponent)({__name:`CronTemplates`,props:{templates:{},currentValue:{},disabled:{type:Boolean}},emits:[`select`],setup(t){return(r,i)=>((0,n.openBlock)(),(0,n.createElementBlock)(`div`,P,[(0,n.createElementVNode)(`div`,F,[(0,n.createVNode)(e.t,{name:`mdi:lightning-bolt`,size:15}),i[0]||=(0,n.createElementVNode)(`span`,null,`常用模板`,-1)]),(0,n.createElementVNode)(`div`,I,[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(t.templates,e=>((0,n.openBlock)(),(0,n.createElementBlock)(`button`,{key:e.value,type:`button`,disabled:t.disabled,"aria-pressed":e.value===t.currentValue,class:(0,n.normalizeClass)([`cron-templates__card`,{"cron-templates__card--active":e.value===t.currentValue}]),onClick:t=>r.$emit(`select`,e.value)},[(0,n.createElementVNode)(`div`,R,(0,n.toDisplayString)(e.label),1),(0,n.createElementVNode)(`div`,z,(0,n.toDisplayString)(e.value),1)],10,L))),128))])]))}});var ee=t.t(B,[[`__scopeId`,`data-v-1b50e9c2`]]);const te={class:`c-cron__header`},ne={class:`c-cron__title-row`},re={class:`c-cron__title`},ie={class:`c-cron__segments`},V=[`aria-pressed`,`onClick`],H={class:`c-cron__segment-value`},U={class:`c-cron__segment-label`},W={class:`c-cron__expr-row`},G={class:`c-cron__expr-desc`},K={key:0,class:`c-cron__description`},q={key:1,class:`c-cron__error`},J={class:`c-cron__body`},ae={class:`c-cron__main`},oe={class:`c-cron__panel`},se={key:0,class:`c-cron__config`},ce={class:`c-cron__config-row`},le={key:1,class:`c-cron__config`},ue={class:`c-cron__config-row`},de={key:2,class:`c-cron__quick`},fe=[`disabled`],pe=[`disabled`],me={key:0,class:`c-cron__quick-count`},he={key:1,class:`c-cron__error`},ge={key:0,class:`c-cron__footer`},Y=(0,n.defineComponent)({name:`C_Cron`,__name:`index`,props:{modelValue:{default:s},disabled:{type:Boolean,default:!1},previewCount:{default:10},showTemplates:{type:Boolean,default:!0},showPreview:{type:Boolean,default:!0},showSecond:{type:Boolean,default:!0},height:{default:`auto`}},emits:[`update:modelValue`,`change`,`validation-change`],setup(t,{expose:a,emit:o}){let l=t,u=o,{cronValue:d,expression:p,validation:m,parse:h,validate:g,handleDayWeekExclusion:_}=f(),{nextExecutions:v,computing:b,formatDate:S,formatWeekDay:C}=y(p,m,(0,n.computed)(()=>l.previewCount??10)),{description:w}=x(p,m),E=(0,n.ref)(l.modelValue||s),D=(0,n.ref)(null),O=(0,n.computed)(()=>D.value??m.value),k=(0,n.ref)(l.showSecond?`second`:`minute`),A=(0,n.computed)(()=>typeof l.height==`number`?`${l.height}px`:l.height),j=(0,n.computed)(()=>l.showSecond?i:i.filter(e=>e.type!==`second`)),M=(0,n.computed)(()=>i.find(e=>e.type===k.value)),P=(0,n.computed)(()=>d.value[k.value]);function F(e){switch(e.mode){case`every`:return`*`;case`none`:return`?`;case`range`:return`${e.rangeStart}-${e.rangeEnd}`;case`step`:return`${e.stepStart}/${e.stepInterval}`;case`specific`:return e.specificValues.length>0?[...e.specificValues].sort((e,t)=>e-t).join(`,`):`*`;default:return`*`}}let I=(0,n.computed)(()=>{let e={};for(let t of i)e[t.type]=F(d.value[t.type]);return e});(0,n.onMounted)(()=>{Q(l.modelValue||s)}),(0,n.watch)(()=>l.modelValue,e=>{e!==p.value&&Q(e||s)}),(0,n.watch)(()=>l.showSecond,e=>{!e&&k.value===`second`&&(k.value=`minute`)}),(0,n.watch)(p,e=>{E.value=e,D.value=null,u(`update:modelValue`,e),u(`change`,e)}),(0,n.watch)(O,e=>{u(`validation-change`,e)});function L(e,t){l.disabled||(D.value=null,d.value[e]=t,(e===`day`||e===`week`)&&_(e))}function R(e){L(k.value,{...P.value,mode:e})}function z(e){L(k.value,{...P.value,...e})}function B(){let{min:e,max:t}=M.value,n=Array.from({length:t-e+1},(t,n)=>e+n);L(k.value,{...P.value,specificValues:n})}function Y(){L(k.value,{...P.value,specificValues:[]})}function X(e){E.value=e,D.value=g(e)}function Z(){l.disabled||Q(E.value.trim())}function Q(e){E.value=e;let t=g(e);D.value=t.valid?null:t,t.valid&&h(e)}function _e(e){l.disabled||Q(e)}function $(){Q(l.modelValue||s)}return a({getValue:()=>p.value,setValue:e=>{Q(e)},reset:$,validate:()=>O.value}),(t,i)=>{let a=r.NTag,o=r.NInput,s=r.NButton,u=r.NRadioButton,f=r.NRadioGroup,m=r.NInputNumber;return(0,n.openBlock)(),(0,n.createElementBlock)(`div`,{class:`c-cron`,style:(0,n.normalizeStyle)({height:A.value})},[(0,n.createCommentVNode)(` ═══════ 顶部 ═══════ `),(0,n.createElementVNode)(`div`,te,[(0,n.createCommentVNode)(` 标题行 `),(0,n.createElementVNode)(`div`,ne,[(0,n.createElementVNode)(`div`,re,[(0,n.createVNode)(e.t,{name:`mdi:clock-edit-outline`,size:18}),i[4]||=(0,n.createElementVNode)(`span`,null,`Cron 表达式`,-1)]),(0,n.createVNode)(a,{type:O.value.valid?`success`:`error`,size:`small`,round:``},{icon:(0,n.withCtx)(()=>[(0,n.createVNode)(e.t,{name:O.value.valid?`mdi:check-circle`:`mdi:alert-circle`},null,8,[`name`])]),default:(0,n.withCtx)(()=>[(0,n.createTextVNode)(` `+(0,n.toDisplayString)(O.value.valid?`合法`:`错误`),1)]),_:1},8,[`type`])]),(0,n.createCommentVNode)(` 分段式字段选择器 `),(0,n.createElementVNode)(`div`,ie,[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(j.value,e=>((0,n.openBlock)(),(0,n.createElementBlock)(`button`,{key:e.type,type:`button`,class:(0,n.normalizeClass)([`c-cron__segment`,{"c-cron__segment--active":k.value===e.type,"c-cron__segment--wildcard":I.value[e.type]===`*`||I.value[e.type]===`?`}]),"aria-pressed":k.value===e.type,onClick:t=>k.value=e.type},[(0,n.createElementVNode)(`div`,H,(0,n.toDisplayString)(I.value[e.type]),1),(0,n.createElementVNode)(`div`,U,(0,n.toDisplayString)(e.label),1)],10,V))),128))]),(0,n.createCommentVNode)(` 表达式行:输入 + 重置 + 描述 `),(0,n.createElementVNode)(`div`,W,[(0,n.createVNode)(o,{value:E.value,status:O.value.valid?void 0:`error`,placeholder:`秒 分 时 日 月 周`,disabled:l.disabled,font:`mono`,size:`small`,clearable:``,class:`c-cron__expr-input`,"onUpdate:value":X,onBlur:Z,onKeydown:(0,n.withKeys)(Z,[`enter`])},{prefix:(0,n.withCtx)(()=>[(0,n.createVNode)(e.t,{name:`mdi:console`,size:14,style:{opacity:`0.4`}})]),_:1},8,[`value`,`status`,`disabled`]),(0,n.createVNode)(s,{size:`small`,quaternary:``,disabled:l.disabled,onClick:$},{icon:(0,n.withCtx)(()=>[(0,n.createVNode)(e.t,{name:`mdi:refresh`})]),_:1},8,[`disabled`]),(0,n.createElementVNode)(`div`,G,[O.value.valid?((0,n.openBlock)(),(0,n.createElementBlock)(`span`,K,(0,n.toDisplayString)((0,n.unref)(w)),1)):((0,n.openBlock)(),(0,n.createElementBlock)(`span`,q,(0,n.toDisplayString)(O.value.message),1))])])]),(0,n.createCommentVNode)(` ═══════ 主内容 ═══════ `),(0,n.createElementVNode)(`div`,J,[(0,n.createCommentVNode)(` 左侧:值网格 `),(0,n.createElementVNode)(`div`,ae,[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(j.value,e=>(0,n.withDirectives)(((0,n.openBlock)(),(0,n.createBlock)(T,{key:e.type,"model-value":(0,n.unref)(d)[e.type],meta:e,disabled:l.disabled,"onUpdate:modelValue":t=>L(e.type,t)},null,8,[`model-value`,`meta`,`disabled`,`onUpdate:modelValue`])),[[n.vShow,k.value===e.type]])),128))]),(0,n.createCommentVNode)(` 右侧:控制面板 `),(0,n.createElementVNode)(`div`,oe,[(0,n.createVNode)(f,{value:P.value.mode,disabled:l.disabled,size:`small`,"onUpdate:value":R},{default:(0,n.withCtx)(()=>[(0,n.createVNode)(u,{value:`every`},{default:(0,n.withCtx)(()=>[(0,n.createTextVNode)(` 每`+(0,n.toDisplayString)(M.value.label),1)]),_:1}),k.value===`day`||k.value===`week`?((0,n.openBlock)(),(0,n.createBlock)(u,{key:0,value:`none`},{default:(0,n.withCtx)(()=>[...i[5]||=[(0,n.createTextVNode)(` 不指定 `,-1)]]),_:1})):(0,n.createCommentVNode)(`v-if`,!0),(0,n.createVNode)(u,{value:`range`},{default:(0,n.withCtx)(()=>[...i[6]||=[(0,n.createTextVNode)(`范围`,-1)]]),_:1}),(0,n.createVNode)(u,{value:`step`},{default:(0,n.withCtx)(()=>[...i[7]||=[(0,n.createTextVNode)(`步进`,-1)]]),_:1}),(0,n.createVNode)(u,{value:`specific`},{default:(0,n.withCtx)(()=>[...i[8]||=[(0,n.createTextVNode)(`指定`,-1)]]),_:1})]),_:1},8,[`value`,`disabled`]),(0,n.createCommentVNode)(` 范围配置 `),P.value.mode===`range`?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,se,[(0,n.createElementVNode)(`div`,ce,[i[9]||=(0,n.createElementVNode)(`span`,null,`从`,-1),(0,n.createVNode)(m,{value:P.value.rangeStart,min:M.value.min,max:M.value.max,size:`small`,"show-button":!1,disabled:l.disabled,class:`c-cron__config-num`,"onUpdate:value":i[0]||=e=>z({rangeStart:e??M.value.min})},null,8,[`value`,`min`,`max`,`disabled`]),i[10]||=(0,n.createElementVNode)(`span`,null,`到`,-1),(0,n.createVNode)(m,{value:P.value.rangeEnd,min:M.value.min,max:M.value.max,size:`small`,"show-button":!1,disabled:l.disabled,class:`c-cron__config-num`,"onUpdate:value":i[1]||=e=>z({rangeEnd:e??M.value.max})},null,8,[`value`,`min`,`max`,`disabled`])])])):(0,n.createCommentVNode)(`v-if`,!0),(0,n.createCommentVNode)(` 步进配置 `),P.value.mode===`step`?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,le,[(0,n.createElementVNode)(`div`,ue,[i[11]||=(0,n.createElementVNode)(`span`,null,`从第`,-1),(0,n.createVNode)(m,{value:P.value.stepStart,min:M.value.min,max:M.value.max,size:`small`,"show-button":!1,disabled:l.disabled,class:`c-cron__config-num`,"onUpdate:value":i[2]||=e=>z({stepStart:e??M.value.min})},null,8,[`value`,`min`,`max`,`disabled`]),(0,n.createElementVNode)(`span`,null,(0,n.toDisplayString)(M.value.label)+`起,每`,1),(0,n.createVNode)(m,{value:P.value.stepInterval,min:1,max:M.value.max-M.value.min+1,size:`small`,"show-button":!1,disabled:l.disabled,class:`c-cron__config-num`,"onUpdate:value":i[3]||=e=>z({stepInterval:e??1})},null,8,[`value`,`max`,`disabled`]),(0,n.createElementVNode)(`span`,null,(0,n.toDisplayString)(M.value.label)+`执行`,1)])])):(0,n.createCommentVNode)(`v-if`,!0),(0,n.createCommentVNode)(` 指定快捷操作 `),P.value.mode===`specific`?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,de,[(0,n.createElementVNode)(`button`,{type:`button`,disabled:l.disabled,onClick:B},`全选`,8,fe),i[12]||=(0,n.createElementVNode)(`span`,{class:`c-cron__quick-sep`},`·`,-1),(0,n.createElementVNode)(`button`,{type:`button`,disabled:l.disabled,onClick:Y},`清空`,8,pe),P.value.specificValues.length>0?((0,n.openBlock)(),(0,n.createElementBlock)(`span`,me,` 已选 `+(0,n.toDisplayString)(P.value.specificValues.length),1)):(0,n.createCommentVNode)(`v-if`,!0)])):(0,n.createCommentVNode)(`v-if`,!0),(0,n.createCommentVNode)(` 执行预览 `),l.showPreview?((0,n.openBlock)(),(0,n.createElementBlock)(n.Fragment,{key:3},[i[13]||=(0,n.createElementVNode)(`div`,{class:`c-cron__panel-line`},null,-1),O.value.valid?((0,n.openBlock)(),(0,n.createBlock)(N,{key:0,"next-executions":(0,n.unref)(v),computing:(0,n.unref)(b),count:l.previewCount??5,"format-date":(0,n.unref)(S),"format-week-day":(0,n.unref)(C)},null,8,[`next-executions`,`computing`,`count`,`format-date`,`format-week-day`])):((0,n.openBlock)(),(0,n.createElementBlock)(`div`,he,`请先修正表达式`))],64)):(0,n.createCommentVNode)(`v-if`,!0)])]),(0,n.createCommentVNode)(` ═══════ 底部模板 ═══════ `),l.showTemplates?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,ge,[(0,n.createVNode)(ee,{templates:(0,n.unref)(c),"current-value":(0,n.unref)(p),disabled:l.disabled,onSelect:_e},null,8,[`templates`,`current-value`,`disabled`])])):(0,n.createCommentVNode)(`v-if`,!0)],4)}}});var X=t.t(Y,[[`__scopeId`,`data-v-f4b0a99d`]]);Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return X}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return l}});
|
|
1
|
+
require(`./chunk.cjs`);const e=require(`./C_Icon2.cjs`),t=require(`./export-helper.cjs`),n=require(`./C_Loading2.cjs`);let r=require(`vue`),i=require(`naive-ui`);const a=[{type:`second`,label:`秒`,min:0,max:59},{type:`minute`,label:`分`,min:0,max:59},{type:`hour`,label:`时`,min:0,max:23},{type:`day`,label:`日`,min:1,max:31},{type:`month`,label:`月`,min:1,max:12},{type:`week`,label:`周`,min:1,max:7,valueLabels:{1:`周日`,2:`周一`,3:`周二`,4:`周三`,5:`周四`,6:`周五`,7:`周六`}}],o={mode:`every`,rangeStart:0,rangeEnd:0,stepStart:0,stepInterval:1,specificValues:[]},s={second:{...o,rangeEnd:59},minute:{...o,rangeEnd:59},hour:{...o,rangeEnd:23},day:{...o,rangeStart:1,rangeEnd:31},month:{...o,rangeStart:1,rangeEnd:12},week:{...o,mode:`none`,rangeStart:1,rangeEnd:7}},c=`0 0 0 * * ?`,l=[{label:`每秒执行`,value:`* * * * * ?`,description:`每秒执行一次`,icon:`mdi:timer-sand`},{label:`每分钟执行`,value:`0 * * * * ?`,description:`每分钟第 0 秒执行`,icon:`mdi:clock-outline`},{label:`每小时执行`,value:`0 0 * * * ?`,description:`每小时整点执行`,icon:`mdi:clock-time-twelve-outline`},{label:`每天 0 点`,value:`0 0 0 * * ?`,description:`每天凌晨 00:00 执行`,icon:`mdi:weather-night`},{label:`每天 8:30`,value:`0 30 8 * * ?`,description:`每天早上 08:30 执行`,icon:`mdi:weather-sunny`},{label:`每天 12:00`,value:`0 0 12 * * ?`,description:`每天中午 12:00 执行`,icon:`mdi:food`},{label:`工作日 9:00`,value:`0 0 9 ? * 2-6`,description:`周一至周五 09:00 执行`,icon:`mdi:briefcase-outline`},{label:`每周一 0 点`,value:`0 0 0 ? * 2`,description:`每周一凌晨 00:00 执行`,icon:`mdi:calendar-week`},{label:`每月 1 号 0 点`,value:`0 0 0 1 * ?`,description:`每月 1 号凌晨 00:00 执行`,icon:`mdi:calendar-month`},{label:`每 5 分钟`,value:`0 0/5 * * * ?`,description:`每隔 5 分钟执行一次`,icon:`mdi:timer-5`},{label:`每 30 分钟`,value:`0 0/30 * * * ?`,description:`每隔 30 分钟执行一次`,icon:`mdi:timer-30`},{label:`每 2 小时`,value:`0 0 0/2 * * ?`,description:`每隔 2 小时执行一次`,icon:`mdi:timer-2`}],u={1:`一月`,2:`二月`,3:`三月`,4:`四月`,5:`五月`,6:`六月`,7:`七月`,8:`八月`,9:`九月`,10:`十月`,11:`十一月`,12:`十二月`},d={1:`周日`,2:`周一`,3:`周二`,4:`周三`,5:`周四`,6:`周五`,7:`周六`},f=[`second`,`minute`,`hour`,`day`,`month`,`week`];function p(){let e=structuredClone(s);for(let t of f)e[t].specificValues=[];let t=(0,r.ref)(e);function n(e){switch(e.mode){case`every`:return`*`;case`range`:return`${e.rangeStart}-${e.rangeEnd}`;case`step`:return`${e.stepStart}/${e.stepInterval}`;case`specific`:return e.specificValues.length>0?[...e.specificValues].sort((e,t)=>e-t).join(`,`):``;case`none`:return`?`;default:return`*`}}function i(e,t,n={}){return{mode:t,rangeStart:e.min,rangeEnd:e.max,stepStart:e.min,stepInterval:1,specificValues:[],...n}}function o(e,t){let[n,r]=e.split(`/`).map(Number);return i(t,`step`,{stepStart:isNaN(n)?t.min:n,stepInterval:isNaN(r)?1:r})}function c(e,t){let[n,r]=e.split(`-`).map(Number);return i(t,`range`,{rangeStart:isNaN(n)?t.min:n,rangeEnd:isNaN(r)?t.max:r})}function l(e,t){let n=a.find(e=>e.type===t);if(e===`?`)return i(n,`none`);if(e===`*`)return i(n,`every`);if(e.includes(`/`))return o(e,n);if(e.includes(`-`)&&!e.includes(`,`))return c(e,n);let r=e.split(`,`).map(Number).filter(e=>!isNaN(e));return r.length>0?i(n,`specific`,{specificValues:r}):i(n,`every`)}function u(){return f.map(e=>n(t.value[e])).join(` `)}function d(e){if(!m(e).valid)return!1;let n=e.trim().split(/\s+/);return f.forEach((e,r)=>{t.value[e]=l(n[r],e)}),!0}function p(e){e===`day`?t.value.day.mode===`none`?t.value.week.mode===`none`&&(t.value.week={...t.value.week,mode:`every`}):t.value.week={...t.value.week,mode:`none`}:t.value.week.mode===`none`?t.value.day.mode===`none`&&(t.value.day={...t.value.day,mode:`every`}):t.value.day={...t.value.day,mode:`none`}}function m(e){if(e===void 0){let e=f.find(e=>t.value[e].mode===`specific`&&t.value[e].specificValues.length===0);if(e)return{valid:!1,message:`${a.find(t=>t.type===e).label}字段至少选择一个值`,field:e}}let n=(e??u()).trim().split(/\s+/);if(n.length!==6)return{valid:!1,message:`表达式应包含 6 个字段,当前为 ${n.length} 个`};let r=n[3],i=n[5];if(r!==`?`&&i!==`?`)return{valid:!1,message:`日和周不能同时指定,其中一个必须为 ?`,field:`day`};if(r===`?`&&i===`?`)return{valid:!1,message:`日和周不能同时为 ?,至少指定一个`,field:`day`};for(let e=0;e<f.length;e++){let t=f[e],r=n[e],i=v(r,a.find(e=>e.type===t));if(!i.valid)return{...i,field:t}}return{valid:!0,message:`表达式合法`}}function h(e,t){let[n,r]=e.split(`/`),i=n===`*`?t.min:Number(n),a=Number(r);return!Number.isInteger(i)||!Number.isInteger(a)?{valid:!1,message:`${t.label}字段步进格式错误`}:i<t.min||i>t.max?{valid:!1,message:`${t.label}字段步进起始值超出范围 (${t.min}-${t.max})`}:a<1?{valid:!1,message:`${t.label}字段步进间隔必须大于 0`}:{valid:!0,message:``}}function g(e,t){let[n,r]=e.split(`-`).map(Number);return!Number.isInteger(n)||!Number.isInteger(r)?{valid:!1,message:`${t.label}字段范围格式错误`}:n<t.min||r>t.max?{valid:!1,message:`${t.label}字段范围超出 (${t.min}-${t.max})`}:n>r?{valid:!1,message:`${t.label}字段范围起始不能大于结束`}:{valid:!0,message:``}}function _(e,t){let n=e.split(`,`).map(Number);return n.some(e=>!Number.isInteger(e))?{valid:!1,message:`${t.label}字段包含非数字字符`}:n.some(e=>e<t.min||e>t.max)?{valid:!1,message:`${t.label}字段值超出范围 (${t.min}-${t.max})`}:{valid:!0,message:``}}function v(e,t){return e===`*`?{valid:!0,message:``}:e===`?`?t.type===`day`||t.type===`week`?{valid:!0,message:``}:{valid:!1,message:`${t.label}字段不能使用 ?`}:/^(\*|\d+)\/\d+$/.test(e)?h(e,t):/^\d+-\d+$/.test(e)?g(e,t):/^\d+(,\d+)*$/.test(e)?_(e,t):{valid:!1,message:`${t.label}字段格式错误`}}return{cronValue:t,expression:(0,r.computed)(()=>u()),validation:(0,r.computed)(()=>m()),parse:d,generate:u,validate:m,handleDayWeekExclusion:p}}function m(e,t,n){if(t===`*`||t===`?`)return!0;if(t.includes(`/`)){let[r,i]=t.split(`/`),a=r===`*`?n:Number(r),o=Number(i);return o>0&&e>=a&&(e-a)%o===0}if(t.includes(`-`)){let[n,r]=t.split(`-`).map(Number);return e>=n&&e<=r}return t.split(`,`).some(t=>Number(t)===e)}function h(e,t){let[,n,r,i,a,o]=t;return m(e.getMinutes(),n,0)&&m(e.getHours(),r,0)&&m(e.getDate(),i,1)&&m(e.getMonth()+1,a,1)&&m(e.getDay()+1,o,1)}function g(e,t,n,r,i){for(let a of n){let n=new Date(t.getTime()+a*1e3);if(!(n.getTime()<=r.getTime())&&(e.push(n),e.length>=i))return!0}return!1}function _(e){return Number.isFinite(e)?Math.min(100,Math.max(1,Math.trunc(e))):10}function v(e){return e>0&&e%1e4==0}async function y(e,t,n=new Date,r=()=>!1){let i=e.trim().split(/\s+/);if(i.length!==6)return[];let a=Array.from({length:60},(e,t)=>t).filter(e=>m(e,i[0],0));if(a.length===0)return[];let o=_(t),s=[],c=new Date(n);c.setSeconds(0,0);for(let e=0;e<527040;e++){if(r())return[];if(h(c,i)&&g(s,c,a,n,o))return s;c.setTime(c.getTime()+6e4),v(e)&&await new Promise(e=>setTimeout(e,0))}return s}function b(e,t,n,i=(0,r.ref)(!0)){let a=(0,r.ref)([]),o=(0,r.ref)(!1),s=0,c=null;(0,r.watch)([e,n,t,i],()=>{s+=1;let r=s;if(c&&clearTimeout(c),!t.value.valid||!i.value){a.value=[],o.value=!1,c=null;return}a.value=[],o.value=!0,c=setTimeout(async()=>{let t=await y(e.value,n.value,new Date,()=>r!==s);r===s&&(a.value=t,o.value=!1,c=null)},0)},{immediate:!0}),(0,r.onScopeDispose)(()=>{s+=1,c&&clearTimeout(c)});function l(e){let t=e=>String(e).padStart(2,`0`);return`${e.getFullYear()}-${t(e.getMonth()+1)}-${t(e.getDate())} ${t(e.getHours())}:${t(e.getMinutes())}:${t(e.getSeconds())}`}function u(e){return[`周日`,`周一`,`周二`,`周三`,`周四`,`周五`,`周六`][e.getDay()]}return{nextExecutions:a,computing:o,formatDate:l,formatWeekDay:u}}function x(e){return d[Number(e)]||`周${e}`}function S(e,t){let n=(0,r.computed)(()=>t.value.valid?i(e.value):`表达式不合法`);function i(e){let t=e.trim().split(/\s+/);if(t.length!==6)return`表达式格式错误`;let[n,r,i,u,f,p]=t,m=[];return m.push(l(f)),p===`?`?m.push(c(u)):m.push(d(p)),m.push(s(i)),m.push(o(r)),m.push(a(n)),m.filter(Boolean).join(` `)+` 执行`}function a(e){return e===`0`?``:e===`*`?`每秒`:f(e,`秒`)}function o(e){return e===`*`?`每分钟`:e===`0`?``:f(e,`分`)}function s(e){return e===`*`?`每小时`:/^\d+$/.test(e)?`${e.padStart(2,`0`)}:`:f(e,`时`)}function c(e){if(e===`*`||e===`?`)return`每天`;if(/^\d+$/.test(e))return`每月 ${e} 号`;if(e.includes(`/`)){let[t,n]=e.split(`/`);return`从 ${t} 号开始每 ${n} 天`}if(e.includes(`-`)){let[t,n]=e.split(`-`);return`${t} 号到 ${n} 号`}return e.includes(`,`)?`每月 ${e} 号`:``}function l(e){if(e===`*`)return``;if(/^\d+$/.test(e)){let t=Number(e);return u[t]?`${u[t]}`:`${t} 月`}if(e.includes(`/`)){let[t,n]=e.split(`/`);return`从 ${t} 月开始每 ${n} 个月`}if(e.includes(`-`)){let[t,n]=e.split(`-`);return`${t} 月到 ${n} 月`}return e.includes(`,`)?e.split(`,`).map(e=>u[Number(e)]||`${e}月`).join(`、`):``}function d(e){return e===`*`||e===`?`?``:/^\d+$/.test(e)?`每${x(e)}`:e.includes(`/`)?`从${x(e.split(`/`)[0])}开始每 ${e.split(`/`)[1]} 天`:e.includes(`-`)?`${x(e.split(`-`)[0])}到${x(e.split(`-`)[1])}`:e.includes(`,`)?`每${e.split(`,`).map(x).join(`、`)}`:``}function f(e,t){if(e.includes(`/`)){let[n,r]=e.split(`/`);return`${n===`*`||n===`0`?``:`从第 ${n} ${t}开始`}每 ${r} ${t}`}if(e.includes(`-`)){let[n,r]=e.split(`-`);return`${n} ${t}到 ${r} ${t}`}return e.includes(`,`)?`第 ${e} ${t}`:/^\d+$/.test(e)?`${e.padStart(2,`0`)}`:``}return{description:n}}function C(e){let t=(0,r.computed)(()=>({disabled:e.config?.disabled??e.disabled??!1,height:e.config?.height??e.height??`auto`,showSecond:e.config?.showSecond??e.showSecond??!0,showTemplates:e.config?.showTemplates??e.showTemplates??!0,showPreview:e.config?.showPreview??e.showPreview??!0,templates:e.config?.templates??e.templates??l,previewCount:Math.min(50,Math.max(1,Number.isFinite(e.config?.previewCount??e.previewCount??5)?Math.trunc(e.config?.previewCount??e.previewCount??5):5))})),n=e.modelValue??c,i=p(),o=(0,r.ref)(n),s=(0,r.computed)(()=>o.value===i.expression.value?i.validation.value:i.validate(o.value)),u=(0,r.computed)(()=>o.value!==i.expression.value),d=(0,r.computed)(()=>t.value.showPreview&&!u.value),f=b(i.expression,s,(0,r.computed)(()=>t.value.previewCount),d),{description:m}=S(i.expression,s),h=(0,r.ref)(t.value.showSecond?`second`:`minute`),g=(0,r.computed)(()=>a.filter(e=>t.value.showSecond||e.type!==`second`)),_=(0,r.computed)(()=>a.find(e=>e.type===h.value)),v=(0,r.computed)(()=>i.cronValue.value[h.value]),y=(0,r.computed)(()=>i.expression.value.split(` `));function x(e=o.value){return o.value=e,i.parse(e)?(o.value=i.expression.value,!0):!1}function C(e){t.value.disabled||(i.cronValue.value[h.value]=e,(h.value===`day`||h.value===`week`)&&i.handleDayWeekExclusion(h.value),o.value=i.expression.value)}function w(){x(n)}return x(n),(0,r.watch)(()=>e.modelValue,e=>{e!==void 0&&e!==i.expression.value&&x(e)}),(0,r.watch)(()=>t.value.showSecond,e=>{!e&&h.value===`second`&&(h.value=`minute`)}),{options:t,draft:o,validation:s,pending:u,description:m,activeField:h,visibleFields:g,activeMeta:_,activeValue:v,segments:y,expression:i.expression,preview:f,apply:x,updateField:C,reset:w}}const w={class:`cron-field-editor`},ee={class:`cron-field-editor__heading`},T={class:`cron-field-editor__modes`,"aria-label":`执行规则模式`},E=[`disabled`,`aria-pressed`,`onClick`],D={class:`cron-field-editor__parameters`},O=[`disabled`],k={key:3},A=[`disabled`,`aria-label`,`aria-pressed`,`onClick`],j={class:`cron-field-editor__hint`},M=(0,r.defineComponent)({name:`CronFieldEditor`,__name:`CronFieldEditor`,props:{modelValue:{},meta:{},disabled:{type:Boolean}},emits:[`update:modelValue`],setup(e,{emit:t}){let n=e,a=t,o=(0,r.computed)(()=>[{value:`every`,label:`每个值`},{value:`step`,label:`固定间隔`},{value:`range`,label:`连续范围`},{value:`specific`,label:`指定值`},...n.meta.type===`day`||n.meta.type===`week`?[{value:`none`,label:`不指定`}]:[]]),s=(0,r.computed)(()=>Array.from({length:n.meta.max-n.meta.min+1},(e,t)=>{let r=n.meta.min+t;return{value:r,label:n.meta.valueLabels?.[r]??String(r).padStart(2,`0`)}})),c=(0,r.computed)(()=>new Set(s.value.filter(({value:e})=>{let t=n.modelValue;return t.mode===`every`?!0:t.mode===`range`?e>=t.rangeStart&&e<=t.rangeEnd:t.mode===`step`?e>=t.stepStart&&(e-t.stepStart)%Math.max(1,t.stepInterval)===0:t.mode===`specific`&&t.specificValues.includes(e)}).map(e=>e.value)));function l(e){n.disabled||a(`update:modelValue`,{...n.modelValue,specificValues:[...n.modelValue.specificValues],...e})}function u(e){let t=n.modelValue.mode===`specific`?[...n.modelValue.specificValues]:[],r=t.indexOf(e);r<0?t.push(e):t.splice(r,1),l({mode:`specific`,specificValues:t})}return(t,n)=>((0,r.openBlock)(),(0,r.createElementBlock)(`div`,w,[(0,r.createElementVNode)(`div`,ee,[(0,r.createElementVNode)(`strong`,null,(0,r.toDisplayString)(e.meta.label)+`的执行规则`,1),(0,r.createElementVNode)(`span`,null,`可选 `+(0,r.toDisplayString)(e.meta.min)+`–`+(0,r.toDisplayString)(e.meta.max),1)]),(0,r.createElementVNode)(`div`,T,[((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,null,(0,r.renderList)(o.value,t=>((0,r.openBlock)(),(0,r.createElementBlock)(`button`,{key:t.value,type:`button`,disabled:e.disabled,"aria-pressed":e.modelValue.mode===t.value,onClick:e=>l({mode:t.value})},(0,r.toDisplayString)(t.label),9,E))),128))]),(0,r.createElementVNode)(`div`,D,[e.modelValue.mode===`step`?((0,r.openBlock)(),(0,r.createElementBlock)(r.Fragment,{key:0},[n[5]||=(0,r.createElementVNode)(`span`,null,`从`,-1),(0,r.createVNode)((0,r.unref)(i.NInputNumber),{value:e.modelValue.stepStart,min:e.meta.min,max:e.meta.max,disabled:e.disabled,"input-props":{"aria-label":`起始值`},"onUpdate:value":n[0]||=t=>l({stepStart:t??e.meta.min})},null,8,[`value`,`min`,`max`,`disabled`]),(0,r.createElementVNode)(`span`,null,(0,r.toDisplayString)(e.meta.label)+`开始,每隔`,1),(0,r.createVNode)((0,r.unref)(i.NInputNumber),{value:e.modelValue.stepInterval,min:1,max:e.meta.max-e.meta.min+1,disabled:e.disabled,"input-props":{"aria-label":`间隔值`},"onUpdate:value":n[1]||=e=>l({stepInterval:e??1})},null,8,[`value`,`max`,`disabled`]),(0,r.createElementVNode)(`span`,null,(0,r.toDisplayString)(e.meta.label)+`执行`,1)],64)):e.modelValue.mode===`range`?((0,r.openBlock)(),(0,r.createElementBlock)(r.Fragment,{key:1},[n[6]||=(0,r.createElementVNode)(`span`,null,`从`,-1),(0,r.createVNode)((0,r.unref)(i.NInputNumber),{value:e.modelValue.rangeStart,min:e.meta.min,max:e.modelValue.rangeEnd,disabled:e.disabled,"input-props":{"aria-label":`范围起点`},"onUpdate:value":n[2]||=t=>l({rangeStart:t??e.meta.min})},null,8,[`value`,`min`,`max`,`disabled`]),n[7]||=(0,r.createElementVNode)(`span`,null,`到`,-1),(0,r.createVNode)((0,r.unref)(i.NInputNumber),{value:e.modelValue.rangeEnd,min:e.modelValue.rangeStart,max:e.meta.max,disabled:e.disabled,"input-props":{"aria-label":`范围终点`},"onUpdate:value":n[3]||=t=>l({rangeEnd:t??e.meta.max})},null,8,[`value`,`min`,`max`,`disabled`])],64)):e.modelValue.mode===`specific`?((0,r.openBlock)(),(0,r.createElementBlock)(r.Fragment,{key:2},[(0,r.createElementVNode)(`span`,null,`已选 `+(0,r.toDisplayString)(e.modelValue.specificValues.length)+` 个值`,1),(0,r.createElementVNode)(`button`,{type:`button`,disabled:e.disabled,onClick:n[4]||=e=>l({specificValues:[]})},`清空选择`,8,O)],64)):((0,r.openBlock)(),(0,r.createElementBlock)(`span`,k,(0,r.toDisplayString)(e.modelValue.mode===`none`?`该字段不参与匹配,由另一个日期字段决定执行日。`:`匹配每一个${e.meta.label}值,下面高亮的是当前规则覆盖的值。`),1))]),(0,r.createElementVNode)(`div`,{class:(0,r.normalizeClass)([`cron-field-editor__grid`,{"cron-field-editor__grid--week":e.meta.type===`week`}])},[((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,null,(0,r.renderList)(s.value,t=>((0,r.openBlock)(),(0,r.createElementBlock)(`button`,{key:t.value,type:`button`,class:(0,r.normalizeClass)([`cron-field-editor__cell`,{"cron-field-editor__cell--on":c.value.has(t.value)}]),disabled:e.disabled||e.modelValue.mode===`none`,"aria-label":`选择${e.meta.label}值 ${t.label}`,"aria-pressed":c.value.has(t.value),onClick:e=>u(t.value)},(0,r.toDisplayString)(t.label),11,A))),128))],2),(0,r.createElementVNode)(`p`,j,(0,r.toDisplayString)(e.modelValue.mode===`none`?`日与星期只指定一个,另一个使用 ?。`:`点选数值会切换到「指定值」模式,支持多选。`),1)]))}});var N=t.t(M,[[`__scopeId`,`data-v-ddf38d10`]]);const P={class:`cron-templates`},F={class:`cron-templates__header`},I={class:`cron-templates__cards`},L=[`disabled`,`aria-pressed`,`onClick`],R={class:`cron-templates__card-name`},z={class:`cron-templates__card-description`},B={class:`cron-templates__card-expr`},te=(0,r.defineComponent)({__name:`CronTemplates`,props:{templates:{},currentValue:{},disabled:{type:Boolean}},emits:[`select`],setup(t){return(n,i)=>((0,r.openBlock)(),(0,r.createElementBlock)(`div`,P,[(0,r.createElementVNode)(`div`,F,[(0,r.createVNode)(e.t,{name:`mdi:lightning-bolt`,size:15}),i[0]||=(0,r.createElementVNode)(`span`,null,`常用模板`,-1)]),(0,r.createElementVNode)(`div`,I,[((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,null,(0,r.renderList)(t.templates,e=>((0,r.openBlock)(),(0,r.createElementBlock)(`button`,{key:e.value,type:`button`,disabled:t.disabled,"aria-pressed":e.value===t.currentValue,class:(0,r.normalizeClass)([`cron-templates__card`,{"cron-templates__card--active":e.value===t.currentValue}]),onClick:t=>n.$emit(`select`,e.value)},[(0,r.createElementVNode)(`div`,R,(0,r.toDisplayString)(e.label),1),(0,r.createElementVNode)(`div`,z,(0,r.toDisplayString)(e.description),1),(0,r.createElementVNode)(`div`,B,(0,r.toDisplayString)(e.value),1)],10,L))),128))])]))}});var V=t.t(te,[[`__scopeId`,`data-v-d6c7e1be`]]);const H={class:`cron-preview`,"aria-label":`执行计划预览`},U={class:`cron-preview__next`,role:`status`,"aria-live":`polite`},W={key:1,class:`cron-preview__waiting`},G={key:2},K={key:0,class:`cron-preview__list`},q={class:`cron-preview__list-heading`},J={class:`cron-preview__idx`},Y=[`datetime`],X=(0,r.defineComponent)({name:`CronPreview`,__name:`CronPreview`,props:{nextExecutions:{},computing:{type:Boolean},count:{},validation:{},pending:{type:Boolean},formatDate:{type:Function},formatWeekDay:{type:Function}},setup(e){let{timeZone:t}=Intl.DateTimeFormat().resolvedOptions();return(i,a)=>((0,r.openBlock)(),(0,r.createElementBlock)(`aside`,H,[a[5]||=(0,r.createElementVNode)(`header`,null,[(0,r.createElementVNode)(`span`,{class:`cron-preview__step`},`02`),(0,r.createElementVNode)(`div`,null,[(0,r.createElementVNode)(`h3`,null,`确认执行计划`),(0,r.createElementVNode)(`p`,null,`按浏览器本地时区预览`)])],-1),(0,r.createElementVNode)(`div`,U,[a[1]||=(0,r.createElementVNode)(`span`,{class:`cron-preview__label`},`下一次执行`,-1),e.validation.valid&&!e.pending&&e.nextExecutions.length?((0,r.openBlock)(),(0,r.createElementBlock)(r.Fragment,{key:0},[(0,r.createElementVNode)(`strong`,null,(0,r.toDisplayString)(e.formatDate(e.nextExecutions[0])),1),(0,r.createElementVNode)(`span`,null,(0,r.toDisplayString)(e.formatWeekDay(e.nextExecutions[0])),1)],64)):e.computing?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,W,[(0,r.createVNode)(n.t,{size:32}),a[0]||=(0,r.createElementVNode)(`span`,null,`正在计算执行时间`,-1)])):((0,r.openBlock)(),(0,r.createElementBlock)(`p`,G,(0,r.toDisplayString)(e.validation.valid?e.pending?`应用表达式后更新计划`:`未来一年内没有匹配的执行时间`:`修正规则后重新预览`),1))]),e.validation.valid&&!e.pending&&e.nextExecutions.length?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,K,[(0,r.createElementVNode)(`div`,q,[a[2]||=(0,r.createTextVNode)(`接下来的执行时间 `,-1),(0,r.createElementVNode)(`span`,null,(0,r.toDisplayString)(e.nextExecutions.length)+` / `+(0,r.toDisplayString)(e.count),1)]),(0,r.createElementVNode)(`ol`,null,[((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,null,(0,r.renderList)(e.nextExecutions,(t,n)=>((0,r.openBlock)(),(0,r.createElementBlock)(`li`,{key:t.getTime()},[(0,r.createElementVNode)(`span`,J,(0,r.toDisplayString)(String(n+1).padStart(2,`0`)),1),(0,r.createElementVNode)(`time`,{datetime:t.toISOString()},(0,r.toDisplayString)(e.formatDate(t)),9,Y),(0,r.createElementVNode)(`span`,null,(0,r.toDisplayString)(e.formatWeekDay(t)),1)]))),128))])])):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createElementVNode)(`footer`,null,[a[3]||=(0,r.createElementVNode)(`span`,null,`时区`,-1),(0,r.createElementVNode)(`code`,null,(0,r.toDisplayString)((0,r.unref)(t)),1),a[4]||=(0,r.createElementVNode)(`p`,null,`仅预览时间,不会创建或启动定时任务。`,-1)])]))}});var Z=t.t(X,[[`__scopeId`,`data-v-023ff119`]]);const Q={class:`c-cron__header`},ne={class:`c-cron__title-row`},re={class:`c-cron__editor`},ie={class:`c-cron__segments`,"aria-label":`时间字段`},ae=[`aria-label`,`aria-pressed`,`onClick`],oe={class:`c-cron__segment-label`},$={class:`c-cron__expression`},se={class:`c-cron__expr-row`},ce=(0,r.defineComponent)({name:`C_Cron`,__name:`index`,props:{modelValue:{},config:{},disabled:{type:Boolean,default:!1},previewCount:{},showTemplates:{type:Boolean,default:!0},showPreview:{type:Boolean,default:!0},showSecond:{type:Boolean,default:!0},height:{},templates:{}},emits:[`update:modelValue`,`change`,`validation-change`],setup(e,{expose:t,emit:n}){let o=e,s=n,c=`cron-expression-${(0,r.useId)()}`,{options:l,expression:u,draft:d,validation:f,pending:p,description:m,activeField:h,activeMeta:g,activeValue:_,visibleFields:v,segments:y,preview:b,apply:x,updateField:S,reset:w}=C(o);return(0,r.watch)(u,e=>{s(`update:modelValue`,e),s(`change`,e)}),(0,r.watch)(f,e=>s(`validation-change`,e),{immediate:!0}),t({getValue:()=>u.value,setValue:x,reset:w,validate:()=>f.value}),(e,t)=>((0,r.openBlock)(),(0,r.createElementBlock)(`section`,{class:`c-cron`,style:(0,r.normalizeStyle)({height:typeof(0,r.unref)(l).height==`number`?`${(0,r.unref)(l).height}px`:(0,r.unref)(l).height}),"aria-label":`Cron 计划编辑器`},[(0,r.createElementVNode)(`header`,Q,[(0,r.createElementVNode)(`div`,ne,[t[3]||=(0,r.createElementVNode)(`div`,null,[(0,r.createElementVNode)(`span`,{class:`c-cron__eyebrow`},`SCHEDULE BUILDER`),(0,r.createElementVNode)(`h2`,null,`执行计划`),(0,r.createElementVNode)(`p`,null,`选择一个计划,再按需要调整时间。`)],-1),(0,r.createVNode)((0,r.unref)(i.NTag),{type:(0,r.unref)(f).valid?`success`:`error`,size:`small`},{default:(0,r.withCtx)(()=>[(0,r.createTextVNode)((0,r.toDisplayString)((0,r.unref)(p)&&(0,r.unref)(f).valid?`待应用`:(0,r.unref)(f).valid?`规则有效`:`请修正规则`),1)]),_:1},8,[`type`])]),(0,r.unref)(l).showTemplates?((0,r.openBlock)(),(0,r.createBlock)(V,{key:0,templates:(0,r.unref)(l).templates,"current-value":(0,r.unref)(u),disabled:(0,r.unref)(l).disabled,onSelect:(0,r.unref)(x)},null,8,[`templates`,`current-value`,`disabled`,`onSelect`])):(0,r.createCommentVNode)(`v-if`,!0)]),(0,r.createElementVNode)(`div`,{class:(0,r.normalizeClass)([`c-cron__workspace`,{"c-cron__workspace--compact":!(0,r.unref)(l).showPreview}])},[(0,r.createElementVNode)(`div`,re,[t[6]||=(0,r.createElementVNode)(`div`,{class:`c-cron__section-heading`},[(0,r.createElementVNode)(`span`,{class:`c-cron__step`},`01`),(0,r.createElementVNode)(`div`,null,[(0,r.createElementVNode)(`h3`,null,`配置执行时间`),(0,r.createElementVNode)(`p`,null,`先选时间字段,再设置规则。日与星期自动互斥。`)])],-1),(0,r.createElementVNode)(`div`,ie,[((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,null,(0,r.renderList)((0,r.unref)(v),e=>((0,r.openBlock)(),(0,r.createElementBlock)(`button`,{key:e.type,type:`button`,class:(0,r.normalizeClass)([`c-cron__segment`,{"c-cron__segment--active":(0,r.unref)(h)===e.type}]),"aria-label":`编辑${e.label}字段`,"aria-pressed":(0,r.unref)(h)===e.type,onClick:t=>h.value=e.type},[(0,r.createElementVNode)(`span`,oe,(0,r.toDisplayString)(e.label),1),(0,r.createElementVNode)(`code`,null,(0,r.toDisplayString)((0,r.unref)(y)[(0,r.unref)(a).indexOf(e)]||`未选择`),1)],10,ae))),128))]),(0,r.createVNode)(N,{"model-value":(0,r.unref)(_),meta:(0,r.unref)(g),disabled:(0,r.unref)(l).disabled,"onUpdate:modelValue":(0,r.unref)(S)},null,8,[`model-value`,`meta`,`disabled`,`onUpdate:modelValue`]),(0,r.createElementVNode)(`div`,$,[(0,r.createElementVNode)(`label`,{for:c},`Cron 表达式 · 秒 分 时 日 月 周`),(0,r.createElementVNode)(`div`,se,[(0,r.createVNode)((0,r.unref)(i.NInput),{value:(0,r.unref)(d),"onUpdate:value":t[0]||=e=>(0,r.isRef)(d)?d.value=e:null,"input-props":{id:c,"aria-label":`Cron 表达式`},status:(0,r.unref)(f).valid?void 0:`error`,disabled:(0,r.unref)(l).disabled,placeholder:`0 30 8 * * ?`,onKeydown:t[1]||=(0,r.withKeys)(e=>(0,r.unref)(x)(),[`enter`])},null,8,[`value`,`input-props`,`status`,`disabled`]),(0,r.createVNode)((0,r.unref)(i.NButton),{disabled:(0,r.unref)(l).disabled||!(0,r.unref)(f).valid||!(0,r.unref)(p),onClick:t[2]||=e=>(0,r.unref)(x)()},{default:(0,r.withCtx)(()=>[...t[4]||=[(0,r.createTextVNode)(`应用`,-1)]]),_:1},8,[`disabled`]),(0,r.createVNode)((0,r.unref)(i.NButton),{disabled:(0,r.unref)(l).disabled,onClick:(0,r.unref)(w)},{default:(0,r.withCtx)(()=>[...t[5]||=[(0,r.createTextVNode)(`重置`,-1)]]),_:1},8,[`disabled`,`onClick`])]),(0,r.createElementVNode)(`p`,{class:(0,r.normalizeClass)([`c-cron__feedback`,{"c-cron__feedback--error":!(0,r.unref)(f).valid}]),role:`status`},(0,r.toDisplayString)((0,r.unref)(f).valid?(0,r.unref)(p)?`表达式尚未应用,按 Enter 或点击应用更新计划。`:(0,r.unref)(m):(0,r.unref)(f).message),3)])]),(0,r.unref)(l).showPreview?((0,r.openBlock)(),(0,r.createBlock)(Z,{key:0,"next-executions":(0,r.unref)(b).nextExecutions.value,computing:(0,r.unref)(b).computing.value,count:(0,r.unref)(l).previewCount,validation:(0,r.unref)(f),pending:(0,r.unref)(p),"format-date":(0,r.unref)(b).formatDate,"format-week-day":(0,r.unref)(b).formatWeekDay},null,8,[`next-executions`,`computing`,`count`,`validation`,`pending`,`format-date`,`format-week-day`])):(0,r.createCommentVNode)(`v-if`,!0)],2)],4))}});var le=t.t(ce,[[`__scopeId`,`data-v-d5df827f`]]);Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return le}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return u}});
|
package/dist/C_Cron2.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./C_Icon2.js";import{t}from"./export-helper.js";import{Fragment as n,computed as r,createBlock as i,createCommentVNode as a,createElementBlock as o,createElementVNode as s,createTextVNode as c,createVNode as l,defineComponent as u,normalizeClass as d,normalizeStyle as f,onMounted as p,onScopeDispose as m,openBlock as h,ref as g,renderList as _,resolveComponent as v,toDisplayString as y,unref as b,vShow as ee,watch as x,withCtx as S,withDirectives as te,withKeys as ne}from"vue";import{NButton as re,NEmpty as C,NInput as ie,NInputNumber as ae,NRadioButton as oe,NRadioGroup as se,NScrollbar as w,NSpin as T,NTag as ce}from"naive-ui";const E=[{type:`second`,label:`秒`,min:0,max:59},{type:`minute`,label:`分`,min:0,max:59},{type:`hour`,label:`时`,min:0,max:23},{type:`day`,label:`日`,min:1,max:31},{type:`month`,label:`月`,min:1,max:12},{type:`week`,label:`周`,min:1,max:7,valueLabels:{1:`周日`,2:`周一`,3:`周二`,4:`周三`,5:`周四`,6:`周五`,7:`周六`}}],D={mode:`every`,rangeStart:0,rangeEnd:0,stepStart:0,stepInterval:1,specificValues:[]},O={second:{...D,rangeEnd:59},minute:{...D,rangeEnd:59},hour:{...D,rangeEnd:23},day:{...D,rangeStart:1,rangeEnd:31},month:{...D,rangeStart:1,rangeEnd:12},week:{...D,mode:`none`,rangeStart:1,rangeEnd:7}},k=`0 0 0 * * ?`,A=[{label:`每秒执行`,value:`* * * * * ?`,description:`每秒执行一次`,icon:`mdi:timer-sand`},{label:`每分钟执行`,value:`0 * * * * ?`,description:`每分钟第 0 秒执行`,icon:`mdi:clock-outline`},{label:`每小时执行`,value:`0 0 * * * ?`,description:`每小时整点执行`,icon:`mdi:clock-time-twelve-outline`},{label:`每天 0 点`,value:`0 0 0 * * ?`,description:`每天凌晨 00:00 执行`,icon:`mdi:weather-night`},{label:`每天 8:30`,value:`0 30 8 * * ?`,description:`每天早上 08:30 执行`,icon:`mdi:weather-sunny`},{label:`每天 12:00`,value:`0 0 12 * * ?`,description:`每天中午 12:00 执行`,icon:`mdi:food`},{label:`工作日 9:00`,value:`0 0 9 ? * 2-6`,description:`周一至周五 09:00 执行`,icon:`mdi:briefcase-outline`},{label:`每周一 0 点`,value:`0 0 0 ? * 2`,description:`每周一凌晨 00:00 执行`,icon:`mdi:calendar-week`},{label:`每月 1 号 0 点`,value:`0 0 0 1 * ?`,description:`每月 1 号凌晨 00:00 执行`,icon:`mdi:calendar-month`},{label:`每 5 分钟`,value:`0 0/5 * * * ?`,description:`每隔 5 分钟执行一次`,icon:`mdi:timer-5`},{label:`每 30 分钟`,value:`0 0/30 * * * ?`,description:`每隔 30 分钟执行一次`,icon:`mdi:timer-30`},{label:`每 2 小时`,value:`0 0 0/2 * * ?`,description:`每隔 2 小时执行一次`,icon:`mdi:timer-2`}],j={1:`一月`,2:`二月`,3:`三月`,4:`四月`,5:`五月`,6:`六月`,7:`七月`,8:`八月`,9:`九月`,10:`十月`,11:`十一月`,12:`十二月`},M={1:`周日`,2:`周一`,3:`周二`,4:`周三`,5:`周四`,6:`周五`,7:`周六`},N=[`second`,`minute`,`hour`,`day`,`month`,`week`];function P(){let e=structuredClone(O);for(let t of N)e[t].specificValues=[];let t=g(e);function n(e){switch(e.mode){case`every`:return`*`;case`range`:return`${e.rangeStart}-${e.rangeEnd}`;case`step`:return`${e.stepStart}/${e.stepInterval}`;case`specific`:return e.specificValues.length>0?[...e.specificValues].sort((e,t)=>e-t).join(`,`):`*`;case`none`:return`?`;default:return`*`}}function i(e,t,n={}){return{mode:t,rangeStart:e.min,rangeEnd:e.max,stepStart:e.min,stepInterval:1,specificValues:[],...n}}function a(e,t){let[n,r]=e.split(`/`).map(Number);return i(t,`step`,{stepStart:isNaN(n)?t.min:n,stepInterval:isNaN(r)?1:r})}function o(e,t){let[n,r]=e.split(`-`).map(Number);return i(t,`range`,{rangeStart:isNaN(n)?t.min:n,rangeEnd:isNaN(r)?t.max:r})}function s(e,t){let n=E.find(e=>e.type===t);if(e===`?`)return i(n,`none`);if(e===`*`)return i(n,`every`);if(e.includes(`/`))return a(e,n);if(e.includes(`-`)&&!e.includes(`,`))return o(e,n);let r=e.split(`,`).map(Number).filter(e=>!isNaN(e));return r.length>0?i(n,`specific`,{specificValues:r}):i(n,`every`)}function c(){return N.map(e=>n(t.value[e])).join(` `)}function l(e){if(!d(e).valid)return!1;let n=e.trim().split(/\s+/);return N.forEach((e,r)=>{t.value[e]=s(n[r],e)}),!0}function u(e){e===`day`?t.value.day.mode!==`none`&&(t.value.week={...t.value.week,mode:`none`}):t.value.week.mode!==`none`&&(t.value.day={...t.value.day,mode:`none`})}function d(e){let t=(e??c()).trim().split(/\s+/);if(t.length!==6)return{valid:!1,message:`表达式应包含 6 个字段,当前为 ${t.length} 个`};let n=t[3],r=t[5];if(n!==`?`&&r!==`?`)return{valid:!1,message:`日和周不能同时指定,其中一个必须为 ?`,field:`day`};if(n===`?`&&r===`?`)return{valid:!1,message:`日和周不能同时为 ?,至少指定一个`,field:`day`};for(let e=0;e<N.length;e++){let n=N[e],r=t[e],i=h(r,E.find(e=>e.type===n));if(!i.valid)return{...i,field:n}}return{valid:!0,message:`表达式合法`}}function f(e,t){let[n,r]=e.split(`/`),i=n===`*`?t.min:Number(n),a=Number(r);return!Number.isInteger(i)||!Number.isInteger(a)?{valid:!1,message:`${t.label}字段步进格式错误`}:i<t.min||i>t.max?{valid:!1,message:`${t.label}字段步进起始值超出范围 (${t.min}-${t.max})`}:a<1?{valid:!1,message:`${t.label}字段步进间隔必须大于 0`}:{valid:!0,message:``}}function p(e,t){let[n,r]=e.split(`-`).map(Number);return!Number.isInteger(n)||!Number.isInteger(r)?{valid:!1,message:`${t.label}字段范围格式错误`}:n<t.min||r>t.max?{valid:!1,message:`${t.label}字段范围超出 (${t.min}-${t.max})`}:n>r?{valid:!1,message:`${t.label}字段范围起始不能大于结束`}:{valid:!0,message:``}}function m(e,t){let n=e.split(`,`).map(Number);return n.some(e=>!Number.isInteger(e))?{valid:!1,message:`${t.label}字段包含非数字字符`}:n.some(e=>e<t.min||e>t.max)?{valid:!1,message:`${t.label}字段值超出范围 (${t.min}-${t.max})`}:{valid:!0,message:``}}function h(e,t){return e===`*`?{valid:!0,message:``}:e===`?`?t.type===`day`||t.type===`week`?{valid:!0,message:``}:{valid:!1,message:`${t.label}字段不能使用 ?`}:/^(\*|\d+)\/\d+$/.test(e)?f(e,t):/^\d+-\d+$/.test(e)?p(e,t):/^\d+(,\d+)*$/.test(e)?m(e,t):{valid:!1,message:`${t.label}字段格式错误`}}return{cronValue:t,expression:r(()=>c()),validation:r(()=>d()),parse:l,generate:c,validate:d,handleDayWeekExclusion:u}}function F(e,t,n){if(t===`*`||t===`?`)return!0;if(t.includes(`/`)){let[r,i]=t.split(`/`),a=r===`*`?n:Number(r),o=Number(i);return o>0&&e>=a&&(e-a)%o===0}if(t.includes(`-`)){let[n,r]=t.split(`-`).map(Number);return e>=n&&e<=r}return t.split(`,`).some(t=>Number(t)===e)}function le(e,t){let[,n,r,i,a,o]=t;return F(e.getMinutes(),n,0)&&F(e.getHours(),r,0)&&F(e.getDate(),i,1)&&F(e.getMonth()+1,a,1)&&F(e.getDay()+1,o,1)}function ue(e,t,n,r,i){for(let a of n){let n=new Date(t.getTime()+a*1e3);if(!(n.getTime()<=r.getTime())&&(e.push(n),e.length>=i))return!0}return!1}function de(e){return Number.isFinite(e)?Math.min(100,Math.max(1,Math.trunc(e))):10}function I(e){return e>0&&e%1e4==0}async function L(e,t,n=new Date,r=()=>!1){let i=e.trim().split(/\s+/);if(i.length!==6)return[];let a=Array.from({length:60},(e,t)=>t).filter(e=>F(e,i[0],0));if(a.length===0)return[];let o=de(t),s=[],c=new Date(n);c.setSeconds(0,0);for(let e=0;e<527040;e++){if(r())return[];if(le(c,i)&&ue(s,c,a,n,o))return s;c.setTime(c.getTime()+6e4),I(e)&&await new Promise(e=>setTimeout(e,0))}return s}function R(e,t,n){let r=g([]),i=g(!1),a=0,o=null;x([e,n,t],()=>{a+=1;let s=a;if(o&&clearTimeout(o),!t.value.valid){r.value=[],i.value=!1,o=null;return}i.value=!0,o=setTimeout(async()=>{let t=await L(e.value,n.value,new Date,()=>s!==a);s===a&&(r.value=t,i.value=!1,o=null)},0)},{immediate:!0}),m(()=>{a+=1,o&&clearTimeout(o)});function s(e){let t=e=>String(e).padStart(2,`0`);return`${e.getFullYear()}-${t(e.getMonth()+1)}-${t(e.getDate())} ${t(e.getHours())}:${t(e.getMinutes())}:${t(e.getSeconds())}`}function c(e){return[`周日`,`周一`,`周二`,`周三`,`周四`,`周五`,`周六`][e.getDay()]}return{nextExecutions:r,computing:i,formatDate:s,formatWeekDay:c}}function z(e){return M[Number(e)]||`周${e}`}function B(e,t){let n=r(()=>t.value.valid?i(e.value):`表达式不合法`);function i(e){let t=e.trim().split(/\s+/);if(t.length!==6)return`表达式格式错误`;let[n,r,i,d,f,p]=t,m=[];return m.push(l(f)),p===`?`?m.push(c(d)):m.push(u(p)),m.push(s(i)),m.push(o(r)),m.push(a(n)),m.filter(Boolean).join(` `)+` 执行`}function a(e){return e===`0`?``:e===`*`?`每秒`:d(e,`秒`)}function o(e){return e===`*`?`每分钟`:e===`0`?``:d(e,`分`)}function s(e){return e===`*`?`每小时`:/^\d+$/.test(e)?`${e.padStart(2,`0`)}:`:d(e,`时`)}function c(e){if(e===`*`||e===`?`)return`每天`;if(/^\d+$/.test(e))return`每月 ${e} 号`;if(e.includes(`/`)){let[t,n]=e.split(`/`);return`从 ${t} 号开始每 ${n} 天`}if(e.includes(`-`)){let[t,n]=e.split(`-`);return`${t} 号到 ${n} 号`}return e.includes(`,`)?`每月 ${e} 号`:``}function l(e){if(e===`*`)return``;if(/^\d+$/.test(e)){let t=Number(e);return j[t]?`${j[t]}`:`${t} 月`}if(e.includes(`/`)){let[t,n]=e.split(`/`);return`从 ${t} 月开始每 ${n} 个月`}if(e.includes(`-`)){let[t,n]=e.split(`-`);return`${t} 月到 ${n} 月`}return e.includes(`,`)?e.split(`,`).map(e=>j[Number(e)]||`${e}月`).join(`、`):``}function u(e){return e===`*`||e===`?`?``:/^\d+$/.test(e)?`每${z(e)}`:e.includes(`/`)?`从${z(e.split(`/`)[0])}开始每 ${e.split(`/`)[1]} 天`:e.includes(`-`)?`${z(e.split(`-`)[0])}到${z(e.split(`-`)[1])}`:e.includes(`,`)?`每${e.split(`,`).map(z).join(`、`)}`:``}function d(e,t){if(e.includes(`/`)){let[n,r]=e.split(`/`);return`${n===`*`||n===`0`?``:`从第 ${n} ${t}开始`}每 ${r} ${t}`}if(e.includes(`-`)){let[n,r]=e.split(`-`);return`${n} ${t}到 ${r} ${t}`}return e.includes(`,`)?`第 ${e} ${t}`:/^\d+$/.test(e)?`${e.padStart(2,`0`)}`:``}return{description:n}}const V={class:`cron-field-editor`},H=[`disabled`,`aria-pressed`,`onClick`];var fe=t(u({__name:`CronFieldEditor`,props:{modelValue:{},meta:{},disabled:{type:Boolean}},emits:[`update:modelValue`],setup(e,{emit:t}){let i=e,a=t,c=r(()=>{switch(i.meta.type){case`second`:case`minute`:return 10;case`hour`:return 12;case`day`:return 7;case`month`:return 6;case`week`:return 7;default:return 10}}),l=r(()=>{let e=[];for(let t=i.meta.min;t<=i.meta.max;t++)e.push({value:t,label:i.meta.valueLabels?.[t]??String(t)});return e}),u=r(()=>{let{modelValue:e,meta:t}=i,n=new Set;switch(e.mode){case`every`:for(let e=t.min;e<=t.max;e++)n.add(e);break;case`none`:break;case`range`:for(let t=e.rangeStart;t<=e.rangeEnd;t++)n.add(t);break;case`step`:for(let r=e.stepStart;r<=t.max;r+=Math.max(1,e.stepInterval))n.add(r);break;case`specific`:e.specificValues.forEach(e=>n.add(e));break}return n});function p(e){if(i.disabled||i.modelValue.mode!==`specific`)return;let t=[...i.modelValue.specificValues],n=t.indexOf(e);n>=0?t.splice(n,1):t.push(e),a(`update:modelValue`,{...i.modelValue,specificValues:t})}return(t,r)=>(h(),o(`div`,V,[s(`div`,{class:`cron-field-editor__grid`,style:f({"--cols":c.value})},[(h(!0),o(n,null,_(l.value,t=>(h(),o(`button`,{key:t.value,type:`button`,class:d([`cron-field-editor__cell`,{"cron-field-editor__cell--on":u.value.has(t.value),"cron-field-editor__cell--pick":e.modelValue.mode===`specific`}]),disabled:e.disabled||e.modelValue.mode!==`specific`,"aria-pressed":e.modelValue.mode===`specific`?u.value.has(t.value):void 0,onClick:e=>p(t.value)},y(t.label),11,H))),128))],4)]))}}),[[`__scopeId`,`data-v-153f242b`]]);const U={class:`cron-preview`},W={class:`cron-preview__header`},G={key:0,class:`cron-preview__list`},K={class:`cron-preview__idx`},q={class:`cron-preview__date`},J={class:`cron-preview__week`};var pe=t(u({__name:`CronPreview`,props:{nextExecutions:{},computing:{type:Boolean},count:{},formatDate:{type:Function},formatWeekDay:{type:Function}},setup(t){return(r,c)=>{let u=T,d=C,f=w;return h(),o(`div`,U,[s(`div`,W,[l(e,{name:`mdi:calendar-clock`,size:15}),c[0]||=s(`span`,null,`未来执行`,-1),t.computing?(h(),i(u,{key:0,size:14})):a(`v-if`,!0)]),l(f,{style:{"max-height":`220px`}},{default:S(()=>[t.nextExecutions.length>0?(h(),o(`div`,G,[(h(!0),o(n,null,_(t.nextExecutions,(e,n)=>(h(),o(`div`,{key:n,class:`cron-preview__item`},[s(`span`,K,y(n+1),1),s(`span`,q,y(t.formatDate(e)),1),s(`span`,J,y(t.formatWeekDay(e)),1)]))),128))])):(h(),i(d,{key:1,size:`small`,description:`暂无匹配`}))]),_:1})])}}}),[[`__scopeId`,`data-v-15b88794`]]);const Y={class:`cron-templates`},X={class:`cron-templates__header`},me={class:`cron-templates__cards`},he=[`disabled`,`aria-pressed`,`onClick`],ge={class:`cron-templates__card-name`},Z={class:`cron-templates__card-expr`};var _e=t(u({__name:`CronTemplates`,props:{templates:{},currentValue:{},disabled:{type:Boolean}},emits:[`select`],setup(t){return(r,i)=>(h(),o(`div`,Y,[s(`div`,X,[l(e,{name:`mdi:lightning-bolt`,size:15}),i[0]||=s(`span`,null,`常用模板`,-1)]),s(`div`,me,[(h(!0),o(n,null,_(t.templates,e=>(h(),o(`button`,{key:e.value,type:`button`,disabled:t.disabled,"aria-pressed":e.value===t.currentValue,class:d([`cron-templates__card`,{"cron-templates__card--active":e.value===t.currentValue}]),onClick:t=>r.$emit(`select`,e.value)},[s(`div`,ge,y(e.label),1),s(`div`,Z,y(e.value),1)],10,he))),128))])]))}}),[[`__scopeId`,`data-v-1b50e9c2`]]);const ve={class:`c-cron__header`},ye={class:`c-cron__title-row`},be={class:`c-cron__title`},xe={class:`c-cron__segments`},Se=[`aria-pressed`,`onClick`],Ce={class:`c-cron__segment-value`},we={class:`c-cron__segment-label`},Te={class:`c-cron__expr-row`},Ee={class:`c-cron__expr-desc`},De={key:0,class:`c-cron__description`},Oe={key:1,class:`c-cron__error`},ke={class:`c-cron__body`},Ae={class:`c-cron__main`},je={class:`c-cron__panel`},Me={key:0,class:`c-cron__config`},Ne={class:`c-cron__config-row`},Pe={key:1,class:`c-cron__config`},Fe={class:`c-cron__config-row`},Ie={key:2,class:`c-cron__quick`},Le=[`disabled`],Re=[`disabled`],ze={key:0,class:`c-cron__quick-count`},Be={key:1,class:`c-cron__error`},Ve={key:0,class:`c-cron__footer`};var Q=t(u({name:`C_Cron`,__name:`index`,props:{modelValue:{default:k},disabled:{type:Boolean,default:!1},previewCount:{default:10},showTemplates:{type:Boolean,default:!0},showPreview:{type:Boolean,default:!0},showSecond:{type:Boolean,default:!0},height:{default:`auto`}},emits:[`update:modelValue`,`change`,`validation-change`],setup(t,{expose:u,emit:m}){let v=t,C=m,{cronValue:w,expression:T,validation:D,parse:O,validate:j,handleDayWeekExclusion:M}=P(),{nextExecutions:N,computing:F,formatDate:le,formatWeekDay:ue}=R(T,D,r(()=>v.previewCount??10)),{description:de}=B(T,D),I=g(v.modelValue||k),L=g(null),z=r(()=>L.value??D.value),V=g(v.showSecond?`second`:`minute`),H=r(()=>typeof v.height==`number`?`${v.height}px`:v.height),U=r(()=>v.showSecond?E:E.filter(e=>e.type!==`second`)),W=r(()=>E.find(e=>e.type===V.value)),G=r(()=>w.value[V.value]);function K(e){switch(e.mode){case`every`:return`*`;case`none`:return`?`;case`range`:return`${e.rangeStart}-${e.rangeEnd}`;case`step`:return`${e.stepStart}/${e.stepInterval}`;case`specific`:return e.specificValues.length>0?[...e.specificValues].sort((e,t)=>e-t).join(`,`):`*`;default:return`*`}}let q=r(()=>{let e={};for(let t of E)e[t.type]=K(w.value[t.type]);return e});p(()=>{Q(v.modelValue||k)}),x(()=>v.modelValue,e=>{e!==T.value&&Q(e||k)}),x(()=>v.showSecond,e=>{!e&&V.value===`second`&&(V.value=`minute`)}),x(T,e=>{I.value=e,L.value=null,C(`update:modelValue`,e),C(`change`,e)}),x(z,e=>{C(`validation-change`,e)});function J(e,t){v.disabled||(L.value=null,w.value[e]=t,(e===`day`||e===`week`)&&M(e))}function Y(e){J(V.value,{...G.value,mode:e})}function X(e){J(V.value,{...G.value,...e})}function me(){let{min:e,max:t}=W.value,n=Array.from({length:t-e+1},(t,n)=>e+n);J(V.value,{...G.value,specificValues:n})}function he(){J(V.value,{...G.value,specificValues:[]})}function ge(e){I.value=e,L.value=j(e)}function Z(){v.disabled||Q(I.value.trim())}function Q(e){I.value=e;let t=j(e);L.value=t.valid?null:t,t.valid&&O(e)}function He(e){v.disabled||Q(e)}function $(){Q(v.modelValue||k)}return u({getValue:()=>T.value,setValue:e=>{Q(e)},reset:$,validate:()=>z.value}),(t,r)=>{let u=ce,p=ie,m=re,g=oe,x=se,C=ae;return h(),o(`div`,{class:`c-cron`,style:f({height:H.value})},[a(` ═══════ 顶部 ═══════ `),s(`div`,ve,[a(` 标题行 `),s(`div`,ye,[s(`div`,be,[l(e,{name:`mdi:clock-edit-outline`,size:18}),r[4]||=s(`span`,null,`Cron 表达式`,-1)]),l(u,{type:z.value.valid?`success`:`error`,size:`small`,round:``},{icon:S(()=>[l(e,{name:z.value.valid?`mdi:check-circle`:`mdi:alert-circle`},null,8,[`name`])]),default:S(()=>[c(` `+y(z.value.valid?`合法`:`错误`),1)]),_:1},8,[`type`])]),a(` 分段式字段选择器 `),s(`div`,xe,[(h(!0),o(n,null,_(U.value,e=>(h(),o(`button`,{key:e.type,type:`button`,class:d([`c-cron__segment`,{"c-cron__segment--active":V.value===e.type,"c-cron__segment--wildcard":q.value[e.type]===`*`||q.value[e.type]===`?`}]),"aria-pressed":V.value===e.type,onClick:t=>V.value=e.type},[s(`div`,Ce,y(q.value[e.type]),1),s(`div`,we,y(e.label),1)],10,Se))),128))]),a(` 表达式行:输入 + 重置 + 描述 `),s(`div`,Te,[l(p,{value:I.value,status:z.value.valid?void 0:`error`,placeholder:`秒 分 时 日 月 周`,disabled:v.disabled,font:`mono`,size:`small`,clearable:``,class:`c-cron__expr-input`,"onUpdate:value":ge,onBlur:Z,onKeydown:ne(Z,[`enter`])},{prefix:S(()=>[l(e,{name:`mdi:console`,size:14,style:{opacity:`0.4`}})]),_:1},8,[`value`,`status`,`disabled`]),l(m,{size:`small`,quaternary:``,disabled:v.disabled,onClick:$},{icon:S(()=>[l(e,{name:`mdi:refresh`})]),_:1},8,[`disabled`]),s(`div`,Ee,[z.value.valid?(h(),o(`span`,De,y(b(de)),1)):(h(),o(`span`,Oe,y(z.value.message),1))])])]),a(` ═══════ 主内容 ═══════ `),s(`div`,ke,[a(` 左侧:值网格 `),s(`div`,Ae,[(h(!0),o(n,null,_(U.value,e=>te((h(),i(fe,{key:e.type,"model-value":b(w)[e.type],meta:e,disabled:v.disabled,"onUpdate:modelValue":t=>J(e.type,t)},null,8,[`model-value`,`meta`,`disabled`,`onUpdate:modelValue`])),[[ee,V.value===e.type]])),128))]),a(` 右侧:控制面板 `),s(`div`,je,[l(x,{value:G.value.mode,disabled:v.disabled,size:`small`,"onUpdate:value":Y},{default:S(()=>[l(g,{value:`every`},{default:S(()=>[c(` 每`+y(W.value.label),1)]),_:1}),V.value===`day`||V.value===`week`?(h(),i(g,{key:0,value:`none`},{default:S(()=>[...r[5]||=[c(` 不指定 `,-1)]]),_:1})):a(`v-if`,!0),l(g,{value:`range`},{default:S(()=>[...r[6]||=[c(`范围`,-1)]]),_:1}),l(g,{value:`step`},{default:S(()=>[...r[7]||=[c(`步进`,-1)]]),_:1}),l(g,{value:`specific`},{default:S(()=>[...r[8]||=[c(`指定`,-1)]]),_:1})]),_:1},8,[`value`,`disabled`]),a(` 范围配置 `),G.value.mode===`range`?(h(),o(`div`,Me,[s(`div`,Ne,[r[9]||=s(`span`,null,`从`,-1),l(C,{value:G.value.rangeStart,min:W.value.min,max:W.value.max,size:`small`,"show-button":!1,disabled:v.disabled,class:`c-cron__config-num`,"onUpdate:value":r[0]||=e=>X({rangeStart:e??W.value.min})},null,8,[`value`,`min`,`max`,`disabled`]),r[10]||=s(`span`,null,`到`,-1),l(C,{value:G.value.rangeEnd,min:W.value.min,max:W.value.max,size:`small`,"show-button":!1,disabled:v.disabled,class:`c-cron__config-num`,"onUpdate:value":r[1]||=e=>X({rangeEnd:e??W.value.max})},null,8,[`value`,`min`,`max`,`disabled`])])])):a(`v-if`,!0),a(` 步进配置 `),G.value.mode===`step`?(h(),o(`div`,Pe,[s(`div`,Fe,[r[11]||=s(`span`,null,`从第`,-1),l(C,{value:G.value.stepStart,min:W.value.min,max:W.value.max,size:`small`,"show-button":!1,disabled:v.disabled,class:`c-cron__config-num`,"onUpdate:value":r[2]||=e=>X({stepStart:e??W.value.min})},null,8,[`value`,`min`,`max`,`disabled`]),s(`span`,null,y(W.value.label)+`起,每`,1),l(C,{value:G.value.stepInterval,min:1,max:W.value.max-W.value.min+1,size:`small`,"show-button":!1,disabled:v.disabled,class:`c-cron__config-num`,"onUpdate:value":r[3]||=e=>X({stepInterval:e??1})},null,8,[`value`,`max`,`disabled`]),s(`span`,null,y(W.value.label)+`执行`,1)])])):a(`v-if`,!0),a(` 指定快捷操作 `),G.value.mode===`specific`?(h(),o(`div`,Ie,[s(`button`,{type:`button`,disabled:v.disabled,onClick:me},`全选`,8,Le),r[12]||=s(`span`,{class:`c-cron__quick-sep`},`·`,-1),s(`button`,{type:`button`,disabled:v.disabled,onClick:he},`清空`,8,Re),G.value.specificValues.length>0?(h(),o(`span`,ze,` 已选 `+y(G.value.specificValues.length),1)):a(`v-if`,!0)])):a(`v-if`,!0),a(` 执行预览 `),v.showPreview?(h(),o(n,{key:3},[r[13]||=s(`div`,{class:`c-cron__panel-line`},null,-1),z.value.valid?(h(),i(pe,{key:0,"next-executions":b(N),computing:b(F),count:v.previewCount??5,"format-date":b(le),"format-week-day":b(ue)},null,8,[`next-executions`,`computing`,`count`,`format-date`,`format-week-day`])):(h(),o(`div`,Be,`请先修正表达式`))],64)):a(`v-if`,!0)])]),a(` ═══════ 底部模板 ═══════ `),v.showTemplates?(h(),o(`div`,Ve,[l(_e,{templates:b(A),"current-value":b(T),disabled:v.disabled,onSelect:He},null,8,[`templates`,`current-value`,`disabled`])])):a(`v-if`,!0)],4)}}}),[[`__scopeId`,`data-v-f4b0a99d`]]);export{E as a,O as c,M as d,P as i,D as l,B as n,A as o,R as r,k as s,Q as t,j as u};
|
|
1
|
+
import{t as e}from"./C_Icon2.js";import{t}from"./export-helper.js";import{t as n}from"./C_Loading2.js";import{Fragment as r,computed as i,createBlock as a,createCommentVNode as o,createElementBlock as s,createElementVNode as c,createTextVNode as l,createVNode as u,defineComponent as d,isRef as f,normalizeClass as p,normalizeStyle as m,onScopeDispose as h,openBlock as g,ref as _,renderList as v,toDisplayString as y,unref as b,useId as x,watch as S,withCtx as C,withKeys as ee}from"vue";import{NButton as w,NInput as T,NInputNumber as E,NTag as D}from"naive-ui";const O=[{type:`second`,label:`秒`,min:0,max:59},{type:`minute`,label:`分`,min:0,max:59},{type:`hour`,label:`时`,min:0,max:23},{type:`day`,label:`日`,min:1,max:31},{type:`month`,label:`月`,min:1,max:12},{type:`week`,label:`周`,min:1,max:7,valueLabels:{1:`周日`,2:`周一`,3:`周二`,4:`周三`,5:`周四`,6:`周五`,7:`周六`}}],k={mode:`every`,rangeStart:0,rangeEnd:0,stepStart:0,stepInterval:1,specificValues:[]},A={second:{...k,rangeEnd:59},minute:{...k,rangeEnd:59},hour:{...k,rangeEnd:23},day:{...k,rangeStart:1,rangeEnd:31},month:{...k,rangeStart:1,rangeEnd:12},week:{...k,mode:`none`,rangeStart:1,rangeEnd:7}},j=`0 0 0 * * ?`,M=[{label:`每秒执行`,value:`* * * * * ?`,description:`每秒执行一次`,icon:`mdi:timer-sand`},{label:`每分钟执行`,value:`0 * * * * ?`,description:`每分钟第 0 秒执行`,icon:`mdi:clock-outline`},{label:`每小时执行`,value:`0 0 * * * ?`,description:`每小时整点执行`,icon:`mdi:clock-time-twelve-outline`},{label:`每天 0 点`,value:`0 0 0 * * ?`,description:`每天凌晨 00:00 执行`,icon:`mdi:weather-night`},{label:`每天 8:30`,value:`0 30 8 * * ?`,description:`每天早上 08:30 执行`,icon:`mdi:weather-sunny`},{label:`每天 12:00`,value:`0 0 12 * * ?`,description:`每天中午 12:00 执行`,icon:`mdi:food`},{label:`工作日 9:00`,value:`0 0 9 ? * 2-6`,description:`周一至周五 09:00 执行`,icon:`mdi:briefcase-outline`},{label:`每周一 0 点`,value:`0 0 0 ? * 2`,description:`每周一凌晨 00:00 执行`,icon:`mdi:calendar-week`},{label:`每月 1 号 0 点`,value:`0 0 0 1 * ?`,description:`每月 1 号凌晨 00:00 执行`,icon:`mdi:calendar-month`},{label:`每 5 分钟`,value:`0 0/5 * * * ?`,description:`每隔 5 分钟执行一次`,icon:`mdi:timer-5`},{label:`每 30 分钟`,value:`0 0/30 * * * ?`,description:`每隔 30 分钟执行一次`,icon:`mdi:timer-30`},{label:`每 2 小时`,value:`0 0 0/2 * * ?`,description:`每隔 2 小时执行一次`,icon:`mdi:timer-2`}],N={1:`一月`,2:`二月`,3:`三月`,4:`四月`,5:`五月`,6:`六月`,7:`七月`,8:`八月`,9:`九月`,10:`十月`,11:`十一月`,12:`十二月`},P={1:`周日`,2:`周一`,3:`周二`,4:`周三`,5:`周四`,6:`周五`,7:`周六`},F=[`second`,`minute`,`hour`,`day`,`month`,`week`];function I(){let e=structuredClone(A);for(let t of F)e[t].specificValues=[];let t=_(e);function n(e){switch(e.mode){case`every`:return`*`;case`range`:return`${e.rangeStart}-${e.rangeEnd}`;case`step`:return`${e.stepStart}/${e.stepInterval}`;case`specific`:return e.specificValues.length>0?[...e.specificValues].sort((e,t)=>e-t).join(`,`):``;case`none`:return`?`;default:return`*`}}function r(e,t,n={}){return{mode:t,rangeStart:e.min,rangeEnd:e.max,stepStart:e.min,stepInterval:1,specificValues:[],...n}}function a(e,t){let[n,i]=e.split(`/`).map(Number);return r(t,`step`,{stepStart:isNaN(n)?t.min:n,stepInterval:isNaN(i)?1:i})}function o(e,t){let[n,i]=e.split(`-`).map(Number);return r(t,`range`,{rangeStart:isNaN(n)?t.min:n,rangeEnd:isNaN(i)?t.max:i})}function s(e,t){let n=O.find(e=>e.type===t);if(e===`?`)return r(n,`none`);if(e===`*`)return r(n,`every`);if(e.includes(`/`))return a(e,n);if(e.includes(`-`)&&!e.includes(`,`))return o(e,n);let i=e.split(`,`).map(Number).filter(e=>!isNaN(e));return i.length>0?r(n,`specific`,{specificValues:i}):r(n,`every`)}function c(){return F.map(e=>n(t.value[e])).join(` `)}function l(e){if(!d(e).valid)return!1;let n=e.trim().split(/\s+/);return F.forEach((e,r)=>{t.value[e]=s(n[r],e)}),!0}function u(e){e===`day`?t.value.day.mode===`none`?t.value.week.mode===`none`&&(t.value.week={...t.value.week,mode:`every`}):t.value.week={...t.value.week,mode:`none`}:t.value.week.mode===`none`?t.value.day.mode===`none`&&(t.value.day={...t.value.day,mode:`every`}):t.value.day={...t.value.day,mode:`none`}}function d(e){if(e===void 0){let e=F.find(e=>t.value[e].mode===`specific`&&t.value[e].specificValues.length===0);if(e)return{valid:!1,message:`${O.find(t=>t.type===e).label}字段至少选择一个值`,field:e}}let n=(e??c()).trim().split(/\s+/);if(n.length!==6)return{valid:!1,message:`表达式应包含 6 个字段,当前为 ${n.length} 个`};let r=n[3],i=n[5];if(r!==`?`&&i!==`?`)return{valid:!1,message:`日和周不能同时指定,其中一个必须为 ?`,field:`day`};if(r===`?`&&i===`?`)return{valid:!1,message:`日和周不能同时为 ?,至少指定一个`,field:`day`};for(let e=0;e<F.length;e++){let t=F[e],r=n[e],i=h(r,O.find(e=>e.type===t));if(!i.valid)return{...i,field:t}}return{valid:!0,message:`表达式合法`}}function f(e,t){let[n,r]=e.split(`/`),i=n===`*`?t.min:Number(n),a=Number(r);return!Number.isInteger(i)||!Number.isInteger(a)?{valid:!1,message:`${t.label}字段步进格式错误`}:i<t.min||i>t.max?{valid:!1,message:`${t.label}字段步进起始值超出范围 (${t.min}-${t.max})`}:a<1?{valid:!1,message:`${t.label}字段步进间隔必须大于 0`}:{valid:!0,message:``}}function p(e,t){let[n,r]=e.split(`-`).map(Number);return!Number.isInteger(n)||!Number.isInteger(r)?{valid:!1,message:`${t.label}字段范围格式错误`}:n<t.min||r>t.max?{valid:!1,message:`${t.label}字段范围超出 (${t.min}-${t.max})`}:n>r?{valid:!1,message:`${t.label}字段范围起始不能大于结束`}:{valid:!0,message:``}}function m(e,t){let n=e.split(`,`).map(Number);return n.some(e=>!Number.isInteger(e))?{valid:!1,message:`${t.label}字段包含非数字字符`}:n.some(e=>e<t.min||e>t.max)?{valid:!1,message:`${t.label}字段值超出范围 (${t.min}-${t.max})`}:{valid:!0,message:``}}function h(e,t){return e===`*`?{valid:!0,message:``}:e===`?`?t.type===`day`||t.type===`week`?{valid:!0,message:``}:{valid:!1,message:`${t.label}字段不能使用 ?`}:/^(\*|\d+)\/\d+$/.test(e)?f(e,t):/^\d+-\d+$/.test(e)?p(e,t):/^\d+(,\d+)*$/.test(e)?m(e,t):{valid:!1,message:`${t.label}字段格式错误`}}return{cronValue:t,expression:i(()=>c()),validation:i(()=>d()),parse:l,generate:c,validate:d,handleDayWeekExclusion:u}}function L(e,t,n){if(t===`*`||t===`?`)return!0;if(t.includes(`/`)){let[r,i]=t.split(`/`),a=r===`*`?n:Number(r),o=Number(i);return o>0&&e>=a&&(e-a)%o===0}if(t.includes(`-`)){let[n,r]=t.split(`-`).map(Number);return e>=n&&e<=r}return t.split(`,`).some(t=>Number(t)===e)}function R(e,t){let[,n,r,i,a,o]=t;return L(e.getMinutes(),n,0)&&L(e.getHours(),r,0)&&L(e.getDate(),i,1)&&L(e.getMonth()+1,a,1)&&L(e.getDay()+1,o,1)}function z(e,t,n,r,i){for(let a of n){let n=new Date(t.getTime()+a*1e3);if(!(n.getTime()<=r.getTime())&&(e.push(n),e.length>=i))return!0}return!1}function B(e){return Number.isFinite(e)?Math.min(100,Math.max(1,Math.trunc(e))):10}function V(e){return e>0&&e%1e4==0}async function te(e,t,n=new Date,r=()=>!1){let i=e.trim().split(/\s+/);if(i.length!==6)return[];let a=Array.from({length:60},(e,t)=>t).filter(e=>L(e,i[0],0));if(a.length===0)return[];let o=B(t),s=[],c=new Date(n);c.setSeconds(0,0);for(let e=0;e<527040;e++){if(r())return[];if(R(c,i)&&z(s,c,a,n,o))return s;c.setTime(c.getTime()+6e4),V(e)&&await new Promise(e=>setTimeout(e,0))}return s}function H(e,t,n,r=_(!0)){let i=_([]),a=_(!1),o=0,s=null;S([e,n,t,r],()=>{o+=1;let c=o;if(s&&clearTimeout(s),!t.value.valid||!r.value){i.value=[],a.value=!1,s=null;return}i.value=[],a.value=!0,s=setTimeout(async()=>{let t=await te(e.value,n.value,new Date,()=>c!==o);c===o&&(i.value=t,a.value=!1,s=null)},0)},{immediate:!0}),h(()=>{o+=1,s&&clearTimeout(s)});function c(e){let t=e=>String(e).padStart(2,`0`);return`${e.getFullYear()}-${t(e.getMonth()+1)}-${t(e.getDate())} ${t(e.getHours())}:${t(e.getMinutes())}:${t(e.getSeconds())}`}function l(e){return[`周日`,`周一`,`周二`,`周三`,`周四`,`周五`,`周六`][e.getDay()]}return{nextExecutions:i,computing:a,formatDate:c,formatWeekDay:l}}function U(e){return P[Number(e)]||`周${e}`}function W(e,t){let n=i(()=>t.value.valid?r(e.value):`表达式不合法`);function r(e){let t=e.trim().split(/\s+/);if(t.length!==6)return`表达式格式错误`;let[n,r,i,d,f,p]=t,m=[];return m.push(l(f)),p===`?`?m.push(c(d)):m.push(u(p)),m.push(s(i)),m.push(o(r)),m.push(a(n)),m.filter(Boolean).join(` `)+` 执行`}function a(e){return e===`0`?``:e===`*`?`每秒`:d(e,`秒`)}function o(e){return e===`*`?`每分钟`:e===`0`?``:d(e,`分`)}function s(e){return e===`*`?`每小时`:/^\d+$/.test(e)?`${e.padStart(2,`0`)}:`:d(e,`时`)}function c(e){if(e===`*`||e===`?`)return`每天`;if(/^\d+$/.test(e))return`每月 ${e} 号`;if(e.includes(`/`)){let[t,n]=e.split(`/`);return`从 ${t} 号开始每 ${n} 天`}if(e.includes(`-`)){let[t,n]=e.split(`-`);return`${t} 号到 ${n} 号`}return e.includes(`,`)?`每月 ${e} 号`:``}function l(e){if(e===`*`)return``;if(/^\d+$/.test(e)){let t=Number(e);return N[t]?`${N[t]}`:`${t} 月`}if(e.includes(`/`)){let[t,n]=e.split(`/`);return`从 ${t} 月开始每 ${n} 个月`}if(e.includes(`-`)){let[t,n]=e.split(`-`);return`${t} 月到 ${n} 月`}return e.includes(`,`)?e.split(`,`).map(e=>N[Number(e)]||`${e}月`).join(`、`):``}function u(e){return e===`*`||e===`?`?``:/^\d+$/.test(e)?`每${U(e)}`:e.includes(`/`)?`从${U(e.split(`/`)[0])}开始每 ${e.split(`/`)[1]} 天`:e.includes(`-`)?`${U(e.split(`-`)[0])}到${U(e.split(`-`)[1])}`:e.includes(`,`)?`每${e.split(`,`).map(U).join(`、`)}`:``}function d(e,t){if(e.includes(`/`)){let[n,r]=e.split(`/`);return`${n===`*`||n===`0`?``:`从第 ${n} ${t}开始`}每 ${r} ${t}`}if(e.includes(`-`)){let[n,r]=e.split(`-`);return`${n} ${t}到 ${r} ${t}`}return e.includes(`,`)?`第 ${e} ${t}`:/^\d+$/.test(e)?`${e.padStart(2,`0`)}`:``}return{description:n}}function G(e){let t=i(()=>({disabled:e.config?.disabled??e.disabled??!1,height:e.config?.height??e.height??`auto`,showSecond:e.config?.showSecond??e.showSecond??!0,showTemplates:e.config?.showTemplates??e.showTemplates??!0,showPreview:e.config?.showPreview??e.showPreview??!0,templates:e.config?.templates??e.templates??M,previewCount:Math.min(50,Math.max(1,Number.isFinite(e.config?.previewCount??e.previewCount??5)?Math.trunc(e.config?.previewCount??e.previewCount??5):5))})),n=e.modelValue??j,r=I(),a=_(n),o=i(()=>a.value===r.expression.value?r.validation.value:r.validate(a.value)),s=i(()=>a.value!==r.expression.value),c=i(()=>t.value.showPreview&&!s.value),l=H(r.expression,o,i(()=>t.value.previewCount),c),{description:u}=W(r.expression,o),d=_(t.value.showSecond?`second`:`minute`),f=i(()=>O.filter(e=>t.value.showSecond||e.type!==`second`)),p=i(()=>O.find(e=>e.type===d.value)),m=i(()=>r.cronValue.value[d.value]),h=i(()=>r.expression.value.split(` `));function g(e=a.value){return a.value=e,r.parse(e)?(a.value=r.expression.value,!0):!1}function v(e){t.value.disabled||(r.cronValue.value[d.value]=e,(d.value===`day`||d.value===`week`)&&r.handleDayWeekExclusion(d.value),a.value=r.expression.value)}function y(){g(n)}return g(n),S(()=>e.modelValue,e=>{e!==void 0&&e!==r.expression.value&&g(e)}),S(()=>t.value.showSecond,e=>{!e&&d.value===`second`&&(d.value=`minute`)}),{options:t,draft:a,validation:o,pending:s,description:u,activeField:d,visibleFields:f,activeMeta:p,activeValue:m,segments:h,expression:r.expression,preview:l,apply:g,updateField:v,reset:y}}const K={class:`cron-field-editor`},q={class:`cron-field-editor__heading`},J={class:`cron-field-editor__modes`,"aria-label":`执行规则模式`},Y=[`disabled`,`aria-pressed`,`onClick`],X={class:`cron-field-editor__parameters`},Z=[`disabled`],Q={key:3},ne=[`disabled`,`aria-label`,`aria-pressed`,`onClick`],re={class:`cron-field-editor__hint`};var ie=t(d({name:`CronFieldEditor`,__name:`CronFieldEditor`,props:{modelValue:{},meta:{},disabled:{type:Boolean}},emits:[`update:modelValue`],setup(e,{emit:t}){let n=e,a=t,o=i(()=>[{value:`every`,label:`每个值`},{value:`step`,label:`固定间隔`},{value:`range`,label:`连续范围`},{value:`specific`,label:`指定值`},...n.meta.type===`day`||n.meta.type===`week`?[{value:`none`,label:`不指定`}]:[]]),l=i(()=>Array.from({length:n.meta.max-n.meta.min+1},(e,t)=>{let r=n.meta.min+t;return{value:r,label:n.meta.valueLabels?.[r]??String(r).padStart(2,`0`)}})),d=i(()=>new Set(l.value.filter(({value:e})=>{let t=n.modelValue;return t.mode===`every`?!0:t.mode===`range`?e>=t.rangeStart&&e<=t.rangeEnd:t.mode===`step`?e>=t.stepStart&&(e-t.stepStart)%Math.max(1,t.stepInterval)===0:t.mode===`specific`&&t.specificValues.includes(e)}).map(e=>e.value)));function f(e){n.disabled||a(`update:modelValue`,{...n.modelValue,specificValues:[...n.modelValue.specificValues],...e})}function m(e){let t=n.modelValue.mode===`specific`?[...n.modelValue.specificValues]:[],r=t.indexOf(e);r<0?t.push(e):t.splice(r,1),f({mode:`specific`,specificValues:t})}return(t,n)=>(g(),s(`div`,K,[c(`div`,q,[c(`strong`,null,y(e.meta.label)+`的执行规则`,1),c(`span`,null,`可选 `+y(e.meta.min)+`–`+y(e.meta.max),1)]),c(`div`,J,[(g(!0),s(r,null,v(o.value,t=>(g(),s(`button`,{key:t.value,type:`button`,disabled:e.disabled,"aria-pressed":e.modelValue.mode===t.value,onClick:e=>f({mode:t.value})},y(t.label),9,Y))),128))]),c(`div`,X,[e.modelValue.mode===`step`?(g(),s(r,{key:0},[n[5]||=c(`span`,null,`从`,-1),u(b(E),{value:e.modelValue.stepStart,min:e.meta.min,max:e.meta.max,disabled:e.disabled,"input-props":{"aria-label":`起始值`},"onUpdate:value":n[0]||=t=>f({stepStart:t??e.meta.min})},null,8,[`value`,`min`,`max`,`disabled`]),c(`span`,null,y(e.meta.label)+`开始,每隔`,1),u(b(E),{value:e.modelValue.stepInterval,min:1,max:e.meta.max-e.meta.min+1,disabled:e.disabled,"input-props":{"aria-label":`间隔值`},"onUpdate:value":n[1]||=e=>f({stepInterval:e??1})},null,8,[`value`,`max`,`disabled`]),c(`span`,null,y(e.meta.label)+`执行`,1)],64)):e.modelValue.mode===`range`?(g(),s(r,{key:1},[n[6]||=c(`span`,null,`从`,-1),u(b(E),{value:e.modelValue.rangeStart,min:e.meta.min,max:e.modelValue.rangeEnd,disabled:e.disabled,"input-props":{"aria-label":`范围起点`},"onUpdate:value":n[2]||=t=>f({rangeStart:t??e.meta.min})},null,8,[`value`,`min`,`max`,`disabled`]),n[7]||=c(`span`,null,`到`,-1),u(b(E),{value:e.modelValue.rangeEnd,min:e.modelValue.rangeStart,max:e.meta.max,disabled:e.disabled,"input-props":{"aria-label":`范围终点`},"onUpdate:value":n[3]||=t=>f({rangeEnd:t??e.meta.max})},null,8,[`value`,`min`,`max`,`disabled`])],64)):e.modelValue.mode===`specific`?(g(),s(r,{key:2},[c(`span`,null,`已选 `+y(e.modelValue.specificValues.length)+` 个值`,1),c(`button`,{type:`button`,disabled:e.disabled,onClick:n[4]||=e=>f({specificValues:[]})},`清空选择`,8,Z)],64)):(g(),s(`span`,Q,y(e.modelValue.mode===`none`?`该字段不参与匹配,由另一个日期字段决定执行日。`:`匹配每一个${e.meta.label}值,下面高亮的是当前规则覆盖的值。`),1))]),c(`div`,{class:p([`cron-field-editor__grid`,{"cron-field-editor__grid--week":e.meta.type===`week`}])},[(g(!0),s(r,null,v(l.value,t=>(g(),s(`button`,{key:t.value,type:`button`,class:p([`cron-field-editor__cell`,{"cron-field-editor__cell--on":d.value.has(t.value)}]),disabled:e.disabled||e.modelValue.mode===`none`,"aria-label":`选择${e.meta.label}值 ${t.label}`,"aria-pressed":d.value.has(t.value),onClick:e=>m(t.value)},y(t.label),11,ne))),128))],2),c(`p`,re,y(e.modelValue.mode===`none`?`日与星期只指定一个,另一个使用 ?。`:`点选数值会切换到「指定值」模式,支持多选。`),1)]))}}),[[`__scopeId`,`data-v-ddf38d10`]]);const ae={class:`cron-templates`},$={class:`cron-templates__header`},oe={class:`cron-templates__cards`},se=[`disabled`,`aria-pressed`,`onClick`],ce={class:`cron-templates__card-name`},le={class:`cron-templates__card-description`},ue={class:`cron-templates__card-expr`};var de=t(d({__name:`CronTemplates`,props:{templates:{},currentValue:{},disabled:{type:Boolean}},emits:[`select`],setup(t){return(n,i)=>(g(),s(`div`,ae,[c(`div`,$,[u(e,{name:`mdi:lightning-bolt`,size:15}),i[0]||=c(`span`,null,`常用模板`,-1)]),c(`div`,oe,[(g(!0),s(r,null,v(t.templates,e=>(g(),s(`button`,{key:e.value,type:`button`,disabled:t.disabled,"aria-pressed":e.value===t.currentValue,class:p([`cron-templates__card`,{"cron-templates__card--active":e.value===t.currentValue}]),onClick:t=>n.$emit(`select`,e.value)},[c(`div`,ce,y(e.label),1),c(`div`,le,y(e.description),1),c(`div`,ue,y(e.value),1)],10,se))),128))])]))}}),[[`__scopeId`,`data-v-d6c7e1be`]]);const fe={class:`cron-preview`,"aria-label":`执行计划预览`},pe={class:`cron-preview__next`,role:`status`,"aria-live":`polite`},me={key:1,class:`cron-preview__waiting`},he={key:2},ge={key:0,class:`cron-preview__list`},_e={class:`cron-preview__list-heading`},ve={class:`cron-preview__idx`},ye=[`datetime`];var be=t(d({name:`CronPreview`,__name:`CronPreview`,props:{nextExecutions:{},computing:{type:Boolean},count:{},validation:{},pending:{type:Boolean},formatDate:{type:Function},formatWeekDay:{type:Function}},setup(e){let{timeZone:t}=Intl.DateTimeFormat().resolvedOptions();return(i,a)=>(g(),s(`aside`,fe,[a[5]||=c(`header`,null,[c(`span`,{class:`cron-preview__step`},`02`),c(`div`,null,[c(`h3`,null,`确认执行计划`),c(`p`,null,`按浏览器本地时区预览`)])],-1),c(`div`,pe,[a[1]||=c(`span`,{class:`cron-preview__label`},`下一次执行`,-1),e.validation.valid&&!e.pending&&e.nextExecutions.length?(g(),s(r,{key:0},[c(`strong`,null,y(e.formatDate(e.nextExecutions[0])),1),c(`span`,null,y(e.formatWeekDay(e.nextExecutions[0])),1)],64)):e.computing?(g(),s(`div`,me,[u(n,{size:32}),a[0]||=c(`span`,null,`正在计算执行时间`,-1)])):(g(),s(`p`,he,y(e.validation.valid?e.pending?`应用表达式后更新计划`:`未来一年内没有匹配的执行时间`:`修正规则后重新预览`),1))]),e.validation.valid&&!e.pending&&e.nextExecutions.length?(g(),s(`div`,ge,[c(`div`,_e,[a[2]||=l(`接下来的执行时间 `,-1),c(`span`,null,y(e.nextExecutions.length)+` / `+y(e.count),1)]),c(`ol`,null,[(g(!0),s(r,null,v(e.nextExecutions,(t,n)=>(g(),s(`li`,{key:t.getTime()},[c(`span`,ve,y(String(n+1).padStart(2,`0`)),1),c(`time`,{datetime:t.toISOString()},y(e.formatDate(t)),9,ye),c(`span`,null,y(e.formatWeekDay(t)),1)]))),128))])])):o(`v-if`,!0),c(`footer`,null,[a[3]||=c(`span`,null,`时区`,-1),c(`code`,null,y(b(t)),1),a[4]||=c(`p`,null,`仅预览时间,不会创建或启动定时任务。`,-1)])]))}}),[[`__scopeId`,`data-v-023ff119`]]);const xe={class:`c-cron__header`},Se={class:`c-cron__title-row`},Ce={class:`c-cron__editor`},we={class:`c-cron__segments`,"aria-label":`时间字段`},Te=[`aria-label`,`aria-pressed`,`onClick`],Ee={class:`c-cron__segment-label`},De={class:`c-cron__expression`},Oe={class:`c-cron__expr-row`};var ke=t(d({name:`C_Cron`,__name:`index`,props:{modelValue:{},config:{},disabled:{type:Boolean,default:!1},previewCount:{},showTemplates:{type:Boolean,default:!0},showPreview:{type:Boolean,default:!0},showSecond:{type:Boolean,default:!0},height:{},templates:{}},emits:[`update:modelValue`,`change`,`validation-change`],setup(e,{expose:t,emit:n}){let i=e,d=n,h=`cron-expression-${x()}`,{options:_,expression:E,draft:k,validation:A,pending:j,description:M,activeField:N,activeMeta:P,activeValue:F,visibleFields:I,segments:L,preview:R,apply:z,updateField:B,reset:V}=G(i);return S(E,e=>{d(`update:modelValue`,e),d(`change`,e)}),S(A,e=>d(`validation-change`,e),{immediate:!0}),t({getValue:()=>E.value,setValue:z,reset:V,validate:()=>A.value}),(e,t)=>(g(),s(`section`,{class:`c-cron`,style:m({height:typeof b(_).height==`number`?`${b(_).height}px`:b(_).height}),"aria-label":`Cron 计划编辑器`},[c(`header`,xe,[c(`div`,Se,[t[3]||=c(`div`,null,[c(`span`,{class:`c-cron__eyebrow`},`SCHEDULE BUILDER`),c(`h2`,null,`执行计划`),c(`p`,null,`选择一个计划,再按需要调整时间。`)],-1),u(b(D),{type:b(A).valid?`success`:`error`,size:`small`},{default:C(()=>[l(y(b(j)&&b(A).valid?`待应用`:b(A).valid?`规则有效`:`请修正规则`),1)]),_:1},8,[`type`])]),b(_).showTemplates?(g(),a(de,{key:0,templates:b(_).templates,"current-value":b(E),disabled:b(_).disabled,onSelect:b(z)},null,8,[`templates`,`current-value`,`disabled`,`onSelect`])):o(`v-if`,!0)]),c(`div`,{class:p([`c-cron__workspace`,{"c-cron__workspace--compact":!b(_).showPreview}])},[c(`div`,Ce,[t[6]||=c(`div`,{class:`c-cron__section-heading`},[c(`span`,{class:`c-cron__step`},`01`),c(`div`,null,[c(`h3`,null,`配置执行时间`),c(`p`,null,`先选时间字段,再设置规则。日与星期自动互斥。`)])],-1),c(`div`,we,[(g(!0),s(r,null,v(b(I),e=>(g(),s(`button`,{key:e.type,type:`button`,class:p([`c-cron__segment`,{"c-cron__segment--active":b(N)===e.type}]),"aria-label":`编辑${e.label}字段`,"aria-pressed":b(N)===e.type,onClick:t=>N.value=e.type},[c(`span`,Ee,y(e.label),1),c(`code`,null,y(b(L)[b(O).indexOf(e)]||`未选择`),1)],10,Te))),128))]),u(ie,{"model-value":b(F),meta:b(P),disabled:b(_).disabled,"onUpdate:modelValue":b(B)},null,8,[`model-value`,`meta`,`disabled`,`onUpdate:modelValue`]),c(`div`,De,[c(`label`,{for:h},`Cron 表达式 · 秒 分 时 日 月 周`),c(`div`,Oe,[u(b(T),{value:b(k),"onUpdate:value":t[0]||=e=>f(k)?k.value=e:null,"input-props":{id:h,"aria-label":`Cron 表达式`},status:b(A).valid?void 0:`error`,disabled:b(_).disabled,placeholder:`0 30 8 * * ?`,onKeydown:t[1]||=ee(e=>b(z)(),[`enter`])},null,8,[`value`,`input-props`,`status`,`disabled`]),u(b(w),{disabled:b(_).disabled||!b(A).valid||!b(j),onClick:t[2]||=e=>b(z)()},{default:C(()=>[...t[4]||=[l(`应用`,-1)]]),_:1},8,[`disabled`]),u(b(w),{disabled:b(_).disabled,onClick:b(V)},{default:C(()=>[...t[5]||=[l(`重置`,-1)]]),_:1},8,[`disabled`,`onClick`])]),c(`p`,{class:p([`c-cron__feedback`,{"c-cron__feedback--error":!b(A).valid}]),role:`status`},y(b(A).valid?b(j)?`表达式尚未应用,按 Enter 或点击应用更新计划。`:b(M):b(A).message),3)])]),b(_).showPreview?(g(),a(be,{key:0,"next-executions":b(R).nextExecutions.value,computing:b(R).computing.value,count:b(_).previewCount,validation:b(A),pending:b(j),"format-date":b(R).formatDate,"format-week-day":b(R).formatWeekDay},null,8,[`next-executions`,`computing`,`count`,`validation`,`pending`,`format-date`,`format-week-day`])):o(`v-if`,!0)],2)],4))}}),[[`__scopeId`,`data-v-d5df827f`]]);export{O as a,A as c,P as d,I as i,k as l,W as n,M as o,H as r,j as s,ke as t,N as u};
|
package/dist/C_Date.css
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
:root{--c-primary: var(--primary-color, #2080f0);--c-primary-hover: var(--primary-color-hover, #4098fc);--c-primary-pressed: var(--primary-color-pressed, #1060c9);--c-success: var(--success-color, #18a058);--c-warning: var(--warning-color, #f0a020);--c-error: var(--error-color, #d03050);--c-info: var(--info-color, #2080f0);--c-bg-body: var(--body-color, #ffffff);--c-bg-card: var(--card-color, #ffffff);--c-bg-surface: var(--popover-color, #ffffff);--c-text-1: var(--text-color-1, #262626);--c-text-2: var(--text-color-2, #525252);--c-text-3: var(--text-color-3, #a3a3a3);--c-text-4: var(--text-color-4, #c0c0c0);--c-border: var(--border-color, #e5e7eb);--c-radius-sm: var(--border-radius-small, 4px);--c-radius: var(--border-radius, 6px);--c-transition-fast: 0.15s cubic-bezier(0.4, 0, 0.2, 1);--c-transition-base: 0.3s cubic-bezier(0.4, 0, 0.2, 1);--c-shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.08);--c-shadow-md: 0 4px 6px rgba(0, 0, 0, 0.1);--c-shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.1)}
|
|
2
|
+
|
|
1
3
|
/* unplugin-vue-components disabled */
|
|
2
4
|
/* layer: default */
|
|
3
5
|
.inline-block[data-v-872c208c]{display:inline-block;}
|
|
@@ -5,4 +7,3 @@
|
|
|
5
7
|
.flex-1[data-v-872c208c]{flex:1 1 0%;}
|
|
6
8
|
.items-center[data-v-872c208c]{align-items:center;}
|
|
7
9
|
.gap-2\.5[data-v-872c208c]{gap:0.625rem;}
|
|
8
|
-
|
package/dist/C_Draggable.css
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
:root{--c-primary: var(--primary-color, #2080f0);--c-primary-hover: var(--primary-color-hover, #4098fc);--c-primary-pressed: var(--primary-color-pressed, #1060c9);--c-success: var(--success-color, #18a058);--c-warning: var(--warning-color, #f0a020);--c-error: var(--error-color, #d03050);--c-info: var(--info-color, #2080f0);--c-bg-body: var(--body-color, #ffffff);--c-bg-card: var(--card-color, #ffffff);--c-bg-surface: var(--popover-color, #ffffff);--c-text-1: var(--text-color-1, #262626);--c-text-2: var(--text-color-2, #525252);--c-text-3: var(--text-color-3, #a3a3a3);--c-text-4: var(--text-color-4, #c0c0c0);--c-border: var(--border-color, #e5e7eb);--c-radius-sm: var(--border-radius-small, 4px);--c-radius: var(--border-radius, 6px);--c-transition-fast: 0.15s cubic-bezier(0.4, 0, 0.2, 1);--c-transition-base: 0.3s cubic-bezier(0.4, 0, 0.2, 1);--c-shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.08);--c-shadow-md: 0 4px 6px rgba(0, 0, 0, 0.1);--c-shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.1)}
|
|
2
|
+
|
|
1
3
|
/* unplugin-vue-components disabled *//* ===== 容器布局样式 ===== */
|
|
2
4
|
.c-draggable-wrapper[data-v-3abe32c6] {
|
|
3
5
|
position: relative;
|
|
@@ -248,4 +250,3 @@
|
|
|
248
250
|
.grid[data-v-3abe32c6]{display:grid;}
|
|
249
251
|
.flex-wrap[data-v-3abe32c6]{flex-wrap:wrap;}
|
|
250
252
|
.px[data-v-3abe32c6]{padding-left:1rem;padding-right:1rem;}
|
|
251
|
-
|
package/dist/C_Editor.css
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
:root{--c-primary: var(--primary-color, #2080f0);--c-primary-hover: var(--primary-color-hover, #4098fc);--c-primary-pressed: var(--primary-color-pressed, #1060c9);--c-success: var(--success-color, #18a058);--c-warning: var(--warning-color, #f0a020);--c-error: var(--error-color, #d03050);--c-info: var(--info-color, #2080f0);--c-bg-body: var(--body-color, #ffffff);--c-bg-card: var(--card-color, #ffffff);--c-bg-surface: var(--popover-color, #ffffff);--c-text-1: var(--text-color-1, #262626);--c-text-2: var(--text-color-2, #525252);--c-text-3: var(--text-color-3, #a3a3a3);--c-text-4: var(--text-color-4, #c0c0c0);--c-border: var(--border-color, #e5e7eb);--c-radius-sm: var(--border-radius-small, 4px);--c-radius: var(--border-radius, 6px);--c-transition-fast: 0.15s cubic-bezier(0.4, 0, 0.2, 1);--c-transition-base: 0.3s cubic-bezier(0.4, 0, 0.2, 1);--c-shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.08);--c-shadow-md: 0 4px 6px rgba(0, 0, 0, 0.1);--c-shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.1)}
|
|
2
|
+
|
|
1
3
|
:host,:root{--w-e-textarea-bg-color:#fff;--w-e-textarea-color:#333;--w-e-textarea-border-color:#ccc;--w-e-textarea-slight-border-color:#e8e8e8;--w-e-textarea-slight-color:#d4d4d4;--w-e-textarea-slight-bg-color:#f5f2f0;--w-e-textarea-selected-border-color:#b4d5ff;--w-e-textarea-handler-bg-color:#4290f7;--w-e-toolbar-color:#595959;--w-e-toolbar-bg-color:#fff;--w-e-toolbar-active-color:#333;--w-e-toolbar-active-bg-color:#f1f1f1;--w-e-toolbar-disabled-color:#999;--w-e-toolbar-border-color:#e8e8e8;--w-e-modal-button-bg-color:#fafafa;--w-e-modal-button-border-color:#d9d9d9}
|
|
2
4
|
.w-e-text-container *,.w-e-toolbar *{box-sizing:border-box;margin:0;outline:none;padding:0}.w-e-text-container blockquote,.w-e-text-container li,.w-e-text-container p,.w-e-text-container td,.w-e-text-container th{line-height:1.5}.w-e-text-container sub,.w-e-text-container sup{line-height:inherit}.w-e-toolbar *{line-height:1.5}.w-e-text-container{background-color:var(--w-e-textarea-bg-color);color:var(--w-e-textarea-color);height:100%;position:relative}.w-e-text-container.no-scroll{width:100%}.w-e-text-container .w-e-scroll{height:100%;-webkit-overflow-scrolling:touch}.w-e-text-container [data-slate-editor]{outline:0;white-space:pre-wrap;word-wrap:break-word;border-top:1px solid transparent;min-height:100%;padding:0 10px}.w-e-text-container [data-slate-editor] p{margin:15px 0}.w-e-text-container [data-slate-editor] h1,.w-e-text-container [data-slate-editor] h2,.w-e-text-container [data-slate-editor] h3,.w-e-text-container [data-slate-editor] h4,.w-e-text-container [data-slate-editor] h5{margin:20px 0}.w-e-text-container [data-slate-editor] img{cursor:default;display:inline!important;max-width:100%;min-height:20px;min-width:20px}.w-e-text-container [data-slate-editor] span{text-indent:0}.w-e-text-container [data-slate-editor] [data-selected=true]{box-shadow:0 0 0 2px var(--w-e-textarea-selected-border-color)}.w-e-text-placeholder{font-style:italic;left:10px;top:17px;width:90%}.w-e-max-length-info,.w-e-text-placeholder{color:var(--w-e-textarea-slight-color);pointer-events:none;position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none}.w-e-max-length-info{bottom:.5em;right:1em}.w-e-bar{background-color:var(--w-e-toolbar-bg-color);color:var(--w-e-toolbar-color);font-size:14px;padding:0 5px}.w-e-bar svg{fill:var(--w-e-toolbar-color);height:14px;width:14px}.w-e-bar-show{display:flex}.w-e-bar-hidden{display:none}.w-e-hover-bar{border:1px solid var(--w-e-toolbar-border-color);border-radius:3px;box-shadow:0 2px 5px #0000001f;position:absolute}.w-e-toolbar{flex-wrap:wrap;position:relative}.w-e-bar-divider{background-color:var(--w-e-toolbar-border-color);display:inline-flex;height:40px;margin:0 5px;width:1px}.w-e-bar-item{display:flex;height:40px;padding:4px;position:relative;text-align:center}.w-e-bar-item,.w-e-bar-item button{align-items:center;justify-content:center}.w-e-bar-item button{background:transparent;border:none;color:var(--w-e-toolbar-color);cursor:pointer;display:inline-flex;height:32px;overflow:hidden;padding:0 8px;white-space:nowrap}.w-e-bar-item button:hover{background-color:var(--w-e-toolbar-active-bg-color);color:var(--w-e-toolbar-active-color)}.w-e-bar-item button .title{margin-left:5px}.w-e-bar-item .active{background-color:var(--w-e-toolbar-active-bg-color);color:var(--w-e-toolbar-active-color)}.w-e-bar-item .disabled{color:var(--w-e-toolbar-disabled-color);cursor:not-allowed}.w-e-bar-item .disabled svg{fill:var(--w-e-toolbar-disabled-color)}.w-e-bar-item .disabled:hover{background-color:var(--w-e-toolbar-bg-color);color:var(--w-e-toolbar-disabled-color)}.w-e-bar-item .disabled:hover svg{fill:var(--w-e-toolbar-disabled-color)}.w-e-menu-tooltip-v5:before{background-color:var(--w-e-toolbar-active-color);border-radius:5px;color:var(--w-e-toolbar-bg-color);content:attr(data-tooltip);font-size:.75em;padding:5px 10px;text-align:center;top:40px;white-space:pre;z-index:1}.w-e-menu-tooltip-v5:after,.w-e-menu-tooltip-v5:before{opacity:0;position:absolute;transition:opacity .6s;visibility:hidden}.w-e-menu-tooltip-v5:after{border-color:transparent transparent var(--w-e-toolbar-active-color) transparent;border-style:solid;border-width:5px;content:"";top:30px}.w-e-menu-tooltip-v5:hover:after,.w-e-menu-tooltip-v5:hover:before{opacity:1;visibility:visible}.w-e-menu-tooltip-v5.tooltip-right:before{left:100%;top:10px}.w-e-menu-tooltip-v5.tooltip-right:after{border-color:transparent var(--w-e-toolbar-active-color) transparent transparent;left:100%;margin-left:-10px;top:16px}.w-e-bar-item-group .w-e-bar-item-menus-container{background-color:var(--w-e-toolbar-bg-color);border:1px solid var(--w-e-toolbar-border-color);border-radius:3px;box-shadow:0 2px 10px #0000001f;display:none;left:0;margin-top:40px;position:absolute;top:0;z-index:1}.w-e-bar-item-group:hover .w-e-bar-item-menus-container{display:block}.w-e-select-list{background-color:var(--w-e-toolbar-bg-color);border:1px solid var(--w-e-toolbar-border-color);border-radius:3px;box-shadow:0 2px 10px #0000001f;left:0;margin-top:40px;max-height:350px;min-width:100px;overflow-y:auto;position:absolute;top:0;z-index:1}.w-e-select-list ul{line-height:1;list-style:none}.w-e-select-list ul .selected{background-color:var(--w-e-toolbar-active-bg-color)}.w-e-select-list ul li{cursor:pointer;padding:7px 0 7px 25px;position:relative;text-align:left;white-space:nowrap}.w-e-select-list ul li:hover{background-color:var(--w-e-toolbar-active-bg-color)}.w-e-select-list ul li svg{left:0;margin-left:5px;margin-top:-7px;position:absolute;top:50%}.w-e-bar-bottom .w-e-select-list{bottom:0;margin-bottom:40px;margin-top:0;top:inherit}.w-e-drop-panel{background-color:var(--w-e-toolbar-bg-color);border:1px solid var(--w-e-toolbar-border-color);border-radius:3px;box-shadow:0 2px 10px #0000001f;margin-top:40px;min-width:200px;padding:10px;position:absolute;top:0;z-index:1}.w-e-bar-bottom .w-e-drop-panel{bottom:0;margin-bottom:40px;margin-top:0;top:inherit}.w-e-modal{background-color:var(--w-e-toolbar-bg-color);border:1px solid var(--w-e-toolbar-border-color);border-radius:3px;box-shadow:0 2px 10px #0000001f;color:var(--w-e-toolbar-color);font-size:14px;min-height:40px;min-width:100px;padding:20px 15px 0;position:absolute;text-align:left;z-index:1}.w-e-modal .btn-close{cursor:pointer;line-height:1;padding:5px;position:absolute;right:8px;top:7px}.w-e-modal .btn-close svg{fill:var(--w-e-toolbar-color);height:10px;width:10px}.w-e-modal .babel-container{display:block;margin-bottom:15px}.w-e-modal .babel-container span{display:block;margin-bottom:10px}.w-e-modal .button-container{margin-bottom:15px}.w-e-modal button{background-color:var(--w-e-modal-button-bg-color);cursor:pointer;font-weight:400;height:32px;padding:4.5px 15px;text-align:center;touch-action:manipulation;transition:all .3s cubic-bezier(.645,.045,.355,1);-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap}.w-e-modal button,.w-e-modal input[type=number],.w-e-modal input[type=text],.w-e-modal textarea{border:1px solid var(--w-e-modal-button-border-color);border-radius:4px;color:var(--w-e-toolbar-color)}.w-e-modal input[type=number],.w-e-modal input[type=text],.w-e-modal textarea{background-color:var(--w-e-toolbar-bg-color);font-feature-settings:"tnum";font-variant:tabular-nums;padding:4.5px 11px;transition:all .3s;width:100%}.w-e-modal textarea{min-height:60px}body .w-e-modal,body .w-e-modal *{box-sizing:border-box}.w-e-progress-bar{background-color:var(--w-e-textarea-handler-bg-color);height:1px;position:absolute;transition:width .3s;width:0}.w-e-full-screen-container{bottom:0!important;display:flex!important;flex-direction:column!important;height:100%!important;left:0!important;margin:0!important;padding:0!important;position:fixed;right:0!important;top:0!important;width:100%!important}.w-e-full-screen-container [data-w-e-textarea=true]{flex:1!important}
|
|
3
5
|
.w-e-text-container [data-slate-editor] code{background-color:var(--w-e-textarea-slight-bg-color);border-radius:3px;font-family:monospace;padding:3px}.w-e-panel-content-color{list-style:none;text-align:left;width:230px}.w-e-panel-content-color li{border:1px solid var(--w-e-toolbar-bg-color);border-radius:3px 3px;cursor:pointer;display:inline-block;padding:2px}.w-e-panel-content-color li:hover{border-color:var(--w-e-toolbar-color)}.w-e-panel-content-color li .color-block{border:1px solid var(--w-e-toolbar-border-color);border-radius:3px 3px;height:17px;width:17px}.w-e-panel-content-color .active{border-color:var(--w-e-toolbar-color)}.w-e-panel-content-color .clear{line-height:1.5;margin-bottom:5px;width:100%}.w-e-panel-content-color .clear svg{height:16px;margin-bottom:-4px;width:16px}.w-e-color-ewtzuf{color:#000}.w-e-color-4xvty2{color:#262626}.w-e-color-sqycuk{color:#595959}.w-e-color-3z8psd{color:#8c8c8c}.w-e-color-wksmh8{color:#bfbfbf}.w-e-color-paasa7{color:#d9d9d9}.w-e-color-6bm9m5{color:#e9e9e9}.w-e-color-l91prz{color:#f5f5f5}.w-e-color-k3jp27{color:#fafafa}.w-e-color-67tap4{color:#fff}.w-e-color-tunwkj{color:#e13c39}.w-e-color-s85xre{color:#e75f33}.w-e-color-xx8cx7{color:#eb903a}.w-e-color-8hp23z{color:#f5db4d}.w-e-color-vbyzhj{color:#72c040}.w-e-color-a0scch{color:#59bfc0}.w-e-color-786vrv{color:#4290f7}.w-e-color-jztut9{color:#3658e2}.w-e-color-wh1hr9{color:#6a39c9}.w-e-color-enuf5u{color:#d84493}.w-e-color-ofga0e{color:#fbe9e6}.w-e-color-n2n1ob{color:#fcede1}.w-e-color-o0q9nf{color:#fcefd4}.w-e-color-e2ltc0{color:#fcfbcf}.w-e-color-sx4s4b{color:#e7f6d5}.w-e-color-t4t3jr{color:#daf4f0}.w-e-color-j4jejh{color:#d9edfa}.w-e-color-wb7pdv{color:#e0e8fa}.w-e-color-f3wgv5{color:#ede1f8}.w-e-color-omv2nm{color:#f6e2ea}.w-e-color-qn194t{color:#ffa39e}.w-e-color-mdg9z8{color:#ffbb96}.w-e-color-hl8b9g{color:#ffd591}.w-e-color-4bm5ce{color:#fffb8f}.w-e-color-xyf4ks{color:#b7eb8f}.w-e-color-wj8ykc{color:#87e8de}.w-e-color-9gfdr3{color:#91d5ff}.w-e-color-hsaivy{color:#adc6ff}.w-e-color-v3pqyx{color:#d3adf7}.w-e-color-5sw276{color:#ffadd2}.w-e-color-bsc56c{color:#ff4d4f}.w-e-color-qg254p{color:#ff7a45}.w-e-color-sg36qp{color:#ffa940}.w-e-color-6556xy{color:#ffec3d}.w-e-color-byp7re{color:#73d13d}.w-e-color-eyz4ng{color:#36cfc9}.w-e-color-9xmyha{color:#40a9ff}.w-e-color-g6x347{color:#597ef7}.w-e-color-qkkoll{color:#9254de}.w-e-color-4uljq8{color:#f759ab}.w-e-color-2zmrji{color:#cf1322}.w-e-color-8epkxl{color:#d4380d}.w-e-color-6ff92a{color:#d46b08}.w-e-color-6j9t63{color:#d4b106}.w-e-color-xsysfa{color:#389e0d}.w-e-color-qic72q{color:#08979c}.w-e-color-oounuc{color:#096dd9}.w-e-color-dcs2ck{color:#1d39c4}.w-e-color-nkq71x{color:#531dab}.w-e-color-v640ve{color:#c41d7f}.w-e-color-beewzy{color:#820014}.w-e-color-dsgatp{color:#871400}.w-e-color-du7iiy{color:#873800}.w-e-color-aoputq{color:#614700}.w-e-color-mkf87m{color:#135200}.w-e-color-l4iwsq{color:#00474f}.w-e-color-p38mu9{color:#003a8c}.w-e-color-z5ty33{color:#061178}.w-e-color-6t1egh{color:#22075e}.w-e-color-i6ncxa{color:#780650}.w-e-bg-color-704qgs{background-color:#000}.w-e-bg-color-fwpfd7{background-color:#262626}.w-e-bg-color-477xa6{background-color:#595959}.w-e-bg-color-nkdmaz{background-color:#8c8c8c}.w-e-bg-color-gndi0b{background-color:#bfbfbf}.w-e-bg-color-9cvnta{background-color:#d9d9d9}.w-e-bg-color-pwr64r{background-color:#e9e9e9}.w-e-bg-color-5bmlb2{background-color:#f5f5f5}.w-e-bg-color-464kla{background-color:#fafafa}.w-e-bg-color-psy77q{background-color:#fff}.w-e-bg-color-eol2qk{background-color:#e13c39}.w-e-bg-color-d233xf{background-color:#e75f33}.w-e-bg-color-pe10xx{background-color:#eb903a}.w-e-bg-color-zh1r48{background-color:#f5db4d}.w-e-bg-color-msrni9{background-color:#72c040}.w-e-bg-color-1hl0d7{background-color:#59bfc0}.w-e-bg-color-y7jks4{background-color:#4290f7}.w-e-bg-color-4tr0za{background-color:#3658e2}.w-e-bg-color-nxu5rz{background-color:#6a39c9}.w-e-bg-color-64n36k{background-color:#d84493}.w-e-bg-color-8i15jh{background-color:#fbe9e6}.w-e-bg-color-757x7e{background-color:#fcede1}.w-e-bg-color-83b56i{background-color:#fcefd4}.w-e-bg-color-xnqpum{background-color:#fcfbcf}.w-e-bg-color-czpnne{background-color:#e7f6d5}.w-e-bg-color-d7dz2u{background-color:#daf4f0}.w-e-bg-color-374a2k{background-color:#d9edfa}.w-e-bg-color-gdskwy{background-color:#e0e8fa}.w-e-bg-color-yp1ddr{background-color:#ede1f8}.w-e-bg-color-8pfy6p{background-color:#f6e2ea}.w-e-bg-color-apm4nw{background-color:#ffa39e}.w-e-bg-color-6g15ib{background-color:#ffbb96}.w-e-bg-color-1nt6sj{background-color:#ffd591}.w-e-bg-color-nwr1v0{background-color:#fffb8f}.w-e-bg-color-i1003v{background-color:#b7eb8f}.w-e-bg-color-gltu3f{background-color:#87e8de}.w-e-bg-color-t1ka9p{background-color:#91d5ff}.w-e-bg-color-1uvef1{background-color:#adc6ff}.w-e-bg-color-f6ami0{background-color:#d3adf7}.w-e-bg-color-pe0yps{background-color:#ffadd2}.w-e-bg-color-w4tcbw{background-color:#ff4d4f}.w-e-bg-color-hwut5f{background-color:#ff7a45}.w-e-bg-color-jwvurf{background-color:#ffa940}.w-e-bg-color-x4hvy7{background-color:#ffec3d}.w-e-bg-color-3fhvs4{background-color:#73d13d}.w-e-bg-color-6frso6{background-color:#36cfc9}.w-e-bg-color-1efmi0{background-color:#40a9ff}.w-e-bg-color-7npr4x{background-color:#597ef7}.w-e-bg-color-i1dcmb{background-color:#9254de}.w-e-bg-color-vty8qh{background-color:#f759ab}.w-e-bg-color-nc3yp2{background-color:#cf1322}.w-e-bg-color-sr6s35{background-color:#d4380d}.w-e-bg-color-qrwg7u{background-color:#d46b08}.w-e-bg-color-qvr0bn{background-color:#d4b106}.w-e-bg-color-imvylb{background-color:#389e0d}.w-e-bg-color-bc9d8r{background-color:#08979c}.w-e-bg-color-9iru0d{background-color:#096dd9}.w-e-bg-color-xp99i4{background-color:#1d39c4}.w-e-bg-color-8end7y{background-color:#531dab}.w-e-bg-color-mmwow4{background-color:#c41d7f}.w-e-bg-color-md8if3{background-color:#820014}.w-e-bg-color-or9w8u{background-color:#871400}.w-e-bg-color-ot13y3{background-color:#873800}.w-e-bg-color-b1gcxp{background-color:#614700}.w-e-bg-color-mx5qbl{background-color:#135200}.w-e-bg-color-lh9ewp{background-color:#00474f}.w-e-bg-color-ji79v{background-color:#003a8c}.w-e-bg-color-am3iip{background-color:#061178}.w-e-bg-color-75rwkg{background-color:#22075e}.w-e-bg-color-t5gycf{background-color:#780650}.w-e-font-size-okzesi{font-size:12px}.w-e-font-size-okzfj7{font-size:13px}.w-e-font-size-okzg9w{font-size:14px}.w-e-font-size-okzh0l{font-size:15px}.w-e-font-size-okzhra{font-size:16px}.w-e-font-size-okzjzd{font-size:19px}.w-e-font-size-ol01s1{font-size:22px}.w-e-font-size-ol039f{font-size:24px}.w-e-font-size-ol06yw{font-size:29px}.w-e-font-size-ol0ork{font-size:32px}.w-e-font-size-ol1a9p{font-size:40px}.w-e-font-size-ol1g79{font-size:48px}.w-e-font-family-u0ju81{font-family:黑体}.w-e-font-family-u06buz{font-family:仿宋}.w-e-font-family-u0ariz{font-family:楷体}.w-e-font-family-6uqaji{font-family:标楷体}.w-e-font-family-w9792n{font-family:华文仿宋}.w-e-font-family-w9boqn{font-family:华文楷体}.w-e-font-family-u08e9z{font-family:宋体}.w-e-font-family-xzvn93{font-family:微软雅黑}.w-e-font-family-nbqzij{font-family:Arial}.w-e-font-family-ljm044{font-family:Tahoma}.w-e-font-family-ohnbdm{font-family:Verdana}.w-e-font-family-hmdqt{font-family:Times New Roman}.w-e-font-family-qur2ze{font-family:Courier New}.w-e-text-align-g1w4xb{text-align:left}.w-e-text-align-8k65m7{text-align:center}.w-e-text-align-i96wy{text-align:right}.w-e-text-align-klzjuo{text-align:justify}.w-e-line-height-11is3t{line-height:1}.w-e-line-height-9qd9zn{line-height:1.15}.w-e-line-height-76rj3g{line-height:1.5}.w-e-line-height-11is3u{line-height:2}.w-e-line-height-76rju5{line-height:2.5}.w-e-line-height-11is3v{line-height:3}.w-e-indent-d1l1vd{text-indent:2em}.w-e-indent-dozaza{text-indent:24px}.w-e-indent-dozcgo{text-indent:26px}.w-e-indent-dozdy2{text-indent:28px}.w-e-indent-dozv01{text-indent:30px}.w-e-indent-dozwhf{text-indent:32px}.w-e-indent-dp00xl{text-indent:38px}.w-e-indent-dp0kyc{text-indent:44px}.w-e-indent-dp0nx4{text-indent:48px}.w-e-indent-dp1awn{text-indent:58px}.w-e-indent-dp1uxe{text-indent:64px}.w-e-indent-dp31xo{text-indent:80px}.w-e-indent-dp3tdd{text-indent:96px}.w-e-text-style-underline-offset{text-underline-offset:.15em}.w-e-text-style-wavy-underline{text-decoration-line:underline;text-decoration-style:wavy;text-underline-offset:.3em}.w-e-text-style-wavy-underline-with-emphasis{text-underline-offset:.8em}.w-e-text-style-emphasis-dot{-webkit-text-emphasis-position:under;text-emphasis-position:under left;-webkit-text-emphasis-style:filled dot;text-emphasis-style:filled dot}.w-e-text-style-emphasis-dot-with-wavy{line-height:2}.w-e-text-container [data-slate-editor] blockquote{background-color:var(--w-e-textarea-slight-bg-color);border-left:8px solid var(--w-e-textarea-selected-border-color);display:block;font-size:100%;line-height:1.5;margin:10px 0;padding:10px}.w-e-panel-content-emotion{font-size:20px;list-style:none;text-align:left;width:300px}.w-e-panel-content-emotion li{border-radius:3px 3px;cursor:pointer;display:inline-block;padding:0 5px}.w-e-panel-content-emotion li:hover{background-color:var(--w-e-textarea-slight-bg-color)}.w-e-textarea-divider{border-radius:3px;margin:20px auto;padding:20px}.w-e-textarea-divider hr{background-color:var(--w-e-textarea-border-color);border:0;display:block;height:1px}.w-e-text-container [data-slate-editor] pre.w-e-code-block{position:relative}.w-e-text-container [data-slate-editor] pre.w-e-code-block .w-e-code-block-copy-button{background-color:#fff;border:1px solid var(--w-e-textarea-slight-border-color);border-radius:4px;color:#666;cursor:pointer;font-size:12px;height:24px;line-height:1;min-width:56px;opacity:0;padding:0 8px;position:absolute;right:8px;top:8px;transition:opacity .15s ease;z-index:1}.w-e-text-container [data-slate-editor] pre.w-e-code-block .w-e-code-block-copy-button:focus,.w-e-text-container [data-slate-editor] pre.w-e-code-block:hover .w-e-code-block-copy-button{opacity:1}.w-e-text-container [data-slate-editor] .w-e-image-container{display:inline-block;margin:0 3px}.w-e-text-container [data-slate-editor] .w-e-image-container:hover{box-shadow:0 0 0 2px var(--w-e-textarea-selected-border-color)}.w-e-text-container [data-slate-editor] .w-e-selected-image-container{overflow:hidden;position:relative}.w-e-text-container [data-slate-editor] .w-e-selected-image-container .w-e-image-dragger{background-color:var(--w-e-textarea-handler-bg-color);height:7px;position:absolute;width:7px}.w-e-text-container [data-slate-editor] .w-e-selected-image-container .left-top{cursor:nwse-resize;left:0;top:0}.w-e-text-container [data-slate-editor] .w-e-selected-image-container .right-top{cursor:nesw-resize;right:0;top:0}.w-e-text-container [data-slate-editor] .w-e-selected-image-container .left-bottom{bottom:0;cursor:nesw-resize;left:0}.w-e-text-container [data-slate-editor] .w-e-selected-image-container .right-bottom{bottom:0;cursor:nwse-resize;right:0}.w-e-text-container [contenteditable=false] .w-e-image-container:hover,.w-e-text-container [data-slate-editor] .w-e-selected-image-container:hover{box-shadow:none}
|
|
@@ -100,4 +102,3 @@
|
|
|
100
102
|
.px[data-v-b7a5de58]{padding-left:1rem;padding-right:1rem;}
|
|
101
103
|
.transition[data-v-b7a5de58]{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;}
|
|
102
104
|
.ease[data-v-b7a5de58]{transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);}
|
|
103
|
-
|