import { Component } from 'vue'; import { RouteLocation } from 'vue-router'; import { MultiLangText } from '../model/CommonTypes'; import { ShortcutKeyHandler } from './ShortcutKeyHandler.ts'; export type Page = { pageId: string; hasPersonalInfo?: boolean; component?: Component; }; export type PageInstance = Page & { path: string; active: boolean; hideTab?: boolean; scrollPosition?: { left: number; top: number; }; title: MultiLangText; subtitle?: MultiLangText; onActivated?: (page: PageInstance) => void; onDeactivated?: (page: PageInstance) => void; }; export type Menu = { menuId: string; icon?: string; subMenu?: Menu[]; pages?: Page[]; hasPersonalInfo?: boolean; }; export type MenuView = { menu: Menu; caption: string; showSubMenu: boolean; subMenuView?: MenuView[]; }; /** * Menu caption 을 리턴한다. */ export type MenuCaptionProvider = (menu: Menu) => string; /** * Page Title 을 리턴한다. */ export type PageTitleProvider = (page: Page) => string; export type PageTitleRenderer = (title: MultiLangText, subtitle?: MultiLangText) => string; /** * Favorite 메뉴를 등록/삭제한다. */ export interface FavoriteMenuHandler { addFavoriteMenu: (menuId: string) => Promise; removeFavoriteMenu: (menuId: string) => Promise; getFavoriteMenus: () => Promise; } export interface FrameContext { getMenus(): Menu[]; /** * 현재 URL 에 해당하는 페이지를 오픈한다. */ syncCurrentPath(route: RouteLocation): void; /** * 현재 활성화된 페이지를 닫는다. */ closeActivePage(): void; /** * 페이지의 subtitle 을 설정한다. * @param route * @param subtitle */ setPageSubtitle(route: RouteLocation, subtitle?: string): void; /** * 단축키를 활성화하고, 기본 단축키를 등록한다. * 이미 활성화되어 있으면, 기존 핸들러를 리턴한다. */ enableShortcutKeyHandler(): ShortcutKeyHandler; } export declare class LocalStorageFavoriteMenuHandler implements FavoriteMenuHandler { private localStorageKey; constructor(localStorageKey?: string); getFavoriteMenus(): Promise; addFavoriteMenu(menuId: string): Promise; removeFavoriteMenu(menuId: string): Promise; }