// AnyXML Type Declarations // AnyXML => AX /** 打包生成的最终文件,保存在 `dist` 文件夹下 */ export interface AnyXML { common: AXCommon, elements: AXElement[] } export interface AXCommonConfig { /** 相关文档链接 */ doc?: string /** * 输入此关键字时,会出现下文指定的 attrs 属性。 */ trigger?: {key: string, description: string}[] /** * 指定的元素上不会出现这里列出的属性。 */ exclude?: string[] /** * 属性值后面是否需要值,指定此项为 true,则注入属性名后,不会出现 `=""`。 * * 适用于 `a:else` 属性。 * * > 子属性可以覆盖此值,编译之后的文件会将此属性自动迁移到 attr 中 */ noValue?: false /** * 注入属性名称后出现的后续内容,支持配置 vscode 模板字符串。 * * 如果不指定一般默认会注入 `"$1"`,针对一些支持表达式的地方可以配置成 `"{{ ${1:expression} }}"`。 * * > 子属性可以覆盖此值,编译之后的文件会将此属性自动迁移到 attr 中 */ snipValue?: string /** 属性集合 */ attrs: AXElementAttr[] } /** 全局的一些通用属性配置 */ export interface AXCommon { /** 基础属性配置,主要指 style、class 这种基本所有标签都支持的属性 */ base?: AXCommonConfig, /** 控制器相关的属性配置,主要指 a:if a:for 这类属性 */ control?: AXCommonConfig, /** 事件相关的属性配置 */ event?: AXCommonConfig } /** 组件 */ export interface AXElement { /** 组件名称 */ name: string /** 组件描述,支持 markdown 语法 */ description?: MarkdownString /** 组件支持配置的属性 */ attrs: AXElementAttr[] /** 微信中专用的属性 */ wechat?: WechatProps } /** 属性 */ export interface AXElementAttr { /** 属性名称 */ name: string /** 属性类型 */ type?: string /** 是否必填 */ required?: boolean /** 属性默认值 */ defaultValue?: any /** 支持此属性的最底基础库版本号 */ versionRequirement?: string /** 属性描述,支持 markdown 语法 */ description?: MarkdownString /** 属性对应的枚举值列表 */ enumValues?: AXElementAttrEnumValue[] // 插件特有属性 /** 当前属性是否需要值,如 `a:else` 属性,完全不需要提供值。主要用于告诉插件不要出补全 */ noValue?: boolean /** 写完属性名称后出现的后续内容,如果不指定一般默认会注入 `"$1"`。主要用于告诉插件要出什么样的补全 */ snipValue?: string /** 只在原生的组件中才出现此属性(主要用在 common 属性配置中) */ onlyForNative?: boolean /** 微信中专用的属性 */ wechat?: WechatProps } /** 属性枚举值 */ export interface AXElementAttrEnumValue { /** 属性对应的枚举值 */ value: any /** 支持此属性值的最底基础库版本号 */ versionRequirement?: string /** 属性值描述 */ description?: MarkdownString } export type MarkdownString = string /** 微信中专用的属性 */ export interface WechatProps { /** 是否是 Skyline 特有属性 */ isSkylineOnly?: boolean /** 是否是 webview 特有属性 */ isWebviewOnly?: boolean }