{"version":3,"file":"useController.mjs","sources":["../../../src/calendar/hook/useController.ts"],"sourcesContent":["import isFunction from 'lodash/isFunction';\nimport isBoolean from 'lodash/isBoolean';\nimport { computed, nextTick } from 'vue';\nimport dayjs from 'dayjs';\nimport { COMPONENT_NAME } from '../const';\nimport { CalendarState } from '../interface';\nimport { TdCalendarProps, ControllerOptions } from '../type';\nimport { useConfig } from '../../hooks/useConfig';\n\nconst getDefaultControllerConfigData = (visible = true): Record<string, any> => ({\n  visible, // 是否显示（全部控件）\n  disabled: false, // 是否禁用（全部控件）\n  // 模式切换单选组件设置\n  mode: {\n    visible: true, // 是否显示\n    radioGroupProps: {}, // 用于透传props给该radioGroup组件\n  },\n  // 年份选择框组件相关设置\n  year: {\n    visible: true, // 是否显示\n    selectProps: {}, // 用于透传props给该select组件\n  },\n  // 年份选择框组件相关设置\n  month: {\n    visible: true, // 是否显示（“year”模式下本身是不显示该组件的）\n    selectProps: {}, // 用于透传props给该select组件\n  },\n  // 隐藏\\显示周末按钮组件相关设置\n  weekend: {\n    visible: true, // 是否显示\n    showWeekendButtonProps: {}, // 用于透传props给显示周末按钮组件\n    hideWeekendButtonProps: {}, // 用于透传props给隐藏周末按钮组件\n  },\n  // “今天\\本月”按钮组件相关设置\n  current: {\n    visible: true, // 是否显示\n    currentDayButtonProps: {}, // 用于透传props给“今天”钮组件（“month”模式下有效）\n    currentMonthButtonProps: {}, // 用于透传props给“本月”按钮组件（“year”模式下有效）\n  },\n});\n\nexport function userController(props: TdCalendarProps, state: CalendarState) {\n  const { globalConfig } = useConfig(COMPONENT_NAME);\n\n  const options = computed<ControllerOptions>(() => {\n    const dayJsFilterDate = dayjs(`${state.curSelectedYear}-${state.curSelectedMonth}`);\n    const re = {\n      isShowWeekend: state.isShowWeekend,\n      filterDate: dayJsFilterDate.toDate(),\n      formattedFilterDate: dayJsFilterDate.format(props.format),\n      mode: state.curSelectedMode,\n    };\n    return re;\n  });\n  const configData = computed<Record<string, any>>(() => {\n    const controllerConfig = props.controllerConfig ?? globalConfig.value.controllerConfig ?? true;\n    if (isBoolean(controllerConfig)) {\n      return getDefaultControllerConfigData(controllerConfig);\n    }\n    return {\n      ...getDefaultControllerConfigData(),\n      ...controllerConfig,\n    };\n  });\n  const visible = computed<boolean>(() => {\n    return !!configData.value && configData.value.visible;\n  });\n  /**\n   * 判断某个控件是否显示\n   * @param name 控件对应的配置节点名（对应controllerConfigData）\n   * @returns true表示显示\n   */\n  function checkControllerVisible(name: string): boolean {\n    let re = true;\n    const conf = configData.value;\n    if (!conf || !conf.visible || conf[name] === false || (conf[name] && !conf[name].visible)) {\n      re = false;\n    }\n    return re;\n  }\n  /**\n   * 判断某个控件是否禁用\n   * @param name 控件对应的配置节点名（对应controllerConfigData）\n   * @param propsName 表示禁用的控件属性（对应controllerConfigData）\n   * @returns true表示禁用\n   */\n  function checkControllerDisabled(name: string, propsName: string): boolean {\n    let re = false;\n    const conf = configData.value;\n    if (conf && (conf.disabled || (conf[name] && conf[name][propsName] && conf[name][propsName].disabled))) {\n      re = true;\n    }\n    return re;\n  }\n  function emitControllerChange() {\n    nextTick(() => {\n      isFunction(props.onControllerChange) && props.onControllerChange({ ...options.value });\n    });\n  }\n\n  return {\n    options,\n    configData,\n    visible,\n    checkControllerVisible,\n    checkControllerDisabled,\n    emitControllerChange,\n  };\n}\n"],"names":["visible","disabled","mode","radioGroupProps","year","selectProps","month","weekend","hideWeekendButtonProps","current","currentMonthButtonProps","filterDate","isBoolean","re","nextTick","isFunction","options","configData","checkControllerVisible","checkControllerDisabled","emitControllerChange"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,IAAA,8BAAA,GAAA,SAAA,8BAAA,GAAA;AAAM,EAAA,IAAA,OAAA,GAAA,SAAA,CAAA,MAAA,GAAA,CAAA,IAAA,SAAA,CAAA,CAAA,CAAA,KAAA,SAAA,GAAA,SAAA,CAAA,CAAA,CAAA,GAAA,IAAA,CAAA;;AACJA,IAAAA,OAAAA,EAAAA,OAAAA;AACAC,IAAAA,QAAAA,EAAAA,KAAAA;AAEAC,IAAAA,IAAAA,EAAAA;AACEF,MAAAA,OAAAA,EAAAA,IAAAA;AACAG,MAAAA,eAAAA,EAAAA,EAAAA;;AAGFC,IAAAA,IAAAA,EAAAA;AACEJ,MAAAA,OAAAA,EAAAA,IAAAA;AACAK,MAAAA,WAAAA,EAAAA,EAAAA;;AAGFC,IAAAA,KAAAA,EAAAA;AACEN,MAAAA,OAAAA,EAAAA,IAAAA;AACAK,MAAAA,WAAAA,EAAAA,EAAAA;;AAGFE,IAAAA,OAAAA,EAAAA;AACEP,MAAAA,OAAAA,EAAAA,IAAAA;;AAEAQ,MAAAA,sBAAAA,EAAAA,EAAAA;;AAGFC,IAAAA,OAAAA,EAAAA;AACET,MAAAA,OAAAA,EAAAA,IAAAA;;AAEAU,MAAAA,uBAAAA,EAAAA,EAAAA;AACF,KAAA;;AACF,CAAA,CAAA;AAEO,SAAA,cAAA,CAAA,KAAA,EAAA,KAAA,EAAA;AACL,EAAA,IAAA,UAAA,GAAA,SAAA,CAAA,cAAA,CAAA;;AAEM,EAAA,IAAA,OAAA,GAAA,QAAA,CAAA,YAAA;AACJ,IAAA,IAAA,eAAA,GAAA,KAAA,CAAA,EAAA,CAAA,MAAA,CAAA,KAAA,CAAA,eAAA,EAAA,GAAA,CAAA,CAAA,MAAA,CAAA,KAAA,CAAA,gBAAA,CAAA,CAAA,CAAA;AACA,IAAA,IAAA,EAAA,GAAA;;AAEEC,MAAAA,UAAAA,EAAAA,eAAAA,CAAAA,MAAAA,EAAAA;;;;AAIK,IAAA,OAAA,EAAA,CAAA;AACT,GAAA,CAAA,CAAA;AACM,EAAA,IAAA,UAAA,GAAA,QAAA,CAAA,YAAA;;;AAEA,IAAA,IAAAC,WAAA,CAAA,gBAAA,CAAA,EAAA;;AAEJ,KAAA;;AAKF,GAAA,CAAA,CAAA;AACM,EAAA,IAAA,OAAA,GAAA,QAAA,CAAA,YAAA;;AAEN,GAAA,CAAA,CAAA;;;AAQE,IAAA,IAAA,IAAA,GAAA,UAAA,CAAA,KAAA,CAAA;;AAEOC,MAAAA,EAAAA,GAAAA,KAAAA,CAAAA;AACP,KAAA;AACO,IAAA,OAAA,EAAA,CAAA;AACT,GAAA;AAOS,EAAA,SAAA,uBAAA,CAAA,IAAA,EAAA,SAAA,EAAA;;AAEP,IAAA,IAAA,IAAA,GAAA,UAAA,CAAA,KAAA,CAAA;AACI,IAAA,IAAA,IAAA,KAAA,IAAA,CAAA,QAAA,IAAA,IAAA,CAAA,IAAA,CAAA,IAAA,IAAA,CAAA,IAAA,CAAA,CAAA,SAAA,CAAA,IAAA,IAAA,CAAA,IAAA,CAAA,CAAA,SAAA,CAAA,CAAA,QAAA,CAAA,EAAA;AACGA,MAAAA,EAAAA,GAAAA,IAAAA,CAAAA;AACP,KAAA;AACO,IAAA,OAAA,EAAA,CAAA;AACT,GAAA;;AAEEC,IAAAA,QAAAA,CAAAA,YAAAA;AACaC,MAAAA,YAAAA,CAAAA,KAAAA,CAAAA,kBAAAA,CAAAA,IAAAA,KAAAA,CAAAA,kBAAAA,CAAAA,aAAAA,CAAAA,EAAAA,EAAAA,OAAAA,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA;AACb,KAAA,CAAA,CAAA;AACF,GAAA;;AAGEC,IAAAA,OAAAA,EAAAA,OAAAA;AACAC,IAAAA,UAAAA,EAAAA,UAAAA;AACAjB,IAAAA,OAAAA,EAAAA,OAAAA;AACAkB,IAAAA,sBAAAA,EAAAA,sBAAAA;AACAC,IAAAA,uBAAAA,EAAAA,uBAAAA;AACAC,IAAAA,oBAAAA,EAAAA,oBAAAA;;AAEJ;;;;"}