{"version":3,"file":"layout.cjs","sources":["../../../components/layout/layout.tsx"],"sourcesContent":["import { Masker } from '@/components/masker'\nimport { NativeScroll } from '@/components/native-scroll'\nimport { ResizeObserver } from '@/components/resize-observer'\n\nimport {\n  computed,\n  defineComponent,\n  provide,\n  reactive,\n  ref,\n  renderSlot,\n  shallowReadonly,\n  toRef,\n  watch,\n} from 'vue'\n\nimport { emitEvent, useNameHelper, useProps, useZIndex } from '@vexip-ui/config'\nimport { createSlotRender, useMounted } from '@vexip-ui/hooks'\nimport { getYBorder, isClient, runQueueFrame } from '@vexip-ui/utils'\nimport LayoutMain from './layout-main'\nimport LayoutHeader from './layout-header'\nimport LayoutFooter from './layout-footer'\nimport LayoutAside from './layout-aside'\nimport { layoutProps } from './props'\nimport { useMediaQuery } from './helper'\nimport { LAYOUT_STATE } from './symbol'\n\nimport type { NativeScrollExposed } from '@/components/native-scroll'\nimport type {\n  LayoutAsideExposed,\n  LayoutConfig,\n  LayoutHeaderExposed,\n  LayoutSignType,\n} from './symbol'\n\nexport default defineComponent({\n  name: 'Layout',\n  props: layoutProps,\n  emits: [\n    'update:expanded',\n    'update:reduced',\n    'update:sign-type',\n    'update:color',\n    'update:dark-mode',\n  ],\n  setup(_props, { slots, emit, expose }) {\n    const props = useProps('layout', _props, {\n      locale: null,\n      noAside: false,\n      footer: false,\n      tag: 'section',\n      menus: {\n        default: () => [],\n        static: true,\n      },\n      menuProps: null,\n      logo: '',\n      signName: '',\n      config: () => ['nav', 'theme', 'color'] as LayoutConfig[],\n      user: null,\n      actions: () => [],\n      expanded: false,\n      reduced: false,\n      avatarCircle: false,\n      signType: 'aside',\n      headerFixed: 'lg',\n      asideFixed: 'lg',\n      copyright: '',\n      links: () => [],\n      colors: () => ['#339af0', '#f03e3e', '#be4bdb', '#7950f2', '#1b9e44', '#f76707'],\n      color: '',\n      miniHeaderSign: 'lg',\n      verticalLinks: 'md',\n      darkMode: null,\n      fixedMain: false,\n      fitWindow: false,\n      innerClasses: () => ({}),\n      noHeader: false,\n      noMasker: false,\n    })\n\n    const nh = useNameHelper('layout')\n    const locked = ref(false)\n    // const asideActive = ref(!props.noAside)\n    const asideExpanded = ref(props.expanded)\n    const asideReduced = ref(props.reduced)\n    const currentSignType = ref<LayoutSignType>(props.signType)\n    const userDropped = ref(false)\n    const currentColor = ref(props.color)\n\n    const { isMounted } = useMounted('frame')\n\n    const section = ref<HTMLElement>()\n    const scroll = ref<NativeScrollExposed>()\n    const header = ref<LayoutHeaderExposed>()\n    const aside = ref<LayoutAsideExposed>()\n\n    const affixMatched = useMediaQuery(toRef(props, 'headerFixed'))\n    const expandMatched = useMediaQuery(toRef(props, 'asideFixed'))\n    const signNameMatched = useMediaQuery(toRef(props, 'miniHeaderSign'))\n\n    const state = reactive({\n      isLayout: true,\n      locked: computed(() => locked.value),\n      affixed: false,\n      scrollY: 0,\n      affixMatched,\n      expandMatched,\n      useExpand: false,\n      expanded: asideExpanded,\n      reduced: asideReduced,\n      navConfig: computed(() => !props.noAside),\n      classes: toRef(props, 'innerClasses'),\n      changeInLock,\n    })\n\n    const isHeaderMain = computed(() => !props.noHeader && currentSignType.value === 'header')\n    const className = computed(() => {\n      return [\n        nh.b(),\n        nh.bs('vars'),\n        {\n          [nh.bm('inherit')]: props.inherit,\n          [nh.bm('no-aside')]: props.noAside,\n          [nh.bm('no-header')]: props.noHeader,\n          [nh.bm('header-main')]: isHeaderMain.value,\n          [nh.bm('locked')]: !isMounted.value || locked.value,\n          [nh.bm('fit-window')]: props.fitWindow,\n        },\n      ]\n    })\n    const rootEl = computed(() => {\n      return isClient && isMounted.value ? document.documentElement : null\n    })\n    const signInHeader = computed(() => {\n      return props.noAside || isHeaderMain.value || state.useExpand\n    })\n    const menu = computed(() => aside.value?.menu || header.value?.menu)\n    const isDark = ref(props.darkMode)\n    const viewHeight = ref('100%')\n\n    const style = computed(() => {\n      return {\n        [nh.cv('view-height')]: props.fitWindow ? '100vh' : viewHeight.value,\n      }\n    })\n\n    const getIndex = useZIndex()\n    const zIndex = ref(asideExpanded.value ? getIndex() : 0)\n\n    const slotParams = shallowReadonly(\n      reactive({\n        expanded: asideExpanded,\n        reduced: asideReduced,\n        toggleExpanded,\n        toggleReduced,\n      }),\n    )\n\n    provide(LAYOUT_STATE, state)\n\n    expose({ scroll, menu, toggleExpanded, toggleReduced, expandMenuByLabel })\n\n    watch(affixMatched, value => {\n      state.affixed = !value && state.scrollY >= 50\n    })\n    watch(\n      () => props.expanded,\n      value => {\n        asideExpanded.value = value\n      },\n    )\n    watch(asideExpanded, value => {\n      if (state.useExpand && value) {\n        zIndex.value = getIndex()\n      }\n    })\n    watch(\n      () => props.reduced,\n      value => {\n        asideReduced.value = value\n      },\n    )\n    // watch(\n    //   () => props.noAside,\n    //   value => {\n    //     changeInLock(() => (asideActive.value = value))\n    //   }\n    // )\n    watch(currentSignType, value => {\n      emit('update:sign-type', value)\n      emitEvent(props.onNavChange, value)\n    })\n    watch(\n      () => props.color,\n      value => {\n        currentColor.value = value || props.colors?.[0] || getBaseColor()\n      },\n    )\n    watch(currentColor, value => {\n      emit('update:color', value)\n      emitEvent(props.onColorChange, value)\n    })\n    watch(\n      () => props.darkMode,\n      value => {\n        isDark.value = value\n      },\n    )\n\n    function getBaseColor() {\n      if (rootEl.value) {\n        return getComputedStyle(rootEl.value).getPropertyValue('--vxp-color-primary-base')\n      }\n\n      return '#339af0'\n    }\n\n    function toggleExpanded(expanded = !asideReduced.value) {\n      asideExpanded.value = expanded\n\n      emit('update:expanded', expanded)\n      emitEvent(props.onExpandedChange, expanded)\n    }\n\n    function toggleReduced(reduced = !asideReduced.value) {\n      asideReduced.value = reduced\n\n      emit('update:reduced', reduced)\n      emitEvent(props.onReducedChange, reduced)\n    }\n\n    function handleSignClick(event: MouseEvent) {\n      emitEvent(props.onSignClick, event)\n    }\n\n    function handleMenuSelect(label: string, meta: Record<string, any>) {\n      emitEvent(props.onMenuSelect, label, meta)\n    }\n\n    function handleToggleTheme(isDark: boolean) {\n      emit('update:dark-mode', isDark)\n      emitEvent(props.onToggleTheme, isDark)\n    }\n\n    function handleUserAction(label: string, meta: Record<string, any>) {\n      emitEvent(props.onUserAction, label, meta)\n    }\n\n    function expandMenuByLabel(label: string) {\n      menu.value?.expandItemByLabel(label)\n    }\n\n    function handleResize() {\n      if (scroll.value?.$el) {\n        viewHeight.value = `${scroll.value.$el.offsetHeight - getYBorder(scroll.value.$el)}px`\n      }\n\n      emitEvent(props.onContentResize)\n    }\n\n    let cancelChange: (() => void) | undefined\n\n    function changeInLock(doChange: () => void) {\n      cancelChange?.()\n      cancelChange = runQueueFrame([\n        () => (locked.value = true),\n        doChange,\n        () => (locked.value = false),\n      ])\n    }\n\n    function stopAndPrevent(event: Event) {\n      event.stopPropagation()\n      event.preventDefault()\n    }\n\n    function renderSign() {\n      if (!props.logo && !props.signName && !slots.sign) {\n        return null\n      }\n\n      if (slots.sign) {\n        return renderSlot(slots, 'sign', slotParams)\n      }\n\n      const showSignName = props.signName && !(signInHeader.value && !signNameMatched.value)\n\n      return (\n        <div\n          class={[nh.be('sign'), !showSignName && nh.bem('sign', 'logo-only')]}\n          onClick={handleSignClick}\n        >\n          {[\n            props.logo && (\n              <div class={nh.be('logo')}>\n                <img src={props.logo} alt={'Logo'} />\n              </div>\n            ),\n            showSignName && <span class={nh.be('sign-name')}>{props.signName}</span>,\n          ]}\n        </div>\n      )\n    }\n\n    function renderHeader() {\n      if (props.noHeader) {\n        return <header role={'none'} aria-hidden style={'display: none'}></header>\n      }\n\n      if (slots.header) {\n        return renderSlot(slots, 'header', slotParams)\n      }\n\n      return (\n        <LayoutHeader\n          ref={header}\n          v-model:sign-type={currentSignType.value}\n          v-model:user-dropped={userDropped.value}\n          v-model:color={currentColor.value}\n          v-model:dark-mode={isDark.value}\n          inherit\n          locale={props.locale}\n          user={props.user}\n          actions={props.actions}\n          config={props.config}\n          avatar-circle={props.avatarCircle}\n          menus={props.noAside ? props.menus : []}\n          menu-props={props.noAside ? props.menuProps : null}\n          colors={props.colors}\n          onUserAction={handleUserAction}\n          onExpandedChange={toggleExpanded}\n          onReducedChange={toggleReduced}\n          onMenuSelect={handleMenuSelect}\n          onToggleTheme={handleToggleTheme}\n          {...{\n            onWheel: stopAndPrevent,\n            onMousemove: stopAndPrevent,\n          }}\n        >\n          {{\n            left: createSlotRender(slots, ['header-left', 'headerLeft'], () =>\n              signInHeader.value ? renderSign() : null,\n            ),\n            default: createSlotRender(slots, ['header-main', 'headerMain']),\n            right: createSlotRender(slots, ['header-right', 'headerRight']),\n            user: createSlotRender(slots, ['header-user', 'headerUser']),\n            avatar: createSlotRender(slots, ['header-avatar', 'headerAvatar']),\n          }}\n        </LayoutHeader>\n      )\n    }\n\n    function renderAside() {\n      if (props.noAside) {\n        return <div role={'none'} aria-hidden style={'display: none'}></div>\n      }\n\n      return (\n        <div\n          class={[\n            nh.be('sidebar'),\n            !expandMatched.value && nh.bem('sidebar', 'away'),\n            props.innerClasses.sidebar,\n          ]}\n          style={{ zIndex: state.useExpand ? zIndex.value + 1 : undefined }}\n          onWheel={stopAndPrevent}\n          onMousemove={stopAndPrevent}\n        >\n          {slots.aside ? (\n            renderSlot(slots, 'aside', slotParams)\n          ) : (\n            <LayoutAside\n              ref={aside}\n              v-model:expanded={asideExpanded.value}\n              v-model:reduced={asideReduced.value}\n              inherit\n              sign-type={isHeaderMain.value ? 'header' : 'aside'}\n              menus={props.menus}\n              menu-props={props.menuProps}\n              fixed={props.asideFixed}\n              onExpandedChange={toggleExpanded}\n              onReducedChange={toggleReduced}\n              onMenuSelect={handleMenuSelect}\n            >\n              {{\n                top: createSlotRender(slots, ['aside-top', 'asideTop'], () =>\n                  !signInHeader.value ? renderSign() : null,\n                ),\n                default: createSlotRender(slots, ['aside-main', 'asideMain']),\n                bottom: createSlotRender(slots, ['aside-bottom', 'asideBottom']),\n                expand: createSlotRender(slots, ['aside-expand', 'asideExpand']),\n              }}\n            </LayoutAside>\n          )}\n        </div>\n      )\n    }\n\n    function renderMain() {\n      if (slots.default) {\n        return renderSlot(slots, 'default', slotParams)\n      }\n\n      return (\n        <LayoutMain fixed={props.fixedMain}>\n          {{\n            default: createSlotRender(slots, ['main']),\n          }}\n        </LayoutMain>\n      )\n    }\n\n    function renderFooter() {\n      if (slots.footer) {\n        return renderSlot(slots, 'footer', slotParams)\n      }\n\n      return (\n        <LayoutFooter\n          inherit\n          copyright={props.copyright}\n          links={props.links}\n          vertical-links={props.verticalLinks}\n        >\n          {{\n            links: createSlotRender(slots, ['footer-links', 'footerLinks']),\n            copyright: createSlotRender(slots, ['footer-copyright', 'footerCopyright']),\n          }}\n        </LayoutFooter>\n      )\n    }\n\n    function renderMasker() {\n      if (props.noMasker || !state.useExpand) return null\n\n      if (slots.masker) {\n        return renderSlot(slots, 'masker', slotParams)\n      }\n\n      return (\n        <Masker\n          v-model:active={asideExpanded.value}\n          class={nh.be('masker')}\n          inner\n          closable\n          auto-remove\n          transfer={false}\n          style={{ zIndex: zIndex.value }}\n          onToggle={toggleExpanded}\n        ></Masker>\n      )\n    }\n\n    function renderWrapper() {\n      const CustomTag = (props.tag || 'section') as any\n\n      return (\n        <CustomTag\n          class={[\n            nh.be('wrapper'),\n            props.fixedMain && nh.bem('wrapper', 'fixed'),\n            props.innerClasses.wrapper,\n          ]}\n        >\n          {isHeaderMain.value && renderHeader()}\n          {renderAside()}\n          <section\n            ref={section}\n            class={[\n              nh.be('section'),\n              {\n                [nh.bem('section', 'away')]: expandMatched.value,\n                [nh.bem('section', 'reduced')]: asideReduced.value,\n                [nh.bem('section', 'locked')]: locked.value,\n                [nh.bem('section', 'fixed')]: props.fixedMain,\n              },\n              props.innerClasses.section,\n            ]}\n          >\n            {!isHeaderMain.value && renderHeader()}\n            {renderMain()}\n            {props.footer && renderFooter()}\n          </section>\n          {renderMasker()}\n        </CustomTag>\n      )\n    }\n\n    return () => {\n      if (props.fitWindow) {\n        return (\n          <section class={className.value} style={style.value}>\n            <ResizeObserver throttle onResize={handleResize}>\n              {renderWrapper()}\n            </ResizeObserver>\n          </section>\n        )\n      }\n\n      return (\n        <NativeScroll\n          ref={scroll}\n          class={className.value}\n          inherit={props.inherit}\n          use-y-bar\n          observe-deep\n          bar-class={[nh.be('scrollbar'), props.innerClasses.scrollbar]}\n          style={style.value}\n          onResize={handleResize}\n        >\n          {renderWrapper()}\n        </NativeScroll>\n      )\n    }\n  },\n})\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","defineComponent","name","props","layoutProps","emits","setup","_props","slots","emit","expose","useProps","locale","noAside","footer","tag","menus","default","static","menuProps","logo","signName","config","user","actions","expanded","reduced","avatarCircle","signType","headerFixed","asideFixed","copyright","links","colors","color","miniHeaderSign","verticalLinks","darkMode","fixedMain","fitWindow","innerClasses","noHeader","noMasker","nh","useNameHelper","locked","ref","asideExpanded","asideReduced","currentSignType","userDropped","currentColor","isMounted","useMounted","section","scroll","header","aside","affixMatched","useMediaQuery","toRef","expandMatched","signNameMatched","state","reactive","isLayout","computed","value","affixed","scrollY","useExpand","navConfig","classes","changeInLock","isHeaderMain","className","b","bs","bm","inherit","rootEl","isClient","document","documentElement","signInHeader","menu","isDark","viewHeight","style","cv","getIndex","useZIndex","zIndex","slotParams","shallowReadonly","toggleExpanded","toggleReduced","provide","LAYOUT_STATE","expandMenuByLabel","watch","emitEvent","onNavChange","getBaseColor","onColorChange","getComputedStyle","getPropertyValue","onExpandedChange","onReducedChange","handleSignClick","event","onSignClick","handleMenuSelect","label","meta","onMenuSelect","handleToggleTheme","onToggleTheme","handleUserAction","onUserAction","expandItemByLabel","handleResize","$el","offsetHeight","getYBorder","onContentResize","cancelChange","doChange","runQueueFrame","stopAndPrevent","stopPropagation","preventDefault","renderSign","sign","renderSlot","showSignName","_createVNode","be","bem","renderHeader","LayoutHeader","_mergeProps","$event","onWheel","onMousemove","left","createSlotRender","right","avatar","renderAside","sidebar","undefined","LayoutAside","top","bottom","expand","renderMain","LayoutMain","renderFooter","LayoutFooter","renderMasker","masker","Masker","renderWrapper","CustomTag","wrapper","_slot2","_slot","ResizeObserver","NativeScroll","scrollbar"],"mappings":"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"}