Explorar el Código

fix: 修改事件配置

jiaxing.liao hace 3 semanas
padre
commit
ddb9180633

+ 20 - 10
src/renderer/src/views/designer/workspace/composite/eventEdit/config.ts

@@ -68,6 +68,7 @@ const bezierAnimationEasingOptions = [
   { label: 'Cubic In Out', value: 'cubic-in-out' }
 ]
 
+// 统一封装事件选项,避免事件码、方向、按键等组合值在各处重复拼接。
 const eventOption = (
   label: string,
   eventCode: string,
@@ -83,6 +84,7 @@ const eventOption = (
     } satisfies WidgetEventTriggerData
   }) satisfies OptionType
 
+// 普通控件和页面共用的事件集。
 const commonEventOptions = [
   eventOption('Clicked', 'LV_EVENT_CLICKED'),
   eventOption('Short Clicked', 'LV_EVENT_SHORT_CLICKED'),
@@ -122,11 +124,7 @@ const commonEventOptions = [
   eventOption('Hit Test', 'LV_EVENT_HIT_TEST'),
   eventOption('Insert', 'LV_EVENT_INSERT'),
   eventOption('Ready', 'LV_EVENT_READY'),
-  eventOption('Cancel', 'LV_EVENT_CANCEL'),
-  eventOption('Load Start', 'LV_EVENT_SCREEN_LOAD_START'),
-  eventOption('Loaded', 'LV_EVENT_SCREEN_LOADED'),
-  eventOption('Unload Start', 'LV_EVENT_SCREEN_UNLOAD_START'),
-  eventOption('Unloaded', 'LV_EVENT_SCREEN_UNLOADED')
+  eventOption('Cancel', 'LV_EVENT_CANCEL')
 ]
 
 /**
@@ -1132,6 +1130,7 @@ function getStyleActionDescriptors(targetData?: WidgetEventTargetData): SchemaAc
   })
 }
 
+// 根据 targetData 在项目里找到对应页面或控件,供事件动作默认值回填使用。
 function getTargetWidgetSchemaData(project?: IProject, targetData?: WidgetEventTargetData) {
   if (!project || !targetData) return
 
@@ -1157,18 +1156,20 @@ function getTargetWidgetSchemaData(project?: IProject, targetData?: WidgetEventT
   return undefined
 }
 
+// 缩放目标尺寸必须是正数,这里统一做兜底,避免默认值非法。
 function clampBezierScaleSize(value: unknown) {
   const numeric = Number(value)
   if (Number.isFinite(numeric) && numeric >= 1) return numeric
   return 1
 }
 
-function getBezierAnimationDefaultValue(
-  targetData?: WidgetEventTargetData,
-  project?: IProject
-) {
+// 贝塞尔动画动作的默认值。
+// 时间控制模式下,优先复用目标控件当前宽高作为缩放目标。
+function getBezierAnimationDefaultValue(targetData?: WidgetEventTargetData, project?: IProject) {
   const model = getTargetModel(targetData)
-  const targetSchemaData = getTargetWidgetSchemaData(project, targetData) as Record<string, any> | undefined
+  const targetSchemaData = getTargetWidgetSchemaData(project, targetData) as
+    | Record<string, any>
+    | undefined
 
   const defaultWidth = clampBezierScaleSize(
     targetSchemaData?.props?.width ?? model?.defaultSchema?.props?.width
@@ -1211,6 +1212,7 @@ function getBezierAnimationDefaultValue(
   }
 }
 
+// 值控制模式下,保持 min/max/current 始终落在合理区间内。
 function normalizeBezierValueRange(formData?: Record<string, any>) {
   if (!formData) return
 
@@ -1231,6 +1233,7 @@ function normalizeBezierValueRange(formData?: Record<string, any>) {
   set(formData, 'payload.value.current', nextCurrent)
 }
 
+// 事件编辑里的“动画”动作,目前只暴露一个贝塞尔动画入口。
 function getBezierAnimationActionDescriptors(
   targetData?: WidgetEventTargetData,
   project?: IProject
@@ -1267,6 +1270,7 @@ function getBezierAnimationActionDescriptors(
           valueType: 'dependency',
           name: ['payload.mode'],
           dependency: (values) => {
+            // 值控制模式:范围 + 当前值 + 资源贝塞尔段。
             if (values['payload.mode'] === 'value') {
               return [
                 {
@@ -1298,6 +1302,7 @@ function getBezierAnimationActionDescriptors(
                   }
                 },
                 {
+                  // 当前值依赖最小/最大范围动态收缩,避免输入超出边界。
                   valueType: 'dependency',
                   name: ['payload.value.range.min', 'payload.value.range.max'],
                   dependency: (rangeValues) => {
@@ -1339,6 +1344,7 @@ function getBezierAnimationActionDescriptors(
               ] satisfies ComponentSchema[]
             }
 
+            // 时间控制模式:时间、缓动、回放、自动播放、倒放、缩放等配置。
             return [
               {
                 label: '时间',
@@ -1383,6 +1389,7 @@ function getBezierAnimationActionDescriptors(
                 defaultValue: false
               },
               {
+                // 回放和缩放都是二级开关,打开后再展开附加配置。
                 valueType: 'dependency',
                 name: ['payload.time.playback.enabled'],
                 dependency: (playbackValues) => {
@@ -1516,6 +1523,7 @@ function getTargetModel(targetData?: WidgetEventTargetData) {
   return LvglWidgets[targetData.targetType]
 }
 
+// 属性、样式、动画三类动作统一从这里汇总,便于 SelectPopover 分组展示。
 function getSchemaActionDescriptors(
   targetData?: WidgetEventTargetData,
   project?: IProject
@@ -1825,6 +1833,7 @@ export function getTargetOptions(project?: IProject): OptionType[] {
   return options
 }
 
+// 把 descriptor 转成下拉选项,默认值一并带出去,方便新建动作节点直接回填。
 export function getActionOptions(
   targetData?: WidgetEventTargetData,
   project?: IProject,
@@ -1845,6 +1854,7 @@ export function getActionOptions(
   }))
 }
 
+// 根据当前 target + actionKey 反查 descriptor,供 ActionNode 渲染表单。
 export function resolveActionDescriptor(
   targetData?: WidgetEventTargetData,
   actionData?: WidgetEventActionData,