Files
QXTstore/QXTfront/uni_modules/lime-icon/index.uts
2025-11-05 17:34:23 +08:00

111 lines
2.3 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// @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