{"version":3,"file":"useAdvanced2.mjs","sources":["../../../../../../../../packages/components/form/src/hooks/useAdvanced.ts"],"sourcesContent":["import { computed, unref, watch } from 'vue'\nimport { useDebounceFn } from '@vueuse/core'\nimport { useBreakpoint } from '@tav-ui/hooks/event/useBreakpoint'\nimport { isBoolean, isFunction, isNumber, isObject } from '@tav-ui/utils/is'\nimport type { ComputedRef, Ref } from 'vue'\nimport type { FormEmitType, FormProps, FormSchema } from '../types/form'\nimport type { AdvanceState } from '../types/hooks'\nimport type { ColEx } from '../types/index'\n\nconst BASIC_COL_LEN = 24\n\ntype Recordable<T = any> = Record<string, T>\ninterface UseAdvancedContext {\n  advanceState: AdvanceState\n  emit: FormEmitType\n  getProps: ComputedRef<FormProps>\n  getSchema: ComputedRef<FormSchema[]>\n  formModel: Recordable\n  defaultValueRef: Ref<Recordable>\n}\n\nexport default function ({\n  advanceState,\n  emit,\n  getProps,\n  getSchema,\n  formModel,\n  defaultValueRef,\n}: UseAdvancedContext) {\n  const { realWidthRef, screenEnum, screenRef } = useBreakpoint()\n\n  const getEmptySpan = computed((): number => {\n    if (!advanceState.isAdvanced) return 0\n\n    // For some special cases, you need to manually specify additional blank lines\n    const emptySpan = unref(getProps).emptySpan || 0\n\n    if (isNumber(emptySpan)) return emptySpan\n\n    if (isObject(emptySpan)) {\n      const { span = 0 } = emptySpan\n      const screen = unref(screenRef) as string\n\n      const screenSpan = (emptySpan as any)[screen.toLowerCase()]\n      return screenSpan || span || 0\n    }\n    return 0\n  })\n\n  const debounceUpdateAdvanced = useDebounceFn(updateAdvanced, 30)\n\n  watch(\n    [() => unref(getSchema), () => advanceState.isAdvanced, () => unref(realWidthRef)],\n    () => {\n      const { showAdvancedButton } = unref(getProps)\n      if (showAdvancedButton) debounceUpdateAdvanced()\n    },\n    { immediate: true }\n  )\n\n  function getAdvanced(itemCol: Partial<ColEx>, itemColSum = 0, isLastAction = false) {\n    const width = unref(realWidthRef)\n\n    const mdWidth =\n      parseInt(itemCol.md as string) ||\n      parseInt(itemCol.xs as string) ||\n      parseInt(itemCol.sm as string) ||\n      (itemCol.span as number) ||\n      BASIC_COL_LEN\n\n    const lgWidth = parseInt(itemCol.lg as string) || mdWidth\n    const xlWidth = parseInt(itemCol.xl as string) || lgWidth\n    const xxlWidth = parseInt(itemCol.xxl as string) || xlWidth\n    if (width <= screenEnum.LG) itemColSum += mdWidth\n    else if (width < screenEnum.XL) itemColSum += lgWidth\n    else if (width < screenEnum.XXL) itemColSum += xlWidth\n    else itemColSum += xxlWidth\n\n    if (isLastAction) {\n      advanceState.hideAdvanceBtn = false\n      if (itemColSum <= BASIC_COL_LEN * 2) {\n        // When less than or equal to 2 lines, the collapse and expand buttons are not displayed\n        advanceState.hideAdvanceBtn = true\n        advanceState.isAdvanced = true\n      } else if (\n        itemColSum > BASIC_COL_LEN * 2 &&\n        itemColSum <= BASIC_COL_LEN * (unref(getProps).autoAdvancedLine || 3)\n      ) {\n        advanceState.hideAdvanceBtn = false\n\n        // More than 3 lines collapsed by default\n      } else if (!advanceState.isLoad) {\n        advanceState.isLoad = true\n        advanceState.isAdvanced = !advanceState.isAdvanced\n      }\n      return { isAdvanced: advanceState.isAdvanced, itemColSum }\n    }\n    if (itemColSum > BASIC_COL_LEN * (unref(getProps).alwaysShowLines || 1)) {\n      return { isAdvanced: advanceState.isAdvanced, itemColSum }\n    } else {\n      // The first line is always displayed\n      return { isAdvanced: true, itemColSum }\n    }\n  }\n\n  function updateAdvanced() {\n    let itemColSum = 0\n    let realItemColSum = 0\n    const { baseColProps = {} } = unref(getProps)\n\n    for (const schema of unref(getSchema)) {\n      const { show, colProps } = schema\n      let isShow = true\n\n      if (isBoolean(show)) isShow = show\n\n      if (isFunction(show)) {\n        isShow = show({\n          schema,\n          model: formModel,\n          field: schema.field,\n          values: {\n            ...unref(defaultValueRef),\n            ...formModel,\n          },\n        })\n      }\n\n      if (isShow && (colProps || baseColProps)) {\n        const { itemColSum: sum, isAdvanced } = getAdvanced(\n          { ...baseColProps, ...colProps },\n          itemColSum\n        )\n\n        itemColSum = sum || 0\n        if (isAdvanced) realItemColSum = itemColSum\n\n        schema.isAdvanced = isAdvanced\n      }\n    }\n\n    advanceState.actionSpan = (realItemColSum % BASIC_COL_LEN) + unref(getEmptySpan)\n\n    getAdvanced(unref(getProps).actionColOptions || { span: BASIC_COL_LEN }, itemColSum, true)\n\n    emit('advanced-change')\n  }\n\n  function handleToggleAdvanced() {\n    advanceState.isAdvanced = !advanceState.isAdvanced\n  }\n\n  return { handleToggleAdvanced }\n}\n"],"names":[],"mappings":";;;;;AAIA,MAAM,aAAa,GAAG,EAAE,CAAC;AACV,oBAAQ,CAAC;AACxB,EAAE,YAAY;AACd,EAAE,IAAI;AACN,EAAE,QAAQ;AACV,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,eAAe;AACjB,CAAC,EAAE;AACH,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,aAAa,EAAE,CAAC;AAClE,EAAE,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM;AACtC,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU;AAChC,MAAM,OAAO,CAAC,CAAC;AACf,IAAI,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC;AACrD,IAAI,IAAI,QAAQ,CAAC,SAAS,CAAC;AAC3B,MAAM,OAAO,SAAS,CAAC;AACvB,IAAI,IAAI,QAAQ,CAAC,SAAS,CAAC,EAAE;AAC7B,MAAM,MAAM,EAAE,IAAI,GAAG,CAAC,EAAE,GAAG,SAAS,CAAC;AACrC,MAAM,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;AACtC,MAAM,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;AACzD,MAAM,OAAO,UAAU,IAAI,IAAI,IAAI,CAAC,CAAC;AACrC,KAAK;AACL,IAAI,OAAO,CAAC,CAAC;AACb,GAAG,CAAC,CAAC;AACL,EAAE,MAAM,sBAAsB,GAAG,aAAa,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;AACnE,EAAE,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,YAAY,CAAC,UAAU,EAAE,MAAM,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM;AAClG,IAAI,MAAM,EAAE,kBAAkB,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;AACnD,IAAI,IAAI,kBAAkB;AAC1B,MAAM,sBAAsB,EAAE,CAAC;AAC/B,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAC1B,EAAE,SAAS,WAAW,CAAC,OAAO,EAAE,UAAU,GAAG,CAAC,EAAE,YAAY,GAAG,KAAK,EAAE;AACtE,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC;AACtC,IAAI,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,IAAI,IAAI,aAAa,CAAC;AAC1H,IAAI,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC;AACpD,IAAI,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC;AACpD,IAAI,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC;AACtD,IAAI,IAAI,KAAK,IAAI,UAAU,CAAC,EAAE;AAC9B,MAAM,UAAU,IAAI,OAAO,CAAC;AAC5B,SAAS,IAAI,KAAK,GAAG,UAAU,CAAC,EAAE;AAClC,MAAM,UAAU,IAAI,OAAO,CAAC;AAC5B,SAAS,IAAI,KAAK,GAAG,UAAU,CAAC,GAAG;AACnC,MAAM,UAAU,IAAI,OAAO,CAAC;AAC5B;AACA,MAAM,UAAU,IAAI,QAAQ,CAAC;AAC7B,IAAI,IAAI,YAAY,EAAE;AACtB,MAAM,YAAY,CAAC,cAAc,GAAG,KAAK,CAAC;AAC1C,MAAM,IAAI,UAAU,IAAI,aAAa,GAAG,CAAC,EAAE;AAC3C,QAAQ,YAAY,CAAC,cAAc,GAAG,IAAI,CAAC;AAC3C,QAAQ,YAAY,CAAC,UAAU,GAAG,IAAI,CAAC;AACvC,OAAO,MAAM,IAAI,UAAU,GAAG,aAAa,GAAG,CAAC,IAAI,UAAU,IAAI,aAAa,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,gBAAgB,IAAI,CAAC,CAAC,EAAE;AAC1H,QAAQ,YAAY,CAAC,cAAc,GAAG,KAAK,CAAC;AAC5C,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;AACvC,QAAQ,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC;AACnC,QAAQ,YAAY,CAAC,UAAU,GAAG,CAAC,YAAY,CAAC,UAAU,CAAC;AAC3D,OAAO;AACP,MAAM,OAAO,EAAE,UAAU,EAAE,YAAY,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC;AACjE,KAAK;AACL,IAAI,IAAI,UAAU,GAAG,aAAa,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,eAAe,IAAI,CAAC,CAAC,EAAE;AAC7E,MAAM,OAAO,EAAE,UAAU,EAAE,YAAY,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC;AACjE,KAAK,MAAM;AACX,MAAM,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;AAC9C,KAAK;AACL,GAAG;AACH,EAAE,SAAS,cAAc,GAAG;AAC5B,IAAI,IAAI,UAAU,GAAG,CAAC,CAAC;AACvB,IAAI,IAAI,cAAc,GAAG,CAAC,CAAC;AAC3B,IAAI,MAAM,EAAE,YAAY,GAAG,EAAE,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;AAClD,IAAI,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,EAAE;AAC3C,MAAM,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;AACxC,MAAM,IAAI,MAAM,GAAG,IAAI,CAAC;AACxB,MAAM,IAAI,SAAS,CAAC,IAAI,CAAC;AACzB,QAAQ,MAAM,GAAG,IAAI,CAAC;AACtB,MAAM,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE;AAC5B,QAAQ,MAAM,GAAG,IAAI,CAAC;AACtB,UAAU,MAAM;AAChB,UAAU,KAAK,EAAE,SAAS;AAC1B,UAAU,KAAK,EAAE,MAAM,CAAC,KAAK;AAC7B,UAAU,MAAM,EAAE;AAClB,YAAY,GAAG,KAAK,CAAC,eAAe,CAAC;AACrC,YAAY,GAAG,SAAS;AACxB,WAAW;AACX,SAAS,CAAC,CAAC;AACX,OAAO;AACP,MAAM,IAAI,MAAM,KAAK,QAAQ,IAAI,YAAY,CAAC,EAAE;AAChD,QAAQ,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,WAAW,CAAC,EAAE,GAAG,YAAY,EAAE,GAAG,QAAQ,EAAE,EAAE,UAAU,CAAC,CAAC;AAC1G,QAAQ,UAAU,GAAG,GAAG,IAAI,CAAC,CAAC;AAC9B,QAAQ,IAAI,UAAU;AACtB,UAAU,cAAc,GAAG,UAAU,CAAC;AACtC,QAAQ,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;AACvC,OAAO;AACP,KAAK;AACL,IAAI,YAAY,CAAC,UAAU,GAAG,cAAc,GAAG,aAAa,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC;AACnF,IAAI,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,gBAAgB,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;AAC/F,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC;AAC5B,GAAG;AACH,EAAE,SAAS,oBAAoB,GAAG;AAClC,IAAI,YAAY,CAAC,UAAU,GAAG,CAAC,YAAY,CAAC,UAAU,CAAC;AACvD,GAAG;AACH,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAClC;;;;"}