{"version":3,"file":"select-dropdown.mjs","sources":["../../../../../../../packages/components/select-v2/src/select-dropdown.tsx"],"sourcesContent":["import {\n  computed,\n  defineComponent,\n  inject,\n  ref,\n  toRaw,\n  unref,\n  watch,\n} from 'vue'\nimport { get } from 'lodash-unified'\nimport { getEventCode, isIOS, isObject, isUndefined } from '@hd-front-end/utils'\nimport {\n  DynamicSizeList,\n  FixedSizeList,\n} from '@hd-front-end/components/virtual-list'\nimport { useNamespace } from '@hd-front-end/hooks'\nimport { EVENT_CODE } from '@hd-front-end/constants'\nimport GroupItem from './group-item.vue'\nimport OptionItem from './option-item.vue'\nimport { useProps } from './useProps'\nimport { selectV2InjectionKey } from './token'\n\nimport type {\n  DynamicSizeListInstance,\n  FixedSizeListInstance,\n  ItemProps,\n} from '@hd-front-end/components/virtual-list'\nimport type { Option, OptionItemProps } from './select.types'\nimport type {\n  ComponentPublicInstance,\n  ComputedRef,\n  ExtractPropTypes,\n  Ref,\n} from 'vue'\n\nconst props = {\n  loading: Boolean,\n  data: {\n    type: Array,\n    required: true as const,\n  },\n  hoveringIndex: Number,\n  width: Number,\n  id: String,\n  ariaLabel: String,\n}\ninterface SelectDropdownExposed {\n  listRef: Ref<FixedSizeListInstance | DynamicSizeListInstance | undefined>\n  isSized: ComputedRef<boolean>\n  isItemDisabled: (modelValue: any[] | any, selected: boolean) => boolean\n  isItemHovering: (target: number) => boolean\n  isItemSelected: (modelValue: any[] | any, target: Option) => boolean\n  scrollToItem: (index: number) => void\n  resetScrollTop: () => void\n}\nexport type SelectDropdownInstance = ComponentPublicInstance<\n  ExtractPropTypes<typeof props>,\n  SelectDropdownExposed\n>\nexport default defineComponent({\n  name: 'ElSelectDropdown',\n  props,\n  setup(props, { slots, expose }) {\n    const select = inject(selectV2InjectionKey)!\n    const ns = useNamespace('select')\n    const { getLabel, getValue, getDisabled } = useProps(select.props)\n\n    const cachedHeights = ref<Array<number>>([])\n\n    const listRef = ref<FixedSizeListInstance | DynamicSizeListInstance>()\n\n    const size = computed(() => props.data.length)\n    watch(\n      () => size.value,\n      () => {\n        select.tooltipRef.value?.updatePopper?.()\n      }\n    )\n\n    const isSized = computed(() =>\n      isUndefined(select.props.estimatedOptionHeight)\n    )\n    const listProps = computed(() => {\n      if (isSized.value) {\n        return {\n          itemSize: select.props.itemHeight,\n        }\n      }\n\n      return {\n        estimatedSize: select.props.estimatedOptionHeight,\n        itemSize: (idx: number) => cachedHeights.value[idx],\n      }\n    })\n\n    const contains = (arr: Array<any> = [], target: any) => {\n      const {\n        props: { valueKey },\n      } = select\n\n      if (!isObject(target)) {\n        return arr.includes(target)\n      }\n\n      return (\n        arr &&\n        arr.some((item) => {\n          return toRaw(get(item, valueKey)) === get(target, valueKey)\n        })\n      )\n    }\n    const isEqual = (selected: unknown, target: unknown) => {\n      if (!isObject(target)) {\n        return selected === target\n      } else {\n        const { valueKey } = select.props\n        return get(selected, valueKey) === get(target, valueKey)\n      }\n    }\n\n    const isItemSelected: SelectDropdownExposed['isItemSelected'] = (\n      modelValue,\n      target\n    ) => {\n      if (select.props.multiple) {\n        return contains(modelValue, getValue(target))\n      }\n      return isEqual(modelValue, getValue(target))\n    }\n\n    const isItemDisabled: SelectDropdownExposed['isItemDisabled'] = (\n      modelValue,\n      selected\n    ) => {\n      const { disabled, multiple, multipleLimit } = select.props\n      return (\n        disabled ||\n        (!selected &&\n          (multiple\n            ? multipleLimit > 0 && modelValue.length >= multipleLimit\n            : false))\n      )\n    }\n\n    const isItemHovering: SelectDropdownExposed['isItemHovering'] = (target) =>\n      props.hoveringIndex === target\n\n    const scrollToItem: SelectDropdownExposed['scrollToItem'] = (index) => {\n      const list = listRef.value\n      if (list) {\n        list.scrollToItem(index)\n      }\n    }\n\n    const resetScrollTop: SelectDropdownExposed['resetScrollTop'] = () => {\n      const list = listRef.value\n      if (list) {\n        list.resetScrollTop()\n      }\n    }\n    const exposed: SelectDropdownExposed = {\n      listRef,\n      isSized,\n\n      isItemDisabled,\n      isItemHovering,\n      isItemSelected,\n      scrollToItem,\n      resetScrollTop,\n    }\n    expose(exposed)\n\n    const Item = (itemProps: ItemProps<any>) => {\n      const { index, data, style } = itemProps\n      const sized = unref(isSized)\n      const { itemSize, estimatedSize } = unref(listProps)\n      const { modelValue } = select.props\n      const { onSelect, onHover } = select\n      const item = data[index]\n      if (item.type === 'Group') {\n        return (\n          <GroupItem\n            item={item}\n            style={style}\n            height={sized ? (itemSize as number) : estimatedSize}\n          />\n        )\n      }\n\n      const isSelected = isItemSelected(modelValue, item)\n      const isDisabled = isItemDisabled(modelValue, isSelected)\n      const isHovering = isItemHovering(index)\n      return (\n        <OptionItem\n          {...itemProps}\n          selected={isSelected}\n          disabled={getDisabled(item) || isDisabled}\n          created={!!item.created}\n          hovering={isHovering}\n          item={item}\n          onSelect={onSelect}\n          onHover={onHover}\n        >\n          {{\n            default: (props: OptionItemProps) =>\n              slots.default?.(props) || <span>{getLabel(item)}</span>,\n          }}\n        </OptionItem>\n      )\n    }\n\n    // computed\n    const { onKeyboardNavigate, onKeyboardSelect } = select\n\n    const onForward = () => {\n      onKeyboardNavigate('forward')\n    }\n\n    const onBackward = () => {\n      onKeyboardNavigate('backward')\n    }\n\n    const onEscOrTab = () => {\n      // The following line actually doesn't work. Fixing it may introduce a small breaking change for some users, so just comment it out for now.\n      // select.expanded = false\n    }\n\n    const onKeydown = (e: KeyboardEvent) => {\n      const code = getEventCode(e)\n      const { tab, esc, down, up, enter, numpadEnter } = EVENT_CODE\n      if ([esc, down, up, enter, numpadEnter].includes(code)) {\n        e.preventDefault()\n        e.stopPropagation()\n      }\n\n      switch (code) {\n        case tab:\n        case esc:\n          onEscOrTab()\n          break\n        case down:\n          onForward()\n          break\n        case up:\n          onBackward()\n          break\n        case enter:\n        case numpadEnter:\n          onKeyboardSelect()\n          break\n      }\n    }\n\n    return () => {\n      const { data, width } = props\n      const { height, multiple, scrollbarAlwaysOn } = select.props\n      const isScrollbarAlwaysOn = computed(() => {\n        // fix https://github.com/element-plus/element-plus/issues/19127\n        return isIOS ? true : scrollbarAlwaysOn\n      })\n\n      const List = unref(isSized) ? FixedSizeList : DynamicSizeList\n\n      return (\n        <div\n          class={[ns.b('dropdown'), ns.is('multiple', multiple)]}\n          style={{\n            width: `${width}px`,\n          }}\n        >\n          {slots.header?.()}\n          {slots.loading?.() || slots.empty?.() || (\n            <List\n              ref={listRef}\n              {...unref(listProps)}\n              className={ns.be('dropdown', 'list')}\n              scrollbarAlwaysOn={isScrollbarAlwaysOn.value}\n              data={data}\n              height={height}\n              width={width}\n              total={data.length}\n              innerElement=\"ul\"\n              innerProps={{\n                id: props.id,\n                role: 'listbox',\n                'aria-label': props.ariaLabel,\n                'aria-orientation': 'vertical',\n              }}\n              // @ts-ignore - dts problem\n              onKeydown={onKeydown}\n            >\n              {{\n                default: (props: ItemProps<any>) => <Item {...props} />,\n              }}\n            </List>\n          )}\n          {slots.footer?.()}\n        </div>\n      )\n    }\n  },\n})\n"],"names":["props","loading","Boolean","data","type","Array","required","hoveringIndex","Number","width","id","String","ariaLabel","defineComponent","name","setup","slots","expose","select","inject","selectV2InjectionKey","ns","useNamespace","getLabel","getValue","getDisabled","useProps","cachedHeights","ref","listRef","size","computed","length","watch","value","tooltipRef","updatePopper","isSized","isUndefined","estimatedOptionHeight","listProps","itemSize","itemHeight","estimatedSize","idx","contains","arr","target","valueKey","isObject","includes","some","item","toRaw","get","isEqual","selected","isItemSelected","modelValue","multiple","isItemDisabled","disabled","multipleLimit","isItemHovering","scrollToItem","index","list","resetScrollTop","exposed","Item","itemProps","style","sized","unref","onSelect","onHover","_createVNode","GroupItem","isSelected","isDisabled","isHovering","OptionItem","_mergeProps","created","default","onKeyboardNavigate","onKeyboardSelect","onForward","onBackward","onKeydown","e","code","getEventCode","tab","esc","down","up","enter","numpadEnter","EVENT_CODE","preventDefault","stopPropagation","height","scrollbarAlwaysOn","isScrollbarAlwaysOn","isIOS","List","FixedSizeList","DynamicSizeList","b","is","header","empty","be","role","footer"],"mappings":";;;;;;;;;;;;;;;AAmCA,MAAMA,KAAQ,GAAA;AAAA,EACZC,OAASC,EAAAA,OAAAA;AAAAA,EACTC,IAAM,EAAA;AAAA,IACJC,IAAMC,EAAAA,KAAAA;AAAAA,IACNC,QAAU,EAAA,IAAA;AAAA,GACZ;AAAA,EACAC,aAAeC,EAAAA,MAAAA;AAAAA,EACfC,KAAOD,EAAAA,MAAAA;AAAAA,EACPE,EAAIC,EAAAA,MAAAA;AAAAA,EACJC,SAAWD,EAAAA,MAAAA;AACb,CAAA,CAAA;AAcA,mBAAeE,eAAgB,CAAA;AAAA,EAC7BC,IAAM,EAAA,kBAAA;AAAA,EACNd,KAAAA;AAAAA,EACAe,MAAMf,MAAO,EAAA;AAAA,IAAEgB,KAAAA;AAAAA,IAAOC,MAAAA;AAAAA,GAAU,EAAA;AAC9B,IAAMC,MAAAA,MAAAA,GAASC,OAAOC,oBAAoB,CAAA,CAAA;AAC1C,IAAMC,MAAAA,EAAAA,GAAKC,aAAa,QAAQ,CAAA,CAAA;AAChC,IAAM,MAAA;AAAA,MAAEC,QAAAA;AAAAA,MAAUC,QAAAA;AAAAA,MAAUC,WAAAA;AAAAA,KAAY,GAAIC,QAASR,CAAAA,MAAAA,CAAOlB,KAAK,CAAA,CAAA;AAEjE,IAAM2B,MAAAA,aAAAA,GAAgBC,GAAmB,CAAA,EAAE,CAAA,CAAA;AAE3C,IAAA,MAAMC,UAAUD,GAAqD,EAAA,CAAA;AAErE,IAAA,MAAME,IAAOC,GAAAA,QAAAA,CAAS,MAAM/B,MAAAA,CAAMG,KAAK6B,MAAM,CAAA,CAAA;AAC7CC,IACE,KAAA,CAAA,MAAMH,IAAKI,CAAAA,KAAAA,EACX,MAAM;AA1EZ,MAAA,IAAA,EAAA,EAAA,EAAA,CAAA;AA2EQhB,MAAOiB,CAAAA,EAAAA,GAAAA,CAAAA,EAAAA,GAAAA,MAAAA,CAAAA,UAAAA,CAAWD,KAAlBhB,KAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAyBkB,YAAzBlB,KAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAAA,IAAAA,CAAAA,EAAAA,CAAAA,CAAAA;AAAAA,KAEJ,CAAA,CAAA;AAEA,IAAA,MAAMmB,UAAUN,QAAS,CAAA,MACvBO,YAAYpB,MAAOlB,CAAAA,KAAAA,CAAMuC,qBAAqB,CAChD,CAAA,CAAA;AACA,IAAMC,MAAAA,SAAAA,GAAYT,SAAS,MAAM;AAC/B,MAAA,IAAIM,QAAQH,KAAO,EAAA;AACjB,QAAO,OAAA;AAAA,UACLO,QAAAA,EAAUvB,OAAOlB,KAAM0C,CAAAA,UAAAA;AAAAA,SACzB,CAAA;AAAA,OACF;AAEA,MAAO,OAAA;AAAA,QACLC,aAAAA,EAAezB,OAAOlB,KAAMuC,CAAAA,qBAAAA;AAAAA,QAC5BE,QAAAA,EAAWG,CAAgBjB,GAAAA,KAAAA,aAAAA,CAAcO,KAAMU,CAAAA,GAAAA,CAAAA;AAAAA,OACjD,CAAA;AAAA,KACD,CAAA,CAAA;AAED,IAAA,MAAMC,QAAWA,GAAAA,CAACC,GAAkB,GAAA,IAAIC,MAAgB,KAAA;AACtD,MAAM,MAAA;AAAA,QACJ/C,KAAO,EAAA;AAAA,UAAEgD,QAAAA;AAAAA,SAAS;AAAA,OAChB9B,GAAAA,MAAAA,CAAAA;AAEJ,MAAI,IAAA,CAAC+B,QAASF,CAAAA,MAAM,CAAG,EAAA;AACrB,QAAOD,OAAAA,GAAAA,CAAII,SAASH,MAAM,CAAA,CAAA;AAAA,OAC5B;AAEA,MACED,OAAAA,GAAAA,IACAA,GAAIK,CAAAA,IAAAA,CAAMC,CAAS,IAAA,KAAA;AACjB,QAAOC,OAAAA,KAAAA,CAAMC,IAAIF,IAAMJ,EAAAA,QAAQ,CAAC,CAAMM,KAAAA,GAAAA,CAAIP,QAAQC,QAAQ,CAAA,CAAA;AAAA,OAC3D,CAAA,CAAA;AAAA,KAEL,CAAA;AACA,IAAMO,MAAAA,OAAAA,GAAUA,CAACC,QAAAA,EAAmBT,MAAoB,KAAA;AACtD,MAAI,IAAA,CAACE,QAASF,CAAAA,MAAM,CAAG,EAAA;AACrB,QAAA,OAAOS,QAAaT,KAAAA,MAAAA,CAAAA;AAAAA,OACf,MAAA;AACL,QAAM,MAAA;AAAA,UAAEC,QAAAA;AAAAA,YAAa9B,MAAOlB,CAAAA,KAAAA,CAAAA;AAC5B,QAAA,OAAOsD,IAAIE,QAAUR,EAAAA,QAAQ,CAAMM,KAAAA,GAAAA,CAAIP,QAAQC,QAAQ,CAAA,CAAA;AAAA,OACzD;AAAA,KACF,CAAA;AAEA,IAAMS,MAAAA,cAAAA,GAA0DA,CAC9DC,UAAAA,EACAX,MACG,KAAA;AACH,MAAI7B,IAAAA,MAAAA,CAAOlB,MAAM2D,QAAU,EAAA;AACzB,QAAA,OAAOd,QAASa,CAAAA,UAAAA,EAAYlC,QAASuB,CAAAA,MAAM,CAAC,CAAA,CAAA;AAAA,OAC9C;AACA,MAAA,OAAOQ,OAAQG,CAAAA,UAAAA,EAAYlC,QAASuB,CAAAA,MAAM,CAAC,CAAA,CAAA;AAAA,KAC7C,CAAA;AAEA,IAAMa,MAAAA,cAAAA,GAA0DA,CAC9DF,UAAAA,EACAF,QACG,KAAA;AACH,MAAM,MAAA;AAAA,QAAEK,QAAAA;AAAAA,QAAUF,QAAAA;AAAAA,QAAUG,aAAAA;AAAAA,UAAkB5C,MAAOlB,CAAAA,KAAAA,CAAAA;AACrD,MACE6D,OAAAA,QAAAA,IACC,CAACL,QACCG,KAAAA,QAAAA,GACGG,gBAAgB,CAAKJ,IAAAA,UAAAA,CAAW1B,UAAU8B,aAC1C,GAAA,KAAA,CAAA,CAAA;AAAA,KAEV,CAAA;AAEA,IAAMC,MAAAA,cAAAA,GAA2DhB,CAC/D/C,MAAAA,KAAAA,MAAAA,CAAMO,aAAkBwC,KAAAA,MAAAA,CAAAA;AAE1B,IAAA,MAAMiB,eAAuDC,CAAU,KAAA,KAAA;AACrE,MAAA,MAAMC,OAAOrC,OAAQK,CAAAA,KAAAA,CAAAA;AACrB,MAAA,IAAIgC,IAAM,EAAA;AACRA,QAAAA,IAAAA,CAAKF,aAAaC,KAAK,CAAA,CAAA;AAAA,OACzB;AAAA,KACF,CAAA;AAEA,IAAA,MAAME,iBAA0DA,MAAM;AACpE,MAAA,MAAMD,OAAOrC,OAAQK,CAAAA,KAAAA,CAAAA;AACrB,MAAA,IAAIgC,IAAM,EAAA;AACRA,QAAAA,IAAAA,CAAKC,cAAe,EAAA,CAAA;AAAA,OACtB;AAAA,KACF,CAAA;AACA,IAAA,MAAMC,OAAiC,GAAA;AAAA,MACrCvC,OAAAA;AAAAA,MACAQ,OAAAA;AAAAA,MAEAuB,cAAAA;AAAAA,MACAG,cAAAA;AAAAA,MACAN,cAAAA;AAAAA,MACAO,YAAAA;AAAAA,MACAG,cAAAA;AAAAA,KACF,CAAA;AACAlD,IAAAA,MAAAA,CAAOmD,OAAO,CAAA,CAAA;AAEd,IAAA,MAAMC,OAAQC,CAA8B,SAAA,KAAA;AAC1C,MAAM,MAAA;AAAA,QAAEL,KAAAA;AAAAA,QAAO9D,IAAAA;AAAAA,QAAMoE,KAAAA;AAAAA,OAAUD,GAAAA,SAAAA,CAAAA;AAC/B,MAAME,MAAAA,KAAAA,GAAQC,MAAMpC,OAAO,CAAA,CAAA;AAC3B,MAAM,MAAA;AAAA,QAAEI,QAAAA;AAAAA,QAAUE,aAAAA;AAAAA,OAAc,GAAI8B,MAAMjC,SAAS,CAAA,CAAA;AACnD,MAAM,MAAA;AAAA,QAAEkB,UAAAA;AAAAA,UAAexC,MAAOlB,CAAAA,KAAAA,CAAAA;AAC9B,MAAM,MAAA;AAAA,QAAE0E,QAAAA;AAAAA,QAAUC,OAAAA;AAAAA,OAAYzD,GAAAA,MAAAA,CAAAA;AAC9B,MAAA,MAAMkC,OAAOjD,IAAK8D,CAAAA,KAAAA,CAAAA,CAAAA;AAClB,MAAIb,IAAAA,IAAAA,CAAKhD,SAAS,OAAS,EAAA;AACzB,QAAA,OAAAwE,YAAAC,SAAA,EAAA;AAAA,UAAA,MAEUzB,EAAAA,IAAAA;AAAAA,UAAI,OACHmB,EAAAA,KAAAA;AAAAA,UAAK,QAAA,EACJC,QAAS/B,QAAsBE,GAAAA,aAAAA;AAAAA,WAAa,IAAA,CAAA,CAAA;AAAA,OAG1D;AAEA,MAAMmC,MAAAA,UAAAA,GAAarB,cAAeC,CAAAA,UAAAA,EAAYN,IAAI,CAAA,CAAA;AAClD,MAAM2B,MAAAA,UAAAA,GAAanB,cAAeF,CAAAA,UAAAA,EAAYoB,UAAU,CAAA,CAAA;AACxD,MAAME,MAAAA,UAAAA,GAAajB,eAAeE,KAAK,CAAA,CAAA;AACvC,MAAAW,OAAAA,WAAAA,CAAAK,UAAAC,EAAAA,UAAAA,CAEQZ,SAAS,EAAA;AAAA,QAAA,UACHQ,EAAAA,UAAAA;AAAAA,QAAU,UAAA,EACVrD,WAAY2B,CAAAA,IAAI,CAAK2B,IAAAA,UAAAA;AAAAA,QAAU,SAAA,EAChC,CAAC,CAAC3B,IAAK+B,CAAAA,OAAAA;AAAAA,QAAO,UACbH,EAAAA,UAAAA;AAAAA,QAAU,MACd5B,EAAAA,IAAAA;AAAAA,QAAI,UACAsB,EAAAA,QAAAA;AAAAA,QAAQ,SACTC,EAAAA,OAAAA;AAAAA,OAAO,CAAA,EAAA;AAAA,QAGdS,OAAAA,EAAUpF,CAAAA,MACRgB,KAAAA;AA7Md,UAAA,IAAA,EAAA,CAAA;AA6McA,UAAMoE,OAAAA,CAAAA,CAAAA,EAAAA,GAAAA,KAAAA,CAAAA,OAAAA,KAANpE,IAAgBhB,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAAA,IAAAA,CAAAA,KAAAA,EAAAA,MAAAA,CAAAA,KAAM4E,WAAA,CAAA,MAAA,EAAA,MAAA,CAAWrD,QAAAA,CAAS6B,IAAI,CAAC,CAAA,CAAA,CAAA;AAAA,SAAA;AAAA,OAAQ,CAAA,CAAA;AAAA,KAIjE,CAAA;AAGA,IAAM,MAAA;AAAA,MAAEiC,kBAAAA;AAAAA,MAAoBC,gBAAAA;AAAAA,KAAqBpE,GAAAA,MAAAA,CAAAA;AAEjD,IAAA,MAAMqE,YAAYA,MAAM;AACtBF,MAAAA,kBAAAA,CAAmB,SAAS,CAAA,CAAA;AAAA,KAC9B,CAAA;AAEA,IAAA,MAAMG,aAAaA,MAAM;AACvBH,MAAAA,kBAAAA,CAAmB,UAAU,CAAA,CAAA;AAAA,KAC/B,CAAA;AAOA,IAAA,MAAMI,YAAaC,CAAqB,CAAA,KAAA;AACtC,MAAMC,MAAAA,IAAAA,GAAOC,aAAaF,CAAC,CAAA,CAAA;AAC3B,MAAM,MAAA;AAAA,QAAEG,GAAAA;AAAAA,QAAKC,GAAAA;AAAAA,QAAKC,IAAAA;AAAAA,QAAMC,EAAAA;AAAAA,QAAIC,KAAAA;AAAAA,QAAOC,WAAAA;AAAAA,OAAgBC,GAAAA,UAAAA,CAAAA;AACnD,MAAI,IAAA,CAACL,KAAKC,IAAMC,EAAAA,EAAAA,EAAIC,OAAOC,WAAW,CAAA,CAAEhD,QAASyC,CAAAA,IAAI,CAAG,EAAA;AACtDD,QAAAA,CAAAA,CAAEU,cAAe,EAAA,CAAA;AACjBV,QAAAA,CAAAA,CAAEW,eAAgB,EAAA,CAAA;AAAA,OACpB;AAEA,MAAQV,QAAAA,IAAAA;AAAAA,QACDE,KAAAA,GAAAA,CAAAA;AAAAA,QACAC,KAAAA,GAAAA;AAEH,UAAA,MAAA;AAAA,QACGC,KAAAA,IAAAA;AACHR,UAAU,SAAA,EAAA,CAAA;AACV,UAAA,MAAA;AAAA,QACGS,KAAAA,EAAAA;AACHR,UAAW,UAAA,EAAA,CAAA;AACX,UAAA,MAAA;AAAA,QACGS,KAAAA,KAAAA,CAAAA;AAAAA,QACAC,KAAAA,WAAAA;AACHZ,UAAiB,gBAAA,EAAA,CAAA;AACjB,UAAA,MAAA;AAAA,OAAA;AAAA,KAEN,CAAA;AAEA,IAAA,OAAO,MAAM;AA7PjB,MAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA;AA8PM,MAAM,MAAA;AAAA,QAAEnF,IAAAA;AAAAA,QAAMM,KAAAA;AAAAA,OAAUT,GAAAA,MAAAA,CAAAA;AACxB,MAAM,MAAA;AAAA,QAAEsG,MAAAA;AAAAA,QAAQ3C,QAAAA;AAAAA,QAAU4C,iBAAAA;AAAAA,UAAsBrF,MAAOlB,CAAAA,KAAAA,CAAAA;AACvD,MAAMwG,MAAAA,mBAAAA,GAAsBzE,SAAS,MAAM;AAEzC,QAAA,OAAO0E,QAAQ,IAAOF,GAAAA,iBAAAA,CAAAA;AAAAA,OACvB,CAAA,CAAA;AAED,MAAA,MAAMG,IAAOjC,GAAAA,KAAAA,CAAMpC,OAAO,CAAA,GAAIsE,aAAgBC,GAAAA,eAAAA,CAAAA;AAE9C,MAAA,OAAAhC,YAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EAEW,CAACvD,EAAAA,CAAGwF,CAAE,CAAA,UAAU,GAAGxF,EAAGyF,CAAAA,EAAAA,CAAG,UAAYnD,EAAAA,QAAQ,CAAC,CAAA;AAAA,QAAC,OAC/C,EAAA;AAAA,UACLlD,OAAO,CAAGA,EAAAA,KAAAA,CAAAA,EAAAA,CAAAA;AAAAA,SACZ;AAAA,OAECO,EAAAA,CAAAA,CAAAA,EAAM+F,GAAAA,KAAAA,CAAAA,MAAAA,KAAN/F,IACAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAAA,IAAAA,CAAAA,KAAAA,CAAAA,EAAAA,CAAAA,CAAAA,EAAAA,GAAAA,KAAAA,CAAMf,OAANe,KAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAAA,IAAAA,CAAAA,KAAAA,CAAAA,MAAAA,CAAqBA,EAAMgG,GAAAA,KAAAA,CAAAA,KAAAA,KAANhG,IAAe4D,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAAA,IAAAA,CAAAA,KAAAA,CAAAA,CAAAA,IAAAA,WAAAA,CAAA8B,MAAAxB,UAAA,CAAA;AAAA,QAAA,KAE5BrD,EAAAA,OAAAA;AAAAA,OAAO,EACR4C,KAAMjC,CAAAA,SAAS,CAAC,EAAA;AAAA,QAAA,WACTnB,EAAAA,EAAAA,CAAG4F,EAAG,CAAA,UAAA,EAAY,MAAM,CAAA;AAAA,QAAC,qBACjBT,mBAAoBtE,CAAAA,KAAAA;AAAAA,QAAK,MACtC/B,EAAAA,IAAAA;AAAAA,QAAI,QACFmG,EAAAA,MAAAA;AAAAA,QAAM,OACP7F,EAAAA,KAAAA;AAAAA,QAAK,SACLN,IAAK6B,CAAAA,MAAAA;AAAAA,QAAM,cAAA,EAAA,IAAA;AAAA,QAAA,YAEN,EAAA;AAAA,UACVtB,IAAIV,MAAMU,CAAAA,EAAAA;AAAAA,UACVwG,IAAM,EAAA,SAAA;AAAA,UACN,cAAclH,MAAMY,CAAAA,SAAAA;AAAAA,UACpB,kBAAoB,EAAA,UAAA;AAAA,SACtB;AAAA,QAAC,WAEU6E,EAAAA,SAAAA;AAAAA,OAAS,CAAA,EAAA;AAAA,QAGlBL,SAAUpF,CAAAA,MAAAA,KAAqB4E,WAAAP,CAAAA,IAAAA,EAAerE,QAAK,IAAA,CAAA;AAAA,OAAI,CAAA,EAAA,CAI5DgB,EAAMmG,GAAAA,KAAAA,CAAAA,MAAAA,KAANnG,8BAAgB,CAAA,CAAA,CAAA;AAAA,KAGvB,CAAA;AAAA,GACF;AACF,CAAC,CAAA;;;;"}