// @ts-nocheck
|
|
import {IconCollection} from './components/l-icon/types'
|
|
// #ifndef UNI-APP-X
|
|
|
|
// #ifdef VUE3
|
|
import { reactive } from 'vue';
|
|
function definePlugin(options: any) {
|
|
return options
|
|
}
|
|
// #endif
|
|
|
|
// #ifdef VUE2
|
|
import Vue from 'vue'
|
|
let reactive = Vue.observable
|
|
type VueApp = any
|
|
// #endif
|
|
|
|
type UTSJSONObject = any//Record<string, any>
|
|
|
|
// #endif
|
|
|
|
let topApp : VueApp | null = null;
|
|
const _iconCollection = reactive<IconCollection>({
|
|
has: true,
|
|
// #ifdef UNI-APP-X
|
|
icons: new Map<string, any|null>()
|
|
// #endif
|
|
|
|
// #ifndef UNI-APP-X
|
|
icons: {}
|
|
// #endif
|
|
})
|
|
|
|
|
|
export function useIconHost(iconHost : string) {
|
|
// #ifdef UNI-APP-X
|
|
uni.setStorageSync('$limeIconsHost', iconHost)
|
|
// #endif
|
|
// #ifndef UNI-APP-X
|
|
uni.$limeIconsHost = iconHost
|
|
// #endif
|
|
}
|
|
let isInstall = false
|
|
export function useIconCollection(iconCollection: UTSJSONObject|null = {}) {
|
|
if(!isInstall) {
|
|
console.warn('[lime-icon]: useIconCollection 请先注册,app.use(limeIcons, null, iconjson)')
|
|
return
|
|
}
|
|
// #ifdef UNI-APP-X
|
|
const map = (iconCollection as UTSJSONObject).toMap()
|
|
if(map.size != 0) {
|
|
uni.setStorageSync('$limeIconCollection', iconCollection)
|
|
_iconCollection.icons = map
|
|
}
|
|
// #endif
|
|
// #ifndef UNI-APP-X
|
|
if(Object.keys(iconCollection).length != 0) {
|
|
uni.setStorageSync('$limeIconCollection', iconCollection)
|
|
_iconCollection.icons = iconCollection
|
|
}
|
|
// #endif
|
|
}
|
|
|
|
function useProvide() {
|
|
if(topApp == null) return
|
|
isInstall = true
|
|
// #ifdef VUE3
|
|
topApp!.provide('$iconCollection', _iconCollection)
|
|
// #endif
|
|
// #ifndef VUE3
|
|
topApp.mixin({
|
|
provide: {
|
|
$iconCollection: _iconCollection
|
|
}
|
|
})
|
|
// #endif
|
|
}
|
|
|
|
// #ifdef VUE3
|
|
export const limeIcons = definePlugin({
|
|
install: (app: VueApp, iconHost: string | null, iconCollection: UTSJSONObject | null):void => {
|
|
topApp = app;
|
|
if(iconHost != null || iconHost != '') {
|
|
useIconHost(iconHost!)
|
|
}
|
|
if(iconCollection != null) {
|
|
useProvide()
|
|
useIconCollection(iconCollection)
|
|
}
|
|
}
|
|
})
|
|
// #endif
|
|
|
|
// #ifdef VUE2
|
|
export const limeIcons = {
|
|
install: (app: any, options: any[]) => {
|
|
topApp = app;
|
|
let [iconHost, iconCollection] = options
|
|
if(iconHost != null && typeof iconHost == 'object') {
|
|
iconCollection = iconHost
|
|
}
|
|
if(iconHost && iconHost != '') {
|
|
useIconHost(iconHost!)
|
|
}
|
|
if(iconCollection != null) {
|
|
useProvide()
|
|
useIconCollection(iconCollection)
|
|
}
|
|
}
|
|
}
|
|
// #endif
|