* Copyright (c) 2022 - present TinyVue Authors.
* Copyright (c) 2022 - present Huawei Cloud Computing Technologies Co., Ltd.
*
* Use of this source code is governed by an MIT-style license.
*
* THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL,
* BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR
* A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS.
*
*/
import { getRegion, changeOffice, getRep, getOffice, fetchDefaultData, beforeMount } from './index'
import type {
IAreaProps,
IAreaApi,
IAreaState,
ISharedRenderlessParamHooks,
ISharedRenderlessParamUtils
} from '@/types'
export const api = ['state', 'getRep', 'getRegion', 'getOffice', 'changeOffice']
export const renderless = (
props: IAreaProps,
{ onBeforeMount, reactive }: ISharedRenderlessParamHooks,
{ emit, service, vm, nextTick }: ISharedRenderlessParamUtils<never>
) => {
const api: Partial<IAreaApi> = {}
const { fetchArea } = service || {}
const state = reactive<IAreaState>({
jcr: '',
region: '',
rep: '',
office: '',
jcrData: [],
regionData: [],
repData: [],
officeData: []
})
Object.assign(api, {
state,
changeOffice: changeOffice({ emit, state }),
beforeMount: beforeMount({ api, props }),
getRep: getRep({ emit, fetchArea, nextTick, props, vm, state }),
getRegion: getRegion({ emit, fetchArea, nextTick, props, vm, state }),
getOffice: getOffice({ emit, fetchArea, nextTick, props, vm, state }),
fetchDefaultData: fetchDefaultData({ emit, fetchArea, nextTick, props, vm, state })
})
onBeforeMount((api as IAreaApi).beforeMount)
return api as IAreaApi
}