{"version":3,"file":"vue_utils.mjs","sources":["../../src/utils/vue_utils.js"],"sourcesContent":["const cached = {};\r\nconst utils = {\r\n  getTag(target) {\r\n    return Object.prototype.toString.call(target);\r\n  },\r\n  baseMerge(target, filterFn, ...sources) {\r\n    if (!target) target = {};\r\n\r\n    sources\r\n      .filter((v) => v && typeof v === 'object')\r\n      .forEach((source) => {\r\n        Object.keys(source).forEach((key) => {\r\n          const targetTag = utils.getTag(target[key]);\r\n          const sourceTag = utils.getTag(source[key]);\r\n\r\n          if (sourceTag === '[object Array]' || sourceTag === '[object Object]') {\r\n            if (targetTag !== sourceTag) target[key] = sourceTag === '[object Array]' ? [] : {};\r\n            utils.baseMerge(target[key], filterFn, source[key]);\r\n          } else if (filterFn(target, source, key)) {\r\n            target[key] = source[key];\r\n          }\r\n        });\r\n      });\r\n\r\n    return target;\r\n  },\r\n  merge(target, ...sources) {\r\n    return utils.baseMerge(target, filterFn, ...sources);\r\n  },\r\n  dispatch: function (context, componentName, eventName, params) {\r\n    let parent = context.$parent || context.$root;\r\n    let name = parent.$options.name;\r\n\r\n    while (parent && (!name || name !== componentName)) {\r\n      parent = parent.$parent;\r\n\r\n      if (parent) {\r\n        name = parent.$options.name;\r\n      }\r\n    }\r\n    if (parent) {\r\n      parent.$bus?.$emit([eventName], params);\r\n    }\r\n  },\r\n  broadcast: function (context, componentName, eventName, params) {\r\n    broadcast.call(context, componentName, eventName, params);\r\n  },\r\n  findParentComponent(_context, componentName) {\r\n    const parent = _context.parent;\r\n    if (parent) {\r\n      if (parent.type.name && parent.type.name === componentName) {\r\n        return parent;\r\n      } else {\r\n        return this.findParentComponent(parent, componentName);\r\n      }\r\n    }\r\n  },\r\n  findComponentUpward: function (_context, componentName, componentNames) {\r\n    const parent = this.findParentComponent(_context, componentName);\r\n    if (parent) {\r\n      const { proxy } = parent;\r\n      return proxy;\r\n    }\r\n  },\r\n  findComponentsUpward: function (_context, componentName, componentNames) {\r\n    const components = [];\r\n\r\n    if (typeof componentName === 'string') {\r\n      componentNames = [componentName];\r\n    } else {\r\n      componentNames = componentName;\r\n    }\r\n\r\n    let parent = this.findParentComponent(_context, componentName);\r\n    const name = parent.type.name;\r\n    while (parent) {\r\n      if (componentNames.indexOf(name) > -1) {\r\n        components.push(parent.proxy);\r\n      }\r\n      parent = parent.parent;\r\n    }\r\n    return components;\r\n  },\r\n  findComponentsDownward: function (context, componentName, comps) {\r\n    const components = comps || [];\r\n    // const childrens = context.$children;\r\n    //\r\n    // if (childrens.length) {\r\n    //   childrens.forEach(function (child) {\r\n    //     const name = child.$options.name;\r\n    //     const childs = child.$children;\r\n    //\r\n    //     if (name === componentName) components.push(child);\r\n    //     if (childs.length) {\r\n    //       const findChilds = utils.findComponentsDownward(child, componentName, components);\r\n    //       if (findChilds) components.concat(findChilds);\r\n    //     }\r\n    //   });\r\n    // }\r\n\r\n    // context.subTree.dynamicChildren.forEach((e) => {\r\n    //   if (e.type) {\r\n    //     console.log(e);\r\n    //   }\r\n    // });\r\n\r\n    return components;\r\n  },\r\n  oneOf: function (value, validList) {\r\n    for (let i = 0; i < validList.length; i++) {\r\n      if (value === validList[i]) {\r\n        return true;\r\n      }\r\n    }\r\n    return false;\r\n  },\r\n  camelCase: function (str) {\r\n    const SPECIAL_CHARS_REGEXP = /-(\\w)/g;\r\n\r\n    return str.replace(SPECIAL_CHARS_REGEXP, function ($0, $1) {\r\n      return $1.toUpperCase();\r\n    });\r\n  },\r\n  getStyle: function (element, styleName) {\r\n    if (!element || !styleName) return null;\r\n    styleName = utils.camelCase(styleName);\r\n    if (styleName === 'float') {\r\n      styleName = 'cssFloat';\r\n    }\r\n    try {\r\n      const computed = document.defaultView.getComputedStyle(element, '');\r\n      return element.style[styleName] || computed ? computed[styleName] : null;\r\n    } catch (e) {\r\n      return element.style[styleName];\r\n    }\r\n  },\r\n  setStyle: function (elementList, styleName, style) {\r\n    if (!elementList.length || !styleName) return null;\r\n    styleName = utils.camelCase(styleName);\r\n\r\n    if (styleName === 'float') {\r\n      styleName = 'cssFloat';\r\n    }\r\n\r\n    for (let i = 0; i < elementList.length; i++) {\r\n      elementList[i].style[styleName] = style;\r\n    }\r\n  },\r\n  isValueNumber: function (value) {\r\n    return /^[1-9][0-9]*$/.test(value + '');\r\n  },\r\n  // 求值并记忆默认的滚动条的宽度\r\n  scrollbarWidth: function (baseDom) {\r\n    const _baseDom = baseDom || document.body;\r\n    const outer = document.createElement('div');\r\n    outer.className = 'jz-scrollbar-wrap';\r\n    outer.style.visibility = 'hidden';\r\n    outer.style.width = '100px';\r\n    outer.style.position = 'absolute';\r\n    outer.style.top = '-9999px';\r\n    _baseDom.appendChild(outer);\r\n\r\n    const widthNoScroll = outer.offsetWidth;\r\n    outer.style.overflow = 'scroll';\r\n\r\n    const inner = document.createElement('div');\r\n    inner.style.width = '100%';\r\n    outer.appendChild(inner);\r\n\r\n    const widthWithScroll = inner.offsetWidth;\r\n    outer.parentNode.removeChild(outer);\r\n    const scrollBarWidth = widthNoScroll - widthWithScroll;\r\n\r\n    return scrollBarWidth;\r\n  },\r\n  off: function (element, event, handler) {\r\n    if (element && event) {\r\n      element.removeEventListener(event, handler, false);\r\n    }\r\n  },\r\n  on: function (element, event, handler) {\r\n    if (element && event && handler) {\r\n      element.addEventListener(event, handler, false);\r\n    }\r\n  },\r\n  throttle: function (fn, wait) {\r\n    let startTime = 0;\r\n    wait = wait || 200;\r\n    return function () {\r\n      const endTime = +new Date();\r\n      if (endTime - startTime > wait) {\r\n        fn.apply(this, arguments);\r\n        startTime = endTime;\r\n      }\r\n    };\r\n  },\r\n  debounce: function (fn, delay) {\r\n    let timer = null;\r\n    delay = delay || 40;\r\n    return function () {\r\n      // const context = this;\r\n      const args = arguments;\r\n      clearTimeout(timer);\r\n      timer = setTimeout(function () {\r\n        fn.apply(this, args);\r\n      }, delay);\r\n    };\r\n  },\r\n  initDefaultProps: function (props, defaultData) {\r\n    let key, type, prop;\r\n    for (key in defaultData) {\r\n      if (typeof props[key] === 'object') {\r\n        // props[key] = props[key];\r\n      } else if (typeof props[key] === 'function') {\r\n        props[key] = { type: props[key] };\r\n      } else if (!props[key]) {\r\n        props[key] = {};\r\n      }\r\n      props[key].default = defaultData[key];\r\n    }\r\n    return props;\r\n  },\r\n  typeOf: function (obj) {\r\n    const toString = Object.prototype.toString;\r\n    const map = {\r\n      '[object Boolean]': 'boolean',\r\n      '[object Number]': 'number',\r\n      '[object String]': 'string',\r\n      '[object Function]': 'function',\r\n      '[object Array]': 'array',\r\n      '[object Date]': 'date',\r\n      '[object RegExp]': 'regExp',\r\n      '[object Undefined]': 'undefined',\r\n      '[object Null]': 'null',\r\n      '[object Object]': 'object',\r\n    };\r\n    return map[toString.call(obj)];\r\n  },\r\n  deepCopy: function (data) {\r\n    // return data;\r\n    const t = utils.typeOf(data);\r\n    let o;\r\n\r\n    if (t === 'array') {\r\n      o = [];\r\n    } else if (t === 'object') {\r\n      o = {};\r\n    } else {\r\n      return data;\r\n    }\r\n\r\n    if (t === 'array') {\r\n      for (var i = 0; i < data.length; i++) {\r\n        o.push(utils.deepCopy(data[i]));\r\n      }\r\n    } else if (t === 'object') {\r\n      for (var i in data) {\r\n        o[i] = utils.deepCopy(data[i]);\r\n      }\r\n    }\r\n    return o;\r\n  },\r\n  stringToIntArray: function (arr) {\r\n    return arr.map(function (item) {\r\n      return +item;\r\n    });\r\n  },\r\n  trim: function (string) {\r\n    return (string || '').replace(/^[\\s\\uFEFF]+|[\\s\\uFEFF]+$/g, '');\r\n  },\r\n  addClass: function (el, cls) {\r\n    if (!el) return;\r\n\r\n    const curClass = el.className;\r\n    const classes = (cls || '').split(' ');\r\n\r\n    for (let i = 0, j = classes.length; i < j; i++) {\r\n      const clsName = classes[i];\r\n      if (!clsName) continue;\r\n\r\n      if (el.classList) {\r\n        el.classList.add(clsName);\r\n      } else {\r\n        // if (!hasClass(el, clsName)) {\r\n        //   curClass += ' ' + clsName;\r\n        // }\r\n      }\r\n    }\r\n    if (!el.classList) {\r\n      el.className = curClass;\r\n    }\r\n  },\r\n  removeClass: function (el, cls) {\r\n    if (!el || !cls) return;\r\n\r\n    const classes = cls.split(' ');\r\n    const curClass = ' ' + el.className + ' ';\r\n\r\n    for (let i = 0, j = classes.length; i < j; i++) {\r\n      const clsName = classes[i];\r\n      if (!clsName) continue;\r\n\r\n      if (el.classList) {\r\n        el.classList.remove(clsName);\r\n      } else {\r\n        // if (hasClass(el, clsName)) {\r\n        //   curClass = curClass.replace(' ' + clsName + ' ', ' ');\r\n        // }\r\n      }\r\n    }\r\n\r\n    if (!el.classList) {\r\n      el.className = utils.trim(curClass);\r\n    }\r\n  },\r\n  isNull: function (obj) {\r\n    return typeof obj === 'undefined' || obj == null;\r\n  },\r\n  Img: {\r\n    MODE_SCALE_FILL: 1, // 根据区域能够填满的最大值等比例缩放。图片100x50，区域50x50，结果50x25。\r\n    MODE_SCALE_WIDTH: 2, // 根据区域宽度等比例缩放，结果高度将不受区域高度限制，即可能撑大高度。图片100x50，区域50x10，结果50x25。\r\n    MODE_SCALE_HEIGHT: 3, // 根据区域高度等比例缩放，结果宽度将不受区域宽度限制，即可能撑大宽度。图片100x50，区域50x50，结果100x50。\r\n    MODE_SCALE_DEFLATE_WIDTH: 4, // 根据区域宽度等比例缩小，不放大，结果高度将不受区域高度限制。图片100x50，区域50x10，结果50x25；图片100x50，区域200x100，结果100x50。\r\n    MODE_SCALE_DEFLATE_HEIGHT: 5, // 根据区域高度等比例缩小，不放大，结果宽度将不受区域高度限制。图片100x50，区域50x50，结果100x50；图片100x50，区域200x100，结果100x50。\r\n    MODE_SCALE_DEFLATE_FILL: 6, // 根据区域能够填满的最大值等比例缩小，不放大。图片100x50，区域50x50，结果50x25。\r\n    MODE_SCALE_DEFLATE_MAX: 7, // 根据区域等比例缩小，不放大，结果的宽度和高度不能同时超过区域限制。图片200x100，区域100x100，结果200x100；图片100x200，区域100x100，结果100x200。\r\n  },\r\n  calcSize: function (width, height, maxWidth, maxHeight, mode) {\r\n    const size = { width, height };\r\n    if (mode === utils.Img.MODE_SCALE_FILL) {\r\n      var rateWidth = width / maxWidth;\r\n      var rateHeight = height / maxHeight;\r\n\r\n      if (rateWidth > rateHeight) {\r\n        size.width = maxWidth;\r\n        size.height = height / rateWidth;\r\n      } else {\r\n        size.width = width / rateHeight;\r\n        size.height = maxHeight;\r\n      }\r\n    } else if (mode === utils.Img.MODE_SCALE_WIDTH) {\r\n      var rateWidth = width / maxWidth;\r\n      size.width = maxWidth;\r\n      size.height = height / rateWidth;\r\n    } else if (mode === utils.Img.MODE_SCALE_HEIGHT) {\r\n      var rateHeight = height / maxHeight;\r\n      size.width = width / rateHeight;\r\n      size.height = maxHeight;\r\n    } else if (mode === utils.Img.MODE_SCALE_DEFLATE_WIDTH) {\r\n      var rateWidth = width / maxWidth;\r\n      if (rateWidth > 1) {\r\n        size.width = maxWidth;\r\n        size.height = height / rateWidth;\r\n      }\r\n    } else if (mode === utils.Img.MODE_SCALE_DEFLATE_HEIGHT) {\r\n      var rateHeight = height / maxHeight;\r\n      if (rateHeight > 1) {\r\n        size.width = width / rateHeight;\r\n        size.height = maxHeight;\r\n      }\r\n    } else if (mode === utils.Img.MODE_SCALE_DEFLATE_FILL) {\r\n      var rateWidth = width / maxWidth;\r\n      var rateHeight = height / maxHeight;\r\n\r\n      if (rateWidth > rateHeight) {\r\n        if (rateWidth > 1) {\r\n          size.width = maxWidth;\r\n          size.height = height / rateWidth;\r\n        }\r\n      } else {\r\n        if (rateHeight > 1) {\r\n          size.width = width / rateHeight;\r\n          size.height = maxHeight;\r\n        }\r\n      }\r\n    } else if (mode === utils.Img.MODE_SCALE_DEFLATE_MAX) {\r\n      if (width > maxWidth && height > maxHeight) {\r\n        var rateWidth = width / maxWidth;\r\n        var rateHeight = height / maxHeight;\r\n\r\n        if (rateWidth < rateHeight) {\r\n          size.width = maxWidth;\r\n          size.height = height / rateWidth;\r\n        } else {\r\n          size.width = width / rateHeight;\r\n          size.height = maxHeight;\r\n        }\r\n      }\r\n    }\r\n    size.width = Math.floor(size.width);\r\n    size.height = Math.floor(size.height);\r\n    if (size.width === 0) {\r\n      size.width = 1;\r\n    }\r\n    if (size.height === 0) {\r\n      size.height = 1;\r\n    }\r\n    return size;\r\n  },\r\n  /* 使用此函数时，不要在img标签中先设置大小，会使得调整img大小时失败；先隐藏图片，避免出现图片从原始图片变为目标图片的过程\r\n   *\tcopy建站Fai下的方法\r\n   * \t<img src=\"xx.jpg\" style=\"display:none;\" onload=\"Fai.Img.optimize(this, {width:100, height:50, mode:Fai.Img.MODE_SCALE_FILL});\"/>\r\n   */\r\n  optimize: function (img, option) {\r\n    // ie下对于display:none的img不会加载\r\n    // 这里要用临时图片，是因为当动态改变图片src时，由于图片的大小已经被设置，因此再次获取会失败\r\n    const imgTmp = new Image();\r\n    // 这里还不能先置空，否则将会引起对''文件的一次访问\r\n    //\timgTmp.src = '';\r\n    imgTmp.src = img.src;\r\n    let imgWidth = imgTmp.width;\r\n    let imgHeight = imgTmp.height;\r\n    if (utils.isNull(imgWidth) || imgWidth === 0 || utils.isNull(imgHeight) || imgHeight === 0) {\r\n      // chrome似乎对临时图片的加载会有延迟，立即取大小会失败\r\n      imgWidth = img.width;\r\n      imgHeight = img.height;\r\n    }\r\n\r\n    const size = utils.calcSize(imgWidth, imgHeight, option.width, option.height, option.mode);\r\n    img.width = size.width;\r\n    img.height = size.height;\r\n    if (option.display === 1) {\r\n      img.style.display = 'inline';\r\n    } else if (option.display === 2) {\r\n      img.style.display = 'none';\r\n    } else if (option.display === 3) {\r\n      img.style.display = 'inline-block';\r\n    } else {\r\n      img.style.display = 'block';\r\n    }\r\n    return { width: img.width, height: img.height };\r\n  },\r\n  slideUp: function (element, animationTime, callback) {\r\n    let upMorphTimer;\r\n\r\n    const options = {\r\n      height: 0,\r\n      padding: {\r\n        top: 0,\r\n        bot: 0,\r\n      },\r\n      margin: {\r\n        top: 0,\r\n        bot: 0,\r\n      },\r\n    };\r\n\r\n    morph(upMorphTimer, element, options, animationTime, function (Properties) {\r\n      const AttrElementStyle = element.style;\r\n\r\n      AttrElementStyle.width = '';\r\n      AttrElementStyle.height = '';\r\n      AttrElementStyle.padding = '';\r\n      AttrElementStyle.margin = '';\r\n      element.style.display = 'none';\r\n\r\n      if (callback) callback();\r\n    });\r\n  },\r\n  slideDown: function (element, animationTime, callback) {\r\n    if (!element) return;\r\n\r\n    let downMorphTimer;\r\n    const AttrElementStyle = element.style;\r\n    const ComputedElementStyle = window.getComputedStyle(element, null);\r\n\r\n    AttrElementStyle.display = 'block';\r\n\r\n    const options = {\r\n      width: parseInt(ComputedElementStyle.getPropertyValue('width')),\r\n      height: parseInt(ComputedElementStyle.getPropertyValue('height')),\r\n      padding: {\r\n        top: parseInt(ComputedElementStyle.getPropertyValue('padding-top')),\r\n        bot: parseInt(ComputedElementStyle.getPropertyValue('padding-bottom')),\r\n      },\r\n      margin: {\r\n        top: parseInt(ComputedElementStyle.getPropertyValue('margin-top')),\r\n        bot: parseInt(ComputedElementStyle.getPropertyValue('margin-bottom')),\r\n      },\r\n    };\r\n\r\n    AttrElementStyle.height = '0';\r\n    AttrElementStyle.paddingTop = '0';\r\n    AttrElementStyle.paddingBottom = '0';\r\n    AttrElementStyle.marginTop = '0';\r\n    AttrElementStyle.marginBottom = '0';\r\n\r\n    morph(downMorphTimer, element, options, animationTime, function () {\r\n      AttrElementStyle.width = '';\r\n      AttrElementStyle.height = '';\r\n      AttrElementStyle.padding = '';\r\n      AttrElementStyle.margin = '';\r\n\r\n      element.style.display = 'block';\r\n\r\n      if (callback) callback();\r\n    });\r\n  },\r\n  isUndef: function (v) {\r\n    return v === undefined || v === null;\r\n  },\r\n  isDef: function (v) {\r\n    return v !== undefined && v !== null;\r\n  },\r\n  once: function (func) {\r\n    let ran, result;\r\n\r\n    return function () {\r\n      if (ran) {\r\n        return result;\r\n      }\r\n      ran = true;\r\n      result = func.apply(this, arguments);\r\n\r\n      func = null;\r\n      return result;\r\n    };\r\n  },\r\n  Background: {\r\n    IMAGE_POSITION: [\r\n      {\r\n        key: 'left-top',\r\n        backgroundRepeat: 'no-repeat',\r\n        backgroundPositionX: 'left',\r\n        backgroundPositionY: 'top',\r\n        backgroundSize: 'auto',\r\n      },\r\n      {\r\n        key: 'center-top',\r\n        backgroundRepeat: 'no-repeat',\r\n        backgroundPositionX: 'center',\r\n        backgroundPositionY: 'top',\r\n        backgroundSize: 'auto',\r\n      },\r\n      {\r\n        key: 'right-top',\r\n        backgroundRepeat: 'no-repeat',\r\n        backgroundPositionX: 'right',\r\n        backgroundPositionY: 'top',\r\n        backgroundSize: 'auto',\r\n      },\r\n      {\r\n        key: 'left-center',\r\n        backgroundRepeat: 'no-repeat',\r\n        backgroundPositionX: 'left',\r\n        backgroundPositionY: 'center',\r\n        backgroundSize: 'auto',\r\n      },\r\n      {\r\n        key: 'center-center',\r\n        backgroundRepeat: 'no-repeat',\r\n        backgroundPositionX: 'center',\r\n        backgroundPositionY: 'center',\r\n        backgroundSize: 'auto',\r\n      },\r\n      {\r\n        key: 'right-center',\r\n        backgroundRepeat: 'no-repeat',\r\n        backgroundPositionX: 'right',\r\n        backgroundPositionY: 'center',\r\n        backgroundSize: 'auto',\r\n      },\r\n      {\r\n        key: 'left-bottom',\r\n        backgroundRepeat: 'no-repeat',\r\n        backgroundPositionX: 'left',\r\n        backgroundPositionY: 'bottom',\r\n        backgroundSize: 'auto',\r\n      },\r\n      {\r\n        key: 'center-bottom',\r\n        backgroundRepeat: 'no-repeat',\r\n        backgroundPositionX: 'center',\r\n        backgroundPositionY: 'bottom',\r\n        backgroundSize: 'auto',\r\n      },\r\n      {\r\n        key: 'right-bottom',\r\n        backgroundRepeat: 'no-repeat',\r\n        backgroundPositionX: 'right',\r\n        backgroundPositionY: 'bottom',\r\n        backgroundSize: 'auto',\r\n      },\r\n    ],\r\n    PAVING_EFFECT: [\r\n      {\r\n        label: '默认',\r\n        key: 'default',\r\n        backgroundRepeat: 'repeat',\r\n        backgroundPositionX: 'center',\r\n        backgroundPositionY: 'center',\r\n        backgroundSize: 'auto',\r\n      },\r\n      {\r\n        label: '缩放平铺',\r\n        key: 'zoom-tile',\r\n        backgroundRepeat: 'no-repeat',\r\n        backgroundPositionX: 'center',\r\n        backgroundPositionY: 'top',\r\n        backgroundSize: '100%',\r\n      },\r\n      {\r\n        label: '上',\r\n        key: 'top',\r\n        backgroundRepeat: 'repeat-x',\r\n        backgroundPositionX: 'center',\r\n        backgroundPositionY: 'top',\r\n        backgroundSize: 'auto',\r\n      },\r\n      {\r\n        label: '中-横向',\r\n        key: 'in-horizontal',\r\n        backgroundRepeat: 'repeat-x',\r\n        backgroundPositionX: 'center',\r\n        backgroundPositionY: 'center',\r\n        backgroundSize: 'auto',\r\n      },\r\n      {\r\n        label: '下',\r\n        key: 'bottom',\r\n        backgroundRepeat: 'repeat-x',\r\n        backgroundPositionX: 'center',\r\n        backgroundPositionY: 'bottom',\r\n        backgroundSize: 'auto',\r\n      },\r\n      {\r\n        label: '左',\r\n        key: 'left',\r\n        backgroundRepeat: 'repeat-y',\r\n        backgroundPositionX: 'left',\r\n        backgroundPositionY: 'top',\r\n        backgroundSize: 'auto',\r\n      },\r\n      {\r\n        label: '中-纵向',\r\n        key: 'in-vertical',\r\n        backgroundRepeat: 'repeat-y',\r\n        backgroundPositionX: 'center',\r\n        backgroundPositionY: 'top',\r\n        backgroundSize: 'auto',\r\n      },\r\n      {\r\n        label: '右',\r\n        key: 'right',\r\n        backgroundRepeat: 'repeat-y',\r\n        backgroundPositionX: 'right',\r\n        backgroundPositionY: 'top',\r\n        backgroundSize: 'auto',\r\n      },\r\n    ],\r\n    SCALING_STRETCH: [\r\n      {\r\n        backgroundRepeat: 'no-repeat',\r\n        backgroundPositionX: 'left',\r\n        backgroundPositionY: 'center',\r\n        backgroundSize: '100% 100%',\r\n      },\r\n    ],\r\n    SCALING_FILL: [\r\n      {\r\n        backgroundRepeat: 'no-repeat',\r\n        backgroundPositionX: 'center',\r\n        backgroundPositionY: 'center',\r\n        backgroundSize: 'cover',\r\n      },\r\n    ],\r\n    SCALING_CONTAIN: [\r\n      {\r\n        backgroundRepeat: 'no-repeat',\r\n        backgroundPositionX: 'center',\r\n        backgroundPositionY: 'center',\r\n        backgroundSize: 'contain',\r\n      },\r\n    ],\r\n  },\r\n  parseBackgroundImageUrl: function (backgroundImage) {\r\n    let ret = '';\r\n    if (backgroundImage) {\r\n      const found = backgroundImage.match(/url\\(\\s*['|\"\"]?\\s*(\\S+)\\s*['|\"\"]?\\s*\\)/);\r\n      if (found && found[1]) {\r\n        ret = found[1];\r\n      }\r\n    }\r\n    return ret;\r\n  },\r\n  parseBackgroundImageGradient: function (backgroundImage) {\r\n    let ret = '';\r\n    if (backgroundImage) {\r\n      const found = backgroundImage.match(/linear-gradient\\(\\s*.+\\s*\\)/);\r\n      if (found && found[0]) {\r\n        ret = found[0];\r\n      }\r\n    }\r\n    return ret;\r\n  },\r\n  concatBackgroundColor: function (color) {\r\n    return /linear-gradient\\(/.test(color) ? '' : color;\r\n  },\r\n  concatBackgroundImage: function (imageUrl, color) {\r\n    return [imageUrl ? 'url(' + imageUrl + ')' : '', /linear-gradient\\(/.test(color) ? color : '']\r\n      .filter(function (x) {\r\n        return x;\r\n      })\r\n      .join(',');\r\n  },\r\n  contentLoaded: function (win, fn) {\r\n    let done = false;\r\n    let top = true;\r\n    const doc = win.document;\r\n    const root = doc.documentElement;\r\n    const modern = doc.addEventListener;\r\n    const add = modern ? 'addEventListener' : 'attachEvent';\r\n    const rem = modern ? 'removeEventListener' : 'detachEvent';\r\n    const pre = modern ? '' : 'on';\r\n    var init = function (e) {\r\n      if (e.type === 'readystatechange' && doc.readyState !== 'complete') return;\r\n      (e.type === 'load' ? win : doc)[rem](pre + e.type, init, false);\r\n      if (!done && (done = true)) fn.call(win, e.type || e);\r\n    };\r\n    var poll = function () {\r\n      try {\r\n        root.doScroll('left');\r\n      } catch (e) {\r\n        setTimeout(poll, 50);\r\n        return;\r\n      }\r\n      init('poll');\r\n    };\r\n\r\n    if (doc.readyState === 'complete') fn.call(win, 'lazy');\r\n    else {\r\n      if (!modern && root.doScroll) {\r\n        try {\r\n          top = !win.frameElement;\r\n        } catch (e) {}\r\n        if (top) poll();\r\n      }\r\n      doc[add](pre + 'DOMContentLoaded', init, false);\r\n      doc[add](pre + 'readystatechange', init, false);\r\n      win[add](pre + 'load', init, false);\r\n    }\r\n  },\r\n};\r\n\r\nfunction broadcast(componentName, eventName, params) {\r\n  this.$children?.forEach(function (child) {\r\n    const name = child.$options.name;\r\n\r\n    if (name === componentName) {\r\n      child.$emit.apply(child, [eventName].concat(params));\r\n    } else {\r\n      // todo 如果 params 是空数组，接收到的会是 undefined\r\n      broadcast.apply(child, [componentName, eventName].concat([params]));\r\n    }\r\n  });\r\n}\r\n\r\nfunction morph(morphTimer, element, options, animationTime, callback) {\r\n  const ComputedElementStyle = window.getComputedStyle(element, null);\r\n  const AttrElementStyle = element.style;\r\n  const Properties = {\r\n    width: parseInt(ComputedElementStyle.getPropertyValue('width')),\r\n    height: parseInt(ComputedElementStyle.getPropertyValue('height')),\r\n    padding: {\r\n      top: parseInt(ComputedElementStyle.getPropertyValue('padding-top')),\r\n      right: parseInt(ComputedElementStyle.getPropertyValue('padding-right')),\r\n      bot: parseInt(ComputedElementStyle.getPropertyValue('padding-bottom')),\r\n      left: parseInt(ComputedElementStyle.getPropertyValue('padding-left')),\r\n    },\r\n    margin: {\r\n      top: parseInt(ComputedElementStyle.getPropertyValue('margin-top')),\r\n      right: parseInt(ComputedElementStyle.getPropertyValue('margin-right')),\r\n      bot: parseInt(ComputedElementStyle.getPropertyValue('margin-bottom')),\r\n      left: parseInt(ComputedElementStyle.getPropertyValue('margin-left')),\r\n    },\r\n  };\r\n  const DiffValues = {\r\n    width: options.width != null ? options.width - Properties.width : 0,\r\n    height: options.height != null ? options.height - Properties.height : 0,\r\n    padding: {\r\n      top:\r\n        options.padding && options.padding.top != null\r\n          ? options.padding.top - Properties.padding.top\r\n          : 0,\r\n      right:\r\n        options.padding && options.padding.right != null\r\n          ? options.padding.right - Properties.padding.right\r\n          : 0,\r\n      bot:\r\n        options.padding && options.padding.bot != null\r\n          ? options.padding.bot - Properties.padding.bot\r\n          : 0,\r\n      left:\r\n        options.padding && options.padding.left != null\r\n          ? options.padding.left - Properties.padding.left\r\n          : 0,\r\n    },\r\n    margin: {\r\n      top:\r\n        options.margin && options.margin.top != null\r\n          ? options.margin.top - Properties.margin.top\r\n          : 0,\r\n      right:\r\n        options.margin && options.margin.right != null\r\n          ? options.margin.right - Properties.margin.right\r\n          : 0,\r\n      bot:\r\n        options.margin && options.margin.bot != null\r\n          ? options.margin.bot - Properties.margin.bot\r\n          : 0,\r\n      left:\r\n        options.margin && options.margin.left != null\r\n          ? options.margin.left - Properties.margin.left\r\n          : 0,\r\n    },\r\n  };\r\n  const beginTime = new Date().getTime();\r\n  let sinceBeginTime;\r\n  let progressFactor;\r\n\r\n  animationTime = animationTime != null ? animationTime : 250;\r\n  AttrElementStyle.overflow = 'hidden';\r\n\r\n  clearInterval(morphTimer);\r\n\r\n  morphTimer = setInterval(function () {\r\n    sinceBeginTime = new Date().getTime() - beginTime;\r\n\r\n    if (sinceBeginTime < animationTime) {\r\n      progressFactor = sinceBeginTime / animationTime;\r\n      AttrElementStyle.width = Properties.width + DiffValues.width * progressFactor + 'px';\r\n      AttrElementStyle.height = Properties.height + DiffValues.height * progressFactor + 'px';\r\n\r\n      AttrElementStyle.padding =\r\n        Properties.padding.top +\r\n        DiffValues.padding.top * progressFactor +\r\n        'px ' +\r\n        (Properties.padding.right + DiffValues.padding.right * progressFactor) +\r\n        'px ' +\r\n        (Properties.padding.bot + DiffValues.padding.bot * progressFactor) +\r\n        'px ' +\r\n        (Properties.padding.left + DiffValues.padding.left * progressFactor) +\r\n        'px';\r\n\r\n      AttrElementStyle.margin =\r\n        Properties.margin.top +\r\n        DiffValues.margin.top * progressFactor +\r\n        'px ' +\r\n        (Properties.margin.right + DiffValues.margin.right * progressFactor) +\r\n        'px ' +\r\n        (Properties.margin.bot + DiffValues.margin.bot * progressFactor) +\r\n        'px ' +\r\n        (Properties.margin.left + DiffValues.margin.left * progressFactor) +\r\n        'px';\r\n    } else {\r\n      AttrElementStyle.width = options.width + 'px';\r\n      AttrElementStyle.height = options.height + 'px';\r\n\r\n      AttrElementStyle.padding =\r\n        Properties.padding.top +\r\n        DiffValues.padding.top +\r\n        'px ' +\r\n        (Properties.padding.right + DiffValues.padding.right) +\r\n        'px ' +\r\n        (Properties.padding.bot + DiffValues.padding.bot) +\r\n        'px ' +\r\n        (Properties.padding.left + DiffValues.padding.left) +\r\n        'px';\r\n\r\n      AttrElementStyle.margin =\r\n        Properties.margin.top +\r\n        DiffValues.margin.top +\r\n        'px ' +\r\n        (Properties.margin.right + DiffValues.margin.right) +\r\n        'px ' +\r\n        (Properties.margin.bot + DiffValues.margin.bot) +\r\n        'px ' +\r\n        (Properties.margin.left + DiffValues.margin.left) +\r\n        'px';\r\n\r\n      clearInterval(morphTimer);\r\n\r\n      if (callback != null) callback(Properties);\r\n    }\r\n  }, 15);\r\n}\r\n\r\nconst filterFn = () => true;\r\n// eslint-disable-next-line prefer-const\r\n\r\nwindow.vue_utils = utils;\r\n\r\nexport default utils;\r\n"],"names":["filterFn"],"mappings":"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"}