{"version":3,"file":"Sider.mjs","sources":["../../../../../../packages/components/layout/src/Sider.tsx"],"sourcesContent":["import type { CSSProperties } from 'vue';\nimport type { CollapseType } from './interface';\nimport { BarsOutlined, LeftOutlined, RightOutlined } from '@ant-design/icons-vue';\nimport { classNames, initDefaultProps, isNumeric } from '@antdv/utils';\nimport {\n  defineComponent,\n  inject,\n  onBeforeUnmount,\n  onMounted,\n  provide,\n  shallowRef,\n  watch,\n} from 'vue';\n\nimport useConfigInject from '../../config-provider/src/hooks/useConfigInject';\nimport { SiderCollapsedKey, SiderHookProviderKey } from './injectionKey';\nimport { siderProps } from './props';\n\nconst dimensionMaxMap = {\n  xs: '479.98px',\n  sm: '575.98px',\n  md: '767.98px',\n  lg: '991.98px',\n  xl: '1199.98px',\n  xxl: '1599.98px',\n  xxxl: '1999.98px',\n};\n\nconst generateId = (() => {\n  let i = 0;\n  return (prefix = '') => {\n    i += 1;\n    return `${prefix}${i}`;\n  };\n})();\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ALayoutSider',\n  inheritAttrs: false,\n  props: initDefaultProps(siderProps(), {\n    collapsible: false,\n    defaultCollapsed: false,\n    reverseArrow: false,\n    width: 200,\n    collapsedWidth: 80,\n  }),\n  emits: ['breakpoint', 'update:collapsed', 'collapse'],\n  setup(props, { emit, attrs, slots }) {\n    const { prefixCls } = useConfigInject('layout-sider', props);\n    const siderHook = inject(SiderHookProviderKey, undefined);\n    const collapsed = shallowRef(\n      !!(props.collapsed !== undefined ? props.collapsed : props.defaultCollapsed),\n    );\n    const below = shallowRef(false);\n\n    watch(\n      () => props.collapsed,\n      () => {\n        collapsed.value = !!props.collapsed;\n      },\n    );\n\n    provide(SiderCollapsedKey, collapsed);\n\n    const handleSetCollapsed = (value: boolean, type: CollapseType) => {\n      if (props.collapsed === undefined)\n        collapsed.value = value;\n\n      emit('update:collapsed', value);\n      emit('collapse', value, type);\n    };\n\n    // ========================= Responsive =========================\n    const responsiveHandlerRef = shallowRef<(mql: MediaQueryListEvent | MediaQueryList) => void>(\n      (mql: MediaQueryListEvent | MediaQueryList) => {\n        below.value = mql.matches;\n        emit('breakpoint', mql.matches);\n\n        if (collapsed.value !== mql.matches)\n          handleSetCollapsed(mql.matches, 'responsive');\n      },\n    );\n    let mql: MediaQueryList;\n    function responsiveHandler(mediaQueryList: MediaQueryListEvent | MediaQueryList) {\n      return responsiveHandlerRef.value!(mediaQueryList);\n    }\n    const uniqueId = generateId('ant-sider-');\n    siderHook && siderHook.addSider(uniqueId);\n\n    onMounted(() => {\n      watch(\n        () => props.breakpoint,\n        () => {\n          try {\n            mql?.removeEventListener('change', responsiveHandler);\n          } catch (error) {\n            mql?.removeListener(responsiveHandler);\n          }\n          if (typeof window !== 'undefined') {\n            const { matchMedia } = window;\n            if (matchMedia! && props.breakpoint && props.breakpoint in dimensionMaxMap) {\n              mql = matchMedia(`(max-width: ${dimensionMaxMap[props.breakpoint]})`);\n              try {\n                mql.addEventListener('change', responsiveHandler);\n              } catch (error) {\n                mql.addListener(responsiveHandler);\n              }\n              responsiveHandler(mql);\n            }\n          }\n        },\n        {\n          immediate: true,\n        },\n      );\n    });\n    onBeforeUnmount(() => {\n      try {\n        mql?.removeEventListener('change', responsiveHandler);\n      } catch (error) {\n        mql?.removeListener(responsiveHandler);\n      }\n      siderHook && siderHook.removeSider(uniqueId);\n    });\n\n    const toggle = () => {\n      handleSetCollapsed(!collapsed.value, 'clickTrigger');\n    };\n\n    return () => {\n      const pre = prefixCls.value;\n      const {\n        collapsedWidth,\n        width,\n        reverseArrow,\n        zeroWidthTriggerStyle,\n        trigger = slots.trigger?.(),\n        collapsible,\n        theme,\n      } = props;\n      const rawWidth = collapsed.value ? collapsedWidth : width;\n      // use \"px\" as fallback unit for width\n      const siderWidth = isNumeric(rawWidth) ? `${rawWidth}px` : String(rawWidth);\n      // special trigger when collapsedWidth == 0\n      const zeroWidthTrigger\n        = Number.parseFloat(String(collapsedWidth || 0)) === 0\n          ? (\n              <span\n                onClick={toggle}\n                class={classNames(\n                  `${pre}-zero-width-trigger`,\n                  `${pre}-zero-width-trigger-${reverseArrow ? 'right' : 'left'}`,\n                )}\n                style={zeroWidthTriggerStyle}\n              >\n                {trigger || <BarsOutlined />}\n              </span>\n            )\n          : null;\n      const iconObj = {\n        expanded: reverseArrow ? <RightOutlined /> : <LeftOutlined />,\n        collapsed: reverseArrow ? <LeftOutlined /> : <RightOutlined />,\n      };\n      const status = collapsed.value ? 'collapsed' : 'expanded';\n      const defaultTrigger = iconObj[status];\n      const triggerDom\n        = trigger !== null\n          ? zeroWidthTrigger || (\n            <div class={`${pre}-trigger`} onClick={toggle} style={{ width: siderWidth }}>\n              {trigger || defaultTrigger}\n            </div>\n          )\n          : null;\n      const divStyle = [\n        attrs.style as CSSProperties,\n        {\n          flex: `0 0 ${siderWidth}`,\n          maxWidth: siderWidth, // Fix width transition bug in IE11\n          minWidth: siderWidth, // https://github.com/ant-design/ant-design/issues/6349\n          width: siderWidth,\n        },\n      ];\n      const siderCls = classNames(\n        pre,\n        `${pre}-${theme}`,\n        {\n          [`${pre}-collapsed`]: !!collapsed.value,\n          [`${pre}-has-trigger`]: collapsible && trigger !== null && !zeroWidthTrigger,\n          [`${pre}-below`]: !!below.value,\n          [`${pre}-zero-width`]: Number.parseFloat(siderWidth) === 0,\n        },\n        attrs.class,\n      );\n      return (\n        <aside {...attrs} class={siderCls} style={divStyle}>\n          <div class={`${pre}-children`}>{slots.default?.()}</div>\n          {collapsible || (below.value && zeroWidthTrigger) ? triggerDom : null}\n        </aside>\n      );\n    };\n  },\n});\n"],"names":["dimensionMaxMap","xs","sm","md","lg","xl","xxl","xxxl","generateId","i","prefix","compatConfig","MODE","name","inheritAttrs","props","initDefaultProps","siderProps","collapsible","defaultCollapsed","reverseArrow","width","collapsedWidth","emits","setup","emit","attrs","slots","prefixCls","useConfigInject","siderHook","inject","SiderHookProviderKey","undefined","collapsed","shallowRef","below","watch","value","provide","SiderCollapsedKey","handleSetCollapsed","type","responsiveHandlerRef","mql","matches","responsiveHandler","mediaQueryList","uniqueId","addSider","onMounted","breakpoint","removeEventListener","error","removeListener","window","matchMedia","addEventListener","addListener","immediate","onBeforeUnmount","removeSider","toggle","pre","zeroWidthTriggerStyle","trigger","theme","rawWidth","siderWidth","isNumeric","String","zeroWidthTrigger","Number","parseFloat","_createVNode","classNames","BarsOutlined","iconObj","expanded","RightOutlined","LeftOutlined","status","defaultTrigger","triggerDom","divStyle","style","flex","maxWidth","minWidth","siderCls","class","default"],"mappings":";;;;;;;;;;AAkBA,MAAMA,eAAkB,GAAA;AAAA,EACtBC,EAAI,EAAA,UAAA;AAAA,EACJC,EAAI,EAAA,UAAA;AAAA,EACJC,EAAI,EAAA,UAAA;AAAA,EACJC,EAAI,EAAA,UAAA;AAAA,EACJC,EAAI,EAAA,WAAA;AAAA,EACJC,GAAK,EAAA,WAAA;AAAA,EACLC,IAAM,EAAA,WAAA;AACR,CAAA,CAAA;AAEA,MAAMC,cAAc,MAAM;AACxB,EAAA,IAAIC,CAAI,GAAA,CAAA,CAAA;AACR,EAAO,OAAA,CAACC,SAAS,EAAO,KAAA;AACtBD,IAAK,CAAA,IAAA,CAAA,CAAA;AACL,IAAQ,OAAA,CAAA,EAAEC,MAAO,CAAA,EAAED,CAAE,CAAA,CAAA,CAAA;AAAA,GACvB,CAAA;AACF,CAAG,GAAA,CAAA;AAEH,4BAA+B,eAAA,CAAA;AAAA,EAC7BE,YAAc,EAAA;AAAA,IAAEC,IAAM,EAAA,CAAA;AAAA,GAAE;AAAA,EACxBC,IAAM,EAAA,cAAA;AAAA,EACNC,YAAc,EAAA,KAAA;AAAA,EACdC,KAAAA,EAAOC,gBAAiBC,CAAAA,UAAAA,EAAc,EAAA;AAAA,IACpCC,WAAa,EAAA,KAAA;AAAA,IACbC,gBAAkB,EAAA,KAAA;AAAA,IAClBC,YAAc,EAAA,KAAA;AAAA,IACdC,KAAO,EAAA,GAAA;AAAA,IACPC,cAAgB,EAAA,EAAA;AAAA,GACjB,CAAA;AAAA,EACDC,KAAO,EAAA,CAAC,YAAc,EAAA,kBAAA,EAAoB,UAAU,CAAA;AAAA,EACpDC,MAAMT,KAAO,EAAA;AAAA,IAAEU,IAAAA;AAAAA,IAAMC,KAAAA;AAAAA,IAAOC,KAAAA;AAAAA,GAAS,EAAA;AACnC,IAAM,MAAA;AAAA,MAAEC,SAAAA;AAAAA,KAAU,GAAIC,eAAgB,CAAA,cAAA,EAAgBd,KAAK,CAAA,CAAA;AAC3D,IAAMe,MAAAA,SAAAA,GAAYC,MAAOC,CAAAA,oBAAAA,EAAsBC,KAAS,CAAA,CAAA,CAAA;AACxD,IAAMC,MAAAA,SAAAA,GAAYC,UAChB,CAAA,CAAC,EAAEpB,KAAAA,CAAMmB,cAAcD,KAAYlB,CAAAA,GAAAA,KAAAA,CAAMmB,SAAYnB,GAAAA,KAAAA,CAAMI,gBAC7D,CAAA,CAAA,CAAA;AACA,IAAMiB,MAAAA,KAAAA,GAAQD,WAAW,KAAK,CAAA,CAAA;AAE9BE,IACE,KAAA,CAAA,MAAMtB,KAAMmB,CAAAA,SAAAA,EACZ,MAAM;AACJA,MAAUI,SAAAA,CAAAA,KAAAA,GAAQ,CAAC,CAACvB,KAAMmB,CAAAA,SAAAA,CAAAA;AAAAA,KAE9B,CAAA,CAAA;AAEAK,IAAAA,OAAAA,CAAQC,mBAAmBN,SAAS,CAAA,CAAA;AAEpC,IAAMO,MAAAA,kBAAAA,GAAqBA,CAACH,KAAAA,EAAgBI,IAAuB,KAAA;AACjE,MAAA,IAAI3B,MAAMmB,SAAcD,KAAAA,KAAAA,CAAAA;AACtBC,QAAAA,SAAAA,CAAUI,KAAQA,GAAAA,KAAAA,CAAAA;AAEpBb,MAAAA,IAAAA,CAAK,oBAAoBa,KAAK,CAAA,CAAA;AAC9Bb,MAAK,IAAA,CAAA,UAAA,EAAYa,OAAOI,IAAI,CAAA,CAAA;AAAA,KAC9B,CAAA;AAGA,IAAMC,MAAAA,oBAAAA,GAAuBR,UAC1BS,CAAAA,CAAAA,IAA8C,KAAA;AAC7CR,MAAAA,KAAAA,CAAME,QAAQM,IAAIC,CAAAA,OAAAA,CAAAA;AAClBpB,MAAK,IAAA,CAAA,YAAA,EAAcmB,KAAIC,OAAO,CAAA,CAAA;AAE9B,MAAIX,IAAAA,SAAAA,CAAUI,UAAUM,IAAIC,CAAAA,OAAAA;AAC1BJ,QAAmBG,kBAAAA,CAAAA,IAAAA,CAAIC,SAAS,YAAY,CAAA,CAAA;AAAA,KAElD,CAAA,CAAA;AACA,IAAID,IAAAA,GAAAA,CAAAA;AACJ,IAAA,SAASE,kBAAkBC,cAAsD,EAAA;AAC/E,MAAOJ,OAAAA,oBAAAA,CAAqBL,MAAOS,cAAc,CAAA,CAAA;AAAA,KACnD;AACA,IAAMC,MAAAA,QAAAA,GAAWxC,WAAW,YAAY,CAAA,CAAA;AACxCsB,IAAaA,SAAAA,IAAAA,SAAAA,CAAUmB,SAASD,QAAQ,CAAA,CAAA;AAExCE,IAAAA,SAAAA,CAAU,MAAM;AACdb,MACE,KAAA,CAAA,MAAMtB,KAAMoC,CAAAA,UAAAA,EACZ,MAAM;AACJ,QAAI,IAAA;AACFP,UAAAA,GAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,GAAAA,CAAKQ,oBAAoB,QAAUN,EAAAA,iBAAAA,CAAAA,CAAAA;AAAAA,iBAC5BO,KAAO,EAAA;AACdT,UAAAA,GAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,GAAAA,CAAKU,cAAeR,CAAAA,iBAAAA,CAAAA,CAAAA;AAAAA,SACtB;AACA,QAAI,IAAA,OAAOS,WAAW,WAAa,EAAA;AACjC,UAAM,MAAA;AAAA,YAAEC,UAAAA;AAAAA,WAAeD,GAAAA,MAAAA,CAAAA;AACvB,UAAA,IAAIC,UAAezC,IAAAA,KAAAA,CAAMoC,UAAcpC,IAAAA,KAAAA,CAAMoC,cAAcnD,eAAiB,EAAA;AAC1E4C,YAAAA,GAAAA,GAAMY,WAAY,CAAcxD,YAAAA,EAAAA,eAAAA,CAAgBe,KAAMoC,CAAAA,UAAU,CAAE,CAAE,CAAA,CAAA,CAAA,CAAA;AACpE,YAAI,IAAA;AACFP,cAAIa,GAAAA,CAAAA,gBAAAA,CAAiB,UAAUX,iBAAiB,CAAA,CAAA;AAAA,qBACzCO,KAAO,EAAA;AACdT,cAAAA,GAAAA,CAAIc,YAAYZ,iBAAiB,CAAA,CAAA;AAAA,aACnC;AACAA,YAAAA,iBAAAA,CAAkBF,GAAG,CAAA,CAAA;AAAA,WACvB;AAAA,SACF;AAAA,OAEF,EAAA;AAAA,QACEe,SAAW,EAAA,IAAA;AAAA,OAEf,CAAA,CAAA;AAAA,KACD,CAAA,CAAA;AACDC,IAAAA,eAAAA,CAAgB,MAAM;AACpB,MAAI,IAAA;AACFhB,QAAAA,GAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,GAAAA,CAAKQ,oBAAoB,QAAUN,EAAAA,iBAAAA,CAAAA,CAAAA;AAAAA,eAC5BO,KAAO,EAAA;AACdT,QAAAA,GAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,GAAAA,CAAKU,cAAeR,CAAAA,iBAAAA,CAAAA,CAAAA;AAAAA,OACtB;AACAhB,MAAaA,SAAAA,IAAAA,SAAAA,CAAU+B,YAAYb,QAAQ,CAAA,CAAA;AAAA,KAC5C,CAAA,CAAA;AAED,IAAA,MAAMc,SAASA,MAAM;AACnBrB,MAAmB,kBAAA,CAAA,CAACP,SAAUI,CAAAA,KAAAA,EAAO,cAAc,CAAA,CAAA;AAAA,KACrD,CAAA;AAEA,IAAA,OAAO,MAAM;;AACX,MAAA,MAAMyB,MAAMnC,SAAUU,CAAAA,KAAAA,CAAAA;AACtB,MAAM,MAAA;AAAA,QACJhB,cAAAA;AAAAA,QACAD,KAAAA;AAAAA,QACAD,YAAAA;AAAAA,QACA4C,qBAAAA;AAAAA,QACAC,OAAAA,GAAAA,CAAUtC,WAAMsC,OAANtC,KAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAAA,IAAAA,CAAAA,KAAAA,CAAAA;AAAAA,QACVT,WAAAA;AAAAA,QACAgD,KAAAA;AAAAA,OACEnD,GAAAA,KAAAA,CAAAA;AACJ,MAAMoD,MAAAA,QAAAA,GAAWjC,SAAUI,CAAAA,KAAAA,GAAQhB,cAAiBD,GAAAA,KAAAA,CAAAA;AAEpD,MAAM+C,MAAAA,UAAAA,GAAaC,UAAUF,QAAQ,CAAA,GAAK,GAAEA,QAAS,CAAA,EAAA,CAAA,GAAMG,OAAOH,QAAQ,CAAA,CAAA;AAE1E,MAAMI,MAAAA,gBAAAA,GACFC,MAAOC,CAAAA,UAAAA,CAAWH,MAAOhD,CAAAA,cAAAA,IAAkB,CAAC,CAAC,CAAA,KAAM,CAACoD,GAAAA,WAAAA,CAAA,MAAA,EAAA;AAAA,QAAA,SAGrCZ,EAAAA,MAAAA;AAAAA,QAAM,OAAA,EACRa,UACJ,CAAA,CAAA,EAAEZ,GAAI,CAAA,mBAAA,CAAA,EACN,CAAEA,EAAAA,GAAI,CAAsB3C,oBAAAA,EAAAA,YAAAA,GAAe,OAAU,GAAA,MAAO,CAC/D,CAAA,CAAA;AAAA,QAAC,OACM4C,EAAAA,qBAAAA;AAAAA,OAAqB,EAAA,CAE3BC,OAAOS,IAAAA,WAAAA,CAAAE,cAAA,IAAA,EAAA,IAAA,CAAoB,EAGhC,GAAA,IAAA,CAAA;AACN,MAAA,MAAMC,OAAU,GAAA;AAAA,QACdC,QAAAA,EAAU1D,YAAYsD,GAAAA,WAAAA,CAAAK,aAAAL,EAAAA,IAAAA,EAAAA,IAAAA,CAAAA,GAAAA,WAAAA,CAAAM,YAAuC,EAAA,IAAA,EAAA,IAAA,CAAA;AAAA,QAC7D9C,SAAAA,EAAWd,YAAYsD,GAAAA,WAAAA,CAAAM,YAAA,EAAA,IAAA,EAAA,IAAA,CAAAN,GAAAA,WAAAA,CAAAK,aAAA,EAAA,IAAA,EAAA,IAAA,CAAA;AAAA,OACzB,CAAA;AACA,MAAME,MAAAA,MAAAA,GAAS/C,SAAUI,CAAAA,KAAAA,GAAQ,WAAc,GAAA,UAAA,CAAA;AAC/C,MAAM4C,MAAAA,cAAAA,GAAiBL,QAAQI,MAAM,CAAA,CAAA;AACrC,MAAA,MAAME,UACFlB,GAAAA,OAAAA,KAAY,IACVM,GAAAA,gBAAAA,IAAgBG,YAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EACH,GAAEX,GAAI,CAAA,QAAA,CAAA;AAAA,QAAS,SAAWD,EAAAA,MAAAA;AAAAA,QAAM,OAAS,EAAA;AAAA,UAAEzC,KAAO+C,EAAAA,UAAAA;AAAAA,SAAW;AAAA,OAAC,EAAA,CACxEH,OAAWiB,IAAAA,cAAc,CAAA,CAG5B,GAAA,IAAA,CAAA;AACN,MAAME,MAAAA,QAAAA,GAAW,CACf1D,KAAAA,CAAM2D,KACN,EAAA;AAAA,QACEC,IAAAA,EAAO,OAAMlB,UAAW,CAAA,CAAA;AAAA,QACxBmB,QAAUnB,EAAAA,UAAAA;AAAAA;AAAAA,QACVoB,QAAUpB,EAAAA,UAAAA;AAAAA;AAAAA,QACV/C,KAAO+C,EAAAA,UAAAA;AAAAA,OACR,CAAA,CAAA;AAEH,MAAA,MAAMqB,WAAWd,UACfZ,CAAAA,GAAAA,EACC,GAAEA,GAAI,CAAA,CAAA,EAAGG,KAAM,CAChB,CAAA,EAAA;AAAA,QACE,CAAE,CAAEH,EAAAA,GAAI,YAAW,GAAG,CAAC,CAAC7B,SAAUI,CAAAA,KAAAA;AAAAA,QAClC,CAAE,GAAEyB,GAAI,CAAA,YAAA,CAAa,GAAG7C,WAAe+C,IAAAA,OAAAA,KAAY,QAAQ,CAACM,gBAAAA;AAAAA,QAC5D,CAAE,CAAER,EAAAA,GAAI,QAAO,GAAG,CAAC,CAAC3B,KAAME,CAAAA,KAAAA;AAAAA,QAC1B,CAAE,GAAEyB,GAAI,CAAA,WAAA,CAAY,GAAGS,MAAOC,CAAAA,UAAAA,CAAWL,UAAU,CAAM,KAAA,CAAA;AAAA,OAC3D,EACA1C,MAAMgE,KACR,CAAA,CAAA;AACA,MAAA,OAAAhB,YAAA,OAAA,EAAA;AAAA,QAAA,GACahD,KAAAA;AAAAA,QAAK,OAAS+D,EAAAA,QAAAA;AAAAA,QAAQ,OAASL,EAAAA,QAAAA;AAAAA,OAAQ,EAAA,CAAAV,WAAAA,CAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EACnC,GAAEX,GAAI,CAAA,SAAA,CAAA;AAAA,OAAU,EAAA,CAAA,CAAGpC,EAAMgE,GAAAA,KAAAA,CAAAA,OAAAA,KAANhE,IAAiB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,KAAA,CAAA,EAChDT,EAAAA,WAAAA,IAAgBkB,KAAME,CAAAA,KAAAA,IAASiC,gBAAoBY,GAAAA,UAAAA,GAAa,IAAI,CAAA,CAAA,CAAA;AAAA,KAG3E,CAAA;AAAA,GACF;AACF,CAAC,CAAA;;;;"}