{"version":3,"file":"layout-header.cjs","sources":["../../../components/layout/layout-header.tsx"],"sourcesContent":["import { Avatar } from '@/components/avatar'\nimport { Dropdown } from '@/components/dropdown'\nimport { DropdownList } from '@/components/dropdown-list'\nimport { DropdownItem } from '@/components/dropdown-item'\nimport { Icon } from '@/components/icon'\nimport { Menu } from '@/components/menu'\nimport { Switch } from '@/components/switch'\n\nimport {\n  computed,\n  defineComponent,\n  onBeforeMount,\n  onMounted,\n  reactive,\n  ref,\n  renderSlot,\n  shallowReadonly,\n  toRef,\n  watch,\n} from 'vue'\n\nimport { emitEvent, useIcons, useLocale, useNameHelper, useProps } from '@vexip-ui/config'\nimport { useMounted, useRtl } from '@vexip-ui/hooks'\nimport { isClient } from '@vexip-ui/utils'\nimport { layoutHeaderProps } from './props'\nimport { computeSeriesColors, useLayoutState } from './helper'\n\nimport type { MenuExposed } from '@/components/menu'\nimport type { LayoutConfig, LayoutHeaderAction, LayoutSignType } from './symbol'\n\nexport default defineComponent({\n  name: 'LayoutHeader',\n  props: layoutHeaderProps,\n  emits: ['update:sign-type', 'update:color', 'update:user-dropped', 'update:dark-mode'],\n  setup(_props, { slots, emit, expose }) {\n    const props = useProps('layoutHeader', _props, {\n      locale: null,\n      tag: 'header',\n      logo: '',\n      signName: '',\n      user: {\n        default: () => ({ name: '' }),\n        static: true,\n      },\n      userDropped: false,\n      avatarCircle: false,\n      config: () => ['nav', 'theme', 'color'] as LayoutConfig[],\n      actions: () => [],\n      signType: 'aside',\n      colors: () => ['#339af0', '#f03e3e', '#be4bdb', '#7950f2', '#1b9e44', '#f76707'],\n      color: '',\n      menus: {\n        default: () => [],\n        static: true,\n      },\n      menuProps: null,\n      darkMode: null,\n    })\n\n    const nh = useNameHelper('layout')\n    const icons = useIcons()\n    const locale = useLocale('layout', toRef(props, 'locale'))\n    const layoutState = useLayoutState()\n    const currentSignType = ref<LayoutSignType>(props.signType)\n    const currentUserDropped = ref(props.userDropped)\n\n    const menu = ref<MenuExposed>()\n\n    const { isRtl } = useRtl()\n    const { isMounted } = useMounted()\n\n    const rootEl = computed(() => {\n      // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n      isMounted.value\n      return isClient ? document.documentElement : null\n    })\n    const currentColor = ref(props.color || getBaseColor() || props.colors?.[0])\n    const isDark = ref(false)\n\n    const className = computed(() => {\n      return [\n        nh.be('header'),\n        {\n          [nh.bs('vars')]: !layoutState.isLayout,\n          [nh.bem('header', 'inherit')]: layoutState.isLayout || props.inherit,\n          [nh.bem('header', 'away')]: !layoutState.affixMatched,\n          [nh.bem('header', 'affixed')]: layoutState.affixed,\n        },\n        layoutState.classes.header,\n      ]\n    })\n    const userActions = computed(() => {\n      if (!props.actions?.length) {\n        return [\n          {\n            label: 'signOut',\n            name: locale.value.signOut,\n            icon: icons.value.signOut.icon,\n            iconProps: icons.value.signOut,\n          },\n        ] as LayoutHeaderAction[]\n      }\n\n      return props.actions.filter(action => !action.hidden)\n    })\n    const hasLeft = computed(() => {\n      return !!(props.logo || props.signName || slots.left)\n    })\n    const hasMenu = computed(() => {\n      return !!(props.menus?.length || props.menuProps?.router)\n    })\n\n    const slotParams = shallowReadonly(\n      reactive({\n        expanded: toRef(layoutState, 'expanded'),\n        reduced: toRef(layoutState, 'reduced'),\n        toggleExpanded,\n        toggleReduced,\n        handleColorChange,\n        toggleUserDropped,\n      }),\n    )\n\n    expose({ menu, toggleExpanded, toggleReduced, expandMenuByLabel, toggleUserDropped })\n\n    watch(\n      () => props.signType,\n      value => {\n        currentSignType.value = value\n      },\n    )\n    watch(\n      () => props.userDropped,\n      value => {\n        currentUserDropped.value = value\n      },\n    )\n    watch(currentColor, computeSeriesColors)\n    watch(\n      () => props.darkMode,\n      value => {\n        isDark.value = value ?? rootEl.value?.classList.contains('dark') ?? false\n      },\n      { immediate: true },\n    )\n\n    onMounted(() => {\n      toggleTheme(isDark.value)\n    })\n\n    onBeforeMount(() => {\n      watch(\n        () => props.color,\n        value => {\n          currentColor.value = value || getBaseColor() || props.colors?.[0]\n        },\n        { immediate: true },\n      )\n\n      computeSeriesColors(currentColor.value)\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 handleUserActionSelect(label: string, meta: Record<string, any>) {\n      emitEvent(props.onUserAction, label, meta)\n    }\n\n    function handleSignTypeChange(type: LayoutSignType) {\n      layoutState.changeInLock(() => {\n        currentSignType.value = type\n\n        emit('update:sign-type', type)\n        emitEvent(props.onNavChange, type)\n      })\n    }\n\n    function toggleExpanded(expanded = !layoutState.expanded) {\n      layoutState.expanded = expanded\n\n      emitEvent(props.onExpandedChange, expanded)\n    }\n\n    function toggleReduced(reduced = !layoutState.reduced) {\n      layoutState.reduced = reduced\n\n      emitEvent(props.onReducedChange, reduced)\n    }\n\n    function handleColorChange(color: string) {\n      currentColor.value = color\n\n      emit('update:color', color)\n      emitEvent(props.onColorChange, color)\n    }\n\n    function handleSignClick(event: MouseEvent) {\n      emitEvent(props.onSignClick, event)\n    }\n\n    function toggleUserDropped(dropped = !currentUserDropped.value) {\n      currentUserDropped.value = dropped\n\n      emit('update:user-dropped', dropped)\n      emitEvent(props.onDroppedChange, dropped)\n    }\n\n    function handleMenuSelect(label: string, meta: Record<string, any>) {\n      toggleUserDropped(false)\n      emitEvent(props.onMenuSelect, label, meta)\n    }\n\n    function expandMenuByLabel(label: string) {\n      menu.value?.expandItemByLabel(label)\n    }\n\n    function toggleTheme(darkMode: boolean) {\n      isDark.value = darkMode\n\n      emit('update:dark-mode', darkMode)\n      emitEvent(props.onToggleTheme, darkMode)\n\n      if (!isClient) return\n\n      requestAnimationFrame(() => {\n        if (rootEl.value) {\n          if (darkMode) {\n            rootEl.value.classList.add('dark')\n          } else {\n            rootEl.value.classList.remove('dark')\n          }\n        }\n      })\n    }\n\n    function renderCheck() {\n      return <Icon {...icons.value.check}></Icon>\n    }\n\n    function renderLayoutConfig() {\n      return (\n        <div class={nh.be('config-unit')}>\n          <div\n            class={[nh.be('brief-block'), nh.bem('brief-block', 'aside')]}\n            onClick={() => handleSignTypeChange('aside')}\n          >\n            {currentSignType.value === 'aside' && renderCheck()}\n          </div>\n          <div class={nh.be('brief-block')} onClick={() => handleSignTypeChange('header')}>\n            {currentSignType.value === 'header' && renderCheck()}\n          </div>\n        </div>\n      )\n    }\n\n    function renderThemeConfig() {\n      return (\n        <div class={nh.be('config-unit')}>\n          <Switch\n            value={isDark.value}\n            class={[nh.be('theme-mode'), isDark.value && nh.bem('theme-mode', 'dark')]}\n            aria-label={'theme'}\n            onChange={toggleTheme}\n          >\n            {{\n              icon: () =>\n                isDark.value ? (\n                  <Icon {...icons.value.dark}></Icon>\n                ) : (\n                  <Icon {...icons.value.light}></Icon>\n                ),\n            }}\n          </Switch>\n        </div>\n      )\n    }\n\n    function renderColorConfig() {\n      if (!props.colors?.length) {\n        return null\n      }\n\n      return (\n        <div class={nh.be('config-unit')}>\n          {props.colors.map(color => (\n            <div\n              key={color}\n              class={nh.be('major-color')}\n              style={{\n                backgroundColor: color,\n              }}\n              onClick={() => handleColorChange(color)}\n            >\n              {currentColor.value === color && renderCheck()}\n            </div>\n          ))}\n        </div>\n      )\n    }\n\n    function renderUserAvatar() {\n      if (slots.avatar) {\n        return renderSlot(slots, 'avatar', slotParams)\n      }\n\n      if (typeof props.user?.avatar === 'string') {\n        return (\n          <Avatar\n            src={props.user.avatar}\n            circle={props.avatarCircle}\n            onClick={() => toggleUserDropped()}\n          >\n            {{\n              icon: () => <Icon {...icons.value.user}></Icon>,\n            }}\n          </Avatar>\n        )\n      }\n\n      return (\n        <Avatar circle={props.avatarCircle} onClick={() => toggleUserDropped()}>\n          {{\n            icon: () => (\n              <Icon {...icons.value.user} icon={props.user.avatar || icons.value.user.icon}></Icon>\n            ),\n          }}\n        </Avatar>\n      )\n    }\n\n    function renderUserDrop() {\n      return (\n        <DropdownList>\n          {props.user?.name && (\n            <li class={nh.be('user-profile')}>\n              <span class={nh.be('user-name')}>{props.user.name}</span>\n              {props.user.email && <span class={nh.be('user-email')}>{props.user.email}</span>}\n            </li>\n          )}\n          {props.config?.length ? renderConfigs() : null}\n          {userActions.value.map(action => (\n            <DropdownItem\n              key={action.label}\n              class={nh.be('user-action')}\n              label={action.label}\n              disabled={action.disabled}\n              divided={action.divided}\n              onSelect={() => handleUserActionSelect(action.label, action.meta || {})}\n            >\n              {action.icon && (\n                <Icon\n                  {...action.iconProps}\n                  icon={action.icon}\n                  style={{ marginRight: '6px' }}\n                ></Icon>\n              )}\n              {action.name || action.label}\n            </DropdownItem>\n          ))}\n        </DropdownList>\n      )\n    }\n\n    function renderConfigs() {\n      return (\n        <li class={nh.be('config')}>\n          {props.config.includes('nav') &&\n            layoutState.navConfig && [\n              <div key={1} class={nh.be('config-label')}>\n                {locale.value.signType}\n              </div>,\n              renderLayoutConfig(),\n          ]}\n          {props.config.includes('theme') && [\n            <div key={2} class={nh.be('config-label')}>\n              {locale.value.themeMode}\n            </div>,\n            renderThemeConfig(),\n          ]}\n          {props.config.includes('color') && [\n            <div key={3} class={nh.be('config-label')}>\n              {locale.value.majorColor}\n            </div>,\n            renderColorConfig(),\n          ]}\n        </li>\n      )\n    }\n\n    return () => {\n      const CustomTag = (props.tag || 'header') as any\n\n      return (\n        <CustomTag class={className.value}>\n          {hasLeft.value && (\n            <div class={[nh.be('header-left'), layoutState.classes.headerLeft]}>\n              {slots.left ? (\n                renderSlot(slots, 'left', slotParams)\n              ) : props.signType === 'header' ? (\n                <div class={nh.be('sign')} onClick={handleSignClick}>\n                  {props.logo && (\n                    <div class={nh.be('logo')}>\n                      <img src={props.logo} alt={'Logo'} />\n                    </div>\n                  )}\n                  {props.signName && <span class={nh.be('sign-name')}>{props.signName}</span>}\n                </div>\n              ) : null}\n            </div>\n          )}\n          <div class={[nh.be('header-main'), layoutState.classes.headerMain]}>\n            {slots.default ? (\n              renderSlot(slots, 'default', slotParams)\n            ) : hasMenu.value ? (\n              <Menu\n                ref={menu}\n                {...(props.menuProps || {})}\n                horizontal\n                transfer\n                options={props.menus}\n                onSelect={handleMenuSelect}\n              ></Menu>\n            ) : null}\n          </div>\n          {slots.right && (\n            <div class={[nh.be('header-right'), layoutState.classes.headerRight]}>\n              {renderSlot(slots, 'right', slotParams)}\n            </div>\n          )}\n          {slots.user ? (\n            renderSlot(slots, 'user', slotParams)\n          ) : (\n            <Dropdown\n              class={[nh.be('user'), layoutState.classes.headerUser]}\n              transfer\n              placement={isRtl.value ? 'bottom-start' : 'bottom-end'}\n              visible={currentUserDropped.value}\n              trigger={'custom'}\n              onClickOutside={() => toggleUserDropped(false)}\n            >\n              {{\n                default: renderUserAvatar,\n                drop: renderUserDrop,\n              }}\n            </Dropdown>\n          )}\n        </CustomTag>\n      )\n    }\n  },\n})\n"],"names":["defineComponent","name","props","layoutHeaderProps","emits","setup","_props","slots","emit","expose","useProps","locale","tag","logo","signName","user","default","static","userDropped","avatarCircle","config","actions","signType","colors","color","menus","menuProps","darkMode","nh","useNameHelper","icons","useIcons","useLocale","toRef","layoutState","useLayoutState","currentSignType","ref","currentUserDropped","menu","isRtl","useRtl","isMounted","useMounted","rootEl","computed","value","isClient","document","documentElement","currentColor","getBaseColor","isDark","className","be","bs","isLayout","bem","inherit","affixMatched","affixed","classes","header","userActions","length","filter","action","hidden","label","signOut","icon","iconProps","hasLeft","left","hasMenu","router","slotParams","shallowReadonly","reactive","expanded","reduced","toggleExpanded","toggleReduced","handleColorChange","toggleUserDropped","expandMenuByLabel","watch","computeSeriesColors","classList","contains","immediate","onMounted","toggleTheme","onBeforeMount","getComputedStyle","getPropertyValue","handleUserActionSelect","meta","emitEvent","onUserAction","handleSignTypeChange","type","changeInLock","onNavChange","onExpandedChange","onReducedChange","onColorChange","handleSignClick","event","onSignClick","dropped","onDroppedChange","handleMenuSelect","onMenuSelect","expandItemByLabel","onToggleTheme","requestAnimationFrame","add","remove","renderCheck","_createVNode","Icon","check","renderLayoutConfig","onClick","renderThemeConfig","Switch","dark","light","renderColorConfig","map","backgroundColor","renderUserAvatar","avatar","renderSlot","Avatar","_mergeProps","renderUserDrop","DropdownList","email","renderConfigs","DropdownItem","disabled","divided","onSelect","marginRight","includes","navConfig","themeMode","majorColor","CustomTag","headerLeft","headerMain","Menu","right","headerRight","Dropdown","headerUser","onClickOutside","drop"],"mappings":"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"}