{"version":3,"file":"useBackground.mjs","sources":["../../src/hooks/useBackground.ts"],"sourcesContent":["import { BackgroundAttribute, BackgroundRepeatProp, BackgroundSizeProp } from '../types/background';\r\nimport {\r\n  computed,\r\n  getCurrentInstance,\r\n  onBeforeUpdate,\r\n  reactive,\r\n  ref,\r\n  toRef,\r\n  unref,\r\n  watch,\r\n} from 'vue';\r\n\r\nimport backGroundHelper from '../components/background/src/helper';\r\nimport { BackgroundProps, defaultPackgroundData } from '../components/background/src/props';\r\n\r\nconst {\r\n  composeRepeatInfo,\r\n  concatBackgroundColor,\r\n  concatBackgroundImage,\r\n  IMAGE_PAVING_EFFECT,\r\n  IMAGE_POSITION,\r\n  IMAGE_SCALING_CONTAIN,\r\n  IMAGE_SCALING_FILL,\r\n  IMAGE_SCALING_STRETCH,\r\n  parseBackgroundImageGradient,\r\n  parseBackgroundImageUrl,\r\n  parseRepeatInfo,\r\n  sizeOptions,\r\n} = backGroundHelper;\r\n\r\nexport function useBackground(props: BackgroundProps) {\r\n  const input = ref<HTMLInputElement>();\r\n  const { emit } = getCurrentInstance()!;\r\n\r\n  const state = reactive<{\r\n    cache: BackgroundAttribute | null;\r\n    typePrivate: number;\r\n    background: BackgroundAttribute;\r\n    loading: boolean;\r\n  }>({\r\n    cache: null,\r\n    typePrivate: -1,\r\n    background: Object.assign(defaultPackgroundData, props.backgroundData) as BackgroundAttribute,\r\n    loading: false,\r\n  });\r\n\r\n  onBeforeUpdate(() => {\r\n    console.log('onBeforeUpdate 111...');\r\n    if (props.backgroundData) {\r\n      console.log('onBeforeUpdate 222...');\r\n      state.background = props.backgroundData;\r\n    }\r\n  });\r\n\r\n  const imageUrl = computed(() => {\r\n    console.log('computed imageUrl==> %o', state.background.backgroundImage);\r\n    return parseBackgroundImageUrl(state.background.backgroundImage) || '';\r\n  });\r\n\r\n  const colorForPicker = computed({\r\n    get: () => {\r\n      debugger;\r\n      const color =\r\n        parseBackgroundImageGradient(state.background.backgroundImage) ||\r\n        props?.backgroundData?.backgroundColor ||\r\n        '';\r\n      console.log('colorForPicker ==> %o', color);\r\n      return color;\r\n    },\r\n    set: (newVal) => {\r\n      console.log('newVal %o', newVal);\r\n    },\r\n  });\r\n\r\n  const repeatInfoComposed = computed({\r\n    get: () => {\r\n      const defaultOption = IMAGE_PAVING_EFFECT[0];\r\n      const {\r\n        backgroundRepeat = defaultOption.backgroundRepeat,\r\n        backgroundPositionX = defaultOption.backgroundPositionX,\r\n        backgroundPositionY = defaultOption.backgroundPositionY,\r\n        backgroundSize = defaultOption.backgroundSize,\r\n      } = state.background;\r\n      return [backgroundRepeat, backgroundPositionX, backgroundPositionY, backgroundSize].join(',');\r\n    },\r\n    set: (newVal) => {\r\n      handleRepeatChange(newVal);\r\n    },\r\n  });\r\n\r\n  // 平铺效果数据集\r\n  const pavingEffectList = computed(() => {\r\n    const pavingList = IMAGE_PAVING_EFFECT.filter(\r\n      ({ backgroundSize }) => backgroundSize && sizeOptions.indexOf(backgroundSize) > -1,\r\n    ).map((item) => ({\r\n      value: composeRepeatInfo(item as Partial<BackgroundAttribute>),\r\n      label: item.label,\r\n      type: item.key,\r\n    }));\r\n\r\n    console.log('pavingList ===> %o', pavingList);\r\n\r\n    return pavingList;\r\n  });\r\n\r\n  // 平铺效果数据\r\n  const pavingEffectInfos = computed(() => {\r\n    return IMAGE_PAVING_EFFECT.filter(\r\n      ({ backgroundSize }) => backgroundSize && sizeOptions.indexOf(backgroundSize) > -1,\r\n    ).map((item) => composeRepeatInfo(item as Partial<BackgroundAttribute>));\r\n  });\r\n\r\n  // 是否是平铺\r\n  const isOnPavingEffect = computed(() => {\r\n    console.log(\r\n      'pavingEffectInfos=%o, repeatInfoComposed=%o',\r\n      pavingEffectInfos.value,\r\n      repeatInfoComposed.value,\r\n    );\r\n    return unref(pavingEffectInfos)?.indexOf(unref(repeatInfoComposed)) > -1;\r\n  });\r\n\r\n  // 是否显示图片位置\r\n  const isOnImagePosition = computed(() => {\r\n    console.log(\r\n      'imagePositionInfos=%o, repeatInfoComposed=%o',\r\n      imagePositionInfos.value,\r\n      repeatInfoComposed.value,\r\n    );\r\n    return unref(imagePositionInfos)?.indexOf(unref(repeatInfoComposed)) > -1;\r\n  });\r\n\r\n  // 图片位置数据\r\n  const imagePositionInfos = computed(() => {\r\n    return IMAGE_POSITION.filter(\r\n      ({ backgroundSize }) => backgroundSize && sizeOptions.indexOf(backgroundSize) > -1,\r\n    ).map((item) => composeRepeatInfo(item as Partial<BackgroundAttribute>));\r\n  });\r\n\r\n  // 图片拉伸数据\r\n  const stretchInfos = computed(() => {\r\n    return IMAGE_SCALING_STRETCH.filter(\r\n      ({ backgroundSize }) => backgroundSize && sizeOptions.indexOf(backgroundSize) > -1,\r\n    ).map((item) => composeRepeatInfo(item as Partial<BackgroundAttribute>));\r\n  });\r\n\r\n  // 是否展示拉升\r\n  const isOnStretch = computed(() => {\r\n    return unref(stretchInfos).indexOf(unref(repeatInfoComposed)) > -1;\r\n  });\r\n\r\n  // 图片填充数据\r\n  const fillInfos = computed(() => {\r\n    return IMAGE_SCALING_FILL.filter(\r\n      ({ backgroundSize }) => backgroundSize && sizeOptions.indexOf(backgroundSize) > -1,\r\n    ).map((item) => composeRepeatInfo(item as Partial<BackgroundAttribute>));\r\n  });\r\n\r\n  // 等比例 信息\r\n  const containInfos = computed(() => {\r\n    return IMAGE_SCALING_CONTAIN.filter(\r\n      ({ backgroundSize }) => backgroundSize && sizeOptions.indexOf(backgroundSize) > -1,\r\n    ).map((item) => composeRepeatInfo(item as Partial<BackgroundAttribute>));\r\n  });\r\n\r\n  // 是否是填充\r\n  const isOnFill = computed(() => {\r\n    return unref(fillInfos).indexOf(repeatInfoComposed.value) > -1;\r\n  });\r\n\r\n  // 是否是等比例\r\n  const isOnContain = computed(() => {\r\n    return unref(containInfos).indexOf(repeatInfoComposed.value) > -1;\r\n  });\r\n\r\n  const backgroundAttachment = computed(() => {\r\n    const { backgroundAttachment = 'scroll' } = state.background;\r\n    return backgroundAttachment;\r\n  });\r\n\r\n  const opacityForSlider = computed({\r\n    get: () => {\r\n      const { opacity = 1 } = state.background;\r\n      return parseFloat((opacity * 100).toFixed(0));\r\n    },\r\n    set: (newVal) => {\r\n      handleOpacityChange(newVal);\r\n    },\r\n  });\r\n\r\n  const imageScaling = computed({\r\n    get: () => {\r\n      return isOnPavingEffect.value\r\n        ? 0\r\n        : isOnImagePosition.value\r\n        ? 1\r\n        : isOnStretch.value\r\n        ? 2\r\n        : isOnFill.value\r\n        ? 3\r\n        : isOnContain.value\r\n        ? 4\r\n        : -1;\r\n    },\r\n    set: (newVal) => {\r\n      console.log('start scaling ....');\r\n      handleImageScalingChange(newVal);\r\n      console.log('end scaling ....');\r\n    },\r\n  });\r\n\r\n  const shouldRenderAttachment = computed(() => {\r\n    return imageUrl.value && props.useAttachment && isSupportAttachment(state.background);\r\n  });\r\n\r\n  function isSupportAttachment({\r\n    backgroundRepeat,\r\n    backgroundSize,\r\n  }: {\r\n    backgroundRepeat: BackgroundRepeatProp;\r\n    backgroundSize: BackgroundSizeProp;\r\n  }) {\r\n    return (\r\n      backgroundRepeat &&\r\n      backgroundRepeat !== 'repeat' &&\r\n      backgroundSize &&\r\n      backgroundSize === 'auto'\r\n    );\r\n  }\r\n\r\n  const shouldRenderOpacity = computed(() => {\r\n    const { opacity = 1 } = state.background;\r\n    return imageUrl.value && opacity >= 0;\r\n  });\r\n\r\n  const backgroundType = computed({\r\n    get() {\r\n      return imageUrl.value ? 1 : state.typePrivate > -1 ? state.typePrivate : 0;\r\n    },\r\n    set(newVal) {\r\n      state.typePrivate = newVal;\r\n      if (newVal === 0) {\r\n        state.cache = { ...state.background };\r\n        const currentValue = {\r\n          backgroundColor: concatBackgroundColor(colorForPicker.value),\r\n          backgroundImage: concatBackgroundImage('', colorForPicker.value),\r\n        };\r\n        //emit('update:modelValue', currentValue);\r\n        emit('typeChange', currentValue);\r\n      } else if (state.cache) {\r\n        const currentValue = {\r\n          ...state.cache,\r\n          backgroundColor: concatBackgroundColor(colorForPicker.value),\r\n          backgroundImage: concatBackgroundImage(\r\n            parseBackgroundImageUrl(state.cache.backgroundImage),\r\n            colorForPicker.value,\r\n          ),\r\n        };\r\n        //emit('update:modelValue', currentValue);\r\n        emit('typeChange', currentValue);\r\n      }\r\n    },\r\n  });\r\n\r\n  function handleDel() {\r\n    const currentValue = {\r\n      backgroundColor: concatBackgroundColor(colorForPicker.value),\r\n      backgroundImage: concatBackgroundImage('', colorForPicker.value),\r\n    };\r\n    // emit('update:modelValue', currentValue);\r\n    emit('imageChange', currentValue);\r\n    if (state.typePrivate === -1) {\r\n      state.typePrivate = 1;\r\n    }\r\n  }\r\n\r\n  function getCurrentValueByColor(color: string) {\r\n    return {\r\n      ...state.background,\r\n      backgroundColor: concatBackgroundColor(color),\r\n      backgroundImage: concatBackgroundImage(imageUrl.value, color),\r\n    };\r\n  }\r\n\r\n  function handleColorInput(color: string) {\r\n    const currentValue = getCurrentValueByColor(color);\r\n    // emit('update:modelValue', currentValue);\r\n    emit('colorChanging', currentValue);\r\n  }\r\n\r\n  function handleColorChangeStop(color: string) {\r\n    const currentValue = getCurrentValueByColor(color);\r\n    // emit('update:modelValue', currentValue);\r\n    emit('colorChange', currentValue);\r\n  }\r\n\r\n  function handleThemeColorClick(themeColor: string) {\r\n    console.log('handleThemeColorClick ===========>%o', themeColor);\r\n    emit('colorChanging', themeColor);\r\n  }\r\n\r\n  function handleJump() {\r\n    if (props.linkJump) {\r\n      props.linkJump();\r\n    } else {\r\n      window.open(imageUrl.value);\r\n    }\r\n  }\r\n\r\n  function handleFileUpload() {\r\n    if (props.fileUpload) {\r\n      props.fileUpload();\r\n    } else {\r\n      const inputEl = input.value;\r\n      if (inputEl) {\r\n        inputEl.value = '';\r\n        inputEl.click();\r\n      }\r\n    }\r\n  }\r\n\r\n  function handleFileChange() {\r\n    // const { files } = ev.target;\r\n    // if (!files) return;\r\n\r\n    // const imageUrl = URL.createObjectURL(files[0]);\r\n\r\n    const imageUrl =\r\n      `url('https://1.s140i.faiscm.com/2/AIwBCAAQAhgAIJn17NUFKKCYhZkFMIAPOIAK.jpg')` || '';\r\n\r\n    const [backgroundRepeat, backgroundPositionX, backgroundPositionY, backgroundSize] =\r\n      parseRepeatInfo(repeatInfoComposed.value);\r\n\r\n    const currentValue = {\r\n      ...state.background,\r\n      backgroundRepeat,\r\n      backgroundPositionX,\r\n      backgroundPositionY,\r\n      backgroundSize,\r\n      backgroundImage: concatBackgroundImage(imageUrl, colorForPicker.value),\r\n    };\r\n    // emit('update:modelValue', currentValue);\r\n    emit('imageChange', currentValue);\r\n  }\r\n\r\n  function handleImageScalingChange(newVal: number) {\r\n    let currentRepeatInfoComposed = '';\r\n    switch (newVal) {\r\n      case 0:\r\n        currentRepeatInfoComposed = unref(pavingEffectInfos)[0];\r\n        break;\r\n      case 1:\r\n        currentRepeatInfoComposed = unref(imagePositionInfos)[4];\r\n        break;\r\n      case 2:\r\n        currentRepeatInfoComposed = unref(stretchInfos)[0];\r\n        break;\r\n      case 3:\r\n        currentRepeatInfoComposed = unref(fillInfos)[0];\r\n        break;\r\n      case 4:\r\n        currentRepeatInfoComposed = unref(containInfos)[0];\r\n        break;\r\n      case 5:\r\n        currentRepeatInfoComposed = composeRepeatInfo({\r\n          backgroundRepeat: '',\r\n          backgroundPositionX: '',\r\n          backgroundPositionY: '',\r\n          backgroundSize: '',\r\n        });\r\n        break;\r\n    }\r\n\r\n    console.log('get currentRepeatInfoComposed info ....');\r\n\r\n    if (currentRepeatInfoComposed) {\r\n      const [backgroundRepeat, backgroundPositionX, backgroundPositionY, backgroundSize] =\r\n        parseRepeatInfo(currentRepeatInfoComposed);\r\n\r\n      console.log('parseRepeatInfo info ....');\r\n\r\n      const currentValue = {\r\n        ...state.background,\r\n        backgroundAttachment: isSupportAttachment({\r\n          backgroundRepeat,\r\n          backgroundSize,\r\n        })\r\n          ? state.background.backgroundAttachment || 'scroll'\r\n          : '',\r\n        backgroundRepeat,\r\n        backgroundPositionX,\r\n        backgroundPositionY,\r\n        backgroundSize,\r\n      };\r\n\r\n      console.log('merge info ....');\r\n      // emit('update:modelValue', currentValue);\r\n      emit('scaleChange', currentValue);\r\n    }\r\n  }\r\n\r\n  function handleRepeatChange(newVal: string) {\r\n    const [backgroundRepeat, backgroundPositionX, backgroundPositionY, backgroundSize] =\r\n      parseRepeatInfo(newVal);\r\n\r\n    const currentValue = {\r\n      ...state.background,\r\n      backgroundAttachment: isSupportAttachment({\r\n        backgroundRepeat,\r\n        backgroundSize,\r\n      })\r\n        ? state.background.backgroundAttachment || 'scroll'\r\n        : '',\r\n      backgroundRepeat,\r\n      backgroundPositionX,\r\n      backgroundPositionY,\r\n      backgroundSize,\r\n    };\r\n    // emit('update:modelValue', currentValue);\r\n    emit('repeatChange', currentValue);\r\n  }\r\n\r\n  function handleBackgroundAttachmentChange(val: any) {\r\n    const currentValue = {\r\n      ...state.background,\r\n      backgroundAttachment: val,\r\n    };\r\n    emit('input', currentValue);\r\n    emit('attachmentChange', currentValue);\r\n  }\r\n\r\n  function handleOpacityChange(newVal: any) {\r\n    const opacity = parseFloat((newVal / 100).toFixed(2));\r\n    state.background.opacity = opacity;\r\n    emit('opacityChanging', state.background);\r\n  }\r\n\r\n  function handleOpacityChangeStop(newVal: any) {\r\n    const opacity = parseFloat((newVal / 100).toFixed(2));\r\n    state.background.opacity = opacity;\r\n    emit('opacityChange', state.background);\r\n  }\r\n\r\n  function transformInfos(options: Partial<BackgroundAttribute>[]) {\r\n    return options\r\n      .filter(({ backgroundSize }) => backgroundSize && sizeOptions.indexOf(backgroundSize) > -1)\r\n      .map(composeRepeatInfo);\r\n  }\r\n\r\n  function handleBeforeUpload() {\r\n    // const { size, name } = file;\r\n    // 生成图片缩略图\r\n    // if (checkImgType(file)) {\r\n    //   // beforeUpload，如果异步会调用自带上传方法\r\n    //   // file.thumbUrl = await getBase64(file);\r\n    //   // getBase64WithFile(file).then(({ result: thumbUrl }) => {\r\n    //   //   state.background.backgroundImage = thumbUrl;\r\n    //   // });\r\n    //\r\n    //   // const url = useObjectUrl(file);\r\n    //   state.background.backgroundImage =\r\n    //     `url('https://1.s140i.faiscm.com/2/AIwBCAAQAhgAIJn17NUFKKCYhZkFMIAPOIAK.jpg')` || '';\r\n    // }\r\n    // state.background.backgroundImage =\r\n    //   `url('https://1.s140i.faiscm.com/2/AIwBCAAQAhgAIJn17NUFKKCYhZkFMIAPOIAK.jpg')` || '';\r\n    handleFileUpload();\r\n    return false;\r\n  }\r\n\r\n  watch(\r\n    () => imageUrl,\r\n    () => {\r\n      /* 在下拉面板中，改变url导致面板宽度改变时, 通知下拉面板更新 */\r\n      emit('dropdownPanelUpdate');\r\n    },\r\n  );\r\n\r\n  return {\r\n    loading: toRef(state, 'loading'),\r\n    imageUrl,\r\n    imageScaling,\r\n    shouldRenderAttachment,\r\n    shouldRenderOpacity,\r\n    backgroundType,\r\n    handleDel,\r\n    handleColorInput,\r\n    handleColorChangeStop,\r\n    handleThemeColorClick,\r\n    handleJump,\r\n    handleFileUpload,\r\n    handleFileChange,\r\n    handleImageScalingChange,\r\n    handleRepeatChange,\r\n    handleBackgroundAttachmentChange,\r\n    handleOpacityChange,\r\n    handleOpacityChangeStop,\r\n    transformInfos,\r\n    isOnPavingEffect,\r\n    repeatInfoComposed,\r\n    pavingEffectList,\r\n    isOnImagePosition,\r\n    imagePositionInfos,\r\n    colorForPicker,\r\n    backgroundAttachment,\r\n    opacityForSlider,\r\n    handleBeforeUpload,\r\n  };\r\n}\r\n"],"names":["backgroundAttachment","imageUrl"],"mappings":"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"}