{"version":3,"file":"useRowHighlight.mjs","sources":["../../../../components/table/hooks/useRowHighlight.ts"],"sourcesContent":["import { ref, Ref, toRefs } from 'vue';\nimport { get } from 'lodash-es';\nimport { useDefaultValue } from '@tdesign/shared-hooks';\nimport { BaseTableProps } from '../types';\nimport { RowEventContext, TableRowData } from '../type';\nimport { on, off } from '@tdesign/shared-utils';\nimport {\n  ARROW_DOWN_REG,\n  ARROW_UP_REG,\n  ESCAPE_REG,\n  SPACE_REG,\n  SHIFT_REG,\n  CLEAR_REG,\n  ALL_REG,\n} from '@tdesign/common-js/common';\n\n/**\n * 行高亮功能，支持键盘操作\n */\nexport function useRowHighlight(props: BaseTableProps, tableRef: Ref<HTMLDivElement>) {\n  const { data, activeRowType, activeRowKeys, defaultActiveRowKeys, disableSpaceInactiveRow } = toRefs(props);\n  const currentOperationRowIndex = ref(-1);\n  const isShiftPressed = ref(false);\n  const shiftSelectionState = ref(false);\n  const areaSelectionStartIndex = ref(-1);\n\n  const [tActiveRow, setTActiveRow] = useDefaultValue(\n    activeRowKeys,\n    defaultActiveRowKeys.value,\n    props.onActiveChange,\n    'activeRowKeys',\n  );\n\n  const handleInactive = (ctx: RowEventContext<TableRowData>) => {\n    const { row } = ctx;\n    const rowValue = get(row, props.rowKey);\n    if (activeRowType.value === 'single') {\n      const newActiveRowKeys = tActiveRow.value.length > 1 ? [rowValue] : [];\n      const activeRowList: { row: TableRowData; rowIndex: number }[] = [];\n      for (let i = 0, len = data.value.length; i < len; i++) {\n        const row = data.value[i];\n        if (newActiveRowKeys.includes(get(row, props.rowKey))) {\n          activeRowList.push({ row, rowIndex: i });\n        }\n      }\n      setTActiveRow(newActiveRowKeys, {\n        type: 'inactive',\n        activeRowList,\n        currentRowData: row,\n      });\n    } else if (activeRowType.value === 'multiple') {\n      const newActiveRowKeys = tActiveRow.value.filter((t) => t !== rowValue);\n      const activeRowList: { row: TableRowData; rowIndex: number }[] = [];\n      for (let i = 0, len = data.value.length; i < len; i++) {\n        const row = data.value[i];\n        if (newActiveRowKeys.includes(get(row, props.rowKey))) {\n          activeRowList.push({ row, rowIndex: i });\n        }\n      }\n      setTActiveRow(newActiveRowKeys, {\n        type: 'inactive',\n        activeRowList,\n        currentRowData: row,\n      });\n    }\n  };\n\n  const handleActive = (ctx: RowEventContext<TableRowData>) => {\n    const { row } = ctx;\n    const rowValue = get(row, props.rowKey);\n    if (activeRowType.value === 'single') {\n      setTActiveRow([rowValue], {\n        activeRowList: [{ row, rowIndex: ctx.index }],\n        currentRowData: row,\n        type: 'active',\n      });\n    } else {\n      const newActiveRowKeys = tActiveRow.value.concat(rowValue);\n      const activeRowList: { row: TableRowData; rowIndex: number }[] = [];\n      for (let i = 0, len = data.value.length; i < len; i++) {\n        const row = data.value[i];\n        if (newActiveRowKeys.includes(get(row, props.rowKey))) {\n          activeRowList.push({ row, rowIndex: i });\n        }\n      }\n      setTActiveRow(newActiveRowKeys, {\n        activeRowList,\n        currentRowData: row,\n        type: 'active',\n      });\n    }\n  };\n\n  const handleShiftActive = (ctx: RowEventContext<TableRowData>) => {\n    document.getSelection().removeAllRanges();\n    const { row } = ctx;\n    const currentIndex = currentOperationRowIndex.value;\n    const startIndex = Math.min(areaSelectionStartIndex.value, currentIndex);\n    const endIndex = Math.max(areaSelectionStartIndex.value, currentIndex);\n    const newActiveRowData: { row: TableRowData; rowIndex: number }[] = [];\n    for (let i = startIndex; i <= endIndex; i++) {\n      newActiveRowData.push({ row: data.value[i], rowIndex: i });\n    }\n    const newActiveRowKeys = newActiveRowData.map((item) => get(item.row, props.rowKey));\n    setTActiveRow(newActiveRowKeys, {\n      activeRowList: newActiveRowData,\n      type: 'active',\n      currentRowData: row,\n    });\n  };\n\n  const getActiveRowList = () => {\n    const list: { row: TableRowData; rowIndex: number }[] = [];\n    for (let i = 0, len = data.value.length; i < len; i++) {\n      const row = data.value[i];\n      const rowValue = get(row, props.rowKey);\n      if (tActiveRow.value.includes(rowValue)) {\n        list.push({ row, rowIndex: i });\n      }\n    }\n    return list;\n  };\n\n  const onHighlightRow = (ctx: RowEventContext<TableRowData>, extra?: { action?: 'active' | 'inactive' }) => {\n    if (!activeRowType.value) return;\n    const { row, index } = ctx;\n    const rowValue = get(row, props.rowKey);\n    // 如果是连续选中\n    if (isShiftPressed.value) {\n      currentOperationRowIndex.value = index;\n      handleShiftActive(ctx);\n      shiftSelectionState.value = true;\n    } else if (tActiveRow.value.includes(rowValue) && extra?.action !== 'active') {\n      if (!disableSpaceInactiveRow.value) {\n        // 如果已经高亮，则取消高亮\n        handleInactive(ctx);\n        currentOperationRowIndex.value = index;\n      }\n    } else {\n      // 如果没有高亮，则设置高亮\n      handleActive(ctx);\n      currentOperationRowIndex.value = index;\n    }\n  };\n\n  const clearActive = () => {\n    setTActiveRow([], {\n      activeRowList: [],\n      currentRowData: undefined,\n      type: 'inactive',\n    });\n    props.onActiveRowAction?.({ action: 'clear', activeRowList: [] });\n    currentOperationRowIndex.value = -1;\n  };\n\n  const setAllActive = () => {\n    const activeKeys = data.value.map((item) => get(item, props.rowKey));\n    const activeRowList = data.value.map((row, rowIndex) => ({ row, rowIndex }));\n    setTActiveRow(activeKeys, {\n      activeRowList,\n      currentRowData: undefined,\n      type: 'active',\n    });\n    props.onActiveRowAction?.({ action: 'select-all', activeRowList });\n    currentOperationRowIndex.value = -1;\n  };\n\n  const clearShiftAreaSelection = () => {\n    shiftSelectionState.value = false;\n  };\n\n  const keyboardDownListener = (e: KeyboardEvent) => {\n    const code = e.code || e.key?.trim();\n\n    if (ARROW_DOWN_REG.test(code)) {\n      e.preventDefault();\n      const index = Math.min(data.value.length - 1, currentOperationRowIndex.value + 1);\n      if (activeRowType.value === 'single') {\n        onHighlightRow({ row: data.value[index], index, e }, { action: 'active' });\n      } else {\n        currentOperationRowIndex.value = index;\n      }\n    } else if (ARROW_UP_REG.test(code)) {\n      e.preventDefault();\n      const index = Math.max(0, currentOperationRowIndex.value - 1);\n      if (activeRowType.value === 'single') {\n        onHighlightRow({ row: data.value[index], index, e }, { action: 'active' });\n      } else {\n        currentOperationRowIndex.value = index;\n      }\n    } else if (SPACE_REG.test(code)) {\n      e.preventDefault();\n      // keydown space to active or inactive\n      const index = currentOperationRowIndex.value;\n      // area selection can not cancel active with keydown space\n      if (shiftSelectionState.value) {\n        props.onActiveRowAction?.({\n          action: 'shift-area-selection',\n          activeRowList: getActiveRowList(),\n        });\n      } else if (!disableSpaceInactiveRow.value) {\n        onHighlightRow({ row: data.value[index], index, e });\n      } else {\n        props.onActiveRowAction?.({\n          action: 'space-one-selection',\n          activeRowList: getActiveRowList(),\n        });\n      }\n    } else if (SHIFT_REG.test(code)) {\n      // shift 连续选中开始\n      isShiftPressed.value = true;\n      areaSelectionStartIndex.value = currentOperationRowIndex.value;\n    } else if (ESCAPE_REG.test(code) || CLEAR_REG.test(code)) {\n      // 清空\n      clearActive();\n      clearShiftAreaSelection();\n    } else if (ALL_REG.test(code)) {\n      // 全选\n      if (activeRowType.value === 'multiple') {\n        setAllActive();\n      }\n    }\n\n    if (!SPACE_REG.test(code)) {\n      clearShiftAreaSelection();\n    }\n  };\n\n  const keyboardUpListener = (e: KeyboardEvent) => {\n    const code = e.code || e.key?.trim();\n    if (SHIFT_REG.test(code)) {\n      isShiftPressed.value = false;\n    }\n  };\n\n  const addHighlightKeyboardListener = () => {\n    on(tableRef.value, 'keydown', keyboardDownListener);\n    on(tableRef.value, 'keyup', keyboardUpListener);\n  };\n\n  const removeHighlightKeyboardListener = () => {\n    off(tableRef.value, 'keydown', keyboardDownListener);\n    off(tableRef.value, 'keyup', keyboardUpListener);\n  };\n\n  return {\n    tActiveRow,\n    onHighlightRow,\n    addHighlightKeyboardListener,\n    removeHighlightKeyboardListener,\n  };\n}\n\nexport default useRowHighlight;\n"],"names":["useRowHighlight","props","tableRef","_toRefs","toRefs","data","activeRowType","activeRowKeys","defaultActiveRowKeys","disableSpaceInactiveRow","currentOperationRowIndex","ref","isShiftPressed","shiftSelectionState","areaSelectionStartIndex","_useDefaultValue","useDefaultValue","value","onActiveChange","_useDefaultValue2","_slicedToArray","tActiveRow","setTActiveRow","handleInactive","ctx","row","rowValue","get","rowKey","newActiveRowKeys","length","activeRowList","i","len","includes","push","rowIndex","type","currentRowData","filter","t","handleActive","index","concat","handleShiftActive","document","getSelection","removeAllRanges","currentIndex","startIndex","Math","min","endIndex","max","newActiveRowData","map","item","getActiveRowList","list","onHighlightRow","extra","action","clearActive","_props$onActiveRowAct","onActiveRowAction","call","setAllActive","_props$onActiveRowAct2","activeKeys","clearShiftAreaSelection","keyboardDownListener","e","_e$key","code","key","trim","ARROW_DOWN_REG","test","preventDefault","ARROW_UP_REG","SPACE_REG","_props$onActiveRowAct3","_props$onActiveRowAct4","SHIFT_REG","ESCAPE_REG","CLEAR_REG","ALL_REG","keyboardUpListener","_e$key2","addHighlightKeyboardListener","on","removeHighlightKeyboardListener","off"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAmBgB,SAAAA,eAAAA,CAAgBC,OAAuBC,QAA+B,EAAA;AAC9E,EAAA,IAAAC,OAAA,GAAwFC,OAAOH,KAAK,CAAA;IAAlGI,eAAAA;IAAMC,aAAe,GAAAH,OAAA,CAAfG,aAAe;IAAAC,aAAA,GAAAJ,OAAA,CAAAI,aAAA;IAAeC,+BAAAA;IAAsBC,uBAAwB,GAAAN,OAAA,CAAxBM,uBAAwB,CAAA;AACpF,EAAA,IAAAC,wBAAA,GAA2BC,IAAI,CAAE,CAAA,CAAA,CAAA;AACjC,EAAA,IAAAC,cAAA,GAAiBD,IAAI,KAAK,CAAA,CAAA;AAC1B,EAAA,IAAAE,mBAAA,GAAsBF,IAAI,KAAK,CAAA,CAAA;AAC/B,EAAA,IAAAG,uBAAA,GAA0BH,IAAI,CAAE,CAAA,CAAA,CAAA;AAEhC,EAAA,IAAAI,gBAAA,GAA8BC,eAAA,CAClCT,aAAA,EACAC,oBAAqB,CAAAS,KAAA,EACrBhB,KAAM,CAAAiB,cAAA,EACN,eACF,CAAA;IAAAC,iBAAA,GAAAC,cAAA,CAAAL,gBAAA,EAAA,CAAA,CAAA;AALOM,IAAAA,UAAY,GAAAF,iBAAA,CAAA,CAAA,CAAA;AAAAG,IAAAA,aAAa,GAAAH,iBAAA,CAAA,CAAA,CAAA,CAAA;AAO1B,EAAA,IAAAI,cAAA,GAAiB,SAAjBA,cAAAA,CAAkBC,GAAuC,EAAA;AACvD,IAAA,IAAEC,MAAQD,GAAA,CAARC;IACR,IAAMC,QAAW,GAAAC,GAAA,CAAIF,GAAK,EAAAxB,KAAA,CAAM2B,MAAM,CAAA,CAAA;AAClC,IAAA,IAAAtB,aAAA,CAAcW,UAAU,QAAU,EAAA;AAC9B,MAAA,IAAAY,gBAAA,GAAmBR,WAAWJ,KAAM,CAAAa,MAAA,GAAS,IAAI,CAACJ,QAAQ,IAAI,EAAC,CAAA;MACrE,IAAMK,gBAA2D,EAAC,CAAA;AACzD,MAAA,KAAA,IAAAC,CAAA,GAAI,GAAGC,GAAM,GAAA5B,IAAA,CAAKY,MAAMa,MAAQ,EAAAE,CAAA,GAAIC,KAAKD,CAAK,EAAA,EAAA;AAC/CP,QAAAA,IAAAA,IAAAA,GAAMpB,KAAKY,KAAM,CAAAe,CAAA,CAAA,CAAA;AACvB,QAAA,IAAIH,iBAAiBK,QAAS,CAAAP,GAAA,CAAIF,MAAKxB,KAAM,CAAA2B,MAAM,CAAC,CAAG,EAAA;UACrDG,aAAA,CAAcI,KAAK;AAAEV,YAAAA,GAAA,EAAAA,IAAK;AAAAW,YAAAA,QAAA,EAAUJ,CAAAA;AAAE,WAAC,CAAA,CAAA;AACzC,SAAA;AACF,OAAA;MACAV,aAAA,CAAcO,gBAAkB,EAAA;AAC9BQ,QAAAA,IAAM,EAAA,UAAA;AACNN,QAAAA,aAAA,EAAAA,aAAA;AACAO,QAAAA,cAAgB,EAAAb,GAAAA;AAClB,OAAC,CAAA,CAAA;AACH,KAAA,MAAA,IAAWnB,aAAc,CAAAW,KAAA,KAAU,UAAY,EAAA;MAC7C,IAAMY,oBAAmBR,UAAW,CAAAJ,KAAA,CAAMsB,OAAO,UAACC,CAAA,EAAA;QAAA,OAAMA,MAAMd,QAAQ,CAAA;OAAA,CAAA,CAAA;MACtE,IAAMK,iBAA2D,EAAC,CAAA;AACzD,MAAA,KAAA,IAAAC,EAAA,GAAI,GAAGC,IAAM,GAAA5B,IAAA,CAAKY,MAAMa,MAAQ,EAAAE,EAAA,GAAIC,MAAKD,EAAK,EAAA,EAAA;AAC/CP,QAAAA,IAAAA,IAAAA,GAAMpB,KAAKY,KAAM,CAAAe,EAAA,CAAA,CAAA;AACvB,QAAA,IAAIH,kBAAiBK,QAAS,CAAAP,GAAA,CAAIF,MAAKxB,KAAM,CAAA2B,MAAM,CAAC,CAAG,EAAA;UACrDG,cAAA,CAAcI,KAAK;AAAEV,YAAAA,GAAA,EAAAA,IAAK;AAAAW,YAAAA,QAAA,EAAUJ,EAAAA;AAAE,WAAC,CAAA,CAAA;AACzC,SAAA;AACF,OAAA;MACAV,aAAA,CAAcO,iBAAkB,EAAA;AAC9BQ,QAAAA,IAAM,EAAA,UAAA;AACNN,QAAAA,aAAA,EAAAA,cAAA;AACAO,QAAAA,cAAgB,EAAAb,GAAAA;AAClB,OAAC,CAAA,CAAA;AACH,KAAA;GACF,CAAA;AAEM,EAAA,IAAAgB,YAAA,GAAe,SAAfA,YAAAA,CAAgBjB,GAAuC,EAAA;AACrD,IAAA,IAAEC,MAAQD,GAAA,CAARC;IACR,IAAMC,QAAW,GAAAC,GAAA,CAAIF,GAAK,EAAAxB,KAAA,CAAM2B,MAAM,CAAA,CAAA;AAClC,IAAA,IAAAtB,aAAA,CAAcW,UAAU,QAAU,EAAA;AACtBK,MAAAA,aAAA,CAAA,CAACI,QAAQ,CAAG,EAAA;AACxBK,QAAAA,eAAe,CAAC;AAAEN,UAAAA,KAAAA;UAAKW,QAAU,EAAAZ,GAAA,CAAIkB,KAAAA;AAAM,SAAC,CAAA;AAC5CJ,QAAAA,cAAgB,EAAAb,GAAA;AAChBY,QAAAA,IAAM,EAAA,QAAA;AACR,OAAC,CAAA,CAAA;AACH,KAAO,MAAA;MACL,IAAMR,gBAAmB,GAAAR,UAAA,CAAWJ,KAAM,CAAA0B,MAAA,CAAOjB,QAAQ,CAAA,CAAA;MACzD,IAAMK,gBAA2D,EAAC,CAAA;AACzD,MAAA,KAAA,IAAAC,CAAA,GAAI,GAAGC,GAAM,GAAA5B,IAAA,CAAKY,MAAMa,MAAQ,EAAAE,CAAA,GAAIC,KAAKD,CAAK,EAAA,EAAA;AAC/CP,QAAAA,IAAAA,IAAAA,GAAMpB,KAAKY,KAAM,CAAAe,CAAA,CAAA,CAAA;AACvB,QAAA,IAAIH,iBAAiBK,QAAS,CAAAP,GAAA,CAAIF,MAAKxB,KAAM,CAAA2B,MAAM,CAAC,CAAG,EAAA;UACrDG,aAAA,CAAcI,KAAK;AAAEV,YAAAA,GAAA,EAAAA,IAAK;AAAAW,YAAAA,QAAA,EAAUJ,CAAAA;AAAE,WAAC,CAAA,CAAA;AACzC,SAAA;AACF,OAAA;MACAV,aAAA,CAAcO,gBAAkB,EAAA;AAC9BE,QAAAA,aAAA,EAAAA,aAAA;AACAO,QAAAA,cAAgB,EAAAb,GAAA;AAChBY,QAAAA,IAAM,EAAA,QAAA;AACR,OAAC,CAAA,CAAA;AACH,KAAA;GACF,CAAA;AAEM,EAAA,IAAAO,iBAAA,GAAoB,SAApBA,iBAAAA,CAAqBpB,GAAuC,EAAA;AACvDqB,IAAAA,QAAA,CAAAC,YAAA,GAAeC,eAAgB,EAAA,CAAA;AAClC,IAAA,IAAEtB,MAAQD,GAAA,CAARC;AACR,IAAA,IAAMuB,eAAetC,wBAAyB,CAAAO,KAAA,CAAA;IAC9C,IAAMgC,UAAa,GAAAC,IAAA,CAAKC,GAAI,CAAArC,uBAAA,CAAwBG,OAAO+B,YAAY,CAAA,CAAA;IACvE,IAAMI,QAAW,GAAAF,IAAA,CAAKG,GAAI,CAAAvC,uBAAA,CAAwBG,OAAO+B,YAAY,CAAA,CAAA;IACrE,IAAMM,mBAA8D,EAAC,CAAA;IACrE,KAAA,IAAStB,CAAI,GAAAiB,UAAA,EAAYjB,CAAK,IAAAoB,QAAA,EAAUpB,CAAK,EAAA,EAAA;MAC1BsB,gBAAA,CAAAnB,IAAA,CAAK;AAAEV,QAAAA,GAAK,EAAApB,IAAA,CAAKY,MAAMe,CAAI,CAAA;AAAAI,QAAAA,QAAA,EAAUJ,CAAAA;AAAE,OAAC,CAAA,CAAA;AAC3D,KAAA;AACM,IAAA,IAAAH,gBAAA,GAAmByB,gBAAiB,CAAAC,GAAA,CAAI,UAACC,IAAA,EAAA;MAAA,OAAS7B,IAAI6B,IAAK,CAAA/B,GAAA,EAAKxB,KAAM,CAAA2B,MAAM,CAAC,CAAA;KAAA,CAAA,CAAA;IACnFN,aAAA,CAAcO,gBAAkB,EAAA;AAC9BE,MAAAA,aAAe,EAAAuB,gBAAA;AACfjB,MAAAA,IAAM,EAAA,QAAA;AACNC,MAAAA,cAAgB,EAAAb,GAAAA;AAClB,KAAC,CAAA,CAAA;GACH,CAAA;AAEA,EAAA,IAAMgC,mBAAmB,SAAnBA,mBAAyB;IAC7B,IAAMC,OAAkD,EAAC,CAAA;AAChD,IAAA,KAAA,IAAA1B,CAAA,GAAI,GAAGC,GAAM,GAAA5B,IAAA,CAAKY,MAAMa,MAAQ,EAAAE,CAAA,GAAIC,KAAKD,CAAK,EAAA,EAAA;AAC/C,MAAA,IAAAP,GAAA,GAAMpB,KAAKY,KAAM,CAAAe,CAAA,CAAA,CAAA;MACvB,IAAMN,QAAW,GAAAC,GAAA,CAAIF,GAAK,EAAAxB,KAAA,CAAM2B,MAAM,CAAA,CAAA;MACtC,IAAIP,UAAW,CAAAJ,KAAA,CAAMiB,QAAS,CAAAR,QAAQ,CAAG,EAAA;QACvCgC,IAAA,CAAKvB,IAAK,CAAA;AAAEV,UAAAA,GAAK,EAALA,GAAK;AAAAW,UAAAA,QAAA,EAAUJ,CAAAA;AAAE,SAAC,CAAA,CAAA;AAChC,OAAA;AACF,KAAA;AACO,IAAA,OAAA0B,IAAA,CAAA;GACT,CAAA;EAEM,IAAAC,cAAA,GAAiB,SAAjBA,cAAAA,CAAkBnC,GAAA,EAAoCoC,KAA+C,EAAA;AACzG,IAAA,IAAI,CAACtD,aAAc,CAAAW,KAAA,EAAO,OAAA;AACpB,IAAA,IAAEQ,GAAK,GAAUD,GAAA,CAAfC,GAAK;MAAAiB,KAAA,GAAUlB,GAAA,CAAVkB,KAAA,CAAA;IACb,IAAMhB,QAAW,GAAAC,GAAA,CAAIF,GAAK,EAAAxB,KAAA,CAAM2B,MAAM,CAAA,CAAA;IAEtC,IAAIhB,eAAeK,KAAO,EAAA;MACxBP,wBAAA,CAAyBO,KAAQ,GAAAyB,KAAA,CAAA;MACjCE,iBAAA,CAAkBpB,GAAG,CAAA,CAAA;MACrBX,mBAAA,CAAoBI,KAAQ,GAAA,IAAA,CAAA;KAC9B,MAAA,IAAWI,WAAWJ,KAAM,CAAAiB,QAAA,CAASR,QAAQ,CAAK,IAAA,CAAAkC,KAAA,aAAAA,KAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAAA,KAAA,CAAOC,YAAW,QAAU,EAAA;AACxE,MAAA,IAAA,CAACpD,wBAAwBQ,KAAO,EAAA;QAElCM,cAAA,CAAeC,GAAG,CAAA,CAAA;QAClBd,wBAAA,CAAyBO,KAAQ,GAAAyB,KAAA,CAAA;AACnC,OAAA;AACF,KAAO,MAAA;MAELD,YAAA,CAAajB,GAAG,CAAA,CAAA;MAChBd,wBAAA,CAAyBO,KAAQ,GAAAyB,KAAA,CAAA;AACnC,KAAA;GACF,CAAA;AAEA,EAAA,IAAMoB,cAAc,SAAdA,cAAoB;AAAA,IAAA,IAAAC,qBAAA,CAAA;IACxBzC,aAAA,CAAc,EAAI,EAAA;AAChBS,MAAAA,eAAe,EAAC;MAChBO,cAAgB,EAAA,KAAA,CAAA;AAChBD,MAAAA,IAAM,EAAA,UAAA;AACR,KAAC,CAAA,CAAA;AACD,IAAA,CAAA0B,qBAAA,GAAA9D,KAAA,CAAM+D,mEAAND,qBAAA,CAAAE,IAAA,CAAAhE,KAAA,EAA0B;AAAE4D,MAAAA,MAAA,EAAQ;AAAS9B,MAAAA,aAAe,EAAA,EAAA;AAAG,KAAC,CAAA,CAAA;AAChErB,IAAAA,wBAAA,CAAyBO,KAAQ,GAAA,CAAA,CAAA,CAAA;GACnC,CAAA;AAEA,EAAA,IAAMiD,eAAe,SAAfA,eAAqB;AAAA,IAAA,IAAAC,sBAAA,CAAA;IACnB,IAAAC,UAAA,GAAa/D,IAAK,CAAAY,KAAA,CAAMsC,GAAI,CAAA,UAACC;aAAS7B,GAAI,CAAA6B,IAAA,EAAMvD,KAAM,CAAA2B,MAAM,CAAC,CAAA;KAAA,CAAA,CAAA;IAC7D,IAAAG,aAAA,GAAgB1B,IAAK,CAAAY,KAAA,CAAMsC,GAAI,CAAA,UAAC9B,KAAKW,QAAc,EAAA;MAAA,OAAA;AAAEX,QAAAA,GAAK,EAALA,GAAK;AAAAW,QAAAA,QAAA,EAAAA,QAAAA;OAAW,CAAA;AAAA,KAAA,CAAA,CAAA;IAC3Ed,aAAA,CAAc8C,UAAY,EAAA;AACxBrC,MAAAA,aAAA,EAAAA,aAAA;MACAO,cAAgB,EAAA,KAAA,CAAA;AAChBD,MAAAA,IAAM,EAAA,QAAA;AACR,KAAC,CAAA,CAAA;AACD,IAAA,CAAA8B,sBAAA,GAAAlE,KAAA,CAAM+D,iBAAoB,MAAA,IAAA,IAAAG,sBAAA,KAAA,KAAA,CAAA,IAA1BA,sBAAA,CAAAF,IAAA,CAAAhE,KAAA,EAA0B;AAAE4D,MAAAA,MAAQ,EAAA,YAAA;AAAc9B,MAAAA,eAAAA,aAAAA;AAAc,KAAC,CAAA,CAAA;AACjErB,IAAAA,wBAAA,CAAyBO,KAAQ,GAAA,CAAA,CAAA,CAAA;GACnC,CAAA;AAEA,EAAA,IAAMoD,0BAA0B,SAA1BA,0BAAgC;IACpCxD,mBAAA,CAAoBI,KAAQ,GAAA,KAAA,CAAA;GAC9B,CAAA;AAEM,EAAA,IAAAqD,oBAAA,GAAuB,SAAvBA,oBAAAA,CAAwBC,CAAqB,EAAA;AAAA,IAAA,IAAAC,MAAA,CAAA;AACjD,IAAA,IAAMC,IAAO,GAAAF,CAAA,CAAEE,IAAQ,KAAA,CAAAD,MAAA,GAAAD,CAAA,CAAEG,8CAAFF,MAAA,CAAOG,IAAK,EAAA,CAAA,CAAA;AAE/B,IAAA,IAAAC,cAAA,CAAeC,IAAK,CAAAJ,IAAI,CAAG,EAAA;MAC7BF,CAAA,CAAEO,cAAe,EAAA,CAAA;AACX,MAAA,IAAApC,KAAA,GAAQQ,KAAKC,GAAI,CAAA9C,IAAA,CAAKY,MAAMa,MAAS,GAAA,CAAA,EAAGpB,wBAAyB,CAAAO,KAAA,GAAQ,CAAC,CAAA,CAAA;AAC5E,MAAA,IAAAX,aAAA,CAAcW,UAAU,QAAU,EAAA;AACrB0C,QAAAA,cAAA,CAAA;AAAElC,UAAAA,GAAK,EAAApB,IAAA,CAAKY,KAAM,CAAAyB,KAAA,CAAA;AAAQA,UAAAA,KAAO,EAAPA,KAAO;AAAA6B,UAAAA,CAAA,EAAAA,CAAAA;AAAE,SAAG,EAAA;AAAEV,UAAAA,MAAQ,EAAA,QAAA;AAAS,SAAC,CAAA,CAAA;AAC3E,OAAO,MAAA;QACLnD,wBAAA,CAAyBO,KAAQ,GAAAyB,KAAA,CAAA;AACnC,OAAA;KACS,MAAA,IAAAqC,YAAA,CAAaF,IAAK,CAAAJ,IAAI,CAAG,EAAA;MAClCF,CAAA,CAAEO,cAAe,EAAA,CAAA;AACjB,MAAA,IAAMpC,SAAQQ,IAAK,CAAAG,GAAA,CAAI,CAAG,EAAA3C,wBAAA,CAAyBO,QAAQ,CAAC,CAAA,CAAA;AACxD,MAAA,IAAAX,aAAA,CAAcW,UAAU,QAAU,EAAA;AACrB0C,QAAAA,cAAA,CAAA;AAAElC,UAAAA,GAAK,EAAApB,IAAA,CAAKY,KAAM,CAAAyB,MAAA,CAAA;AAAQA,UAAAA,KAAO,EAAPA,MAAO;AAAA6B,UAAAA,CAAA,EAAAA,CAAAA;AAAE,SAAG,EAAA;AAAEV,UAAAA,MAAQ,EAAA,QAAA;AAAS,SAAC,CAAA,CAAA;AAC3E,OAAO,MAAA;QACLnD,wBAAA,CAAyBO,KAAQ,GAAAyB,MAAA,CAAA;AACnC,OAAA;KACS,MAAA,IAAAsC,SAAA,CAAUH,IAAK,CAAAJ,IAAI,CAAG,EAAA;MAC/BF,CAAA,CAAEO,cAAe,EAAA,CAAA;AAEjB,MAAA,IAAMpC,UAAQhC,wBAAyB,CAAAO,KAAA,CAAA;MAEvC,IAAIJ,oBAAoBI,KAAO,EAAA;AAAA,QAAA,IAAAgE,sBAAA,CAAA;AAC7B,QAAA,CAAAA,sBAAA,GAAAhF,KAAA,CAAM+D,iBAAoB,MAAA,IAAA,IAAAiB,sBAAA,KAAA,KAAA,CAAA,IAA1BA,sBAAA,CAAAhB,IAAA,CAAAhE,KAAA,EAA0B;AACxB4D,UAAAA,MAAQ,EAAA,sBAAA;UACR9B,eAAe0B,gBAAiB,EAAA;AAClC,SAAC,CAAA,CAAA;AACH,OAAA,MAAA,IAAW,CAAChD,uBAAA,CAAwBQ,KAAO,EAAA;AACzC0C,QAAAA,cAAA,CAAe;AAAElC,UAAAA,GAAK,EAAApB,IAAA,CAAKY,MAAMyB,OAAQ,CAAA;AAAAA,UAAAA,KAAA,EAAAA,OAAA;AAAO6B,UAAAA,GAAAA,CAAAA;AAAE,SAAC,CAAA,CAAA;AACrD,OAAO,MAAA;AAAA,QAAA,IAAAW,sBAAA,CAAA;AACL,QAAA,CAAAA,sBAAA,GAAAjF,KAAA,CAAM+D,iBAAoB,MAAA,IAAA,IAAAkB,sBAAA,KAAA,KAAA,CAAA,IAA1BA,sBAAA,CAAAjB,IAAA,CAAAhE,KAAA,EAA0B;AACxB4D,UAAAA,MAAQ,EAAA,qBAAA;UACR9B,eAAe0B,gBAAiB,EAAA;AAClC,SAAC,CAAA,CAAA;AACH,OAAA;KACS,MAAA,IAAA0B,SAAA,CAAUN,IAAK,CAAAJ,IAAI,CAAG,EAAA;MAE/B7D,cAAA,CAAeK,KAAQ,GAAA,IAAA,CAAA;AACvBH,MAAAA,uBAAA,CAAwBG,QAAQP,wBAAyB,CAAAO,KAAA,CAAA;AAC3D,KAAA,MAAA,IAAWmE,WAAWP,IAAK,CAAAJ,IAAI,KAAKY,SAAU,CAAAR,IAAA,CAAKJ,IAAI,CAAG,EAAA;AAE5CX,MAAAA,WAAA,EAAA,CAAA;AACYO,MAAAA,uBAAA,EAAA,CAAA;KACf,MAAA,IAAAiB,OAAA,CAAQT,IAAK,CAAAJ,IAAI,CAAG,EAAA;AAEzB,MAAA,IAAAnE,aAAA,CAAcW,UAAU,UAAY,EAAA;AACzBiD,QAAAA,YAAA,EAAA,CAAA;AACf,OAAA;AACF,KAAA;AAEA,IAAA,IAAI,CAACc,SAAA,CAAUH,IAAK,CAAAJ,IAAI,CAAG,EAAA;AACDJ,MAAAA,uBAAA,EAAA,CAAA;AAC1B,KAAA;GACF,CAAA;AAEM,EAAA,IAAAkB,kBAAA,GAAqB,SAArBA,kBAAAA,CAAsBhB,CAAqB,EAAA;AAAA,IAAA,IAAAiB,OAAA,CAAA;AAC/C,IAAA,IAAMf,IAAO,GAAAF,CAAA,CAAEE,IAAQ,KAAA,CAAAe,OAAA,GAAAjB,CAAA,CAAEG,+CAAFc,OAAA,CAAOb,IAAK,EAAA,CAAA,CAAA;AAC/B,IAAA,IAAAQ,SAAA,CAAUN,IAAK,CAAAJ,IAAI,CAAG,EAAA;MACxB7D,cAAA,CAAeK,KAAQ,GAAA,KAAA,CAAA;AACzB,KAAA;GACF,CAAA;AAEA,EAAA,IAAMwE,+BAA+B,SAA/BA,+BAAqC;IACtCC,EAAA,CAAAxF,QAAA,CAASe,KAAO,EAAA,SAAA,EAAWqD,oBAAoB,CAAA,CAAA;IAC/CoB,EAAA,CAAAxF,QAAA,CAASe,KAAO,EAAA,OAAA,EAASsE,kBAAkB,CAAA,CAAA;GAChD,CAAA;AAEA,EAAA,IAAMI,kCAAkC,SAAlCA,kCAAwC;IACxCC,GAAA,CAAA1F,QAAA,CAASe,KAAO,EAAA,SAAA,EAAWqD,oBAAoB,CAAA,CAAA;IAC/CsB,GAAA,CAAA1F,QAAA,CAASe,KAAO,EAAA,OAAA,EAASsE,kBAAkB,CAAA,CAAA;GACjD,CAAA;EAEO,OAAA;AACLlE,IAAAA,UAAA,EAAAA,UAAA;AACAsC,IAAAA,cAAA,EAAAA,cAAA;AACA8B,IAAAA,4BAAA,EAAAA,4BAAA;AACAE,IAAAA,+BAAA,EAAAA,+BAAAA;GACF,CAAA;AACF;;;;"}