import { stackFactory, flatStacksValue, strToParams } from '@/utils' import { reactive, ref } from 'vue' import type { FuseModel, TaggingPosition, View } from '@/store' export const viewModeStack = stackFactory(ref<'full' | 'auto'>('auto')) export const showToolbarStack = stackFactory(ref(false)) export const showHeadBarStack = stackFactory(ref(true)) export const showRightPanoStack = stackFactory(ref(true)) export const showLeftPanoStack = stackFactory(ref(false)) export const showLeftCtrlPanoStack = stackFactory(ref(true)) export const showRightCtrlPanoStack = stackFactory(ref(true)) export const showBottomBarStack = stackFactory(ref(false), true) export const bottomBarHeightStack = stackFactory(ref('60px')) export const showTaggingsStack = stackFactory(ref(true)) export const showMeasuresStack = stackFactory(ref(true)) export const currentModelStack = stackFactory(ref(null)) export const showModelsMapStack = stackFactory(ref>(new WeakMap()), true) export const modelsChangeStoreStack = stackFactory(ref(false)) export const showTaggingPositionsStack = stackFactory(ref>(new WeakSet())) export const currentViewStack = stackFactory(ref()) export const custom = flatStacksValue({ viewMode: viewModeStack, showToolbar: showToolbarStack, showRightPano: showRightPanoStack, showLeftPano: showLeftPanoStack, showLeftCtrlPano: showLeftCtrlPanoStack, shwoRightCtrlPano: showRightCtrlPanoStack, showTaggings: showTaggingsStack, showMeasures: showMeasuresStack, currentModel: currentModelStack, showModelsMap: showModelsMapStack, modelsChangeStore: modelsChangeStoreStack, showTaggingPositions: showTaggingPositionsStack, showBottomBar: showBottomBarStack, bottomBarHeight: bottomBarHeightStack, showHeadBar: showHeadBarStack, currentView: currentViewStack }) export const params = reactive(strToParams(location.search)) as unknown as Params params.caseId = Number(params.caseId) params.share = Boolean(Number(params.share)) params.single = Boolean(Number(params.single)) export enum appType { fire = "1", xmfire = "3", criminal = "2", police = "4", xj = "1" } export const appStyleImport = { // [appType.fire]: () => import('../assets/style/fire.less'), [appType.xmfire]: () => import('../assets/style/fire.less'), [appType.criminal]: () => import('../assets/style/criminal.less'), [appType.police]: () => import('../assets/style/criminal.less'), [appType.xj]: () => import('../assets/style/fire.less'), } export const appBackRoot = { // [appType.fire]: "/fire", [appType.xmfire]: "/xmfire", [appType.criminal]: "/criminal", [appType.police]: "/criminal", [appType.xj]: "/xj" } export const routeIncludeFire = (type: appType) => [appType.fire, appType.xmfire].includes(type) export type Params = { caseId: number, baseURL?: string, modelId?: string, m?: string share?: boolean, single?: boolean app: appType token?: string } export const baseURL = params.baseURL ? params.baseURL : '/' export const getResource = (uri: string) => { if (~uri.indexOf('base64') || ~uri.indexOf('bolb') || ~uri.indexOf('//')) return uri return `${baseURL}/${uri}` }