zova-module-a-icon 5.1.12 → 5.1.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -17,5 +17,10 @@ export declare const ZIcon: import("vue").DefineSetupFnComponent<TypeControllerI
|
|
|
17
17
|
} | {
|
|
18
18
|
[x: `on${Capitalize<string>}`]: ((...args: never) => any) | undefined;
|
|
19
19
|
}), import("vue").PublicProps>;
|
|
20
|
+
declare module 'zova-module-a-bean' {
|
|
21
|
+
interface IVonaComponentRecord {
|
|
22
|
+
'a-icon:icon': ControllerIconProps;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
20
25
|
export {};
|
|
21
26
|
//# sourceMappingURL=icon.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"icon.d.ts","sourceRoot":"","sources":["../../../src/.metadata/component/icon.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,MAAM,CAAC;AAKrD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAE/E,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,MAAM,MAAM,6BAA6B,GAAG;IAC1C,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,IAAI,CAAC;CAC/C,GAAG,mBAAmB,CAAC;AAExB,KAAK,oBAAoB,GAAG,wBAAwB,CAClD,mBAAmB,EACnB,MAAM,OAAO,cAAc,CAAC,aAAa,CAC1C,CAAC;AACF,OAAO,QAAQ,oBAAoB,CAAC;IAClC,UAAiB,cAAc;QAC7B,MAAM,EAAE,oBAAoB,CAAC;KAC9B;CACF;AAED,eAAO,MAAM,KAAK;oBAbA,CAAC,GAAG,EAAE,cAAc,KAAK,IAAI;;;;;8BAgBlB,CAAC"}
|
|
1
|
+
{"version":3,"file":"icon.d.ts","sourceRoot":"","sources":["../../../src/.metadata/component/icon.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,MAAM,CAAC;AAKrD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAE/E,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,MAAM,MAAM,6BAA6B,GAAG;IAC1C,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,IAAI,CAAC;CAC/C,GAAG,mBAAmB,CAAC;AAExB,KAAK,oBAAoB,GAAG,wBAAwB,CAClD,mBAAmB,EACnB,MAAM,OAAO,cAAc,CAAC,aAAa,CAC1C,CAAC;AACF,OAAO,QAAQ,oBAAoB,CAAC;IAClC,UAAiB,cAAc;QAC7B,MAAM,EAAE,oBAAoB,CAAC;KAC9B;CACF;AAED,eAAO,MAAM,KAAK;oBAbA,CAAC,GAAG,EAAE,cAAc,KAAK,IAAI;;;;;8BAgBlB,CAAC;AAC9B,OAAO,QAAQ,oBAAoB,CAAC;IAClC,UAAiB,oBAAoB;QACnC,aAAa,EAAE,mBAAmB,CAAC;KACpC;CACF"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["BeanControllerBase","convertToUnit","isHttpUrl","Use","Controller","ToolIcon","$getZovaIcon","ControllerIcon","_dec","_dec2","__z_BeanInfo","module","_dec3","_dec4","Reflect","metadata","Object","_class","_class2","_ControllerIcon","constructor","args","_initializerDefineProperty","_descriptor","__init__","_load","name","$props","promise","$$toolIcon","parseIconInfo","process","env","SSR","render","width","height","href","_parseHref","endsWith","_createVNode","color","iconInfo","symbolId","$propsDefault","_applyDecoratedDescriptor","prototype","configurable","enumerable","writable","initializer"],"sources":["../src/lib/iconGroup.ts","../src/bean/sys.icon.ts","../src/bean/tool.icon.ts","../src/lib/useZovaIcon.ts","../src/component/icon/controller.tsx","../src/.metadata/component/icon.ts","../src/config/config.ts","../src/monkeySys.ts","../src/.metadata/index.ts","../src/lib/utils.ts"],"sourcesContent":["import { StateLock } from 'zova';\n\nexport class IconGroup {\n public svg: string | undefined;\n public loaded: StateLock;\n\n constructor() {\n this.loaded = StateLock.create();\n }\n}\n","import { reactive } from 'vue';\nimport { BeanBase } from 'zova';\nimport { Sys } from 'zova-module-a-bean';\n\nimport { IconGroup } from '../lib/iconGroup.js';\nimport { IIconInfo, IIconMeta, TypeIconModules, TypeIconSymbols } from '../types/icon.js';\n\nconst XMLNS = 'http://www.w3.org/2000/svg';\nconst XMLNS_LINK = 'http://www.w3.org/1999/xlink';\n\n@Sys()\nexport class SysIcon extends BeanBase {\n protected _iconSymbols: TypeIconSymbols = reactive({});\n protected _iconMoudles: TypeIconModules = {};\n\n // undefined: ignore\n // '': empty icon\n parseIconInfoSync(iconName?: string): IIconInfo | undefined {\n // parts\n const meta = this.parseIconMeta(iconName);\n if (!meta) return undefined;\n // empty\n const iconEmpty = { meta, symbolId: '' };\n // ok\n const iconOk = { meta, symbolId: meta.symbolId };\n // check if exists\n if (this._iconSymbols[meta.fullName]) return iconOk;\n // check if dom exists\n if (process.env.CLIENT) {\n const domIcon = document.getElementById(meta.symbolId) as unknown as SVGElement;\n if (domIcon) return iconOk;\n }\n // check if exists\n if (this._iconSymbols[meta.fullName] === undefined) {\n this.parseIconInfo(iconName);\n return iconEmpty;\n } else if (this._iconSymbols[meta.fullName] === '') {\n return iconEmpty;\n }\n }\n\n async parseIconInfo(iconName?: string): Promise<IIconInfo | undefined> {\n // parts\n const meta = this.parseIconMeta(iconName);\n if (!meta) return undefined;\n // check if exists\n if (this._iconSymbols[meta.fullName]) {\n return { meta, symbolId: this._iconSymbols[meta.fullName] };\n }\n // pre set\n this._iconSymbols[meta.fullName] = '';\n // icon group\n const iconGroup = await this.parseIconGroup(meta.module, meta.group);\n if (!iconGroup) return undefined;\n // icon inject\n this._injectIconClient(meta);\n const symbolId = (this._iconSymbols[meta.fullName] = meta.symbolId);\n // ok\n return { meta, symbolId };\n }\n\n public async parseIconGroup(moduleName: string, groupName: string): Promise<string | undefined> {\n // check if exists\n const iconModule = this.getIconModule(moduleName);\n if (iconModule[groupName]) {\n await iconModule[groupName].loaded.wait();\n return iconModule[groupName].svg;\n }\n // record\n iconModule[groupName] = new IconGroup();\n // parse\n const svg = await this._parseIconGroupInner(moduleName, groupName);\n // touch\n iconModule[groupName].svg = svg;\n iconModule[groupName].loaded.touch();\n // ok\n return iconModule[groupName].svg;\n }\n\n private async _parseIconGroupInner(\n moduleName: string,\n groupName: string,\n ): Promise<string | undefined> {\n // module\n const module = await this.sys.meta.module.use(moduleName);\n if (!module) return;\n // icons\n const icons = module.resource.icons;\n let groupUrl = icons[groupName];\n if (!groupUrl) return;\n // inline\n if (groupUrl.startsWith('data:image/svg+xml')) throw new Error('inline svg not supported');\n // fetch\n let svg;\n if (process.env.SERVER) {\n // publicPath\n groupUrl = this.sys.util.getPagePathFromAbsoluteUrl(groupUrl);\n const path = await import('node:path');\n const fs = await import('node:fs/promises');\n let filePath: string;\n if (process.env.DEV) {\n filePath = path.join(process.cwd(), groupUrl);\n } else {\n const { fileURLToPath } = await import('node:url');\n const rootFolder = fileURLToPath(new URL(/* @vite-ignore */ '.', import.meta.url));\n filePath = path.join(rootFolder, 'client', groupUrl);\n }\n svg = await fs.readFile(filePath, { encoding: 'utf8' });\n } else {\n const res = await fetch(groupUrl);\n if (!res.ok) return;\n svg = await res.text();\n }\n return svg;\n }\n\n private _injectIconClient(meta: IIconMeta) {\n if (process.env.SERVER) return;\n // client\n const iconModule = this.getIconModule(meta.module);\n const iconGroup = iconModule[meta.group];\n // inject container\n let domContainer = document.getElementById('zova-svg-container');\n if (!domContainer) {\n domContainer = document.createElement('div');\n domContainer.style.position = 'absolute';\n domContainer.style.width = '0';\n domContainer.style.height = '0';\n domContainer.style.display = 'none';\n domContainer.id = 'zova-svg-container';\n document.body.appendChild(domContainer);\n }\n // inject module\n let domModule = document.getElementById(`zova-svg-module-${meta.module}`);\n if (!domModule) {\n domModule = document.createElement('div');\n domModule.id = `zova-svg-module-${meta.module}`;\n domContainer.appendChild(domModule);\n }\n // inject group\n let domGroup = document.getElementById(\n `zova-svg-group-${meta.module}-${meta.group}`,\n ) as unknown as SVGSVGElement;\n if (!domGroup) {\n domGroup = document.createElementNS(XMLNS, 'svg');\n domGroup.id = `zova-svg-group-${meta.module}-${meta.group}`;\n domGroup.setAttribute('xmlns', XMLNS);\n domGroup.setAttribute('xmlns:link', XMLNS_LINK);\n domModule.appendChild(domGroup);\n }\n // inject icon\n const domIcon = document.getElementById(meta.symbolId) as unknown as SVGElement;\n if (!domIcon) {\n const iconContent = this.extractIconContent(iconGroup.svg, meta.symbolId);\n if (iconContent) {\n domGroup.insertAdjacentHTML('beforeend', iconContent);\n }\n }\n }\n\n extractIconContent(svg: string | undefined, symbolId: string) {\n if (!svg) return undefined;\n let pos = svg.indexOf(`'${symbolId}'`);\n if (pos === -1) pos = svg.indexOf(`\"${symbolId}\"`);\n if (pos === -1) return undefined;\n const posB = svg.indexOf('</symbol>', pos);\n const posA = svg.lastIndexOf('<symbol', pos);\n return svg.substring(posA, posB + '</symbol>'.length);\n // const symbolPattern = new RegExp(`<symbol.*?id=['\"]${symbolId}['\"].*?>.*?</symbol>`);\n // const matched = symbolPattern.exec(svg || '');\n // return matched && matched[0];\n }\n\n getIconModule(moduleName: string) {\n if (!this._iconMoudles[moduleName]) {\n this._iconMoudles[moduleName] = {};\n }\n return this._iconMoudles[moduleName];\n }\n\n parseIconMeta(iconName?: string): IIconMeta | undefined {\n if (!iconName) return;\n // split module:group:name\n const parts = iconName.split(':');\n if (parts.length !== 3) {\n return;\n }\n const module = parts[0] || this.scope.config.defaultModule;\n const group = parts[1] || 'default';\n const name = parts[2] || '';\n if (!module.includes('-') || !name) {\n return;\n }\n return {\n module,\n group,\n name,\n fullName: this._getFullName(module, group, name),\n symbolId: this._getSymbolId(module, group, name),\n };\n }\n\n private _getSymbolId(module: string, group: string, name: string) {\n return `zova-svg-icon-${module}-${group}-${name}`;\n }\n\n private _getFullName(module: string, group: string, name: string) {\n return `${module}:${group}:${name}`;\n }\n}\n","import { BeanBase, Use } from 'zova';\nimport { Tool } from 'zova-module-a-bean';\n\nimport { IIconInfo, IIconMeta } from '../types/icon.js';\nimport { SysIcon } from './sys.icon.js';\n\n@Tool()\nexport class ToolIcon extends BeanBase {\n private _iconSSR: Record<string, Record<string, Record<string, string>>> = {};\n\n @Use()\n private $$sysIcon: SysIcon;\n\n protected async __init__() {\n if (process.env.SERVER) {\n this.ctx.meta.$ssr.context.onRendered((err?: Error) => {\n if (err) return;\n this._onRendered();\n });\n }\n }\n\n async parseIconInfo(iconName?: string): Promise<IIconInfo | undefined> {\n const iconInfo = await this.$$sysIcon.parseIconInfo(iconName);\n if (!iconInfo) return iconInfo;\n this._injectIconSSR(iconInfo.meta);\n return iconInfo;\n }\n\n private _onRendered() {\n this.ctx.meta.$ssr.context._meta.bodyTags += this._renderSSRContainer();\n }\n\n private _renderSSRContainer() {\n const contentModules = this._renderSSRModules();\n return `<div id=\"zova-svg-container\" style=\"position: absolute; width: 0px; height: 0px; display: none;\">${contentModules}</div>`;\n }\n\n private _renderSSRModules() {\n return Object.keys(this._iconSSR)\n .map(moduleName => {\n const moduleId = `zova-svg-module-${moduleName}`;\n const contentGroups = this._renderSSRGroups(this._iconSSR[moduleName], moduleName);\n return `<div id=\"${moduleId}\">${contentGroups}</div>`;\n })\n .join('');\n }\n\n private _renderSSRGroups(\n iconSSRGroups: Record<string, Record<string, string>>,\n moduleName: string,\n ) {\n return Object.keys(iconSSRGroups)\n .map(groupName => {\n const groupId = `zova-svg-group-${moduleName}-${groupName}`;\n const contentIcons = this._renderSSRIcons(iconSSRGroups[groupName]);\n return `<svg id=\"${groupId}\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:link=\"http://www.w3.org/1999/xlink\">${contentIcons}</svg>`;\n })\n .join('');\n }\n\n private _renderSSRIcons(iconSSRIcons: Record<string, string>) {\n return Object.keys(iconSSRIcons)\n .map(symbolId => {\n return iconSSRIcons[symbolId];\n })\n .join('');\n }\n\n private _injectIconSSR(meta: IIconMeta) {\n if (process.env.CLIENT) return;\n const iconModule = this.$$sysIcon.getIconModule(meta.module);\n const iconGroup = iconModule[meta.group];\n if (!this._iconSSR[meta.module]) this._iconSSR[meta.module] = {};\n if (!this._iconSSR[meta.module][meta.group]) this._iconSSR[meta.module][meta.group] = {};\n this._iconSSR[meta.module][meta.group][meta.symbolId] = this.$$sysIcon.extractIconContent(\n iconGroup.svg,\n meta.symbolId,\n )!;\n }\n}\n","import { ref, watchEffect } from 'vue';\nimport { sys } from 'zova';\n\nimport type { IIconInfo, IIconRecord } from '../types/icon.js';\n\nexport function $getZovaIcon(iconName?: keyof IIconRecord): IIconInfo | undefined {\n return sys.meta.$icon.parseIconInfoSync(iconName);\n}\n\nexport function $useZovaIcon(iconGetter: () => keyof IIconRecord | undefined) {\n const iconInfo = ref<IIconInfo>();\n\n watchEffect(() => {\n iconInfo.value = $getZovaIcon(iconGetter());\n });\n\n return { iconInfo };\n}\n","import { BeanControllerBase, convertToUnit, isHttpUrl, Use } from 'zova';\nimport { Controller } from 'zova-module-a-bean';\n\nimport { ToolIcon } from '../../bean/tool.icon.js';\nimport { $getZovaIcon } from '../../lib/useZovaIcon.js';\nimport { IIconRecord } from '../../types/icon.js';\n\nexport interface ControllerIconProps {\n name?: keyof IIconRecord;\n href?: string;\n width?: string | number;\n height?: string | number;\n color?: string;\n}\n\n@Controller()\nexport class ControllerIcon extends BeanControllerBase {\n static $propsDefault = {};\n\n @Use()\n $$toolIcon: ToolIcon;\n\n protected async __init__() {\n await this._load();\n }\n\n private async _load() {\n const name = this.$props.name;\n if (name === ('none' as any) || !name) {\n return;\n }\n if (isHttpUrl(name)) {\n return;\n }\n const promise = this.$$toolIcon.parseIconInfo(name);\n if (process.env.SSR) {\n await promise;\n }\n }\n\n protected render() {\n // width/height\n const width = this.$props.width ?? this.$props.height;\n const height = this.$props.height ?? this.$props.width;\n const href = this._parseHref();\n if (isHttpUrl(href) && !href?.endsWith('.svg')) {\n return (\n <img\n class=\"zova-icon__img\"\n style={{\n width: convertToUnit(width),\n height: convertToUnit(height),\n }}\n src={href}\n ></img>\n );\n }\n return (\n <svg\n class=\"zova-icon__svg\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n role=\"img\"\n aria-hidden=\"true\"\n style={{\n width: convertToUnit(width),\n height: convertToUnit(height),\n color: this.$props.color,\n }}\n >\n <use xlinkHref={href}></use>\n </svg>\n );\n }\n\n private _parseHref() {\n let href = this.$props.href;\n const name = this.$props.name;\n if (href) return href;\n if (isHttpUrl(name)) return name;\n // icon info\n const iconInfo = $getZovaIcon(name);\n // href\n href = `#${iconInfo?.symbolId || ''}`;\n return href;\n }\n}\n","import type { TypeControllerInnerProps } from 'zova';\n\nimport { defineComponent } from 'vue';\nimport { prepareComponentOptions, useController } from 'zova';\n\nimport type { ControllerIconProps } from '../../component/icon/controller.jsx';\n\nimport { ControllerIcon } from '../../component/icon/controller.jsx';\nexport type TypeControllerIconPublicProps = {\n controllerRef?: (ref: ControllerIcon) => void;\n} & ControllerIconProps;\n\ntype ControllerInnerProps = TypeControllerInnerProps<\n ControllerIconProps,\n keyof typeof ControllerIcon.$propsDefault\n>;\ndeclare module 'zova-module-a-icon' {\n export interface ControllerIcon {\n $props: ControllerInnerProps;\n }\n}\n\nexport const ZIcon = defineComponent((_props: TypeControllerIconPublicProps) => {\n useController(ControllerIcon, undefined, undefined);\n return () => {};\n}, prepareComponentOptions());\n","import type { IBeanScopeRecord, ZovaSys } from 'zova';\n\nexport const config = (_sys: ZovaSys) => {\n return {\n defaultModule: 'home-icon' as keyof IBeanScopeRecord,\n };\n};\n","import type { IMonkeySysInitialize } from 'zova';\n\nimport { BeanSimple } from 'zova';\n\nimport { SysIcon } from './bean/sys.icon.js';\n\nexport class MonkeySys extends BeanSimple implements IMonkeySysInitialize {\n async sysInitialize() {\n // $icon\n this.sys.meta.$icon = await this.bean._getBean(SysIcon, false);\n }\n}\n","// eslint-disable\n/** sys: begin */\nexport * from '../bean/sys.icon.js';\n\nimport 'zova';\ndeclare module 'zova' {\n \n \n}\ndeclare module 'zova-module-a-icon' {\n \n export interface SysIcon {\n /** @internal */\n get scope(): ScopeModuleAIcon;\n }\n\n export interface SysIcon {\n get $beanFullName(): 'a-icon.sys.icon';\n get $onionName(): 'a-icon:icon';\n \n } \n}\n/** sys: end */\n/** sys: begin */\nimport { SysIcon } from '../bean/sys.icon.js';\nimport 'zova';\ndeclare module 'zova' {\n export interface IBeanRecordGeneral {\n 'a-icon.sys.icon': SysIcon;\n }\n}\n/** sys: end */\n/** tool: begin */\nexport * from '../bean/tool.icon.js';\n\nimport 'zova';\ndeclare module 'zova' {\n \n \n}\ndeclare module 'zova-module-a-icon' {\n \n export interface ToolIcon {\n /** @internal */\n get scope(): ScopeModuleAIcon;\n }\n\n export interface ToolIcon {\n get $beanFullName(): 'a-icon.tool.icon';\n get $onionName(): 'a-icon:icon';\n \n } \n}\n/** tool: end */\n/** tool: begin */\nimport { ToolIcon } from '../bean/tool.icon.js';\nimport 'zova';\ndeclare module 'zova' {\n export interface IBeanRecordGeneral {\n 'a-icon.tool.icon': ToolIcon;\n }\n}\n/** tool: end */\n/** controller: begin */\nexport * from '../component/icon/controller.jsx';\n\nimport 'zova';\ndeclare module 'zova' {\n \n \n}\ndeclare module 'zova-module-a-icon' {\n \n export interface ControllerIcon {\n /** @internal */\n get scope(): ScopeModuleAIcon;\n } \n}\n/** controller: end */\n/** controller: begin */\nimport { ControllerIcon } from '../component/icon/controller.jsx';\nimport 'zova';\ndeclare module 'zova' {\n export interface IBeanRecordLocal {\n 'a-icon.controller.icon': ControllerIcon;\n }\n}\n/** controller: end */\n\n/** components: begin */\nexport * from './component/icon.js';\nimport { ZIcon } from './component/icon.js';\nexport const components = {\n 'icon': ZIcon,\n};\nimport 'zova';\ndeclare module 'zova' {\nexport interface IComponentRecord {\n 'a-icon:icon': ControllerIcon;\n}\nexport interface IZovaComponentRecord {\n 'a-icon:icon': typeof ZIcon;\n}\n}\n/** components: end */\n/** config: begin */\nexport * from '../config/config.js';\nimport { config } from '../config/config.js';\n/** config: end */\n/** monkeySys: begin */\nexport * from '../monkeySys.js';\n/** monkeySys: end */\n/** scope: begin */\nimport { BeanScopeBase, type BeanScopeUtil, TypeModuleConfig } from 'zova';\nimport { Scope } from 'zova-module-a-bean';\n\n@Scope()\nexport class ScopeModuleAIcon extends BeanScopeBase {}\n\nexport interface ScopeModuleAIcon {\n util: BeanScopeUtil;\nconfig: TypeModuleConfig<typeof config>;\n}\n\nimport 'zova';\ndeclare module 'zova' {\n export interface IBeanScopeRecord {\n 'a-icon': ScopeModuleAIcon;\n }\n \n export interface IBeanScopeConfig {\n 'a-icon': ReturnType<typeof config>;\n }\n\n \n\n \n}\n \n/** scope: end */\n","import type { VNode } from 'vue';\n\nimport { createVNode } from 'vue';\n\nimport type { IIconRecord } from '../types/icon.js';\n\nimport { ZIcon } from '../.metadata/index.js';\n\nexport function $icon<K extends keyof IIconRecord>(\n name: K,\n size?: string | number,\n color?: string,\n): VNode {\n return createVNode(ZIcon, {\n name,\n color,\n width: size,\n height: size,\n });\n}\n\nexport function $iconName<K extends keyof IIconRecord>(name: K): K {\n return name;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["BeanControllerBase","convertToUnit","isHttpUrl","Use","Controller","ToolIcon","$getZovaIcon","ControllerIcon","_dec","_dec2","__z_BeanInfo","module","_dec3","_dec4","Reflect","metadata","Object","_class","_class2","_ControllerIcon","constructor","args","_initializerDefineProperty","_descriptor","__init__","_load","name","$props","promise","$$toolIcon","parseIconInfo","process","env","SSR","render","width","height","href","_parseHref","endsWith","_createVNode","color","iconInfo","symbolId","$propsDefault","_applyDecoratedDescriptor","prototype","configurable","enumerable","writable","initializer"],"sources":["../src/lib/iconGroup.ts","../src/bean/sys.icon.ts","../src/bean/tool.icon.ts","../src/lib/useZovaIcon.ts","../src/component/icon/controller.tsx","../src/.metadata/component/icon.ts","../src/config/config.ts","../src/monkeySys.ts","../src/.metadata/index.ts","../src/lib/utils.ts"],"sourcesContent":["import { StateLock } from 'zova';\n\nexport class IconGroup {\n public svg: string | undefined;\n public loaded: StateLock;\n\n constructor() {\n this.loaded = StateLock.create();\n }\n}\n","import { reactive } from 'vue';\nimport { BeanBase } from 'zova';\nimport { Sys } from 'zova-module-a-bean';\n\nimport { IconGroup } from '../lib/iconGroup.js';\nimport { IIconInfo, IIconMeta, TypeIconModules, TypeIconSymbols } from '../types/icon.js';\n\nconst XMLNS = 'http://www.w3.org/2000/svg';\nconst XMLNS_LINK = 'http://www.w3.org/1999/xlink';\n\n@Sys()\nexport class SysIcon extends BeanBase {\n protected _iconSymbols: TypeIconSymbols = reactive({});\n protected _iconMoudles: TypeIconModules = {};\n\n // undefined: ignore\n // '': empty icon\n parseIconInfoSync(iconName?: string): IIconInfo | undefined {\n // parts\n const meta = this.parseIconMeta(iconName);\n if (!meta) return undefined;\n // empty\n const iconEmpty = { meta, symbolId: '' };\n // ok\n const iconOk = { meta, symbolId: meta.symbolId };\n // check if exists\n if (this._iconSymbols[meta.fullName]) return iconOk;\n // check if dom exists\n if (process.env.CLIENT) {\n const domIcon = document.getElementById(meta.symbolId) as unknown as SVGElement;\n if (domIcon) return iconOk;\n }\n // check if exists\n if (this._iconSymbols[meta.fullName] === undefined) {\n this.parseIconInfo(iconName);\n return iconEmpty;\n } else if (this._iconSymbols[meta.fullName] === '') {\n return iconEmpty;\n }\n }\n\n async parseIconInfo(iconName?: string): Promise<IIconInfo | undefined> {\n // parts\n const meta = this.parseIconMeta(iconName);\n if (!meta) return undefined;\n // check if exists\n if (this._iconSymbols[meta.fullName]) {\n return { meta, symbolId: this._iconSymbols[meta.fullName] };\n }\n // pre set\n this._iconSymbols[meta.fullName] = '';\n // icon group\n const iconGroup = await this.parseIconGroup(meta.module, meta.group);\n if (!iconGroup) return undefined;\n // icon inject\n this._injectIconClient(meta);\n const symbolId = (this._iconSymbols[meta.fullName] = meta.symbolId);\n // ok\n return { meta, symbolId };\n }\n\n public async parseIconGroup(moduleName: string, groupName: string): Promise<string | undefined> {\n // check if exists\n const iconModule = this.getIconModule(moduleName);\n if (iconModule[groupName]) {\n await iconModule[groupName].loaded.wait();\n return iconModule[groupName].svg;\n }\n // record\n iconModule[groupName] = new IconGroup();\n // parse\n const svg = await this._parseIconGroupInner(moduleName, groupName);\n // touch\n iconModule[groupName].svg = svg;\n iconModule[groupName].loaded.touch();\n // ok\n return iconModule[groupName].svg;\n }\n\n private async _parseIconGroupInner(\n moduleName: string,\n groupName: string,\n ): Promise<string | undefined> {\n // module\n const module = await this.sys.meta.module.use(moduleName);\n if (!module) return;\n // icons\n const icons = module.resource.icons;\n let groupUrl = icons[groupName];\n if (!groupUrl) return;\n // inline\n if (groupUrl.startsWith('data:image/svg+xml')) throw new Error('inline svg not supported');\n // fetch\n let svg;\n if (process.env.SERVER) {\n // publicPath\n groupUrl = this.sys.util.getPagePathFromAbsoluteUrl(groupUrl);\n const path = await import('node:path');\n const fs = await import('node:fs/promises');\n let filePath: string;\n if (process.env.DEV) {\n filePath = path.join(process.cwd(), groupUrl);\n } else {\n const { fileURLToPath } = await import('node:url');\n const rootFolder = fileURLToPath(new URL(/* @vite-ignore */ '.', import.meta.url));\n filePath = path.join(rootFolder, 'client', groupUrl);\n }\n svg = await fs.readFile(filePath, { encoding: 'utf8' });\n } else {\n const res = await fetch(groupUrl);\n if (!res.ok) return;\n svg = await res.text();\n }\n return svg;\n }\n\n private _injectIconClient(meta: IIconMeta) {\n if (process.env.SERVER) return;\n // client\n const iconModule = this.getIconModule(meta.module);\n const iconGroup = iconModule[meta.group];\n // inject container\n let domContainer = document.getElementById('zova-svg-container');\n if (!domContainer) {\n domContainer = document.createElement('div');\n domContainer.style.position = 'absolute';\n domContainer.style.width = '0';\n domContainer.style.height = '0';\n domContainer.style.display = 'none';\n domContainer.id = 'zova-svg-container';\n document.body.appendChild(domContainer);\n }\n // inject module\n let domModule = document.getElementById(`zova-svg-module-${meta.module}`);\n if (!domModule) {\n domModule = document.createElement('div');\n domModule.id = `zova-svg-module-${meta.module}`;\n domContainer.appendChild(domModule);\n }\n // inject group\n let domGroup = document.getElementById(\n `zova-svg-group-${meta.module}-${meta.group}`,\n ) as unknown as SVGSVGElement;\n if (!domGroup) {\n domGroup = document.createElementNS(XMLNS, 'svg');\n domGroup.id = `zova-svg-group-${meta.module}-${meta.group}`;\n domGroup.setAttribute('xmlns', XMLNS);\n domGroup.setAttribute('xmlns:link', XMLNS_LINK);\n domModule.appendChild(domGroup);\n }\n // inject icon\n const domIcon = document.getElementById(meta.symbolId) as unknown as SVGElement;\n if (!domIcon) {\n const iconContent = this.extractIconContent(iconGroup.svg, meta.symbolId);\n if (iconContent) {\n domGroup.insertAdjacentHTML('beforeend', iconContent);\n }\n }\n }\n\n extractIconContent(svg: string | undefined, symbolId: string) {\n if (!svg) return undefined;\n let pos = svg.indexOf(`'${symbolId}'`);\n if (pos === -1) pos = svg.indexOf(`\"${symbolId}\"`);\n if (pos === -1) return undefined;\n const posB = svg.indexOf('</symbol>', pos);\n const posA = svg.lastIndexOf('<symbol', pos);\n return svg.substring(posA, posB + '</symbol>'.length);\n // const symbolPattern = new RegExp(`<symbol.*?id=['\"]${symbolId}['\"].*?>.*?</symbol>`);\n // const matched = symbolPattern.exec(svg || '');\n // return matched && matched[0];\n }\n\n getIconModule(moduleName: string) {\n if (!this._iconMoudles[moduleName]) {\n this._iconMoudles[moduleName] = {};\n }\n return this._iconMoudles[moduleName];\n }\n\n parseIconMeta(iconName?: string): IIconMeta | undefined {\n if (!iconName) return;\n // split module:group:name\n const parts = iconName.split(':');\n if (parts.length !== 3) {\n return;\n }\n const module = parts[0] || this.scope.config.defaultModule;\n const group = parts[1] || 'default';\n const name = parts[2] || '';\n if (!module.includes('-') || !name) {\n return;\n }\n return {\n module,\n group,\n name,\n fullName: this._getFullName(module, group, name),\n symbolId: this._getSymbolId(module, group, name),\n };\n }\n\n private _getSymbolId(module: string, group: string, name: string) {\n return `zova-svg-icon-${module}-${group}-${name}`;\n }\n\n private _getFullName(module: string, group: string, name: string) {\n return `${module}:${group}:${name}`;\n }\n}\n","import { BeanBase, Use } from 'zova';\nimport { Tool } from 'zova-module-a-bean';\n\nimport { IIconInfo, IIconMeta } from '../types/icon.js';\nimport { SysIcon } from './sys.icon.js';\n\n@Tool()\nexport class ToolIcon extends BeanBase {\n private _iconSSR: Record<string, Record<string, Record<string, string>>> = {};\n\n @Use()\n private $$sysIcon: SysIcon;\n\n protected async __init__() {\n if (process.env.SERVER) {\n this.ctx.meta.$ssr.context.onRendered((err?: Error) => {\n if (err) return;\n this._onRendered();\n });\n }\n }\n\n async parseIconInfo(iconName?: string): Promise<IIconInfo | undefined> {\n const iconInfo = await this.$$sysIcon.parseIconInfo(iconName);\n if (!iconInfo) return iconInfo;\n this._injectIconSSR(iconInfo.meta);\n return iconInfo;\n }\n\n private _onRendered() {\n this.ctx.meta.$ssr.context._meta.bodyTags += this._renderSSRContainer();\n }\n\n private _renderSSRContainer() {\n const contentModules = this._renderSSRModules();\n return `<div id=\"zova-svg-container\" style=\"position: absolute; width: 0px; height: 0px; display: none;\">${contentModules}</div>`;\n }\n\n private _renderSSRModules() {\n return Object.keys(this._iconSSR)\n .map(moduleName => {\n const moduleId = `zova-svg-module-${moduleName}`;\n const contentGroups = this._renderSSRGroups(this._iconSSR[moduleName], moduleName);\n return `<div id=\"${moduleId}\">${contentGroups}</div>`;\n })\n .join('');\n }\n\n private _renderSSRGroups(\n iconSSRGroups: Record<string, Record<string, string>>,\n moduleName: string,\n ) {\n return Object.keys(iconSSRGroups)\n .map(groupName => {\n const groupId = `zova-svg-group-${moduleName}-${groupName}`;\n const contentIcons = this._renderSSRIcons(iconSSRGroups[groupName]);\n return `<svg id=\"${groupId}\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:link=\"http://www.w3.org/1999/xlink\">${contentIcons}</svg>`;\n })\n .join('');\n }\n\n private _renderSSRIcons(iconSSRIcons: Record<string, string>) {\n return Object.keys(iconSSRIcons)\n .map(symbolId => {\n return iconSSRIcons[symbolId];\n })\n .join('');\n }\n\n private _injectIconSSR(meta: IIconMeta) {\n if (process.env.CLIENT) return;\n const iconModule = this.$$sysIcon.getIconModule(meta.module);\n const iconGroup = iconModule[meta.group];\n if (!this._iconSSR[meta.module]) this._iconSSR[meta.module] = {};\n if (!this._iconSSR[meta.module][meta.group]) this._iconSSR[meta.module][meta.group] = {};\n this._iconSSR[meta.module][meta.group][meta.symbolId] = this.$$sysIcon.extractIconContent(\n iconGroup.svg,\n meta.symbolId,\n )!;\n }\n}\n","import { ref, watchEffect } from 'vue';\nimport { sys } from 'zova';\n\nimport type { IIconInfo, IIconRecord } from '../types/icon.js';\n\nexport function $getZovaIcon(iconName?: keyof IIconRecord): IIconInfo | undefined {\n return sys.meta.$icon.parseIconInfoSync(iconName);\n}\n\nexport function $useZovaIcon(iconGetter: () => keyof IIconRecord | undefined) {\n const iconInfo = ref<IIconInfo>();\n\n watchEffect(() => {\n iconInfo.value = $getZovaIcon(iconGetter());\n });\n\n return { iconInfo };\n}\n","import { BeanControllerBase, convertToUnit, isHttpUrl, Use } from 'zova';\nimport { Controller } from 'zova-module-a-bean';\n\nimport { ToolIcon } from '../../bean/tool.icon.js';\nimport { $getZovaIcon } from '../../lib/useZovaIcon.js';\nimport { IIconRecord } from '../../types/icon.js';\n\nexport interface ControllerIconProps {\n name?: keyof IIconRecord;\n href?: string;\n width?: string | number;\n height?: string | number;\n color?: string;\n}\n\n@Controller()\nexport class ControllerIcon extends BeanControllerBase {\n static $propsDefault = {};\n\n @Use()\n $$toolIcon: ToolIcon;\n\n protected async __init__() {\n await this._load();\n }\n\n private async _load() {\n const name = this.$props.name;\n if (name === ('none' as any) || !name) {\n return;\n }\n if (isHttpUrl(name)) {\n return;\n }\n const promise = this.$$toolIcon.parseIconInfo(name);\n if (process.env.SSR) {\n await promise;\n }\n }\n\n protected render() {\n // width/height\n const width = this.$props.width ?? this.$props.height;\n const height = this.$props.height ?? this.$props.width;\n const href = this._parseHref();\n if (isHttpUrl(href) && !href?.endsWith('.svg')) {\n return (\n <img\n class=\"zova-icon__img\"\n style={{\n width: convertToUnit(width),\n height: convertToUnit(height),\n }}\n src={href}\n ></img>\n );\n }\n return (\n <svg\n class=\"zova-icon__svg\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n role=\"img\"\n aria-hidden=\"true\"\n style={{\n width: convertToUnit(width),\n height: convertToUnit(height),\n color: this.$props.color,\n }}\n >\n <use xlinkHref={href}></use>\n </svg>\n );\n }\n\n private _parseHref() {\n let href = this.$props.href;\n const name = this.$props.name;\n if (href) return href;\n if (isHttpUrl(name)) return name;\n // icon info\n const iconInfo = $getZovaIcon(name);\n // href\n href = `#${iconInfo?.symbolId || ''}`;\n return href;\n }\n}\n","import type { TypeControllerInnerProps } from 'zova';\n\nimport { defineComponent } from 'vue';\nimport { prepareComponentOptions, useController } from 'zova';\n\nimport type { ControllerIconProps } from '../../component/icon/controller.jsx';\n\nimport { ControllerIcon } from '../../component/icon/controller.jsx';\nexport type TypeControllerIconPublicProps = {\n controllerRef?: (ref: ControllerIcon) => void;\n} & ControllerIconProps;\n\ntype ControllerInnerProps = TypeControllerInnerProps<\n ControllerIconProps,\n keyof typeof ControllerIcon.$propsDefault\n>;\ndeclare module 'zova-module-a-icon' {\n export interface ControllerIcon {\n $props: ControllerInnerProps;\n }\n}\n\nexport const ZIcon = defineComponent((_props: TypeControllerIconPublicProps) => {\n useController(ControllerIcon, undefined, undefined);\n return () => {};\n}, prepareComponentOptions());\ndeclare module 'zova-module-a-bean' {\n export interface IVonaComponentRecord {\n 'a-icon:icon': ControllerIconProps;\n }\n}\n","import type { IBeanScopeRecord, ZovaSys } from 'zova';\n\nexport const config = (_sys: ZovaSys) => {\n return {\n defaultModule: 'home-icon' as keyof IBeanScopeRecord,\n };\n};\n","import type { IMonkeySysInitialize } from 'zova';\n\nimport { BeanSimple } from 'zova';\n\nimport { SysIcon } from './bean/sys.icon.js';\n\nexport class MonkeySys extends BeanSimple implements IMonkeySysInitialize {\n async sysInitialize() {\n // $icon\n this.sys.meta.$icon = await this.bean._getBean(SysIcon, false);\n }\n}\n","// eslint-disable\n/** sys: begin */\nexport * from '../bean/sys.icon.js';\n\nimport 'zova';\ndeclare module 'zova' {\n \n \n}\ndeclare module 'zova-module-a-icon' {\n \n export interface SysIcon {\n /** @internal */\n get scope(): ScopeModuleAIcon;\n }\n\n export interface SysIcon {\n get $beanFullName(): 'a-icon.sys.icon';\n get $onionName(): 'a-icon:icon';\n \n } \n}\n/** sys: end */\n/** sys: begin */\nimport { SysIcon } from '../bean/sys.icon.js';\nimport 'zova';\ndeclare module 'zova' {\n export interface IBeanRecordGeneral {\n 'a-icon.sys.icon': SysIcon;\n }\n}\n/** sys: end */\n/** tool: begin */\nexport * from '../bean/tool.icon.js';\n\nimport 'zova';\ndeclare module 'zova' {\n \n \n}\ndeclare module 'zova-module-a-icon' {\n \n export interface ToolIcon {\n /** @internal */\n get scope(): ScopeModuleAIcon;\n }\n\n export interface ToolIcon {\n get $beanFullName(): 'a-icon.tool.icon';\n get $onionName(): 'a-icon:icon';\n \n } \n}\n/** tool: end */\n/** tool: begin */\nimport { ToolIcon } from '../bean/tool.icon.js';\nimport 'zova';\ndeclare module 'zova' {\n export interface IBeanRecordGeneral {\n 'a-icon.tool.icon': ToolIcon;\n }\n}\n/** tool: end */\n/** controller: begin */\nexport * from '../component/icon/controller.jsx';\n\nimport 'zova';\ndeclare module 'zova' {\n \n \n}\ndeclare module 'zova-module-a-icon' {\n \n export interface ControllerIcon {\n /** @internal */\n get scope(): ScopeModuleAIcon;\n } \n}\n/** controller: end */\n/** controller: begin */\nimport { ControllerIcon } from '../component/icon/controller.jsx';\nimport 'zova';\ndeclare module 'zova' {\n export interface IBeanRecordLocal {\n 'a-icon.controller.icon': ControllerIcon;\n }\n}\n/** controller: end */\n\n/** components: begin */\nexport * from './component/icon.js';\nimport { ZIcon } from './component/icon.js';\nexport const components = {\n 'icon': ZIcon,\n};\nimport 'zova';\ndeclare module 'zova' {\nexport interface IComponentRecord {\n 'a-icon:icon': ControllerIcon;\n}\nexport interface IZovaComponentRecord {\n 'a-icon:icon': typeof ZIcon;\n}\n}\n/** components: end */\n/** config: begin */\nexport * from '../config/config.js';\nimport { config } from '../config/config.js';\n/** config: end */\n/** monkeySys: begin */\nexport * from '../monkeySys.js';\n/** monkeySys: end */\n/** scope: begin */\nimport { BeanScopeBase, type BeanScopeUtil, TypeModuleConfig } from 'zova';\nimport { Scope } from 'zova-module-a-bean';\n\n@Scope()\nexport class ScopeModuleAIcon extends BeanScopeBase {}\n\nexport interface ScopeModuleAIcon {\n util: BeanScopeUtil;\nconfig: TypeModuleConfig<typeof config>;\n}\n\nimport 'zova';\ndeclare module 'zova' {\n export interface IBeanScopeRecord {\n 'a-icon': ScopeModuleAIcon;\n }\n \n export interface IBeanScopeConfig {\n 'a-icon': ReturnType<typeof config>;\n }\n\n \n\n \n}\n \n/** scope: end */\n","import type { VNode } from 'vue';\n\nimport { createVNode } from 'vue';\n\nimport type { IIconRecord } from '../types/icon.js';\n\nimport { ZIcon } from '../.metadata/index.js';\n\nexport function $icon<K extends keyof IIconRecord>(\n name: K,\n size?: string | number,\n color?: string,\n): VNode {\n return createVNode(ZIcon, {\n name,\n color,\n width: size,\n height: size,\n });\n}\n\nexport function $iconName<K extends keyof IIconRecord>(name: K): K {\n return name;\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED
package/rest/components.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from '
|
|
1
|
+
export * from 'zova-module-a-icon';
|
|
@@ -24,3 +24,8 @@ export const ZIcon = defineComponent((_props: TypeControllerIconPublicProps) =>
|
|
|
24
24
|
useController(ControllerIcon, undefined, undefined);
|
|
25
25
|
return () => {};
|
|
26
26
|
}, prepareComponentOptions());
|
|
27
|
+
declare module 'zova-module-a-bean' {
|
|
28
|
+
export interface IVonaComponentRecord {
|
|
29
|
+
'a-icon:icon': ControllerIconProps;
|
|
30
|
+
}
|
|
31
|
+
}
|
package/rest/component/icon.ts
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import type { TypeRenderComponentJsxPropsPublic } from 'zova-jsx';
|
|
2
|
-
import type { ControllerIconProps } from 'zova-module-a-icon';
|
|
3
|
-
|
|
4
|
-
type TypeControllerIconPublicProps = TypeRenderComponentJsxPropsPublic & ControllerIconProps;
|
|
5
|
-
export function BBZIcon(_props: TypeControllerIconPublicProps) {
|
|
6
|
-
return 'a-icon:icon';
|
|
7
|
-
}
|