{"version":3,"file":"useController.mjs","sources":["../../../../components/calendar/hooks/useController.ts"],"sourcesContent":["import { isBoolean, isFunction } from 'lodash-es';\n\nimport { computed, nextTick } from 'vue';\nimport dayjs from 'dayjs';\nimport { COMPONENT_NAME } from '../constants';\nimport { CalendarState } from '../types';\nimport { TdCalendarProps, ControllerOptions } from '../type';\nimport { useConfig } from '@tdesign/shared-hooks';\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":["getDefaultControllerConfigData","visible","arguments","length","undefined","disabled","mode","radioGroupProps","year","selectProps","month","weekend","showWeekendButtonProps","hideWeekendButtonProps","current","currentDayButtonProps","currentMonthButtonProps","userController","props","state","_useConfig","useConfig","COMPONENT_NAME","globalConfig","options","computed","dayJsFilterDate","dayjs","concat","curSelectedYear","curSelectedMonth","re","isShowWeekend","filterDate","toDate","formattedFilterDate","format","curSelectedMode","configData","_ref","_props$controllerConf","controllerConfig","value","isBoolean","_objectSpread","checkControllerVisible","name","conf","checkControllerDisabled","propsName","emitControllerChange","nextTick","isFunction","onControllerChange"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,IAAMA,8BAAA,GAAiC,SAAjCA,8BAAAA,GAAA;AAAA,EAAA,IAAkCC,OAAA,GAAAC,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAU,IAA+B,CAAA;EAAA,OAAA;AAC/ED,IAAAA,OAAA,EAAAA,OAAA;AACAI,IAAAA,QAAU,EAAA,KAAA;AAEVC,IAAAA,IAAM,EAAA;AACJL,MAAAA,OAAS,EAAA,IAAA;AACTM,MAAAA,iBAAiB,EAAC;KACpB;AAEAC,IAAAA,IAAM,EAAA;AACJP,MAAAA,OAAS,EAAA,IAAA;AACTQ,MAAAA,aAAa,EAAC;KAChB;AAEAC,IAAAA,KAAO,EAAA;AACLT,MAAAA,OAAS,EAAA,IAAA;AACTQ,MAAAA,aAAa,EAAC;KAChB;AAEAE,IAAAA,OAAS,EAAA;AACPV,MAAAA,OAAS,EAAA,IAAA;MACTW,wBAAwB,EAAC;AACzBC,MAAAA,wBAAwB,EAAC;KAC3B;AAEAC,IAAAA,OAAS,EAAA;AACPb,MAAAA,OAAS,EAAA,IAAA;MACTc,uBAAuB,EAAC;AACxBC,MAAAA,yBAAyB,EAAC;AAC5B,KAAA;GACF,CAAA;AAAA,CAAA,CAAA;AAEgB,SAAAC,cAAAA,CAAeC,OAAwBC,KAAsB,EAAA;AAC3E,EAAA,IAAAC,UAAA,GAAyBC,SAAA,CAAUC,cAAc,CAAA;IAAzCC,YAAA,GAAAH,UAAA,CAAAG,YAAA,CAAA;AAEF,EAAA,IAAAC,OAAA,GAAUC,SAA4B,YAAM;AAChD,IAAA,IAAMC,kBAAkBC,KAAM,CAAAC,EAAAA,CAAAA,MAAA,CAAGT,KAAM,CAAAU,eAAA,EAAA,GAAA,CAAA,CAAAD,MAAA,CAAmBT,MAAMW,gBAAkB,CAAA,CAAA,CAAA;AAClF,IAAA,IAAMC,EAAK,GAAA;MACTC,eAAeb,KAAM,CAAAa,aAAA;AACrBC,MAAAA,UAAA,EAAYP,gBAAgBQ,MAAO,EAAA;MACnCC,mBAAqB,EAAAT,eAAA,CAAgBU,MAAO,CAAAlB,KAAA,CAAMkB,MAAM,CAAA;MACxD9B,MAAMa,KAAM,CAAAkB,eAAAA;KACd,CAAA;AACO,IAAA,OAAAN,EAAA,CAAA;AACT,GAAC,CAAA,CAAA;AACK,EAAA,IAAAO,UAAA,GAAab,SAA8B,YAAM;IAAA,IAAAc,IAAA,EAAAC,qBAAA,CAAA;IACrD,IAAMC,gBAAmB,GAAAF,CAAAA,IAAA,GAAAC,CAAAA,qBAAA,GAAAtB,KAAA,CAAMuB,gBAAoB,MAAA,IAAA,IAAAD,qBAAA,KAAA,KAAA,CAAA,GAAAA,qBAAA,GAAAjB,YAAA,CAAamB,MAAMD,gBAAoB,cAAAF,IAAA,KAAA,KAAA,CAAA,GAAAA,IAAA,GAAA,IAAA,CAAA;AACtF,IAAA,IAAAI,SAAA,CAAUF,gBAAgB,CAAG,EAAA;MAC/B,OAAOzC,+BAA+ByC,gBAAgB,CAAA,CAAA;AACxD,KAAA;IACO,OAAAG,aAAA,CAAAA,aAAA,CAAA,EAAA,EACF5C,8BAA+B,EAAA,GAC/ByC,gBAAA,CAAA,CAAA;AAEP,GAAC,CAAA,CAAA;AACK,EAAA,IAAAxC,OAAA,GAAUwB,SAAkB,YAAM;IACtC,OAAO,CAAC,CAACa,UAAW,CAAAI,KAAA,IAASJ,WAAWI,KAAM,CAAAzC,OAAA,CAAA;AAChD,GAAC,CAAA,CAAA;EAMD,SAAS4C,uBAAuBC,IAAuB,EAAA;IACrD,IAAIf,EAAK,GAAA,IAAA,CAAA;AACT,IAAA,IAAMgB,OAAOT,UAAW,CAAAI,KAAA,CAAA;IACxB,IAAI,CAACK,IAAA,IAAQ,CAACA,IAAA,CAAK9C,OAAW,IAAA8C,IAAA,CAAKD,IAAU,CAAA,KAAA,KAAA,IAAUC,IAAK,CAAAD,IAAA,CAAA,IAAS,CAACC,IAAA,CAAKD,MAAM7C,OAAU,EAAA;AACpF8B,MAAAA,EAAA,GAAA,KAAA,CAAA;AACP,KAAA;AACO,IAAA,OAAAA,EAAA,CAAA;AACT,GAAA;AAOS,EAAA,SAAAiB,uBAAAA,CAAwBF,MAAcG,SAA4B,EAAA;IACzE,IAAIlB,EAAK,GAAA,KAAA,CAAA;AACT,IAAA,IAAMgB,OAAOT,UAAW,CAAAI,KAAA,CAAA;AACpB,IAAA,IAAAK,IAAA,KAASA,IAAK,CAAA1C,QAAA,IAAa0C,IAAK,CAAAD,IAAA,CAAA,IAASC,IAAK,CAAAD,IAAA,CAAA,CAAMG,SAAc,CAAA,IAAAF,IAAA,CAAKD,IAAM,CAAA,CAAAG,SAAA,CAAA,CAAW5C,QAAY,CAAA,EAAA;AACjG0B,MAAAA,EAAA,GAAA,IAAA,CAAA;AACP,KAAA;AACO,IAAA,OAAAA,EAAA,CAAA;AACT,GAAA;EACA,SAASmB,oBAAuBA,GAAA;AAC9BC,IAAAA,QAAA,CAAS,YAAM;AACFC,MAAAA,UAAA,CAAAlC,KAAA,CAAMmC,kBAAkB,CAAK,IAAAnC,KAAA,CAAMmC,iCAAwB7B,EAAAA,EAAAA,OAAQ,CAAAkB,KAAA,CAAO,CAAA,CAAA;AACvF,KAAC,CAAA,CAAA;AACH,GAAA;EAEO,OAAA;AACLlB,IAAAA,OAAA,EAAAA,OAAA;AACAc,IAAAA,UAAA,EAAAA,UAAA;AACArC,IAAAA,OAAA,EAAAA,OAAA;AACA4C,IAAAA,sBAAA,EAAAA,sBAAA;AACAG,IAAAA,uBAAA,EAAAA,uBAAA;AACAE,IAAAA,oBAAA,EAAAA,oBAAAA;GACF,CAAA;AACF;;;;"}