{"version":3,"file":"tabs.mjs","sources":["../../src/tabs/tabs.tsx"],"sourcesContent":["import {\n  computed,\n  defineComponent,\n  onMounted,\n  provide,\n  ref,\n  toRefs,\n  nextTick,\n  onBeforeUnmount,\n  readonly,\n  Fragment,\n  watch,\n  CSSProperties,\n  onActivated,\n  h,\n  RendererNode,\n} from 'vue';\nimport isFunction from 'lodash/isFunction';\nimport config from '../config';\nimport props from './props';\nimport TTabNavItem from './tab-nav-item';\nimport { useVModel } from '../shared';\nimport { preventDefault } from '../shared/dom';\nimport CLASSNAMES from '../shared/constants';\nimport TSticky from '../sticky';\nimport { TdStickyProps } from '../sticky/type';\nimport TBadge from '../badge';\nimport { useTNodeJSX } from '../hooks/tnode';\nimport { TdTabPanelProps } from './type';\nimport { usePrefixClass } from '../hooks/useClass';\n\nconst { prefix } = config;\n\nexport default defineComponent({\n  name: `${prefix}-tabs`,\n  props,\n  setup(props) {\n    const renderTNodeJSX = useTNodeJSX();\n    const tabsClass = usePrefixClass('tabs');\n\n    const stickyProps = computed(() => ({ ...(props.stickyProps as TdStickyProps), disabled: !props.sticky }));\n    const activeClass = `${tabsClass.value}__item--active`;\n    const disabledClass = `${tabsClass.value}__item--disabled`;\n    const tabsClasses = computed(() => [`${tabsClass.value}`, props.size && CLASSNAMES.SIZE[props.size]]);\n    const navClasses = ref([`${tabsClass.value}__nav`]);\n    const startX = ref(0);\n    const startY = ref(0);\n    const endX = ref(0);\n    const endY = ref(0);\n    const canMove = ref(true);\n    const tabIndex = computed(() => {\n      let index = 0;\n      for (let i = 0; i < itemProps.value.length; i++) {\n        if (itemProps.value[i].value === currentValue.value) {\n          index = i;\n          break;\n        }\n      }\n      return index;\n    });\n\n    const { value, modelValue } = toRefs(props);\n    const [currentValue, setCurrentValue] = useVModel(value, modelValue, props.defaultValue, props.onChange);\n\n    const itemProps = computed<Array<TdTabPanelProps>>(() => {\n      if (props.list) {\n        return props.list;\n      }\n      let children: RendererNode[] = renderTNodeJSX('default');\n      const res: RendererNode[] = [];\n      const label: RendererNode[] = [];\n      children?.forEach((child) => {\n        if (child.type === Fragment) {\n          res.push(...child.children);\n        } else {\n          res.push(child);\n        }\n        if (child.children?.label) {\n          label.push(child.children.label()[0] || null);\n        }\n      });\n\n      children = res.filter((child: RendererNode) => child.type.name === `${prefix}-tab-panel`);\n      return children.map((item: RendererNode, index: number) => ({\n        ...item.props,\n        label: () => label[index] || item.props.label,\n      }));\n    });\n\n    const valueList = computed(() => itemProps.value.map((v) => v.value));\n    const currentIndex = computed(() => valueList.value.indexOf(currentValue.value));\n\n    const navScroll = ref<HTMLElement>();\n    const navWrap = ref<HTMLElement>();\n    const navLine = ref<HTMLElement>();\n    const lineStyle = ref();\n    const moveToActiveTab = () => {\n      if (navWrap.value && navLine.value && props.showBottomLine) {\n        const tab = navWrap.value.querySelector<HTMLElement>(`.${activeClass}`);\n        if (!tab) return;\n        const line = navLine.value;\n        const tabInner = tab.querySelector<HTMLElement>(`.${prefix}-badge`);\n        const style: CSSProperties = {};\n        if (props.bottomLineMode === 'auto') {\n          style.width = `${Number(tabInner?.offsetWidth)}px`;\n          style.transform = `translateX(${Number(tab?.offsetLeft) + Number(tabInner?.offsetLeft)}px)`;\n        } else if (props.bottomLineMode === 'full') {\n          style.width = `${Number(tab?.offsetWidth)}px`;\n          style.transform = `translateX(${Number(tab?.offsetLeft)}px)`;\n        } else {\n          style.transform = `translateX(${\n            Number(tab?.offsetLeft) + (Number(tab?.offsetWidth) - Number(line?.offsetWidth)) / 2\n          }px)`;\n        }\n\n        if (props.animation) {\n          style.transitionDuration = `${props.animation.duration}ms`;\n        }\n\n        lineStyle.value = style;\n      }\n      if (navScroll.value) {\n        const tab = navScroll.value.querySelector<HTMLElement>(`.${activeClass}`);\n        if (!tab) return;\n        const tabLeft = tab?.offsetLeft;\n        const tabWidth = tab?.offsetWidth;\n        const navScrollScrollLeft = navScroll.value.scrollLeft;\n        const navScrollWidth = navScroll.value.offsetWidth;\n        if (tabLeft + tabWidth - navScrollScrollLeft > navScrollWidth) {\n          navScroll.value.scrollTo({ left: tabLeft + tabWidth - navScrollWidth, behavior: 'smooth' });\n        } else if (tabLeft < navScrollScrollLeft) {\n          navScroll.value.scrollTo({ left: tabLeft, behavior: 'smooth' });\n        }\n      }\n    };\n\n    onMounted(() => {\n      window.addEventListener('resize', moveToActiveTab, false);\n      setTimeout(() => {\n        moveToActiveTab();\n      }, 300);\n    });\n    onBeforeUnmount(() => {\n      window.removeEventListener('resize', moveToActiveTab);\n    });\n    onActivated(() => {\n      moveToActiveTab();\n    });\n\n    watch(value, () => {\n      nextTick(() => {\n        moveToActiveTab();\n      });\n    });\n\n    const handleTabClick = (event: Event, item: TdTabPanelProps) => {\n      const { value, disabled } = item;\n      if (disabled || currentValue.value === value) {\n        return false;\n      }\n      const label = isFunction(item.label) ? item.label(h).toString() : item.label;\n      setCurrentValue(value, label);\n      props.onClick?.(value, label);\n      nextTick(() => {\n        moveToActiveTab();\n      });\n    };\n\n    const handlerScroll = (context: { scrollTop: number; isFixed: boolean }) => {\n      const { scrollTop, isFixed } = context;\n      if (props.stickyProps) {\n        props.onScroll?.(scrollTop, isFixed);\n      }\n    };\n\n    // 手势滑动开始\n    const handleTouchstart = (e: TouchEvent) => {\n      if (!props.swipeable) return;\n      startX.value = e.targetTouches[0].clientX;\n      startY.value = e.targetTouches[0].clientY;\n    };\n\n    const handleTouchmove = (e: TouchEvent) => {\n      if (!props.swipeable) return;\n      if (!canMove.value) return;\n      endX.value = e.targetTouches[0].clientX;\n      endY.value = e.targetTouches[0].clientY;\n      const dValueX = Math.abs(startX.value - endX.value);\n      const dValueY = Math.abs(startY.value - endY.value);\n      if (tabIndex.value >= 0 && tabIndex.value < itemProps.value.length) {\n        if (dValueX > dValueY) {\n          // 水平滑动长度大于纵向滑动长度，那么选择水平滑动，阻止浏览器默认左右滑动事件\n          preventDefault(e, false);\n          if (dValueX <= 40) return;\n          if (startX.value > endX.value) {\n            // 向左划\n            if (tabIndex.value >= itemProps.value.length - 1) return;\n            canMove.value = false;\n            handleTabClick(e, itemProps.value[tabIndex.value + 1]);\n          } else if (startX.value < endX.value) {\n            // 向右划\n            if (tabIndex.value <= 0) return;\n            canMove.value = false;\n            handleTabClick(e, itemProps.value[tabIndex.value - 1]);\n          }\n        }\n      }\n    };\n\n    // 手势滑动结束\n    const handleTouchend = () => {\n      if (!props.swipeable) return;\n      canMove.value = true;\n      startX.value = 0;\n      endX.value = 0;\n      startY.value = 0;\n      endY.value = 0;\n    };\n\n    provide('currentValue', readonly(currentValue));\n\n    const readerNav = () => {\n      return itemProps.value.map((item, index) => {\n        const badgeProps = item['badge-props'] || item.badgeProps;\n        return (\n          <div\n            class={{\n              [`${tabsClass.value}__item ${tabsClass.value}__item--top`]: true,\n              [`${tabsClass.value}__item--evenly`]: props.spaceEvenly,\n              [activeClass]: item.value === currentValue.value,\n              [disabledClass]: item.disabled,\n              [`${tabsClass.value}__item--${props.theme}`]: true,\n            }}\n            onClick={(e) => handleTabClick(e, item)}\n          >\n            <TBadge {...badgeProps}>\n              <div\n                class={{\n                  [`${tabsClass.value}__item-inner ${tabsClass.value}__item-inner--${props.theme}`]: true,\n                  [`${tabsClass.value}__item-inner--active`]:\n                    props.theme === 'tag' && item.value === currentValue.value,\n                }}\n              >\n                <TTabNavItem label={item.label} />\n              </div>\n            </TBadge>\n            {props.theme === 'card' && index === currentIndex.value - 1 && (\n              <div class={`${tabsClass.value}__item-prefix`} />\n            )}\n            {props.theme === 'card' && index === currentIndex.value + 1 && (\n              <div class={`${tabsClass.value}__item-suffix`} />\n            )}\n          </div>\n        );\n      });\n    };\n    return () => {\n      return (\n        <div class={tabsClasses.value}>\n          <TSticky {...stickyProps.value} onScroll={handlerScroll}>\n            <div class={navClasses.value}>\n              <div\n                ref={navScroll}\n                class={`${tabsClass.value}__scroll ${tabsClass.value}__scroll--top ${tabsClass.value}__scroll--${props.theme}`}\n              >\n                <div ref={navWrap} class={`${tabsClass.value}__wrapper ${tabsClass.value}__wrapper--${props.theme}`}>\n                  {readerNav()}\n                  {props.theme === 'line' && props.showBottomLine && (\n                    <div\n                      ref={navLine}\n                      class={`${tabsClass.value}__track ${tabsClass.value}__track--top`}\n                      style={lineStyle.value}\n                    ></div>\n                  )}\n                </div>\n              </div>\n            </div>\n          </TSticky>\n          <div\n            class={`${tabsClass.value}__content`}\n            onTouchstart={handleTouchstart}\n            onTouchmove={handleTouchmove}\n            onTouchend={handleTouchend}\n          >\n            {renderTNodeJSX('default')}\n          </div>\n        </div>\n      );\n    };\n  },\n});\n"],"names":["prefix","config","defineComponent","name","props","setup","renderTNodeJSX","useTNodeJSX","tabsClass","usePrefixClass","stickyProps","computed","_objectSpread","disabled","sticky","activeClass","concat","value","disabledClass","tabsClasses","size","CLASSNAMES","SIZE","navClasses","ref","startX","startY","endX","endY","canMove","tabIndex","index","i","itemProps","length","currentValue","_toRefs","toRefs","modelValue","_useVModel","useVModel","defaultValue","onChange","_useVModel2","_slicedToArray","setCurrentValue","_children","list","children","res","label","forEach","child","_child$children","type","Fragment","push","apply","_toConsumableArray","filter","map","item","valueList","v","currentIndex","indexOf","navScroll","navWrap","navLine","lineStyle","moveToActiveTab","showBottomLine","tab","querySelector","line","tabInner","style","bottomLineMode","width","Number","offsetWidth","transform","offsetLeft","animation","transitionDuration","duration","tabLeft","tabWidth","navScrollScrollLeft","scrollLeft","navScrollWidth","scrollTo","left","behavior","onMounted","window","addEventListener","setTimeout","onBeforeUnmount","removeEventListener","onActivated","watch","nextTick","handleTabClick","event","_props2$onClick","isFunction","h","toString","onClick","handlerScroll","context","scrollTop","isFixed","_props2$onScroll","onScroll","handleTouchstart","e","swipeable","targetTouches","clientX","clientY","handleTouchmove","dValueX","Math","abs","dValueY","preventDefault","handleTouchend","provide","readonly","readerNav","badgeProps","_createVNode","_defineProperty","spaceEvenly","theme","TBadge","default","_default","TTabNavItem","TSticky","_mergeProps"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BA,IAAQA,SAAWC,MAAA,CAAXD;AAER,YAAeE,eAAgB,CAAA;AAC7BC,EAAAA,gBAASH,MAAA,EAAA,OAAA,CAAA;AACTI,EAAAA,KAAA,EAAAA,KAAA;AACAC,EAAAA,OAAAA,SAAAA,MAAMD,MAAO,EAAA;AACX,IAAA,IAAME,iBAAiBC,WAAY,EAAA,CAAA;AAC7B,IAAA,IAAAC,SAAA,GAAYC,eAAe,MAAM,CAAA,CAAA;IAEjC,IAAAC,WAAA,GAAcC,QAAS,CAAA,YAAA;AAAA,MAAA,OAAAC,aAAA,CAAAA,aAAA,CAAaR,EAAAA,EAAAA,MAAM,CAAAM,WAAA,CAAA,EAAA,EAAA,EAAA;QAA+BG,QAAU,EAAA,CAACT,MAAM,CAAAU,MAAAA;AAAA,OAAA,CAAA,CAAA;AAAA,KAAS,CAAA,CAAA;AACnG,IAAA,IAAAC,WAAA,GAAAC,EAAAA,CAAAA,MAAA,CAAiBR,SAAU,CAAAS,KAAA,EAAA,gBAAA,CAAA,CAAA;AAC3B,IAAA,IAAAC,aAAA,GAAAF,EAAAA,CAAAA,MAAA,CAAmBR,SAAU,CAAAS,KAAA,EAAA,kBAAA,CAAA,CAAA;IACnC,IAAME,WAAc,GAAAR,QAAA,CAAS,YAAA;AAAA,MAAA,OAAM,IAAAK,MAAA,CAAIR,SAAA,CAAUS,KAASb,GAAAA,MAAAA,CAAMgB,IAAQ,IAAAC,UAAA,CAAWC,IAAKlB,CAAAA,MAAAA,CAAMgB,KAAK,CAAC,CAAA;KAAA,CAAA,CAAA;IACpG,IAAMG,aAAaC,GAAI,CAAA,CAAA,EAAA,CAAAR,MAAA,CAAIR,SAAA,CAAUS,gBAAa,CAAA,CAAA;AAC5C,IAAA,IAAAQ,MAAA,GAASD,IAAI,CAAC,CAAA,CAAA;AACd,IAAA,IAAAE,MAAA,GAASF,IAAI,CAAC,CAAA,CAAA;AACd,IAAA,IAAAG,IAAA,GAAOH,IAAI,CAAC,CAAA,CAAA;AACZ,IAAA,IAAAI,IAAA,GAAOJ,IAAI,CAAC,CAAA,CAAA;AACZ,IAAA,IAAAK,OAAA,GAAUL,IAAI,IAAI,CAAA,CAAA;AAClB,IAAA,IAAAM,QAAA,GAAWnB,SAAS,YAAM;MAC9B,IAAIoB,KAAQ,GAAA,CAAA,CAAA;AACZ,MAAA,KAAA,IAASC,IAAI,CAAG,EAAAA,CAAA,GAAIC,SAAU,CAAAhB,KAAA,CAAMiB,QAAQF,CAAK,EAAA,EAAA;AAC/C,QAAA,IAAIC,SAAU,CAAAhB,KAAA,CAAMe,CAAG,CAAA,CAAAf,KAAA,KAAUkB,aAAalB,KAAO,EAAA;AAC3Cc,UAAAA,KAAA,GAAAC,CAAA,CAAA;AACR,UAAA,MAAA;AACF,SAAA;AACF,OAAA;AACO,MAAA,OAAAD,KAAA,CAAA;AACT,KAAC,CAAA,CAAA;AAED,IAAA,IAAAK,OAAA,GAA8BC,OAAOjC,MAAK,CAAA;MAAlCa,KAAA,GAAAmB,OAAA,CAAAnB,KAAA;MAAOqB,UAAW,GAAAF,OAAA,CAAXE,UAAW,CAAA;AACpB,IAAA,IAAAC,UAAA,GAAkCC,SAAA,CAAUvB,OAAOqB,UAAYlC,EAAAA,MAAAA,CAAMqC,YAAcrC,EAAAA,MAAAA,CAAMsC,QAAQ,CAAA;MAAAC,WAAA,GAAAC,cAAA,CAAAL,UAAA,EAAA,CAAA,CAAA;AAAhGJ,MAAAA,YAAc,GAAAQ,WAAA,CAAA,CAAA,CAAA;AAAAE,MAAAA,eAAe,GAAAF,WAAA,CAAA,CAAA,CAAA,CAAA;AAE9B,IAAA,IAAAV,SAAA,GAAYtB,SAAiC,YAAM;AAAA,MAAA,IAAAmC,SAAA,CAAA;MACvD,IAAI1C,OAAM2C,IAAM,EAAA;QACd,OAAO3C,MAAM,CAAA2C,IAAA,CAAA;AACf,OAAA;AACI,MAAA,IAAAC,QAAA,GAA2B1C,eAAe,SAAS,CAAA,CAAA;MACvD,IAAM2C,MAAsB,EAAC,CAAA;MAC7B,IAAMC,SAAwB,EAAC,CAAA;AACrB,MAAA,CAAAJ,SAAA,GAAAE,QAAA,MAAA,IAAA,IAAAF,SAAA,KAAA,KAAA,CAAA,IAAAA,SAAA,CAAAK,OAAA,CAAQ,UAACC,KAAU,EAAA;AAAA,QAAA,IAAAC,eAAA,CAAA;AACvB,QAAA,IAAAD,KAAA,CAAME,SAASC,QAAU,EAAA;AACvBN,UAAAA,GAAA,CAAAO,IAAA,CAAAC,KAAA,CAAAR,GAAA,EAAAS,kBAAA,CAAQN,KAAA,CAAMJ,QAAQ,CAAA,CAAA,CAAA;AAC5B,SAAO,MAAA;AACLC,UAAAA,GAAA,CAAIO,KAAKJ,KAAK,CAAA,CAAA;AAChB,SAAA;QACI,IAAAC,CAAAA,eAAA,GAAAD,KAAA,CAAMJ,0CAANK,KAAAA,CAAAA,IAAAA,eAAA,CAAgBH,KAAO,EAAA;AACzBA,UAAAA,MAAA,CAAMM,KAAKJ,KAAM,CAAAJ,QAAA,CAASE,KAAM,EAAA,CAAE,MAAM,IAAI,CAAA,CAAA;AAC9C,SAAA;AACF,OAAC,CAAA,CAAA;AAEUF,MAAAA,QAAA,GAAAC,GAAA,CAAIU,OAAO,UAACP,KAAA,EAAA;QAAA,OAAwBA,MAAME,IAAK,CAAAnD,IAAA,KAAAa,EAAAA,CAAAA,MAAA,CAAYhB,MAAkB,EAAA,YAAA,CAAA,CAAA;OAAA,CAAA,CAAA;AACxF,MAAA,OAAOgD,QAAS,CAAAY,GAAA,CAAI,UAACC,IAAA,EAAoB9B,KAAmB,EAAA;AAAA,QAAA,OAAAnB,aAAA,CAAAA,aAAA,CACvDiD,EAAAA,EAAAA,IAAK,CAAAzD,KAAA,CAAA,EAAA,EAAA,EAAA;UACR8C,KAAO,EAAA,SAAPA,KAAOA,GAAA;YAAA,OAAMA,MAAM,CAAAnB,KAAA,CAAA,IAAU8B,KAAKzD,KAAM,CAAA8C,KAAA,CAAA;AAAA,WAAA;AAAA,SAAA,CAAA,CAAA;AAAA,OACxC,CAAA,CAAA;AACJ,KAAC,CAAA,CAAA;IAEK,IAAAY,SAAA,GAAYnD,QAAS,CAAA,YAAA;AAAA,MAAA,OAAMsB,SAAU,CAAAhB,KAAA,CAAM2C,IAAI,UAACG,CAAA,EAAA;QAAA,OAAMA,CAAE,CAAA9C,KAAK,CAAA;OAAC,CAAA,CAAA;KAAA,CAAA,CAAA;IAC9D,IAAA+C,YAAA,GAAerD,SAAS,YAAA;MAAA,OAAMmD,SAAA,CAAU7C,MAAMgD,OAAQ,CAAA9B,YAAA,CAAalB,KAAK,CAAC,CAAA;KAAA,CAAA,CAAA;AAE/E,IAAA,IAAMiD,YAAY1C,GAAiB,EAAA,CAAA;AACnC,IAAA,IAAM2C,UAAU3C,GAAiB,EAAA,CAAA;AACjC,IAAA,IAAM4C,UAAU5C,GAAiB,EAAA,CAAA;AACjC,IAAA,IAAM6C,YAAY7C,GAAI,EAAA,CAAA;AACtB,IAAA,IAAM8C,kBAAkB,SAAlBA,kBAAwB;MAC5B,IAAIH,OAAQ,CAAAlD,KAAA,IAASmD,OAAQ,CAAAnD,KAAA,IAASb,OAAMmE,cAAgB,EAAA;AAC1D,QAAA,IAAMC,GAAM,GAAAL,OAAA,CAAQlD,KAAM,CAAAwD,aAAA,CAAA,GAAA,CAAAzD,MAAA,CAA+BD,WAAa,CAAA,CAAA,CAAA;QACtE,IAAI,CAACyD,GAAA,EAAK,OAAA;AACV,QAAA,IAAME,OAAON,OAAQ,CAAAnD,KAAA,CAAA;QACrB,IAAM0D,QAAW,GAAAH,GAAA,CAAIC,aAA2B,KAAAzD,MAAA,CAAIhB,MAAc,EAAA,QAAA,CAAA,CAAA,CAAA;QAClE,IAAM4E,QAAuB,EAAC,CAAA;AAC1BxE,QAAAA,IAAAA,MAAAA,CAAMyE,mBAAmB,MAAQ,EAAA;AACnCD,UAAAA,KAAA,CAAME,KAAQ,GAAA9D,EAAAA,CAAAA,MAAA,CAAG+D,MAAO,CAAAJ,QAAA,KAAA,IAAA,IAAAA,QAAA,KAAAA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,QAAA,CAAUK,WAAW,CAAA,EAAA,IAAA,CAAA,CAAA;UACvCJ,KAAA,CAAAK,SAAA,GAAA,aAAA,CAAAjE,MAAA,CAA0B+D,MAAO,CAAAP,GAAA,KAAA,IAAA,IAAAA,GAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAAA,GAAA,CAAKU,UAAU,CAAI,GAAAH,MAAA,CAAOJ,qBAAAA,+BAAAA,SAAUO,UAAU,CAAA,EAAA,KAAA,CAAA,CAAA;AACvF,SAAA,MAAA,IAAW9E,MAAM,CAAAyE,cAAA,KAAmB,MAAQ,EAAA;AAC1CD,UAAAA,KAAA,CAAME,KAAQ,GAAA9D,EAAAA,CAAAA,MAAA,CAAG+D,MAAO,CAAAP,GAAA,KAAA,IAAA,IAAAA,GAAA,KAAAA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,GAAA,CAAKQ,WAAW,CAAA,EAAA,IAAA,CAAA,CAAA;AACxCJ,UAAAA,KAAA,CAAMK,SAAY,GAAAjE,aAAAA,CAAAA,MAAA,CAAc+D,MAAO,CAAAP,GAAA,KAAA,IAAA,IAAAA,GAAA,KAAAA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,GAAA,CAAKU,UAAU,CAAA,EAAA,KAAA,CAAA,CAAA;AACxD,SAAO,MAAA;AACLN,UAAAA,KAAA,CAAMK,SAAY,GAAA,aAAA,CAAAjE,MAAA,CAChB+D,MAAO,CAAAP,GAAA,KAAA,IAAA,IAAAA,GAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAAA,GAAA,CAAKU,UAAU,CAAA,GAAA,CAAKH,MAAO,CAAAP,GAAA,KAAAA,IAAAA,IAAAA,GAAA,uBAAAA,GAAA,CAAKQ,WAAW,CAAA,GAAID,MAAO,CAAAL,IAAA,KAAAA,IAAAA,IAAAA,IAAA,uBAAAA,IAAA,CAAMM,WAAW,CAAK,IAAA,CAAA,EAAA,KAAA,CAAA,CAAA;AAEvF,SAAA;QAEA,IAAI5E,OAAM+E,SAAW,EAAA;UACbP,KAAA,CAAAQ,kBAAA,GAAA,EAAA,CAAApE,MAAA,CAAwBZ,MAAAA,CAAM+E,SAAU,CAAAE,QAAA,EAAA,IAAA,CAAA,CAAA;AAChD,SAAA;QAEAhB,SAAA,CAAUpD,KAAQ,GAAA2D,KAAA,CAAA;AACpB,OAAA;MACA,IAAIV,UAAUjD,KAAO,EAAA;AACnB,QAAA,IAAMuD,IAAM,GAAAN,SAAA,CAAUjD,KAAM,CAAAwD,aAAA,CAAA,GAAA,CAAAzD,MAAA,CAA+BD,WAAa,CAAA,CAAA,CAAA;QACxE,IAAI,CAACyD,IAAA,EAAK,OAAA;QACV,IAAMc,UAAUd,IAAK,KAAA,IAAA,IAALA,IAAK,KAALA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,IAAK,CAAAU,UAAA,CAAA;QACrB,IAAMK,WAAWf,IAAK,KAAA,IAAA,IAALA,IAAK,KAALA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,IAAK,CAAAQ,WAAA,CAAA;AAChB,QAAA,IAAAQ,mBAAA,GAAsBtB,UAAUjD,KAAM,CAAAwE,UAAA,CAAA;AACtC,QAAA,IAAAC,cAAA,GAAiBxB,UAAUjD,KAAM,CAAA+D,WAAA,CAAA;AACnC,QAAA,IAAAM,OAAA,GAAUC,QAAW,GAAAC,mBAAA,GAAsBE,cAAgB,EAAA;AACnDxB,UAAAA,SAAA,CAAAjD,KAAA,CAAM0E,SAAS;AAAEC,YAAAA,IAAA,EAAMN,UAAUC,QAAW,GAAAG,cAAA;AAAgBG,YAAAA,QAAU,EAAA,QAAA;AAAS,WAAC,CAAA,CAAA;AAC5F,SAAA,MAAA,IAAWP,UAAUE,mBAAqB,EAAA;AACxCtB,UAAAA,SAAA,CAAUjD,MAAM0E,QAAS,CAAA;AAAEC,YAAAA,MAAMN,OAAS;AAAAO,YAAAA,QAAA,EAAU,QAAA;AAAS,WAAC,CAAA,CAAA;AAChE,SAAA;AACF,OAAA;KACF,CAAA;AAEAC,IAAAA,SAAA,CAAU,YAAM;MACPC,MAAA,CAAAC,gBAAA,CAAiB,QAAU,EAAA1B,eAAA,EAAiB,KAAK,CAAA,CAAA;AACxD2B,MAAAA,UAAA,CAAW,YAAM;AACC3B,QAAAA,eAAA,EAAA,CAAA;SACf,GAAG,CAAA,CAAA;AACR,KAAC,CAAA,CAAA;AACD4B,IAAAA,eAAA,CAAgB,YAAM;AACbH,MAAAA,MAAA,CAAAI,mBAAA,CAAoB,UAAU7B,eAAe,CAAA,CAAA;AACtD,KAAC,CAAA,CAAA;AACD8B,IAAAA,WAAA,CAAY,YAAM;AACA9B,MAAAA,eAAA,EAAA,CAAA;AAClB,KAAC,CAAA,CAAA;IAED+B,KAAA,CAAMpF,OAAO,YAAM;AACjBqF,MAAAA,QAAA,CAAS,YAAM;AACGhC,QAAAA,eAAA,EAAA,CAAA;AAClB,OAAC,CAAA,CAAA;AACH,KAAC,CAAA,CAAA;IAEK,IAAAiC,cAAA,GAAiB,SAAjBA,cAAAA,CAAkBC,KAAA,EAAc3C,IAA0B,EAAA;AAAA,MAAA,IAAA4C,eAAA,CAAA;AAC9D,MAAA,IAAQxF,MAAO,GAAa4C,IAAA,CAApB5C,KAAA;QAAOJ,QAAA,GAAagD,IAAA,CAAbhD,QAAA,CAAA;AACX,MAAA,IAAAA,QAAA,IAAYsB,YAAa,CAAAlB,KAAA,KAAUA,MAAO,EAAA;AACrC,QAAA,OAAA,KAAA,CAAA;AACT,OAAA;MACM,IAAAiC,KAAA,GAAQwD,YAAW,CAAA7C,IAAA,CAAKX,KAAK,CAAA,GAAIW,IAAK,CAAAX,KAAA,CAAMyD,CAAC,CAAA,CAAEC,QAAS,EAAA,GAAI/C,IAAK,CAAAX,KAAA,CAAA;AACvEL,MAAAA,eAAA,CAAgB5B,QAAOiC,KAAK,CAAA,CAAA;AAC5B9C,MAAAA,CAAAA,eAAAA,GAAAA,MAAAA,CAAMyG,OAAU5F,cAAAA,eAAAA,KAAAA,KAAAA,CAAAA,IAAhBb,eAAAA,CAAAA,IAAAA,CAAAA,MAAAA,EAAgBa,MAAAA,EAAOiC,KAAK,CAAA,CAAA;AAC5BoD,MAAAA,QAAA,CAAS,YAAM;AACGhC,QAAAA,eAAA,EAAA,CAAA;AAClB,OAAC,CAAA,CAAA;KACH,CAAA;AAEM,IAAA,IAAAwC,aAAA,GAAgB,SAAhBA,aAAAA,CAAiBC,OAAqD,EAAA;AACpE,MAAA,IAAEC,SAAW,GAAYD,OAAA,CAAvBC,SAAW;QAAAC,OAAA,GAAYF,OAAA,CAAZE,OAAA,CAAA;MACnB,IAAI7G,OAAMM,WAAa,EAAA;AAAA,QAAA,IAAAwG,gBAAA,CAAA;AACrB9G,QAAAA,CAAAA,gBAAAA,GAAAA,MAAAA,CAAM+G,QAAW,cAAAD,gBAAA,KAAA,KAAA,CAAA,IAAjB9G,gBAAAA,CAAAA,IAAAA,CAAAA,MAAAA,EAAiB4G,SAAA,EAAWC,OAAO,CAAA,CAAA;AACrC,OAAA;KACF,CAAA;AAGM,IAAA,IAAAG,gBAAA,GAAmB,SAAnBA,gBAAAA,CAAoBC,CAAkB,EAAA;AAC1C,MAAA,IAAI,CAACjH,MAAM,CAAAkH,SAAA,EAAW,OAAA;MACf7F,MAAA,CAAAR,KAAA,GAAQoG,CAAE,CAAAE,aAAA,CAAc,CAAG,CAAA,CAAAC,OAAA,CAAA;MAC3B9F,MAAA,CAAAT,KAAA,GAAQoG,CAAE,CAAAE,aAAA,CAAc,CAAG,CAAA,CAAAE,OAAA,CAAA;KACpC,CAAA;AAEM,IAAA,IAAAC,eAAA,GAAkB,SAAlBA,eAAAA,CAAmBL,CAAkB,EAAA;AACzC,MAAA,IAAI,CAACjH,MAAM,CAAAkH,SAAA,EAAW,OAAA;AACtB,MAAA,IAAI,CAACzF,OAAQ,CAAAZ,KAAA,EAAO,OAAA;MACfU,IAAA,CAAAV,KAAA,GAAQoG,CAAE,CAAAE,aAAA,CAAc,CAAG,CAAA,CAAAC,OAAA,CAAA;MAC3B5F,IAAA,CAAAX,KAAA,GAAQoG,CAAE,CAAAE,aAAA,CAAc,CAAG,CAAA,CAAAE,OAAA,CAAA;AAChC,MAAA,IAAME,UAAUC,IAAK,CAAAC,GAAA,CAAIpG,MAAO,CAAAR,KAAA,GAAQU,KAAKV,KAAK,CAAA,CAAA;AAClD,MAAA,IAAM6G,UAAUF,IAAK,CAAAC,GAAA,CAAInG,MAAO,CAAAT,KAAA,GAAQW,KAAKX,KAAK,CAAA,CAAA;AAClD,MAAA,IAAIa,SAASb,KAAS,IAAA,CAAA,IAAKa,SAASb,KAAQ,GAAAgB,SAAA,CAAUhB,MAAMiB,MAAQ,EAAA;QAClE,IAAIyF,UAAUG,OAAS,EAAA;AAErBC,UAAAA,cAAA,CAAeV,GAAG,KAAK,CAAA,CAAA;UACvB,IAAIM,OAAW,IAAA,EAAA,EAAI,OAAA;AACf,UAAA,IAAAlG,MAAA,CAAOR,KAAQ,GAAAU,IAAA,CAAKV,KAAO,EAAA;YAE7B,IAAIa,QAAS,CAAAb,KAAA,IAASgB,SAAU,CAAAhB,KAAA,CAAMiB,MAAS,GAAA,CAAA,EAAG,OAAA;YAClDL,OAAA,CAAQZ,KAAQ,GAAA,KAAA,CAAA;AAChBsF,YAAAA,cAAA,CAAec,CAAG,EAAApF,SAAA,CAAUhB,KAAM,CAAAa,QAAA,CAASb,QAAQ,CAAE,CAAA,CAAA,CAAA;WAC5C,MAAA,IAAAQ,MAAA,CAAOR,KAAQ,GAAAU,IAAA,CAAKV,KAAO,EAAA;AAEpC,YAAA,IAAIa,SAASb,KAAS,IAAA,CAAA,EAAG,OAAA;YACzBY,OAAA,CAAQZ,KAAQ,GAAA,KAAA,CAAA;AAChBsF,YAAAA,cAAA,CAAec,CAAG,EAAApF,SAAA,CAAUhB,KAAM,CAAAa,QAAA,CAASb,QAAQ,CAAE,CAAA,CAAA,CAAA;AACvD,WAAA;AACF,SAAA;AACF,OAAA;KACF,CAAA;AAGA,IAAA,IAAM+G,iBAAiB,SAAjBA,iBAAuB;AAC3B,MAAA,IAAI,CAAC5H,MAAM,CAAAkH,SAAA,EAAW,OAAA;MACtBzF,OAAA,CAAQZ,KAAQ,GAAA,IAAA,CAAA;MAChBQ,MAAA,CAAOR,KAAQ,GAAA,CAAA,CAAA;MACfU,IAAA,CAAKV,KAAQ,GAAA,CAAA,CAAA;MACbS,MAAA,CAAOT,KAAQ,GAAA,CAAA,CAAA;MACfW,IAAA,CAAKX,KAAQ,GAAA,CAAA,CAAA;KACf,CAAA;AAEQgH,IAAAA,OAAA,CAAA,cAAA,EAAgBC,QAAS,CAAA/F,YAAY,CAAC,CAAA,CAAA;AAE9C,IAAA,IAAMgG,YAAY,SAAZA,YAAkB;MACtB,OAAOlG,SAAU,CAAAhB,KAAA,CAAM2C,GAAI,CAAA,UAACC,MAAM9B,KAAU,EAAA;QACpC,IAAAqG,UAAA,GAAavE,IAAK,CAAA,aAAA,CAAA,IAAkBA,IAAK,CAAAuE,UAAA,CAAA;AAE7C,QAAA,OAAAC,WAAA,CAAA,KAAA,EAAA;AAAA,UAAA,OAAA,EAAAC,eAAA,CAAAA,eAAA,CAAAA,eAAA,CAAAA,eAAA,CAAAA,eAAA,CAAA,EAAA,EAAA,EAAA,CAAAtH,MAAA,CAEQR,SAAU,CAAAS,KAAA,EAAA,SAAA,CAAA,CAAAD,MAAA,CAAeR,UAAUS,KAAqB,EAAA,aAAA,CAAA,EAAA,IAAA,CAAA,EAAA,EAAA,CAAAD,MAAA,CACxDR,SAAU,CAAAS,KAAA,EAAwBb,gBAAAA,CAAAA,EAAAA,MAAM,CAAAmI,WAAA,CAC3CxH,EAAAA,WAAA,EAAc8C,IAAK,CAAA5C,KAAA,KAAUkB,YAAa,CAAAlB,KAAA,CAC1CC,EAAAA,eAAgB2C,IAAK,CAAAhD,QAAA,CAAAG,EAAAA,EAAAA,CAAAA,MAAA,CAClBR,SAAU,CAAAS,KAAA,EAAAD,UAAAA,CAAAA,CAAAA,MAAA,CAAgBZ,OAAMoI,KAAU,GAAA,IAAA,CAAA;UAAA,SAEvC,EAAA,SAAA3B,QAACQ,CAAM,EAAA;AAAA,YAAA,OAAAd,cAAA,CAAec,GAAGxD,IAAI,CAAA,CAAA;AAAA,WAAA;AAAA,SAAA,EAAA,CAAAwE,WAAA,CAAAI,KAAA,EAE1BL,UACV,EAAA;AAAAM,UAAAA,OAAA,WAAAC,QAAA,GAAA;AAAA,YAAA,OAAA,CAAAN,WAAA,CAAA,KAAA,EAAA;AAAA,cAAA,OAAA,EAAAC,eAAA,CAAAA,eAAA,QAAAtH,MAAA,CAEQR,SAAA,CAAUS,+BAAqBT,SAAU,CAAAS,KAAA,oBAAAD,MAAA,CAAsBZ,OAAMoI,KAAU,CAAA,EAAA,IAAA,MAAAxH,MAAA,CAC/ER,SAAU,CAAAS,KAAA,2BACZb,OAAMoI,KAAU,KAAA,KAAA,IAAS3E,IAAK,CAAA5C,KAAA,KAAUkB,YAAa,CAAAlB,KAAA,CAAA;aAAAoH,EAAAA,CAAAA,WAAA,CAAAO,WAAA,EAAA;AAAA,cAAA,OAAA,EAGrC/E,KAAKX,KAAAA;AAAO,aAAA,EAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,WAAA;AAAA,SAAA,CAAA,EAGnC9C,MAAM,CAAAoI,KAAA,KAAU,MAAU,IAAAzG,KAAA,KAAUiC,YAAa,CAAA/C,KAAA,GAAQ,CACxD,IAAAoH,WAAA,CAAA,KAAA,EAAA;AAAA,UAAA,OAAA,EAAA,EAAA,CAAArH,MAAA,CAAeR,SAAA,CAAUS,KAAsB,EAAA,eAAA,CAAA;AAAA,SAAA,EAAA,IAAA,CAAA,EAEhDb,MAAM,CAAAoI,KAAA,KAAU,MAAU,IAAAzG,KAAA,KAAUiC,YAAa,CAAA/C,KAAA,GAAQ,CACxD,IAAAoH,WAAA,CAAA,KAAA,EAAA;AAAA,UAAA,OAAA,EAAA,EAAA,CAAArH,MAAA,CAAeR,SAAA,CAAUS,KAAsB,EAAA,eAAA,CAAA;SAAA,EAAA,IAAA,CAAA,CAAA,CAAA,CAAA;AAIvD,OAAC,CAAA,CAAA;KACH,CAAA;AACA,IAAA,OAAO,YAAM;AAET,MAAA,OAAAoH,WAAA,CAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EAAYlH,WAAY,CAAAF,KAAAA;OAAAoH,EAAAA,CAAAA,WAAA,CAAAQ,MAAA,EAAAC,UAAA,CACTpI,WAAY,CAAAO,KAAA,EAAA;QAAA,UAAiB6F,EAAAA,aAAAA;AACxC,OAAA,CAAA,EAAA;AAAA4B,QAAAA,OAAA,WAAAC,QAAA,GAAA;AAAA,UAAA,OAAA,CAAAN,WAAA,CAAA,KAAA,EAAA;AAAA,YAAA,OAAA,EAAY9G,WAAWN,KAAAA;AACrB,WAAA,EAAA,CAAAoH,WAAA,CAAA,KAAA,EAAA;AAAA,YAAA,KAAA,EACOnE;+BACK1D,SAAU,CAAAS,KAAA,EAAAD,WAAAA,CAAAA,CAAAA,MAAA,CAAiBR,UAAUS,KAAsB,oBAAAD,MAAA,CAAAR,SAAA,CAAUS,KAAkBb,gBAAAA,MAAAA,CAAAA,MAAAA,CAAMoI;;mBAE7FrE,OAAA;AAAA,YAAA,OAAA,EAAA,EAAA,CAAAnD,MAAA,CAAmBR,SAAA,CAAUS,KAAkB,gBAAAD,MAAA,CAAAR,SAAA,CAAUS,6BAAmBb,MAAM,CAAAoI,KAAA,CAAA;AAAA,WAAA,EAAA,CACzFL,SAAU,EAAA,EACV/H,OAAMoI,KAAU,KAAA,MAAA,IAAUpI,MAAM,CAAAmE,cAAA,IAAA8D,WAAA,CAAA,KAAA,EAAA;AAAA,YAAA,KAAA,EAExBjE,OACL;YAAA,OAAApD,EAAAA,EAAAA,CAAAA,MAAA,CAAUR,SAAU,CAAAS,KAAA,cAAAD,MAAA,CAAgBR,UAAUS,KAC9C,EAAA,cAAA,CAAA;AAAA,YAAA,OAAA,EAAOoD,UAAUpD,KAAAA;WAClB,EAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,SAAA;AAAA,OAAA,CAAA,EAAAoH,WAAA,CAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EAAA,EAAA,CAAArH,MAAA,CAOCR,UAAUS,KACpB,EAAA,WAAA,CAAA;AAAA,QAAA,cAAA,EAAcmG,gBACd;AAAA,QAAA,aAAA,EAAaM;oBACDM,EAAAA,cAAAA;OAEX1H,EAAAA,CAAAA,cAAe,CAAA,SAAS;KAIjC,CAAA;AACF,GAAA;AACF,CAAC,CAAA;;;;"}