{"version":3,"file":"swipe-cell.mjs","sources":["../../src/swipe-cell/swipe-cell.tsx"],"sourcesContent":["import {\n  ref,\n  watch,\n  reactive,\n  computed,\n  onMounted,\n  defineComponent,\n  getCurrentInstance,\n  StyleValue,\n  onUnmounted,\n} from 'vue';\nimport { isArray, isBoolean } from 'lodash-es';\nimport { useSwipe } from './useSwipe';\nimport props from './props';\nimport config from '../config';\nimport { SwipeActionItem, SwipeSource } from './type';\nimport { useClickAway } from '../shared';\nimport { preventDefault } from '../shared/dom';\nimport { useSureConfirm } from './useSureConfirm';\nimport { useContent, useTNodeJSX } from '../hooks/tnode';\nimport { usePrefixClass } from '../hooks/useClass';\n\nconst { prefix } = config;\n\nexport interface SwipeInitData {\n  moving: boolean;\n  moved: boolean;\n  leftWidth: number;\n  rightWidth: number;\n  offset: number;\n  pos: number;\n  status: 'open' | 'close';\n}\n\nexport default defineComponent({\n  name: `${prefix}-swipe-cell`,\n  props,\n  setup(props, context) {\n    const renderTNodeJSX = useTNodeJSX();\n    const renderTNodeContent = useContent();\n    const swipeCellClass = usePrefixClass('swipe-cell');\n\n    const internalInstance = getCurrentInstance();\n\n    const leftRef = ref<HTMLElement>();\n    const rightRef = ref<HTMLElement>();\n    const swipeCellRef = ref<HTMLElement>();\n    const wrapperStyle = computed(() => {\n      const transform = `translate3d(${initData.pos}px, 0, 0)`;\n      let transition = 'margin-left .6s cubic-bezier(0.18, 0.89, 0.32, 1)';\n      transition += ',margin-right .6s cubic-bezier(0.18, 0.89, 0.32, 1)';\n      transition += initData.moving ? '' : ',transform .6s cubic-bezier(0.18, 0.89, 0.32, 1)';\n      return {\n        position: 'relative',\n        transition,\n        transform,\n        marginLeft: `${sureMarginLeft.value}px`,\n        marginRight: `${sureMarginRight.value}px`,\n      } as StyleValue;\n    });\n\n    const distance = 10; // distance 滑动多少距离后开始显示菜\n    const autoBack = true; // autoBack 点击菜单后是否收回菜\n    const threshold = 0.3; // threshold 滑动宽度的百分之多少自动打开菜单，否则收回\n    const initData: SwipeInitData = reactive({\n      moving: false, // 是否正在划动\n      moved: false, // 标记是否有过划动，划动过则不触发点击事件\n      leftWidth: 0, // 左边菜单的宽度\n      rightWidth: 0, // 右边菜单的宽度\n      offset: 0, // 起点时的偏移\n      pos: 0, // 移动的距离\n      status: 'close', // 菜单的状态，默认close\n    });\n\n    const {\n      sureRightRef,\n      sureLeftRef,\n      showSureRight,\n      showSureLeft,\n      sureMarginRight,\n      sureMarginLeft,\n      closedSure,\n      sureRightContent,\n      sureLeftContent,\n      sureLeftBgStyle,\n      sureRightBgStyle,\n      sureRightStyle,\n      sureLeftStyle,\n      showSure,\n      handleSureClick,\n    } = useSureConfirm(internalInstance, initData);\n\n    const range = (num: number, min: number, max: number) => {\n      return Math.min(Math.max(num, min), max);\n    };\n    // 首次touchmove的方向，用于分开左右和上下滑动，左右滑动时禁止上下滑动，上下滑动时禁止左右滑动\n    let swipeDir: -1 | 0 | 1 = 0;\n    const { lengthX, lengthY, stop } = useSwipe(swipeCellRef, {\n      threshold: 0,\n      onSwipeStart: (e: TouchEvent) => {\n        if (props.disabled) {\n          return;\n        }\n        setPanelWidth();\n        swipeDir = 0;\n        initData.moved = false;\n        initData.offset = initData.pos;\n      },\n      onSwipe: (e: TouchEvent) => {\n        const absLenX = Math.abs(lengthX.value);\n        const absLenY = Math.abs(lengthY.value);\n        // distance / 2 是为了避免触发上下滑动时 又走左右滑动的逻辑 导致preventDefault终止无效\n        if (!swipeDir && absLenX < distance / 2 && absLenY < distance / 2) {\n          return;\n        }\n        if (!swipeDir && absLenX < absLenY) {\n          swipeDir = -1;\n        } else if (!swipeDir && absLenX >= absLenY) {\n          swipeDir = 1;\n        }\n        if (swipeDir < 0) {\n          swipeDir = -1;\n          return;\n        }\n        preventDefault(e, false);\n\n        if (props.disabled || (!initData.moved && Math.abs(lengthX.value) < distance)) {\n          return;\n        }\n\n        if (showSureRight.value) {\n          closedSure.value = lengthX.value > 0 && initData.pos === 0;\n          showSureRight.value = false;\n        } else if (showSureLeft.value) {\n          closedSure.value = lengthX.value < 0 && initData.pos === 0;\n          showSureLeft.value = false;\n        }\n        initData.moving = true;\n        initData.moved = true;\n        const offset = range(initData.offset - lengthX.value, -initData.rightWidth, initData.leftWidth);\n        initData.pos = offset;\n      },\n      onSwipeEnd: (e: TouchEvent) => {\n        if (props.disabled) {\n          return;\n        }\n        initData.moving = false;\n        setTimeout(() => {\n          closedSure.value = false;\n        }, 0);\n        end();\n      },\n    });\n\n    const setPanelWidth = () => {\n      const leftWidth = leftRef.value?.clientWidth as number;\n      const rightWidth = rightRef.value?.clientWidth as number;\n      initData.leftWidth = leftWidth > 0 ? leftWidth : 0;\n      initData.rightWidth = rightWidth > 0 ? rightWidth : 0;\n    };\n\n    const classes = computed(() => [`${name}`]);\n    onMounted(async () => {\n      setPanelWidth();\n      renderMenuStatus();\n    });\n    onUnmounted(() => {\n      stop();\n      stopClickAway.value?.();\n    });\n    watch(\n      () => props.opened,\n      () => renderMenuStatus(),\n      { deep: true },\n    );\n    watch(\n      () => initData.pos,\n      (newVal, oldVal) => {\n        if (rightRef.value && (newVal < 0 || (newVal === 0 && oldVal < 0))) {\n          updateRightMenuPosStyle(newVal);\n        } else if (leftRef.value && (newVal > 0 || (newVal === 0 && oldVal > 0))) {\n          updateLeftMenuPosStyle(newVal);\n        }\n      },\n    );\n    const updateRightMenuPosStyle = (value?: number) => {\n      if (!rightRef.value) return;\n      const pos = value || initData.pos;\n      const children: any = rightRef.value.children || [];\n      const wArr: number[] = [];\n      for (let i = 0, len = children.length - 2; i < len; ++i) {\n        const el = children[i] as HTMLElement;\n        wArr.push((wArr[i - 1] || 0) + el.clientWidth);\n      }\n      for (let i = 0, len = children.length - 2; i < len; ++i) {\n        const el = children[i] as HTMLElement;\n        const w = (1 + pos / initData.rightWidth) * (wArr[i - 1] || 0);\n        if (el) {\n          el.style.transform = `translate3d(${-w}px, 0, 0)`;\n          el.style.transition = initData.moving ? 'none' : `transform .6s cubic-bezier(0.18, 0.89, 0.32, 1)`;\n        }\n      }\n    };\n    const updateLeftMenuPosStyle = (value?: number) => {\n      if (!leftRef.value) return;\n      const pos = value || initData.pos;\n      const { children } = leftRef.value;\n      const wArr: number[] = [];\n      for (let i = 0, len = children.length - 2; i < len; ++i) {\n        const el = children[i] as HTMLElement;\n        wArr.push((wArr[i - 1] || 0) + el.clientWidth);\n      }\n      for (let i = 0, len = children.length - 2; i < len; ++i) {\n        const el = children[i] as HTMLElement;\n        const w = (1 - pos / initData.leftWidth) * (wArr[i - 1] || 0);\n        if (el) {\n          el.style.transform = `translate3d(${w}px, 0, 0)`;\n          el.style.transition = initData.moving ? 'none' : `transform .6s cubic-bezier(0.18, 0.89, 0.32, 1)`;\n        }\n      }\n    };\n    const stopClickAway = ref(\n      useClickAway(\n        swipeCellRef,\n        () => {\n          close();\n        },\n        { detectIframe: true },\n      ),\n    );\n    const renderMenuStatus = () => {\n      if (isBoolean(props.opened)) {\n        // opened为boolean类型，判断默认打开\n        if (props.opened && initData.rightWidth > 0) {\n          open('toLeft');\n        } else if (props.opened && initData.leftWidth > 0) {\n          open('toRight');\n        } else if (!props.opened && (initData.leftWidth > 0 || initData.rightWidth > 0)) {\n          close();\n        }\n      } else if (isArray(props.opened)) {\n        // opened为array类型，判断默认打开，同时设定左右action时优先打开右边\n        if (props.opened[1] && initData.rightWidth > 0) {\n          open('toLeft');\n        } else if (props.opened[0] && initData.leftWidth > 0) {\n          open('toRight');\n        } else if ((!props.opened[1] && initData.rightWidth > 0) || (!props.opened[0] && initData.leftWidth > 0)) {\n          close();\n        }\n      }\n    };\n    const end = () => {\n      if (props.disabled) {\n        return;\n      }\n      if (\n        +initData.rightWidth > 0 &&\n        ((-initData.offset < +initData.rightWidth && -initData.pos > +initData.rightWidth * threshold) ||\n          // 处理回弹\n          (-initData.offset === +initData.rightWidth && -initData.pos > +initData.rightWidth * (1 - threshold)))\n      ) {\n        open('toLeft');\n      } else if (\n        +initData.leftWidth > 0 &&\n        ((initData.offset < +initData.leftWidth && initData.pos > +initData.leftWidth * threshold) ||\n          // 处理回弹\n          (initData.offset === +initData.leftWidth && initData.pos > +initData.leftWidth * (1 - threshold)))\n      ) {\n        open('toRight');\n      } else if (initData.offset !== initData.pos) {\n        // 仅在有发生侧滑的情况下自动关闭（由js控制是否异步关闭）\n        close('force');\n      }\n    };\n    const open = (direction: 'toRight' | 'toLeft') => {\n      // 包括回弹open\n      const isOpen = initData.status === 'open';\n\n      initData.status = 'open';\n      if (direction === 'toLeft') {\n        initData.pos = -initData.rightWidth;\n        if (initData.rightWidth && !isOpen) {\n          props.onChange?.('right');\n        }\n      } else {\n        initData.pos = initData.leftWidth;\n        if (initData.leftWidth && !isOpen) {\n          props.onChange?.('left');\n        }\n      }\n    };\n    const close = (type?: string) => {\n      if (initData.status === 'close' && type !== 'force') {\n        return;\n      }\n      sureMarginLeft.value = 0;\n      sureMarginRight.value = 0;\n      initData.status = 'close';\n      initData.pos = 0;\n      props.onChange?.(undefined);\n    };\n    const handleClickBtn = ({ action, source }: { action: SwipeActionItem; source: SwipeSource }) => {\n      const clickFn = () => {\n        if (autoBack) {\n          close();\n        }\n        if (action?.onClick) {\n          action.onClick();\n          return;\n        }\n        props.onClick?.(action, source);\n      };\n      if (action?.sure) {\n        showSure(action.sure, clickFn);\n        return;\n      }\n      clickFn();\n    };\n    // 点击事件拦截，判定是否透传事件\n    const handleCellClick = (e: Event) => {\n      if (initData.moved) {\n        preventDefault(e, true);\n      }\n      e.stopPropagation();\n    };\n\n    context.expose({\n      showSure,\n    });\n    const renderLeft = () => {\n      const leftContent = () => {\n        if (Array.isArray(props.left)) {\n          return props.left.map((btn) => {\n            const btnClass = [`${swipeCellClass.value}__content`, btn.className || ''];\n            const style = btn.style || 'height: 100%';\n            const { icon: btnIcon } = btn;\n            const { text: btnText } = btn;\n            return (\n              <div\n                class={btnClass}\n                style={style}\n                onClick={(e: MouseEvent) => handleClickBtn({ action: btn, source: 'left' })}\n              >\n                {btnIcon ? <btnIcon class={`${swipeCellClass.value}__icon`} /> : null}\n                {btnText ? <span class={`${swipeCellClass.value}__text`}>{btnText}</span> : null}\n              </div>\n            );\n          });\n        }\n        return renderTNodeJSX('left');\n      };\n\n      return (\n        <div\n          ref={leftRef}\n          class={`${swipeCellClass.value}__left`}\n          style={{\n            width: initData?.leftWidth ? `${initData.leftWidth}px` : 'auto',\n          }}\n        >\n          {leftContent()}\n          <div style={sureLeftBgStyle.value}></div>\n          <div ref={sureLeftRef} style={sureLeftStyle.value} onClick={(e: MouseEvent) => handleSureClick}>\n            {sureLeftContent.value}\n          </div>\n        </div>\n      );\n    };\n    const renderRight = () => {\n      const rightContent = () => {\n        if (Array.isArray(props.right)) {\n          return props.right.map((btn) => {\n            const btnClass = [`${swipeCellClass.value}__content`, btn.className || ''];\n            const style = btn.style || 'height: 100%';\n            const { icon: btnIcon } = btn;\n            const { text: btnText } = btn;\n            return (\n              <div class={btnClass} style={style} onClick={() => handleClickBtn({ action: btn, source: 'right' })}>\n                {btnIcon && <btnIcon class={`${swipeCellClass.value}__icon`}></btnIcon>}\n                {btnText && <span class={`${swipeCellClass.value}__text`}>{btnText}</span>}\n              </div>\n            );\n          });\n        }\n        return renderTNodeJSX('right');\n      };\n\n      return (\n        <div\n          ref={rightRef}\n          class={`${swipeCellClass.value}__right`}\n          style={{\n            width: initData.rightWidth ? `${initData.rightWidth}px` : 'auto',\n          }}\n        >\n          {rightContent()}\n          <div style={sureRightBgStyle.value}></div>\n          <div ref={sureRightRef} style={sureRightStyle.value} onClick={(e: MouseEvent) => handleSureClick}>\n            {sureRightContent.value}\n          </div>\n        </div>\n      );\n    };\n    return () => {\n      return (\n        <div ref={swipeCellRef} class={swipeCellClass.value} onClick={handleCellClick}>\n          <div class={`${swipeCellClass.value}__wrapper`} style={wrapperStyle.value}>\n            {renderLeft()}\n            {renderTNodeContent('default', 'content')}\n            {renderRight()}\n          </div>\n        </div>\n      );\n    };\n  },\n});\n"],"names":["prefix","config","defineComponent","name","props","setup","context","renderTNodeJSX","useTNodeJSX","renderTNodeContent","useContent","swipeCellClass","usePrefixClass","internalInstance","getCurrentInstance","leftRef","ref","rightRef","swipeCellRef","wrapperStyle","computed","transform","concat","initData","pos","transition","moving","position","marginLeft","sureMarginLeft","value","marginRight","sureMarginRight","distance","autoBack","threshold","reactive","moved","leftWidth","rightWidth","offset","status","_useSureConfirm","useSureConfirm","sureRightRef","sureLeftRef","showSureRight","showSureLeft","closedSure","sureRightContent","sureLeftContent","sureLeftBgStyle","sureRightBgStyle","sureRightStyle","sureLeftStyle","showSure","handleSureClick","range","num","min","max","Math","swipeDir","_useSwipe","useSwipe","onSwipeStart","e","disabled","setPanelWidth","onSwipe","absLenX","abs","lengthX","absLenY","lengthY","preventDefault","onSwipeEnd","setTimeout","end","stop","_leftRef$value","_rightRef$value","clientWidth","classes","onMounted","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_context","prev","next","renderMenuStatus","onUnmounted","_stopClickAway$value","stopClickAway","call","watch","opened","deep","newVal","oldVal","updateRightMenuPosStyle","updateLeftMenuPosStyle","children","wArr","i","len","length","el","push","w","style","useClickAway","close","detectIframe","isBoolean","open","isArray","direction","isOpen","_props2$onChange","onChange","_props2$onChange2","type","_props2$onChange3","handleClickBtn","_ref2","action","source","clickFn","_props2$onClick","onClick","sure","handleCellClick","stopPropagation","expose","renderLeft","leftContent","Array","left","map","btn","btnClass","className","btnIcon","icon","btnText","text","_createVNode","width","renderRight","rightContent","right"],"mappings":"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"}