@tarojs/plugin-framework-solid 4.0.0-beta.83 → 4.0.0-beta.84
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.
- package/LICENSE +7 -0
- package/README.md +2 -2
- package/package.json +25 -26
- package/dist/api-loader.js +0 -84
- package/dist/api-loader.js.map +0 -1
- package/dist/index.js +0 -821
- package/dist/index.js.map +0 -1
- package/dist/reconciler.js +0 -347
- package/dist/reconciler.js.map +0 -1
- package/dist/runtime.js +0 -1165
- package/dist/runtime.js.map +0 -1
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/api-loader.ts","../src/loader-meta.ts","../src/vite.h5.ts","../src/vite.harmony.ts","../src/vite.mini.ts","../src/webpack.h5.ts","../src/webpack.harmony.ts","../src/webpack.mini.ts","../src/index.ts"],"sourcesContent":["export default function (str: string) {\n return `import {\n useAddToFavorites,\n useDidHide,\n useDidShow,\n useError,\n useLaunch,\n useLoad,\n useOptionMenuClick,\n usePageNotFound,\n usePageScroll,\n usePullDownRefresh,\n usePullIntercept,\n useReachBottom,\n useReady,\n useResize,\n useRouter,\n useSaveExitState,\n useShareAppMessage,\n useShareTimeline,\n useTabItemTap,\n useTitleClick,\n useScope,\n useUnhandledRejection,\n useUnload\n} from '@tarojs/plugin-framework-react/dist/runtime'\n${str}\n\ntaro.useAddToFavorites = useAddToFavorites\ntaro.useDidHide = useDidHide\ntaro.useDidShow = useDidShow\ntaro.useError = useError\ntaro.useLaunch = useLaunch\ntaro.useLoad = useLoad\ntaro.useOptionMenuClick = useOptionMenuClick\ntaro.usePageNotFound = usePageNotFound\ntaro.usePageScroll = usePageScroll\ntaro.usePullDownRefresh = usePullDownRefresh\ntaro.usePullIntercept = usePullIntercept\ntaro.useReachBottom = useReachBottom\ntaro.useReady = useReady\ntaro.useResize = useResize\ntaro.useRouter = useRouter\ntaro.useSaveExitState = useSaveExitState\ntaro.useShareAppMessage = useShareAppMessage\ntaro.useShareTimeline = useShareTimeline\ntaro.useTabItemTap = useTabItemTap\ntaro.useTitleClick = useTitleClick\ntaro.useScope = useScope\ntaro.useUnhandledRejection = useUnhandledRejection\ntaro.useUnload = useUnload\n\nexport {\n useAddToFavorites,\n useDidHide,\n useDidShow,\n useError,\n useLaunch,\n useLoad,\n useOptionMenuClick,\n usePageNotFound,\n usePageScroll,\n usePullDownRefresh,\n usePullIntercept,\n useReachBottom,\n useReady,\n useResize,\n useRouter,\n useSaveExitState,\n useShareAppMessage,\n useShareTimeline,\n useTabItemTap,\n useTitleClick,\n useScope,\n useUnhandledRejection,\n useUnload\n}\n`\n}\n","import * as acorn from 'acorn'\nimport * as walk from 'acorn-walk'\n\nimport { Frameworks } from './index'\n\nimport type { ILoaderMeta } from '@tarojs/taro/types/compile/config/plugin'\n\nfunction addConfig (source) {\n const configsMap = {\n enableShareAppMessage: ['onShareAppMessage', 'useShareAppMessage'],\n enableShareTimeline: ['onShareTimeline', 'useShareTimeline']\n }\n const ast = acorn.parse(source, {\n ecmaVersion: 'latest',\n sourceType: 'module'\n })\n\n const additionConfig: Record<string, any> = {}\n\n function check (name: string) {\n Object.keys(configsMap).forEach(configName => {\n const apis: string[] = configsMap[configName]\n if (apis.includes(name)) {\n additionConfig[configName] = true\n }\n })\n }\n\n walk.simple(ast, {\n FunctionExpression (node: any) {\n if (!node.id || !node.id.name) return\n check(node.id.name)\n },\n FunctionDeclaration (node: any) {\n if (!node.id || !node.id.name) return\n check(node.id.name)\n },\n CallExpression (node: any) {\n const { callee } = node\n if (callee.type === 'Identifier') {\n check(callee.name)\n } else if (callee.type === 'MemberExpression') {\n if (callee.property.type === 'Identifier') {\n check(callee.property.name)\n } else if (callee.property.type === 'Literal') {\n check(callee.property.value)\n }\n }\n node.arguments.forEach(item => {\n if (item.type === 'Literal' && item.value) {\n check(item.value)\n }\n })\n }\n })\n\n return additionConfig\n}\n\nexport function getLoaderMeta (framework: Frameworks): ILoaderMeta {\n const loaderMeta = {\n importFrameworkStatement: `\nimport * as React from 'react'\nimport ReactDOM from 'react-dom'\n`,\n mockAppStatement: `\nclass App extends React.Component {\n render () {\n return this.props.children\n }\n}\n`,\n frameworkArgs: 'React, ReactDOM, config',\n creator: 'createReactApp',\n creatorLocation: '@tarojs/plugin-framework-react/dist/runtime',\n importFrameworkName: 'React',\n extraImportForWeb: '',\n execBeforeCreateWebApp: '',\n modifyConfig (config, source) {\n Object.assign(config, addConfig(source))\n }\n }\n\n if (framework === 'solid') {\n Object.assign(loaderMeta, {\n creator: 'createSolidApp',\n frameworkArgs: 'config',\n importFrameworkStatement: '',\n importFrameworkName: '',\n mockAppStatement: `\nfunction App(props) {\n return null\n}\n`,\n })\n }\n\n if (process.env.TARO_PLATFORM === 'web') {\n if (framework === 'react') {\n const react = require('react')\n const majorVersion = Number((react.version || '18').split('.')[0])\n if (majorVersion >= 18) {\n // Note: In react 18 or above, should using react-dom/client\n loaderMeta.importFrameworkStatement = loaderMeta.importFrameworkStatement.replace('\\'react-dom\\'', '\\'react-dom/client\\'')\n loaderMeta.extraImportForWeb += `import { findDOMNode, render, unstable_batchedUpdates } from 'react-dom'\\n`\n loaderMeta.execBeforeCreateWebApp += `Object.assign(ReactDOM, { findDOMNode, render, unstable_batchedUpdates })\\n`\n }\n }\n }\n return loaderMeta\n}\n","import { fs, REG_TARO_H5_RUNTIME_API } from '@tarojs/helper'\nimport { mergeWith } from 'lodash'\n\nimport apiLoader from './api-loader'\nimport { getLoaderMeta } from './loader-meta'\n\nimport type { IPluginContext } from '@tarojs/service'\nimport type { PluginOption } from 'vite'\nimport type { Frameworks } from './index'\n\nexport function h5iVitePlugin (ctx: IPluginContext, framework: Frameworks): PluginOption {\n return [\n injectLoaderMeta(ctx, framework),\n setTaroApi(),\n esbuildExclude(framework)\n ]\n}\n\nfunction injectLoaderMeta (ctx: IPluginContext, framework: Frameworks): PluginOption {\n function customizer (object = '', sources = '') {\n if ([object, sources].every(e => typeof e === 'string')) return object + sources\n }\n const { runnerUtils } = ctx\n const { getViteH5CompilerContext } = runnerUtils\n return {\n name: 'taro-react:loader-meta',\n async buildStart () {\n const viteCompilerContext = await getViteH5CompilerContext(this)\n if (viteCompilerContext) {\n viteCompilerContext.loaderMeta = mergeWith(\n getLoaderMeta(framework), viteCompilerContext.loaderMeta, customizer\n )\n }\n }\n }\n}\n\nfunction setTaroApi (): PluginOption {\n // dev 环境通过 esbuild 来做; pro 环境通过 rollup load 钩子来做;因为生产环境不会走 esbuild\n return {\n name: 'taro-react:process-import-taro',\n enforce: 'pre',\n config: () => ({\n optimizeDeps: {\n esbuildOptions: {\n plugins: [\n {\n name: 'taro:react-api',\n setup (build) {\n build.onLoad({ filter: REG_TARO_H5_RUNTIME_API }, async (args) => {\n const input = await fs.readFile(args.path, 'utf8')\n return {\n contents: apiLoader(input + '\\n' + 'const taro = Taro__default\\n')\n }\n })\n },\n }\n ]\n }\n },\n }),\n async load (id) {\n if (process.env.NODE_ENV === 'production' && REG_TARO_H5_RUNTIME_API.test(id)) {\n try {\n const input = await fs.readFile(id, 'utf8')\n return apiLoader(input + '\\n' + 'const taro = Taro__default\\n')\n } catch (_) {\n return null\n }\n }\n }\n }\n}\n\n// todo 后面看看能否把 preact 改为虚拟模块\nfunction esbuildExclude (framework: Frameworks): PluginOption {\n if (framework !== 'preact') return null\n return {\n name: 'taro-react:esvuild-exclude',\n enforce: 'pre',\n config: () => ({\n optimizeDeps: {\n exclude: ['react', 'preact', 'solid-js']\n }\n })\n }\n}\n","import { defaultMainFields, fs, resolveSync } from '@tarojs/helper'\n\nimport { getLoaderMeta } from './loader-meta'\n\nimport type { IPluginContext } from '@tarojs/service'\nimport type { PluginOption } from 'vite'\nimport type { Frameworks } from './index'\n\nexport function harmonyVitePlugin (ctx: IPluginContext, framework: Frameworks): PluginOption {\n return [\n injectLoaderMeta(ctx, framework),\n aliasPlugin(ctx, framework),\n ]\n}\n\nfunction injectLoaderMeta (ctx: IPluginContext, framework: Frameworks): PluginOption {\n return {\n name: 'taro-react:loader-meta',\n buildStart () {\n const { runnerUtils } = ctx\n const { getViteHarmonyCompilerContext } = runnerUtils\n const viteCompilerContext = getViteHarmonyCompilerContext(this)\n if (viteCompilerContext) {\n viteCompilerContext.loaderMeta = getLoaderMeta(framework)\n }\n }\n }\n}\n\nfunction aliasPlugin (ctx: IPluginContext, framework: Frameworks): PluginOption {\n if (framework === 'react') {\n return {\n name: 'taro-react:alias',\n config (config) {\n const alias: ({ find: string | RegExp, replacement: string })[] = [\n { find: /react-dom$/, replacement: '@tarojs/react' },\n ]\n\n const mainFields = ['unpkg', ...defaultMainFields]\n const resolveOptions = {\n basedir: process.cwd(),\n mainFields,\n }\n const isProd = config.mode === 'production'\n // TODO:harmony 目前会导致部分包用 production 版本,部分用 development 版本,导致许多 api 报错\n const isHarmony = ctx.runOpts.options.platform === 'harmony'\n if (!isProd && ctx.initialConfig.harmony?.debugReact !== true && !isHarmony) {\n // 不是生产环境,且没有设置 debugReact,则使用压缩版本的 react 依赖,减少体积\n alias.push({ find: /react-reconciler$/, replacement: 'react-reconciler/cjs/react-reconciler.production.min.js' })\n alias.push({ find: /react$/, replacement: 'react/cjs/react.production.min.js' })\n alias.push({ find: /scheduler$/, replacement: 'scheduler/cjs/scheduler.production.min.js' })\n alias.push({ find: /react\\/jsx-runtime$/, replacement: 'react/cjs/react-jsx-runtime.production.min.js' })\n\n // 在React18中,使用了exports字段约定了模块暴露路径,其中并未暴露 ./cjs/ 。这将使上面的alias在编译时报错。相当的tricky。\n // Why writeJson? prebundle will load package.json via readFile to check exports property.\n const reactPkgPath = resolveSync('react/package.json', resolveOptions)\n if (reactPkgPath) {\n const reactPkg = require('react/package.json')\n const reactVersion = (reactPkg.version || '')\n if ((/^[~^]?18/).test(reactVersion) && reactPkg.exports) {\n reactPkg.exports = Object.assign(reactPkg.exports, {\n './cjs/': './cjs/'\n })\n fs.writeJsonSync(reactPkgPath, reactPkg, { spaces: 2 })\n }\n }\n }\n\n return {\n resolve: {\n alias\n }\n }\n }\n }\n } else if (framework === 'solid') {\n return {\n name: 'taro-solid:alias',\n config () {\n const reconcilerName = '@tarojs/plugin-framework-react/dist/reconciler'\n const alias = [\n { find: 'solid-js/web', replacement: reconcilerName },\n { find: 'react/jsx-runtime', replacement: reconcilerName },\n ]\n\n return {\n resolve: {\n alias\n }\n }\n }\n }\n }\n return []\n}\n","import { defaultMainFields, fs, resolveSync } from '@tarojs/helper'\n\nimport { getLoaderMeta } from './loader-meta'\n\nimport type { IPluginContext } from '@tarojs/service'\nimport type { PluginOption } from 'vite'\nimport type { Frameworks } from './index'\n\nexport function miniVitePlugin (ctx: IPluginContext, framework: Frameworks): PluginOption {\n return [\n injectLoaderMeta(ctx, framework),\n aliasPlugin(ctx, framework),\n ]\n}\n\nfunction injectLoaderMeta (ctx: IPluginContext, framework: Frameworks): PluginOption {\n return {\n name: 'taro-react:loader-meta',\n buildStart () {\n const { runnerUtils } = ctx\n const { getViteMiniCompilerContext } = runnerUtils\n const viteCompilerContext = getViteMiniCompilerContext(this)\n if (viteCompilerContext) {\n viteCompilerContext.loaderMeta = getLoaderMeta(framework)\n }\n }\n }\n}\n\nfunction aliasPlugin (ctx: IPluginContext, framework: Frameworks): PluginOption {\n if (framework === 'react') {\n return {\n name: 'taro-react:alias',\n config (config) {\n const alias: ({ find: string | RegExp, replacement: string })[] = [\n { find: /react-dom$/, replacement: '@tarojs/react' }\n ]\n\n const mainFields = ['unpkg', ...defaultMainFields]\n const resolveOptions = {\n basedir: process.cwd(),\n mainFields,\n }\n const isProd = config.mode === 'production'\n // TODO:harmony 目前会导致部分包用 production 版本,部分用 development 版本,导致许多 api 报错\n const isHarmony = ctx.runOpts.options.platform === 'harmony'\n if (!isProd && ctx.initialConfig.mini?.debugReact !== true && !isHarmony) {\n // 不是生产环境,且没有设置 debugReact,则使用压缩版本的 react 依赖,减少体积\n alias.push({ find: /react-reconciler$/, replacement: 'react-reconciler/cjs/react-reconciler.production.min.js' })\n alias.push({ find: /^(?!.*mobx-react$).*react$/, replacement: 'react/cjs/react.production.min.js' })\n alias.push({ find: /scheduler$/, replacement: 'scheduler/cjs/scheduler.production.min.js' })\n alias.push({ find: /react\\/jsx-runtime$/, replacement: 'react/cjs/react-jsx-runtime.production.min.js' })\n\n // 在React18中,使用了exports字段约定了模块暴露路径,其中并未暴露 ./cjs/ 。这将使上面的alias在编译时报错。相当的tricky。\n // Why writeJson? prebundle will load package.json via readFile to check exports property.\n const reactPkgPath = resolveSync('react/package.json', resolveOptions)\n if (reactPkgPath) {\n const reactPkg = require('react/package.json')\n const reactVersion = (reactPkg.version || '')\n if ((/^[~^]?18/).test(reactVersion) && reactPkg.exports) {\n reactPkg.exports = Object.assign(reactPkg.exports, {\n './cjs/': './cjs/'\n })\n fs.writeJsonSync(reactPkgPath, reactPkg, { spaces: 2 })\n }\n }\n }\n\n return {\n resolve: {\n alias\n }\n }\n }\n }\n } else if (framework === 'solid') {\n return {\n name: 'taro-solid:alias',\n config () {\n const reconcilerName = '@tarojs/plugin-framework-react/dist/reconciler'\n const alias = [\n { find: 'solid-js/web', replacement: reconcilerName },\n { find: 'react/jsx-runtime', replacement: reconcilerName },\n ]\n\n return {\n resolve: {\n alias\n }\n }\n }\n }\n }\n return []\n}\n","import { defaultMainFields, REG_TARO_H5, resolveSync } from '@tarojs/helper'\nimport { mergeWith } from 'lodash'\n\nimport { getLoaderMeta } from './loader-meta'\n\nimport type { IPluginContext } from '@tarojs/service'\nimport type Chain from 'webpack-chain'\nimport type { Frameworks } from './index'\n\nexport function modifyH5WebpackChain (ctx: IPluginContext, framework: Frameworks, chain: Chain) {\n setLoader(framework, chain)\n setPlugin(ctx, framework, chain)\n\n const { isBuildNativeComp = false } = ctx.runOpts?.options || {}\n const externals: Record<string, { [externalType: string]: string } | string> = {}\n if (isBuildNativeComp) {\n // Note: 该模式不支持 prebundle 优化,不必再处理\n externals.react = {\n commonjs: 'react',\n commonjs2: 'react',\n amd: 'react',\n root: 'React'\n }\n externals['react-dom'] = {\n commonjs: 'react-dom',\n commonjs2: 'react-dom',\n amd: 'react-dom',\n root: 'ReactDOM'\n }\n if (framework === 'preact') {\n externals.preact = 'preact'\n }\n\n chain.merge({\n externalsType: 'umd'\n })\n }\n\n chain.merge({\n externals,\n module: {\n rule: {\n 'process-import-taro-h5': {\n test: REG_TARO_H5,\n loader: require.resolve('./api-loader'),\n },\n },\n },\n })\n\n chain.merge({\n externals,\n module: {\n rule: {\n 'process-import-taro-harmony-hybrid': {\n test: /taro-platform-harmony-hybrid[\\\\/]dist[\\\\/]api[\\\\/]apis[\\\\/]taro/,\n loader: require.resolve('./api-loader')\n }\n }\n },\n })\n\n chain.merge({\n externals,\n module: {\n rule: {\n 'process-import-taro-harmony-hybrid': {\n test: /taro-platform-harmony-hybrid[\\\\/]dist[\\\\/]api[\\\\/]apis[\\\\/]taro/,\n loader: require.resolve('./api-loader')\n }\n }\n },\n })\n}\n\nfunction setLoader(framework: Frameworks, chain) {\n function customizer(object = '', sources = '') {\n if ([object, sources].every((e) => typeof e === 'string')) return object + sources\n }\n chain.plugin('mainPlugin').tap((args) => {\n args[0].loaderMeta = mergeWith(getLoaderMeta(framework), args[0].loaderMeta, customizer)\n return args\n })\n}\n\nfunction setPlugin(ctx: IPluginContext, framework: Frameworks, chain) {\n const config = ctx.initialConfig\n const webpackConfig = chain.toConfig()\n const isProd = webpackConfig.mode === 'production'\n if (!isProd && config.h5?.devServer?.hot !== false) {\n // 默认开启 fast-refresh\n if (framework === 'react') {\n chain.plugin('fastRefreshPlugin').use(require('@pmmmwh/react-refresh-webpack-plugin'))\n } else if (framework === 'preact') {\n chain.plugin('hotModuleReplacementPlugin').use(require('webpack').HotModuleReplacementPlugin)\n chain.plugin('fastRefreshPlugin').use(require('@prefresh/webpack'))\n }\n }\n\n const mainFields = ['unpkg', ...defaultMainFields]\n const resolveOptions = {\n basedir: process.cwd(),\n mainFields,\n }\n if (framework === 'solid') {\n const reconcilerName = '@tarojs/plugin-framework-react/dist/reconciler'\n const alias = chain.resolve.alias\n alias.set(reconcilerName, resolveSync('solid-js/web', resolveOptions))\n // Note: 本地 link 调试时,避免 solid 重复打包\n alias.set('solid-js$', resolveSync('solid-js', resolveOptions))\n } else if (framework === 'react') {\n const alias = chain.resolve.alias\n // Note: 本地 link 调试时,避免 react 重复打包\n alias.set('react$', resolveSync('react', resolveOptions))\n }\n}\n","import path from 'node:path'\n\nimport { defaultMainFields, fs, resolveSync } from '@tarojs/helper'\n\nimport { getLoaderMeta } from './loader-meta'\n\nimport type { IPluginContext } from '@tarojs/service'\nimport type { Frameworks } from './index'\n\nexport function modifyHarmonyWebpackChain (ctx: IPluginContext, framework: Frameworks, chain) {\n setAlias(ctx, framework, chain)\n setLoader(framework, chain)\n}\n\nfunction setAlias (ctx: IPluginContext, framework: Frameworks, chain) {\n const config = ctx.initialConfig\n const alias = chain.resolve.alias\n\n const mainFields = ['unpkg', ...defaultMainFields]\n const resolveOptions = {\n basedir: process.cwd(),\n mainFields,\n }\n if (framework === 'react') {\n alias.set('react-dom$', '@tarojs/react')\n alias.set('react-dom/client$', '@tarojs/react')\n const webpackConfig = chain.toConfig()\n const isProd = webpackConfig.mode === 'production'\n if (!isProd && config.harmony?.debugReact !== true) {\n // 不是生产环境,且没有设置 debugReact,则使用压缩版本的 react 依赖,减少体积\n // 兼容pnpm workspace\n const reactModulePath = resolveSync('react', resolveOptions)!\n const newFilePath = path.join(path.dirname(reactModulePath), 'cjs', 'react.production.min.js')\n\n alias.set('react-reconciler$', 'react-reconciler/cjs/react-reconciler.production.min.js')\n alias.set('react$', newFilePath)\n alias.set('react/jsx-runtime$', 'react/cjs/react-jsx-runtime.production.min.js')\n\n // 在React18中,使用了exports字段约定了模块暴露路径,其中并未暴露 ./cjs/ 。这将使上面的alias在编译时报错。相当的tricky。\n // Why writeJson? prebundle will load package.json via readFile to check exports property.\n const reactPkgPath = resolveSync('react/package.json', resolveOptions)\n if (reactPkgPath) {\n const reactPkg = require('react/package.json')\n const reactVersion = reactPkg.version || ''\n if (/^[~^]?18/.test(reactVersion) && reactPkg.exports) {\n reactPkg.exports = Object.assign(reactPkg.exports, {\n './cjs/': './cjs/',\n })\n fs.writeJsonSync(reactPkgPath, reactPkg, { spaces: 2 })\n }\n }\n }\n } else if (framework === 'solid') {\n const reconcilerName = '@tarojs/plugin-framework-react/dist/reconciler'\n alias.set('solid-js/web', reconcilerName)\n alias.set('react/jsx-runtime', reconcilerName)\n }\n}\n\nfunction setLoader (framework: Frameworks, chain) {\n chain.plugin('mainPlugin').tap((args) => {\n args[0].loaderMeta = getLoaderMeta(framework)\n return args\n })\n}\n","import path from 'node:path'\n\nimport { defaultMainFields, fs, resolveSync } from '@tarojs/helper'\n\nimport { getLoaderMeta } from './loader-meta'\n\nimport type { IPluginContext } from '@tarojs/service'\nimport type { Frameworks } from './index'\n\nexport function modifyMiniWebpackChain (ctx: IPluginContext, framework: Frameworks, chain) {\n setAlias(ctx, framework, chain)\n setLoader(framework, chain)\n}\n\nfunction setAlias (ctx: IPluginContext, framework: Frameworks, chain) {\n const config = ctx.initialConfig\n const alias = chain.resolve.alias\n\n const mainFields = ['unpkg', ...defaultMainFields]\n const resolveOptions = {\n basedir: process.cwd(),\n mainFields,\n }\n if (framework === 'react') {\n alias.set('react-dom$', '@tarojs/react')\n alias.set('react-dom/client$', '@tarojs/react')\n const webpackConfig = chain.toConfig()\n const isProd = webpackConfig.mode === 'production'\n if (!isProd && config.mini?.debugReact !== true) {\n // 不是生产环境,且没有设置 debugReact,则使用压缩版本的 react 依赖,减少体积\n // 兼容pnpm workspace\n const reactModulePath = resolveSync('react', resolveOptions)!\n const newFilePath = path.join(path.dirname(reactModulePath), 'cjs', 'react.production.min.js')\n\n alias.set('react-reconciler$', 'react-reconciler/cjs/react-reconciler.production.min.js')\n alias.set(/^(?!.*mobx-react$).*react$/, newFilePath)\n alias.set('react/jsx-runtime$', 'react/cjs/react-jsx-runtime.production.min.js')\n\n // 在React18中,使用了exports字段约定了模块暴露路径,其中并未暴露 ./cjs/ 。这将使上面的alias在编译时报错。相当的tricky。\n // Why writeJson? prebundle will load package.json via readFile to check exports property.\n const reactPkgPath = resolveSync('react/package.json', resolveOptions)\n if (reactPkgPath) {\n const reactPkg = require('react/package.json')\n const reactVersion = reactPkg.version || ''\n if (/^[~^]?18/.test(reactVersion) && reactPkg.exports) {\n reactPkg.exports = Object.assign(reactPkg.exports, {\n './cjs/': './cjs/',\n })\n fs.writeJsonSync(reactPkgPath, reactPkg, { spaces: 2 })\n }\n }\n }\n } else if (framework === 'solid') {\n const reconcilerName = '@tarojs/plugin-framework-react/dist/reconciler'\n alias.set('solid-js/web', reconcilerName)\n // Note: 本地 link 调试时,避免 solid 重复打包\n alias.set('solid-js$', resolveSync('solid-js', resolveOptions))\n }\n}\n\nfunction setLoader (framework: Frameworks, chain) {\n chain.plugin('miniPlugin').tap((args) => {\n args[0].loaderMeta = getLoaderMeta(framework)\n return args\n })\n}\n","import { fs, REG_TARO_H5 } from '@tarojs/helper'\nimport { isString } from '@tarojs/shared'\n\nimport { h5iVitePlugin } from './vite.h5'\nimport { harmonyVitePlugin } from './vite.harmony'\nimport { miniVitePlugin } from './vite.mini'\nimport { modifyH5WebpackChain } from './webpack.h5'\nimport { modifyHarmonyWebpackChain } from './webpack.harmony'\nimport { modifyMiniWebpackChain } from './webpack.mini'\n\nimport type { esbuild } from '@tarojs/helper'\nimport type { IPluginContext } from '@tarojs/service'\nimport type { IProjectConfig } from '@tarojs/taro/types/compile'\nimport type { PluginOption } from 'vite'\n\nexport type Frameworks = 'react' | 'preact' | 'solid' | 'vue3'\n\nexport function isReactLike(framework: IProjectConfig['framework'] = 'react'): framework is Frameworks {\n return ['react', 'preact', 'solid'].includes(framework)\n}\n\nexport default (ctx: IPluginContext) => {\n const { framework = 'react' } = ctx.initialConfig\n\n if (!isReactLike(framework)) return\n\n ctx.modifyWebpackChain(({ chain }) => {\n // 通用\n setAlias(framework, chain)\n\n if (process.env.TARO_PLATFORM === 'web') {\n // H5\n modifyH5WebpackChain(ctx, framework, chain)\n } else if (process.env.TARO_PLATFORM === 'harmony' || process.env.TARO_ENV === 'harmony') {\n // 鸿蒙\n modifyHarmonyWebpackChain(ctx, framework, chain)\n } else {\n // 小程序\n modifyMiniWebpackChain(ctx, framework, chain)\n }\n })\n\n ctx.modifyRunnerOpts(({ opts }) => {\n if (!opts?.compiler) return\n\n if (isString(opts.compiler)) {\n opts.compiler = {\n type: opts.compiler,\n }\n }\n\n const { compiler } = opts\n if (compiler.type === 'webpack5') {\n // 提供给 webpack5 依赖预编译收集器的第三方依赖\n const deps = ['react', 'react-dom', 'react/jsx-runtime', '@tarojs/plugin-framework-react/dist/runtime']\n compiler.prebundle ||= {}\n const prebundleOptions = compiler.prebundle\n prebundleOptions.include ||= []\n prebundleOptions.include = prebundleOptions.include.concat(deps)\n prebundleOptions.exclude ||= []\n prebundleOptions.exclude.push(/mobx/) // 依赖会对 webpack 修改,默认排除\n if (prebundleOptions.enable === false) return\n\n const taroReactPlugin: esbuild.Plugin = {\n name: 'taroReactPlugin',\n setup(build) {\n build.onLoad({ filter: REG_TARO_H5 }, ({ path }) => {\n const content = fs.readFileSync(path).toString()\n return {\n contents: require('./api-loader')(content),\n }\n })\n build.onLoad({ filter: /taro-platform-harmony-hybrid[\\\\/]dist[\\\\/]api[\\\\/]apis[\\\\/]taro/ }, ({ path }) => {\n const content = fs.readFileSync(path).toString()\n return {\n contents: require('./api-loader')(content)\n }\n })\n },\n }\n\n prebundleOptions.esbuild ||= {}\n const esbuildConfig = prebundleOptions.esbuild\n esbuildConfig.plugins ||= []\n esbuildConfig.plugins.push(taroReactPlugin)\n } else if (compiler.type === 'vite') {\n compiler.vitePlugins ||= []\n compiler.vitePlugins.push(viteCommonPlugin(framework))\n compiler.vitePlugins.push(VitePresetPlugin(framework))\n if (process.env.TARO_PLATFORM === 'web') {\n // H5\n compiler.vitePlugins.push(h5iVitePlugin(ctx, framework))\n } else if (process.env.TARO_PLATFORM === 'harmony' || process.env.TARO_ENV === 'harmony') {\n // 鸿蒙\n compiler.vitePlugins.push(harmonyVitePlugin(ctx, framework))\n } else {\n // 小程序\n compiler.vitePlugins.push(miniVitePlugin(ctx, framework))\n }\n }\n })\n}\n\nfunction setAlias(framework: Frameworks, chain) {\n const alias = chain.resolve.alias\n\n switch (framework) {\n case 'preact':\n alias.set('react', 'preact/compat')\n alias.set('react-dom/test-utils', 'preact/test-utils')\n alias.set('react-dom', 'preact/compat')\n alias.set('react/jsx-runtime', 'preact/jsx-runtime')\n break\n case 'solid':\n alias.set('react/jsx-runtime', 'solid-js/h/jsx-runtime')\n break\n }\n}\n\nfunction VitePresetPlugin (framework: Frameworks): PluginOption {\n return framework === 'preact'\n ? require('@preact/preset-vite').preact({\n babel: {\n plugins: [\n ['@babel/plugin-proposal-decorators', { legacy: true }],\n ['@babel/plugin-proposal-class-properties', { loose: true }],\n ],\n },\n })\n : require('@vitejs/plugin-react').default({\n babel: {\n plugins: [\n ['@babel/plugin-proposal-decorators', { legacy: true }],\n ['@babel/plugin-proposal-class-properties', { loose: true }],\n ],\n },\n })\n}\n\nfunction viteCommonPlugin(framework: Frameworks): PluginOption {\n return {\n name: 'taro-react:common',\n config() {\n const alias =\n framework === 'preact'\n ? [\n { find: 'react', replacement: 'preact/compat' },\n { find: 'react-dom/test-utils', replacement: 'preact/test-utils' },\n { find: 'react-dom', replacement: 'preact/compat' },\n { find: 'react/jsx-runtime', replacement: 'preact/jsx-runtime' },\n ]\n : []\n if (framework === 'solid') {\n const reconcilerName = '@tarojs/plugin-framework-react/dist/reconciler'\n alias.push(\n { find: 'react/jsx-runtime', replacement: reconcilerName },\n )\n }\n\n return {\n resolve: {\n alias,\n },\n }\n },\n }\n}\n"],"names":["acorn","walk","injectLoaderMeta","mergeWith","REG_TARO_H5_RUNTIME_API","__awaiter","fs","aliasPlugin","defaultMainFields","resolveSync","setLoader","REG_TARO_H5","setAlias","isString"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAc,kBAAA,EAAW,GAAW,EAAA;IAClC,OAAO,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;EAyBP,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmDJ,CAAA;AACD;;ACvEA,SAAS,SAAS,CAAE,MAAM,EAAA;AACxB,IAAA,MAAM,UAAU,GAAG;AACjB,QAAA,qBAAqB,EAAE,CAAC,mBAAmB,EAAE,oBAAoB,CAAC;AAClE,QAAA,mBAAmB,EAAE,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;KAC7D,CAAA;AACD,IAAA,MAAM,GAAG,GAAGA,gBAAK,CAAC,KAAK,CAAC,MAAM,EAAE;AAC9B,QAAA,WAAW,EAAE,QAAQ;AACrB,QAAA,UAAU,EAAE,QAAQ;AACrB,KAAA,CAAC,CAAA;IAEF,MAAM,cAAc,GAAwB,EAAE,CAAA;IAE9C,SAAS,KAAK,CAAE,IAAY,EAAA;QAC1B,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,UAAU,IAAG;AAC3C,YAAA,MAAM,IAAI,GAAa,UAAU,CAAC,UAAU,CAAC,CAAA;AAC7C,YAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AACvB,gBAAA,cAAc,CAAC,UAAU,CAAC,GAAG,IAAI,CAAA;aAClC;AACH,SAAC,CAAC,CAAA;KACH;AAED,IAAAC,eAAI,CAAC,MAAM,CAAC,GAAG,EAAE;AACf,QAAA,kBAAkB,CAAE,IAAS,EAAA;YAC3B,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI;gBAAE,OAAM;AACrC,YAAA,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;SACpB;AACD,QAAA,mBAAmB,CAAE,IAAS,EAAA;YAC5B,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI;gBAAE,OAAM;AACrC,YAAA,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;SACpB;AACD,QAAA,cAAc,CAAE,IAAS,EAAA;AACvB,YAAA,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;AACvB,YAAA,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,EAAE;AAChC,gBAAA,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;aACnB;AAAM,iBAAA,IAAI,MAAM,CAAC,IAAI,KAAK,kBAAkB,EAAE;gBAC7C,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,YAAY,EAAE;AACzC,oBAAA,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;iBAC5B;qBAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE;AAC7C,oBAAA,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;iBAC7B;aACF;AACD,YAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,IAAG;gBAC5B,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,EAAE;AACzC,oBAAA,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;iBAClB;AACH,aAAC,CAAC,CAAA;SACH;AACF,KAAA,CAAC,CAAA;AAEF,IAAA,OAAO,cAAc,CAAA;AACvB,CAAC;AAEK,SAAU,aAAa,CAAE,SAAqB,EAAA;AAClD,IAAA,MAAM,UAAU,GAAG;AACjB,QAAA,wBAAwB,EAAE,CAAA;;;AAG7B,CAAA;AACG,QAAA,gBAAgB,EAAE,CAAA;;;;;;AAMrB,CAAA;AACG,QAAA,aAAa,EAAE,yBAAyB;AACxC,QAAA,OAAO,EAAE,gBAAgB;AACzB,QAAA,eAAe,EAAE,6CAA6C;AAC9D,QAAA,mBAAmB,EAAE,OAAO;AAC5B,QAAA,iBAAiB,EAAE,EAAE;AACrB,QAAA,sBAAsB,EAAE,EAAE;QAC1B,YAAY,CAAE,MAAM,EAAE,MAAM,EAAA;YAC1B,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAA;SACzC;KACF,CAAA;AAED,IAAA,IAAI,SAAS,KAAK,OAAO,EAAE;AACzB,QAAA,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE;AACxB,YAAA,OAAO,EAAE,gBAAgB;AACzB,YAAA,aAAa,EAAE,QAAQ;AACvB,YAAA,wBAAwB,EAAE,EAAE;AAC5B,YAAA,mBAAmB,EAAE,EAAE;AACvB,YAAA,gBAAgB,EAAE,CAAA;;;;AAIvB,CAAA;AACI,SAAA,CAAC,CAAA;KACH;IAED,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,KAAK,EAAE;AACvC,QAAA,IAAI,SAAS,KAAK,OAAO,EAAE;AACzB,YAAA,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;YAC9B,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAClE,YAAA,IAAI,YAAY,IAAI,EAAE,EAAE;;AAEtB,gBAAA,UAAU,CAAC,wBAAwB,GAAG,UAAU,CAAC,wBAAwB,CAAC,OAAO,CAAC,eAAe,EAAE,sBAAsB,CAAC,CAAA;AAC1H,gBAAA,UAAU,CAAC,iBAAiB,IAAI,CAAA,0EAAA,CAA4E,CAAA;AAC5G,gBAAA,UAAU,CAAC,sBAAsB,IAAI,CAAA,2EAAA,CAA6E,CAAA;aACnH;SACF;KACF;AACD,IAAA,OAAO,UAAU,CAAA;AACnB;;ACpGgB,SAAA,aAAa,CAAE,GAAmB,EAAE,SAAqB,EAAA;IACvE,OAAO;AACL,QAAAC,kBAAgB,CAAC,GAAG,EAAE,SAAS,CAAC;AAChC,QAAA,UAAU,EAAE;QACZ,cAAc,CAAC,SAAS,CAAC;KAC1B,CAAA;AACH,CAAC;AAED,SAASA,kBAAgB,CAAE,GAAmB,EAAE,SAAqB,EAAA;IACnE,SAAS,UAAU,CAAE,MAAM,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE,EAAA;AAC5C,QAAA,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC;YAAE,OAAO,MAAM,GAAG,OAAO,CAAA;KACjF;AACD,IAAA,MAAM,EAAE,WAAW,EAAE,GAAG,GAAG,CAAA;AAC3B,IAAA,MAAM,EAAE,wBAAwB,EAAE,GAAG,WAAW,CAAA;IAChD,OAAO;AACL,QAAA,IAAI,EAAE,wBAAwB;QACxB,UAAU,GAAA;;AACd,gBAAA,MAAM,mBAAmB,GAAG,MAAM,wBAAwB,CAAC,IAAI,CAAC,CAAA;gBAChE,IAAI,mBAAmB,EAAE;AACvB,oBAAA,mBAAmB,CAAC,UAAU,GAAGC,gBAAS,CACxC,aAAa,CAAC,SAAS,CAAC,EAAE,mBAAmB,CAAC,UAAU,EAAE,UAAU,CACrE,CAAA;iBACF;aACF,CAAA,CAAA;AAAA,SAAA;KACF,CAAA;AACH,CAAC;AAED,SAAS,UAAU,GAAA;;IAEjB,OAAO;AACL,QAAA,IAAI,EAAE,gCAAgC;AACtC,QAAA,OAAO,EAAE,KAAK;AACd,QAAA,MAAM,EAAE,OAAO;AACb,YAAA,YAAY,EAAE;AACZ,gBAAA,cAAc,EAAE;AACd,oBAAA,OAAO,EAAE;AACP,wBAAA;AACE,4BAAA,IAAI,EAAE,gBAAgB;AACtB,4BAAA,KAAK,CAAE,KAAK,EAAA;AACV,gCAAA,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,EAAEC,8BAAuB,EAAE,EAAE,CAAO,IAAI,KAAIC,eAAA,CAAA,IAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;AAC/D,oCAAA,MAAM,KAAK,GAAG,MAAMC,SAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;oCAClD,OAAO;wCACL,QAAQ,EAAE,SAAS,CAAC,KAAK,GAAG,IAAI,GAAG,8BAA8B,CAAC;qCACnE,CAAA;iCACF,CAAA,CAAC,CAAA;6BACH;AACF,yBAAA;AACF,qBAAA;AACF,iBAAA;AACF,aAAA;SACF,CAAC;AACI,QAAA,IAAI,CAAE,EAAE,EAAA;;AACZ,gBAAA,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,IAAIF,8BAAuB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;AAC7E,oBAAA,IAAI;wBACF,MAAM,KAAK,GAAG,MAAME,SAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;wBAC3C,OAAO,SAAS,CAAC,KAAK,GAAG,IAAI,GAAG,8BAA8B,CAAC,CAAA;qBAChE;oBAAC,OAAO,CAAC,EAAE;AACV,wBAAA,OAAO,IAAI,CAAA;qBACZ;iBACF;aACF,CAAA,CAAA;AAAA,SAAA;KACF,CAAA;AACH,CAAC;AAED;AACA,SAAS,cAAc,CAAE,SAAqB,EAAA;IAC5C,IAAI,SAAS,KAAK,QAAQ;AAAE,QAAA,OAAO,IAAI,CAAA;IACvC,OAAO;AACL,QAAA,IAAI,EAAE,4BAA4B;AAClC,QAAA,OAAO,EAAE,KAAK;AACd,QAAA,MAAM,EAAE,OAAO;AACb,YAAA,YAAY,EAAE;AACZ,gBAAA,OAAO,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC;AACzC,aAAA;SACF,CAAC;KACH,CAAA;AACH;;AC9EgB,SAAA,iBAAiB,CAAE,GAAmB,EAAE,SAAqB,EAAA;IAC3E,OAAO;AACL,QAAAJ,kBAAgB,CAAC,GAAG,EAAE,SAAS,CAAC;AAChC,QAAAK,aAAW,CAAC,GAAG,EAAE,SAAS,CAAC;KAC5B,CAAA;AACH,CAAC;AAED,SAASL,kBAAgB,CAAE,GAAmB,EAAE,SAAqB,EAAA;IACnE,OAAO;AACL,QAAA,IAAI,EAAE,wBAAwB;QAC9B,UAAU,GAAA;AACR,YAAA,MAAM,EAAE,WAAW,EAAE,GAAG,GAAG,CAAA;AAC3B,YAAA,MAAM,EAAE,6BAA6B,EAAE,GAAG,WAAW,CAAA;AACrD,YAAA,MAAM,mBAAmB,GAAG,6BAA6B,CAAC,IAAI,CAAC,CAAA;YAC/D,IAAI,mBAAmB,EAAE;AACvB,gBAAA,mBAAmB,CAAC,UAAU,GAAG,aAAa,CAAC,SAAS,CAAC,CAAA;aAC1D;SACF;KACF,CAAA;AACH,CAAC;AAED,SAASK,aAAW,CAAE,GAAmB,EAAE,SAAqB,EAAA;AAC9D,IAAA,IAAI,SAAS,KAAK,OAAO,EAAE;QACzB,OAAO;AACL,YAAA,IAAI,EAAE,kBAAkB;AACxB,YAAA,MAAM,CAAE,MAAM,EAAA;;AACZ,gBAAA,MAAM,KAAK,GAAuD;AAChE,oBAAA,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE;iBACrD,CAAA;gBAED,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,GAAGC,wBAAiB,CAAC,CAAA;AAClD,gBAAA,MAAM,cAAc,GAAG;AACrB,oBAAA,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE;oBACtB,UAAU;iBACX,CAAA;AACD,gBAAA,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,KAAK,YAAY,CAAA;;gBAE3C,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAA;AAC5D,gBAAA,IAAI,CAAC,MAAM,IAAI,CAAA,CAAA,EAAA,GAAA,GAAG,CAAC,aAAa,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,UAAU,MAAK,IAAI,IAAI,CAAC,SAAS,EAAE;;AAE3E,oBAAA,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,WAAW,EAAE,yDAAyD,EAAE,CAAC,CAAA;AACjH,oBAAA,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mCAAmC,EAAE,CAAC,CAAA;AAChF,oBAAA,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,2CAA2C,EAAE,CAAC,CAAA;AAC5F,oBAAA,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,WAAW,EAAE,+CAA+C,EAAE,CAAC,CAAA;;;oBAIzG,MAAM,YAAY,GAAGC,kBAAW,CAAC,oBAAoB,EAAE,cAAc,CAAC,CAAA;oBACtE,IAAI,YAAY,EAAE;AAChB,wBAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAA;wBAC9C,MAAM,YAAY,IAAI,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC,CAAA;AAC7C,wBAAA,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE;4BACvD,QAAQ,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE;AACjD,gCAAA,QAAQ,EAAE,QAAQ;AACnB,6BAAA,CAAC,CAAA;AACF,4BAAAH,SAAE,CAAC,aAAa,CAAC,YAAY,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAA;yBACxD;qBACF;iBACF;gBAED,OAAO;AACL,oBAAA,OAAO,EAAE;wBACP,KAAK;AACN,qBAAA;iBACF,CAAA;aACF;SACF,CAAA;KACF;AAAM,SAAA,IAAI,SAAS,KAAK,OAAO,EAAE;QAChC,OAAO;AACL,YAAA,IAAI,EAAE,kBAAkB;YACxB,MAAM,GAAA;gBACJ,MAAM,cAAc,GAAG,gDAAgD,CAAA;AACvE,gBAAA,MAAM,KAAK,GAAG;AACZ,oBAAA,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,cAAc,EAAE;AACrD,oBAAA,EAAE,IAAI,EAAE,mBAAmB,EAAE,WAAW,EAAE,cAAc,EAAE;iBAC3D,CAAA;gBAED,OAAO;AACL,oBAAA,OAAO,EAAE;wBACP,KAAK;AACN,qBAAA;iBACF,CAAA;aACF;SACF,CAAA;KACF;AACD,IAAA,OAAO,EAAE,CAAA;AACX;;ACtFgB,SAAA,cAAc,CAAE,GAAmB,EAAE,SAAqB,EAAA;IACxE,OAAO;AACL,QAAA,gBAAgB,CAAC,GAAG,EAAE,SAAS,CAAC;AAChC,QAAA,WAAW,CAAC,GAAG,EAAE,SAAS,CAAC;KAC5B,CAAA;AACH,CAAC;AAED,SAAS,gBAAgB,CAAE,GAAmB,EAAE,SAAqB,EAAA;IACnE,OAAO;AACL,QAAA,IAAI,EAAE,wBAAwB;QAC9B,UAAU,GAAA;AACR,YAAA,MAAM,EAAE,WAAW,EAAE,GAAG,GAAG,CAAA;AAC3B,YAAA,MAAM,EAAE,0BAA0B,EAAE,GAAG,WAAW,CAAA;AAClD,YAAA,MAAM,mBAAmB,GAAG,0BAA0B,CAAC,IAAI,CAAC,CAAA;YAC5D,IAAI,mBAAmB,EAAE;AACvB,gBAAA,mBAAmB,CAAC,UAAU,GAAG,aAAa,CAAC,SAAS,CAAC,CAAA;aAC1D;SACF;KACF,CAAA;AACH,CAAC;AAED,SAAS,WAAW,CAAE,GAAmB,EAAE,SAAqB,EAAA;AAC9D,IAAA,IAAI,SAAS,KAAK,OAAO,EAAE;QACzB,OAAO;AACL,YAAA,IAAI,EAAE,kBAAkB;AACxB,YAAA,MAAM,CAAE,MAAM,EAAA;;AACZ,gBAAA,MAAM,KAAK,GAAuD;AAChE,oBAAA,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE;iBACrD,CAAA;gBAED,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,GAAGE,wBAAiB,CAAC,CAAA;AAClD,gBAAA,MAAM,cAAc,GAAG;AACrB,oBAAA,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE;oBACtB,UAAU;iBACX,CAAA;AACD,gBAAA,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,KAAK,YAAY,CAAA;;gBAE3C,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAA;AAC5D,gBAAA,IAAI,CAAC,MAAM,IAAI,CAAA,CAAA,EAAA,GAAA,GAAG,CAAC,aAAa,CAAC,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,UAAU,MAAK,IAAI,IAAI,CAAC,SAAS,EAAE;;AAExE,oBAAA,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,WAAW,EAAE,yDAAyD,EAAE,CAAC,CAAA;AACjH,oBAAA,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,4BAA4B,EAAE,WAAW,EAAE,mCAAmC,EAAE,CAAC,CAAA;AACpG,oBAAA,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,2CAA2C,EAAE,CAAC,CAAA;AAC5F,oBAAA,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,WAAW,EAAE,+CAA+C,EAAE,CAAC,CAAA;;;oBAIzG,MAAM,YAAY,GAAGC,kBAAW,CAAC,oBAAoB,EAAE,cAAc,CAAC,CAAA;oBACtE,IAAI,YAAY,EAAE;AAChB,wBAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAA;wBAC9C,MAAM,YAAY,IAAI,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC,CAAA;AAC7C,wBAAA,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE;4BACvD,QAAQ,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE;AACjD,gCAAA,QAAQ,EAAE,QAAQ;AACnB,6BAAA,CAAC,CAAA;AACF,4BAAAH,SAAE,CAAC,aAAa,CAAC,YAAY,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAA;yBACxD;qBACF;iBACF;gBAED,OAAO;AACL,oBAAA,OAAO,EAAE;wBACP,KAAK;AACN,qBAAA;iBACF,CAAA;aACF;SACF,CAAA;KACF;AAAM,SAAA,IAAI,SAAS,KAAK,OAAO,EAAE;QAChC,OAAO;AACL,YAAA,IAAI,EAAE,kBAAkB;YACxB,MAAM,GAAA;gBACJ,MAAM,cAAc,GAAG,gDAAgD,CAAA;AACvE,gBAAA,MAAM,KAAK,GAAG;AACZ,oBAAA,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,cAAc,EAAE;AACrD,oBAAA,EAAE,IAAI,EAAE,mBAAmB,EAAE,WAAW,EAAE,cAAc,EAAE;iBAC3D,CAAA;gBAED,OAAO;AACL,oBAAA,OAAO,EAAE;wBACP,KAAK;AACN,qBAAA;iBACF,CAAA;aACF;SACF,CAAA;KACF;AACD,IAAA,OAAO,EAAE,CAAA;AACX;;SCrFgB,oBAAoB,CAAE,GAAmB,EAAE,SAAqB,EAAE,KAAY,EAAA;;AAC5F,IAAAI,WAAS,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;AAC3B,IAAA,SAAS,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,CAAA;AAEhC,IAAA,MAAM,EAAE,iBAAiB,GAAG,KAAK,EAAE,GAAG,CAAA,CAAA,EAAA,GAAA,GAAG,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,KAAI,EAAE,CAAA;IAChE,MAAM,SAAS,GAAgE,EAAE,CAAA;IACjF,IAAI,iBAAiB,EAAE;;QAErB,SAAS,CAAC,KAAK,GAAG;AAChB,YAAA,QAAQ,EAAE,OAAO;AACjB,YAAA,SAAS,EAAE,OAAO;AAClB,YAAA,GAAG,EAAE,OAAO;AACZ,YAAA,IAAI,EAAE,OAAO;SACd,CAAA;QACD,SAAS,CAAC,WAAW,CAAC,GAAG;AACvB,YAAA,QAAQ,EAAE,WAAW;AACrB,YAAA,SAAS,EAAE,WAAW;AACtB,YAAA,GAAG,EAAE,WAAW;AAChB,YAAA,IAAI,EAAE,UAAU;SACjB,CAAA;AACD,QAAA,IAAI,SAAS,KAAK,QAAQ,EAAE;AAC1B,YAAA,SAAS,CAAC,MAAM,GAAG,QAAQ,CAAA;SAC5B;QAED,KAAK,CAAC,KAAK,CAAC;AACV,YAAA,aAAa,EAAE,KAAK;AACrB,SAAA,CAAC,CAAA;KACH;IAED,KAAK,CAAC,KAAK,CAAC;QACV,SAAS;AACT,QAAA,MAAM,EAAE;AACN,YAAA,IAAI,EAAE;AACJ,gBAAA,wBAAwB,EAAE;AACxB,oBAAA,IAAI,EAAEC,kBAAW;AACjB,oBAAA,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC;AACxC,iBAAA;AACF,aAAA;AACF,SAAA;AACF,KAAA,CAAC,CAAA;IAEF,KAAK,CAAC,KAAK,CAAC;QACV,SAAS;AACT,QAAA,MAAM,EAAE;AACN,YAAA,IAAI,EAAE;AACJ,gBAAA,oCAAoC,EAAE;AACpC,oBAAA,IAAI,EAAE,iEAAiE;AACvE,oBAAA,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC;AACxC,iBAAA;AACF,aAAA;AACF,SAAA;AACF,KAAA,CAAC,CAAA;IAEF,KAAK,CAAC,KAAK,CAAC;QACV,SAAS;AACT,QAAA,MAAM,EAAE;AACN,YAAA,IAAI,EAAE;AACJ,gBAAA,oCAAoC,EAAE;AACpC,oBAAA,IAAI,EAAE,iEAAiE;AACvE,oBAAA,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC;AACxC,iBAAA;AACF,aAAA;AACF,SAAA;AACF,KAAA,CAAC,CAAA;AACJ,CAAC;AAED,SAASD,WAAS,CAAC,SAAqB,EAAE,KAAK,EAAA;IAC7C,SAAS,UAAU,CAAC,MAAM,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE,EAAA;AAC3C,QAAA,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,KAAK,QAAQ,CAAC;YAAE,OAAO,MAAM,GAAG,OAAO,CAAA;KACnF;IACD,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;QACtC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,GAAGP,gBAAS,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;AACxF,QAAA,OAAO,IAAI,CAAA;AACb,KAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,GAAmB,EAAE,SAAqB,EAAE,KAAK,EAAA;;AAClE,IAAA,MAAM,MAAM,GAAG,GAAG,CAAC,aAAa,CAAA;AAChC,IAAA,MAAM,aAAa,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAA;AACtC,IAAA,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,KAAK,YAAY,CAAA;AAClD,IAAA,IAAI,CAAC,MAAM,IAAI,CAAA,CAAA,EAAA,GAAA,MAAA,MAAM,CAAC,EAAE,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,SAAS,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,GAAG,MAAK,KAAK,EAAE;;AAElD,QAAA,IAAI,SAAS,KAAK,OAAO,EAAE;AACzB,YAAA,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC,CAAA;SACvF;AAAM,aAAA,IAAI,SAAS,KAAK,QAAQ,EAAE;AACjC,YAAA,KAAK,CAAC,MAAM,CAAC,4BAA4B,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,0BAA0B,CAAC,CAAA;AAC7F,YAAA,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAA;SACpE;KACF;IAED,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,GAAGK,wBAAiB,CAAC,CAAA;AAClD,IAAA,MAAM,cAAc,GAAG;AACrB,QAAA,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE;QACtB,UAAU;KACX,CAAA;AACD,IAAA,IAAI,SAAS,KAAK,OAAO,EAAE;QACzB,MAAM,cAAc,GAAG,gDAAgD,CAAA;AACvE,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAA;AACjC,QAAA,KAAK,CAAC,GAAG,CAAC,cAAc,EAAEC,kBAAW,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC,CAAA;;AAEtE,QAAA,KAAK,CAAC,GAAG,CAAC,WAAW,EAAEA,kBAAW,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC,CAAA;KAChE;AAAM,SAAA,IAAI,SAAS,KAAK,OAAO,EAAE;AAChC,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAA;;AAEjC,QAAA,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAEA,kBAAW,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAA;KAC1D;AACH;;SC1GgB,yBAAyB,CAAE,GAAmB,EAAE,SAAqB,EAAE,KAAK,EAAA;AAC1F,IAAAG,UAAQ,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,CAAA;AAC/B,IAAAF,WAAS,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;AAC7B,CAAC;AAED,SAASE,UAAQ,CAAE,GAAmB,EAAE,SAAqB,EAAE,KAAK,EAAA;;AAClE,IAAA,MAAM,MAAM,GAAG,GAAG,CAAC,aAAa,CAAA;AAChC,IAAA,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAA;IAEjC,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,GAAGJ,wBAAiB,CAAC,CAAA;AAClD,IAAA,MAAM,cAAc,GAAG;AACrB,QAAA,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE;QACtB,UAAU;KACX,CAAA;AACD,IAAA,IAAI,SAAS,KAAK,OAAO,EAAE;AACzB,QAAA,KAAK,CAAC,GAAG,CAAC,YAAY,EAAE,eAAe,CAAC,CAAA;AACxC,QAAA,KAAK,CAAC,GAAG,CAAC,mBAAmB,EAAE,eAAe,CAAC,CAAA;AAC/C,QAAA,MAAM,aAAa,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAA;AACtC,QAAA,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,KAAK,YAAY,CAAA;AAClD,QAAA,IAAI,CAAC,MAAM,IAAI,CAAA,CAAA,EAAA,GAAA,MAAM,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,UAAU,MAAK,IAAI,EAAE;;;YAGlD,MAAM,eAAe,GAAGC,kBAAW,CAAC,OAAO,EAAE,cAAc,CAAE,CAAA;AAC7D,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,yBAAyB,CAAC,CAAA;AAE9F,YAAA,KAAK,CAAC,GAAG,CAAC,mBAAmB,EAAE,yDAAyD,CAAC,CAAA;AACzF,YAAA,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAA;AAChC,YAAA,KAAK,CAAC,GAAG,CAAC,oBAAoB,EAAE,+CAA+C,CAAC,CAAA;;;YAIhF,MAAM,YAAY,GAAGA,kBAAW,CAAC,oBAAoB,EAAE,cAAc,CAAC,CAAA;YACtE,IAAI,YAAY,EAAE;AAChB,gBAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAA;AAC9C,gBAAA,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAA;gBAC3C,IAAI,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE;oBACrD,QAAQ,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE;AACjD,wBAAA,QAAQ,EAAE,QAAQ;AACnB,qBAAA,CAAC,CAAA;AACF,oBAAAH,SAAE,CAAC,aAAa,CAAC,YAAY,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAA;iBACxD;aACF;SACF;KACF;AAAM,SAAA,IAAI,SAAS,KAAK,OAAO,EAAE;QAChC,MAAM,cAAc,GAAG,gDAAgD,CAAA;AACvE,QAAA,KAAK,CAAC,GAAG,CAAC,cAAc,EAAE,cAAc,CAAC,CAAA;AACzC,QAAA,KAAK,CAAC,GAAG,CAAC,mBAAmB,EAAE,cAAc,CAAC,CAAA;KAC/C;AACH,CAAC;AAED,SAASI,WAAS,CAAE,SAAqB,EAAE,KAAK,EAAA;IAC9C,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;QACtC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,aAAa,CAAC,SAAS,CAAC,CAAA;AAC7C,QAAA,OAAO,IAAI,CAAA;AACb,KAAC,CAAC,CAAA;AACJ;;SCvDgB,sBAAsB,CAAE,GAAmB,EAAE,SAAqB,EAAE,KAAK,EAAA;AACvF,IAAAE,UAAQ,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,CAAA;AAC/B,IAAA,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;AAC7B,CAAC;AAED,SAASA,UAAQ,CAAE,GAAmB,EAAE,SAAqB,EAAE,KAAK,EAAA;;AAClE,IAAA,MAAM,MAAM,GAAG,GAAG,CAAC,aAAa,CAAA;AAChC,IAAA,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAA;IAEjC,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,GAAGJ,wBAAiB,CAAC,CAAA;AAClD,IAAA,MAAM,cAAc,GAAG;AACrB,QAAA,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE;QACtB,UAAU;KACX,CAAA;AACD,IAAA,IAAI,SAAS,KAAK,OAAO,EAAE;AACzB,QAAA,KAAK,CAAC,GAAG,CAAC,YAAY,EAAE,eAAe,CAAC,CAAA;AACxC,QAAA,KAAK,CAAC,GAAG,CAAC,mBAAmB,EAAE,eAAe,CAAC,CAAA;AAC/C,QAAA,MAAM,aAAa,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAA;AACtC,QAAA,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,KAAK,YAAY,CAAA;AAClD,QAAA,IAAI,CAAC,MAAM,IAAI,CAAA,CAAA,EAAA,GAAA,MAAM,CAAC,IAAI,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,UAAU,MAAK,IAAI,EAAE;;;YAG/C,MAAM,eAAe,GAAGC,kBAAW,CAAC,OAAO,EAAE,cAAc,CAAE,CAAA;AAC7D,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,yBAAyB,CAAC,CAAA;AAE9F,YAAA,KAAK,CAAC,GAAG,CAAC,mBAAmB,EAAE,yDAAyD,CAAC,CAAA;AACzF,YAAA,KAAK,CAAC,GAAG,CAAC,4BAA4B,EAAE,WAAW,CAAC,CAAA;AACpD,YAAA,KAAK,CAAC,GAAG,CAAC,oBAAoB,EAAE,+CAA+C,CAAC,CAAA;;;YAIhF,MAAM,YAAY,GAAGA,kBAAW,CAAC,oBAAoB,EAAE,cAAc,CAAC,CAAA;YACtE,IAAI,YAAY,EAAE;AAChB,gBAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAA;AAC9C,gBAAA,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAA;gBAC3C,IAAI,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE;oBACrD,QAAQ,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE;AACjD,wBAAA,QAAQ,EAAE,QAAQ;AACnB,qBAAA,CAAC,CAAA;AACF,oBAAAH,SAAE,CAAC,aAAa,CAAC,YAAY,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAA;iBACxD;aACF;SACF;KACF;AAAM,SAAA,IAAI,SAAS,KAAK,OAAO,EAAE;QAChC,MAAM,cAAc,GAAG,gDAAgD,CAAA;AACvE,QAAA,KAAK,CAAC,GAAG,CAAC,cAAc,EAAE,cAAc,CAAC,CAAA;;AAEzC,QAAA,KAAK,CAAC,GAAG,CAAC,WAAW,EAAEG,kBAAW,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC,CAAA;KAChE;AACH,CAAC;AAED,SAAS,SAAS,CAAE,SAAqB,EAAE,KAAK,EAAA;IAC9C,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;QACtC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,aAAa,CAAC,SAAS,CAAC,CAAA;AAC7C,QAAA,OAAO,IAAI,CAAA;AACb,KAAC,CAAC,CAAA;AACJ;;AChDgB,SAAA,WAAW,CAAC,SAAA,GAAyC,OAAO,EAAA;AAC1E,IAAA,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;AACzD,CAAC;AAED,YAAe,CAAC,GAAmB,KAAI;IACrC,MAAM,EAAE,SAAS,GAAG,OAAO,EAAE,GAAG,GAAG,CAAC,aAAa,CAAA;AAEjD,IAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;QAAE,OAAM;IAEnC,GAAG,CAAC,kBAAkB,CAAC,CAAC,EAAE,KAAK,EAAE,KAAI;;AAEnC,QAAA,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;QAE1B,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,KAAK,EAAE;;AAEvC,YAAA,oBAAoB,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,CAAA;SAC5C;AAAM,aAAA,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,SAAS,EAAE;;AAExF,YAAA,yBAAyB,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,CAAA;SACjD;aAAM;;AAEL,YAAA,sBAAsB,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,CAAA;SAC9C;AACH,KAAC,CAAC,CAAA;IAEF,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,IAAI,EAAE,KAAI;QAChC,IAAI,EAAC,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAJ,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,IAAI,CAAE,QAAQ,CAAA;YAAE,OAAM;AAE3B,QAAA,IAAII,eAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;YAC3B,IAAI,CAAC,QAAQ,GAAG;gBACd,IAAI,EAAE,IAAI,CAAC,QAAQ;aACpB,CAAA;SACF;AAED,QAAA,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAA;AACzB,QAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU,EAAE;;YAEhC,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,6CAA6C,CAAC,CAAA;YACvG,QAAQ,CAAC,SAAS,KAAlB,QAAQ,CAAC,SAAS,GAAK,EAAE,CAAA,CAAA;AACzB,YAAA,MAAM,gBAAgB,GAAG,QAAQ,CAAC,SAAS,CAAA;YAC3C,gBAAgB,CAAC,OAAO,KAAxB,gBAAgB,CAAC,OAAO,GAAK,EAAE,CAAA,CAAA;YAC/B,gBAAgB,CAAC,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;YAChE,gBAAgB,CAAC,OAAO,KAAxB,gBAAgB,CAAC,OAAO,GAAK,EAAE,CAAA,CAAA;YAC/B,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;AACrC,YAAA,IAAI,gBAAgB,CAAC,MAAM,KAAK,KAAK;gBAAE,OAAM;AAE7C,YAAA,MAAM,eAAe,GAAmB;AACtC,gBAAA,IAAI,EAAE,iBAAiB;AACvB,gBAAA,KAAK,CAAC,KAAK,EAAA;AACT,oBAAA,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,EAAEF,kBAAW,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,KAAI;wBACjD,MAAM,OAAO,GAAGL,SAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAA;wBAChD,OAAO;AACL,4BAAA,QAAQ,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC;yBAC3C,CAAA;AACH,qBAAC,CAAC,CAAA;AACF,oBAAA,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,iEAAiE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,KAAI;wBACvG,MAAM,OAAO,GAAGA,SAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAA;wBAChD,OAAO;AACL,4BAAA,QAAQ,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC;yBAC3C,CAAA;AACH,qBAAC,CAAC,CAAA;iBACH;aACF,CAAA;YAED,gBAAgB,CAAC,OAAO,KAAxB,gBAAgB,CAAC,OAAO,GAAK,EAAE,CAAA,CAAA;AAC/B,YAAA,MAAM,aAAa,GAAG,gBAAgB,CAAC,OAAO,CAAA;YAC9C,aAAa,CAAC,OAAO,KAArB,aAAa,CAAC,OAAO,GAAK,EAAE,CAAA,CAAA;AAC5B,YAAA,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;SAC5C;AAAM,aAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM,EAAE;YACnC,QAAQ,CAAC,WAAW,KAApB,QAAQ,CAAC,WAAW,GAAK,EAAE,CAAA,CAAA;YAC3B,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAA;YACtD,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAA;YACtD,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,KAAK,EAAE;;AAEvC,gBAAA,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAA;aACzD;AAAM,iBAAA,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,SAAS,EAAE;;AAExF,gBAAA,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAA;aAC7D;iBAAM;;AAEL,gBAAA,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAA;aAC1D;SACF;AACH,KAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,SAAS,QAAQ,CAAC,SAAqB,EAAE,KAAK,EAAA;AAC5C,IAAA,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAA;IAEjC,QAAQ,SAAS;AACf,QAAA,KAAK,QAAQ;AACX,YAAA,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,eAAe,CAAC,CAAA;AACnC,YAAA,KAAK,CAAC,GAAG,CAAC,sBAAsB,EAAE,mBAAmB,CAAC,CAAA;AACtD,YAAA,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,eAAe,CAAC,CAAA;AACvC,YAAA,KAAK,CAAC,GAAG,CAAC,mBAAmB,EAAE,oBAAoB,CAAC,CAAA;YACpD,MAAK;AACP,QAAA,KAAK,OAAO;AACV,YAAA,KAAK,CAAC,GAAG,CAAC,mBAAmB,EAAE,wBAAwB,CAAC,CAAA;YACxD,MAAK;KACR;AACH,CAAC;AAED,SAAS,gBAAgB,CAAE,SAAqB,EAAA;IAC9C,OAAO,SAAS,KAAK,QAAQ;AAC3B,UAAE,OAAO,CAAC,qBAAqB,CAAC,CAAC,MAAM,CAAC;AACtC,YAAA,KAAK,EAAE;AACL,gBAAA,OAAO,EAAE;AACP,oBAAA,CAAC,mCAAmC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AACvD,oBAAA,CAAC,yCAAyC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAC7D,iBAAA;AACF,aAAA;SACF,CAAC;AACF,UAAE,OAAO,CAAC,sBAAsB,CAAC,CAAC,OAAO,CAAC;AACxC,YAAA,KAAK,EAAE;AACL,gBAAA,OAAO,EAAE;AACP,oBAAA,CAAC,mCAAmC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AACvD,oBAAA,CAAC,yCAAyC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAC7D,iBAAA;AACF,aAAA;AACF,SAAA,CAAC,CAAA;AACN,CAAC;AAED,SAAS,gBAAgB,CAAC,SAAqB,EAAA;IAC7C,OAAO;AACL,QAAA,IAAI,EAAE,mBAAmB;QACzB,MAAM,GAAA;AACJ,YAAA,MAAM,KAAK,GACT,SAAS,KAAK,QAAQ;AACpB,kBAAE;AACA,oBAAA,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE;AAC/C,oBAAA,EAAE,IAAI,EAAE,sBAAsB,EAAE,WAAW,EAAE,mBAAmB,EAAE;AAClE,oBAAA,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE;AACnD,oBAAA,EAAE,IAAI,EAAE,mBAAmB,EAAE,WAAW,EAAE,oBAAoB,EAAE;AACjE,iBAAA;kBACC,EAAE,CAAA;AACR,YAAA,IAAI,SAAS,KAAK,OAAO,EAAE;gBACzB,MAAM,cAAc,GAAG,gDAAgD,CAAA;AACvE,gBAAA,KAAK,CAAC,IAAI,CACR,EAAE,IAAI,EAAE,mBAAmB,EAAE,WAAW,EAAE,cAAc,EAAE,CAC3D,CAAA;aACF;YAED,OAAO;AACL,gBAAA,OAAO,EAAE;oBACP,KAAK;AACN,iBAAA;aACF,CAAA;SACF;KACF,CAAA;AACH;;;;;"}
|
package/dist/reconciler.js
DELETED
|
@@ -1,347 +0,0 @@
|
|
|
1
|
-
import { splitProps, createRenderEffect, children, onCleanup, batch, getOwner, sharedConfig, createEffect, runWithOwner, createMemo, $DEVCOMP, untrack } from 'solid-js';
|
|
2
|
-
import { TaroNode, FormElement, document as document$1, TaroText } from '@tarojs/runtime';
|
|
3
|
-
import { isFunction, isObject, capitalize, toCamelCase, internalComponents, isString, noop } from '@tarojs/shared';
|
|
4
|
-
import { createRenderer } from 'solid-js/universal';
|
|
5
|
-
|
|
6
|
-
function h(tagName, props, children$1) {
|
|
7
|
-
if (typeof tagName !== 'string') {
|
|
8
|
-
throw Error(`h function cant create ele for ${tagName}`);
|
|
9
|
-
}
|
|
10
|
-
const ele = createElement(tagName);
|
|
11
|
-
const [local, otherProps] = splitProps(props, ['ref', 'children']);
|
|
12
|
-
setProps(ele, otherProps);
|
|
13
|
-
if (local.ref) {
|
|
14
|
-
createRenderEffect(() => {
|
|
15
|
-
if (typeof local.ref === 'function') {
|
|
16
|
-
local.ref(ele);
|
|
17
|
-
}
|
|
18
|
-
else {
|
|
19
|
-
local.ref = ele;
|
|
20
|
-
}
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
// get 的处理
|
|
24
|
-
if (local.hasOwnProperty('children')) {
|
|
25
|
-
const descriptor = Object.getOwnPropertyDescriptor(local, 'children');
|
|
26
|
-
if (descriptor === null || descriptor === void 0 ? void 0 : descriptor.get) {
|
|
27
|
-
children$1 = children(() => local.children);
|
|
28
|
-
}
|
|
29
|
-
else {
|
|
30
|
-
children$1 = local.children;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
insertNodes(ele, children$1);
|
|
34
|
-
return ele;
|
|
35
|
-
}
|
|
36
|
-
function setProps(ele, otherProps = {}) {
|
|
37
|
-
var _a, _b;
|
|
38
|
-
const desc = Object.assign({}, otherProps);
|
|
39
|
-
const plain_keys = Object.keys(desc).filter((key) => {
|
|
40
|
-
var _a;
|
|
41
|
-
if ((_a = desc[key]) === null || _a === void 0 ? void 0 : _a.get) {
|
|
42
|
-
return false;
|
|
43
|
-
}
|
|
44
|
-
return true;
|
|
45
|
-
});
|
|
46
|
-
const [plainProps, getterValues] = splitProps(otherProps, plain_keys);
|
|
47
|
-
// 普通属性直接赋值
|
|
48
|
-
if ((_a = Object.keys(plainProps)) === null || _a === void 0 ? void 0 : _a.length) {
|
|
49
|
-
for (const key in plainProps) {
|
|
50
|
-
setProp(ele, key, plainProps[key]);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
// 特殊属性 放到createRenderEffect中
|
|
54
|
-
if ((_b = Object.keys(getterValues)) === null || _b === void 0 ? void 0 : _b.length) {
|
|
55
|
-
let preProps = {};
|
|
56
|
-
effect(() => {
|
|
57
|
-
for (const key in getterValues) {
|
|
58
|
-
const val = getterValues[key];
|
|
59
|
-
if (val === preProps[key]) {
|
|
60
|
-
continue;
|
|
61
|
-
}
|
|
62
|
-
setProp(ele, key, val, preProps[key]);
|
|
63
|
-
preProps[key] = val;
|
|
64
|
-
}
|
|
65
|
-
});
|
|
66
|
-
onCleanup(() => {
|
|
67
|
-
preProps = {};
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
function insertNodes(parent, children) {
|
|
72
|
-
if (children === undefined) {
|
|
73
|
-
return;
|
|
74
|
-
}
|
|
75
|
-
let list = [];
|
|
76
|
-
if (!Array.isArray(children)) {
|
|
77
|
-
list = [children];
|
|
78
|
-
}
|
|
79
|
-
else {
|
|
80
|
-
list = children;
|
|
81
|
-
}
|
|
82
|
-
for (let i = 0; i < list.length; i++) {
|
|
83
|
-
const child = list[i];
|
|
84
|
-
const type = typeof child;
|
|
85
|
-
if (type === 'function') {
|
|
86
|
-
insert(parent, child, null);
|
|
87
|
-
continue;
|
|
88
|
-
}
|
|
89
|
-
if (Array.isArray(child)) {
|
|
90
|
-
insertNodes(parent, child);
|
|
91
|
-
continue;
|
|
92
|
-
}
|
|
93
|
-
if (child instanceof TaroNode) {
|
|
94
|
-
insertNode(parent, child);
|
|
95
|
-
continue;
|
|
96
|
-
}
|
|
97
|
-
if (type === 'string') {
|
|
98
|
-
const node = createTextNode(child);
|
|
99
|
-
insertNode(parent, node);
|
|
100
|
-
continue;
|
|
101
|
-
}
|
|
102
|
-
if (type === 'number' || type === 'boolean' || child instanceof Date || child instanceof RegExp) {
|
|
103
|
-
const node = createTextNode(child.toString());
|
|
104
|
-
insertNode(parent, node);
|
|
105
|
-
continue;
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
function isEventName(s) {
|
|
111
|
-
return s[0] === 'o' && s[1] === 'n';
|
|
112
|
-
}
|
|
113
|
-
function updateProps(dom, oldProps, newProps) {
|
|
114
|
-
const updatePayload = getUpdatePayload(dom, oldProps, newProps);
|
|
115
|
-
if (updatePayload) {
|
|
116
|
-
updatePropsByPayload(dom, oldProps, updatePayload);
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
function updatePropsByPayload(dom, oldProps, updatePayload) {
|
|
120
|
-
for (let i = 0; i < updatePayload.length; i += 2) { // key, value 成对出现
|
|
121
|
-
const key = updatePayload[i];
|
|
122
|
-
const newProp = updatePayload[i + 1];
|
|
123
|
-
const oldProp = oldProps[key];
|
|
124
|
-
setProperty(dom, key, newProp, oldProp);
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
function getUpdatePayload(dom, oldProps, newProps) {
|
|
128
|
-
let i;
|
|
129
|
-
let updatePayload = null;
|
|
130
|
-
for (i in oldProps) {
|
|
131
|
-
if (!(i in newProps)) {
|
|
132
|
-
(updatePayload = updatePayload || []).push(i, null);
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
const isFormElement = dom instanceof FormElement;
|
|
136
|
-
for (i in newProps) {
|
|
137
|
-
if (oldProps[i] !== newProps[i] || (isFormElement && i === 'value')) {
|
|
138
|
-
(updatePayload = updatePayload || []).push(i, newProps[i]);
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
return updatePayload;
|
|
142
|
-
}
|
|
143
|
-
// function eventProxy (e: CommonEvent) {
|
|
144
|
-
// const el = document.getElementById(e.currentTarget.id)
|
|
145
|
-
// const handlers = el!.__handlers[e.type]
|
|
146
|
-
// handlers[0](e)
|
|
147
|
-
// }
|
|
148
|
-
function setEvent(dom, name, value, oldValue) {
|
|
149
|
-
const isCapture = name.endsWith('Capture');
|
|
150
|
-
let eventName = name.toLowerCase().slice(2);
|
|
151
|
-
if (isCapture) {
|
|
152
|
-
eventName = eventName.slice(0, -7);
|
|
153
|
-
}
|
|
154
|
-
const compName = capitalize(toCamelCase(dom.tagName.toLowerCase()));
|
|
155
|
-
if (eventName === 'click' && process.env.TARO_PLATFORM !== 'harmony' && compName in internalComponents) {
|
|
156
|
-
eventName = 'tap';
|
|
157
|
-
}
|
|
158
|
-
if (isFunction(value)) {
|
|
159
|
-
if (oldValue) {
|
|
160
|
-
dom.removeEventListener(eventName, oldValue, false);
|
|
161
|
-
dom.addEventListener(eventName, value, { isCapture, sideEffect: false });
|
|
162
|
-
}
|
|
163
|
-
else {
|
|
164
|
-
dom.addEventListener(eventName, value, isCapture);
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
else {
|
|
168
|
-
dom.removeEventListener(eventName, oldValue);
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
function diffClassList(newVal, oldVal) {
|
|
172
|
-
const result = {};
|
|
173
|
-
for (const key in oldVal) {
|
|
174
|
-
if (newVal[key] !== oldVal[key]) {
|
|
175
|
-
result[key] = newVal[key];
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
for (const key in newVal) {
|
|
179
|
-
if (result.hasOwnProperty(key)) {
|
|
180
|
-
continue;
|
|
181
|
-
}
|
|
182
|
-
result[key] = newVal[key];
|
|
183
|
-
}
|
|
184
|
-
return result;
|
|
185
|
-
}
|
|
186
|
-
function setProperty(dom, name, value, oldValue) {
|
|
187
|
-
var _a, _b;
|
|
188
|
-
name = name === 'className' ? 'class' : name;
|
|
189
|
-
if (['key', 'children', 'ref'].includes(name))
|
|
190
|
-
return;
|
|
191
|
-
if (name === 'classList') {
|
|
192
|
-
const map = diffClassList(value, oldValue);
|
|
193
|
-
for (const key in map) {
|
|
194
|
-
if (key === '') {
|
|
195
|
-
continue;
|
|
196
|
-
}
|
|
197
|
-
if (map[key]) {
|
|
198
|
-
dom.classList.add(key);
|
|
199
|
-
}
|
|
200
|
-
else {
|
|
201
|
-
dom.classList.remove(key);
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
else if (isEventName(name)) {
|
|
206
|
-
setEvent(dom, name, value, oldValue);
|
|
207
|
-
}
|
|
208
|
-
else if (name === 'dangerouslySetInnerHTML') {
|
|
209
|
-
const newHtml = (_a = value === null || value === void 0 ? void 0 : value.__html) !== null && _a !== void 0 ? _a : '';
|
|
210
|
-
const oldHtml = (_b = oldValue === null || oldValue === void 0 ? void 0 : oldValue.__html) !== null && _b !== void 0 ? _b : '';
|
|
211
|
-
if (newHtml || oldHtml) {
|
|
212
|
-
if (oldHtml !== newHtml) {
|
|
213
|
-
dom.innerHTML = newHtml;
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
else if (!isFunction(value)) {
|
|
218
|
-
if (value == null) {
|
|
219
|
-
dom.removeAttribute(name);
|
|
220
|
-
}
|
|
221
|
-
else {
|
|
222
|
-
// 处理对象类型的style样式
|
|
223
|
-
if (name === 'style' && isObject(value)) {
|
|
224
|
-
value = Object.keys(value).reduce((acc, key) => {
|
|
225
|
-
acc.push(`${key}: ${value[key]}`);
|
|
226
|
-
return acc;
|
|
227
|
-
}, []).join(';');
|
|
228
|
-
}
|
|
229
|
-
dom.setAttribute(name, value);
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
const renderer = createRenderer({
|
|
235
|
-
createElement(type) {
|
|
236
|
-
return document$1.createElement(type);
|
|
237
|
-
},
|
|
238
|
-
createTextNode(text) {
|
|
239
|
-
return document$1.createTextNode(text);
|
|
240
|
-
},
|
|
241
|
-
replaceText(textNode, value) {
|
|
242
|
-
textNode.textContent = value;
|
|
243
|
-
},
|
|
244
|
-
setProperty(node, name, value, prev) {
|
|
245
|
-
setProperty(node, name, value, prev);
|
|
246
|
-
},
|
|
247
|
-
insertNode(parent, node, anchor) {
|
|
248
|
-
parent.insertBefore(node, anchor);
|
|
249
|
-
},
|
|
250
|
-
isTextNode(node) {
|
|
251
|
-
if (isString(node))
|
|
252
|
-
return true;
|
|
253
|
-
return node instanceof TaroText;
|
|
254
|
-
},
|
|
255
|
-
removeNode(parent, node) {
|
|
256
|
-
parent.removeChild(node);
|
|
257
|
-
},
|
|
258
|
-
getParentNode(node) {
|
|
259
|
-
return node.parentNode || undefined;
|
|
260
|
-
},
|
|
261
|
-
getFirstChild(node) {
|
|
262
|
-
return node.firstChild || undefined;
|
|
263
|
-
},
|
|
264
|
-
getNextSibling(node) {
|
|
265
|
-
return node.nextSibling || undefined;
|
|
266
|
-
},
|
|
267
|
-
});
|
|
268
|
-
const render = renderer.render;
|
|
269
|
-
const effect = renderer.effect;
|
|
270
|
-
const memo = renderer.memo;
|
|
271
|
-
const createComponent = (type, props) => {
|
|
272
|
-
if (isString(type))
|
|
273
|
-
return h(type, props);
|
|
274
|
-
if (isFunction(type))
|
|
275
|
-
return renderer.createComponent(type, props);
|
|
276
|
-
return renderer.createComponent(Fragment, props);
|
|
277
|
-
};
|
|
278
|
-
const createElement = renderer.createElement;
|
|
279
|
-
const createTextNode = renderer.createTextNode;
|
|
280
|
-
const insertNode = renderer.insertNode;
|
|
281
|
-
const insert = renderer.insert;
|
|
282
|
-
const spread = renderer.spread;
|
|
283
|
-
const setProp = renderer.setProp;
|
|
284
|
-
const mergeProps = renderer.mergeProps;
|
|
285
|
-
const use = renderer.use;
|
|
286
|
-
function Fragment(props) {
|
|
287
|
-
return props.children;
|
|
288
|
-
}
|
|
289
|
-
function jsx(type, props) {
|
|
290
|
-
return h(type, props);
|
|
291
|
-
}
|
|
292
|
-
|
|
293
|
-
function flushSync() {
|
|
294
|
-
batch(noop);
|
|
295
|
-
}
|
|
296
|
-
function unstable_batchedUpdates(fn) {
|
|
297
|
-
batch(fn);
|
|
298
|
-
}
|
|
299
|
-
|
|
300
|
-
function Portal(props) {
|
|
301
|
-
const marker = document.createTextNode('');
|
|
302
|
-
const mount = () => props.mount || document.body;
|
|
303
|
-
const owner = getOwner();
|
|
304
|
-
let content;
|
|
305
|
-
let hydrating = !!sharedConfig.context;
|
|
306
|
-
createEffect(() => {
|
|
307
|
-
// basically we backdoor into a sort of renderEffect here
|
|
308
|
-
if (hydrating)
|
|
309
|
-
getOwner().user = hydrating = false;
|
|
310
|
-
content || (content = runWithOwner(owner, () => createMemo(() => props.children)));
|
|
311
|
-
const el = mount();
|
|
312
|
-
const container = createElement('view');
|
|
313
|
-
const renderRoot = container;
|
|
314
|
-
Object.defineProperty(container, '_$host', {
|
|
315
|
-
get() {
|
|
316
|
-
return marker.parentNode;
|
|
317
|
-
},
|
|
318
|
-
configurable: true
|
|
319
|
-
});
|
|
320
|
-
insert(renderRoot, content);
|
|
321
|
-
el.appendChild(container);
|
|
322
|
-
props.ref && props.ref(container);
|
|
323
|
-
onCleanup(() => el.removeChild(container));
|
|
324
|
-
}, undefined, { render: !hydrating });
|
|
325
|
-
return marker;
|
|
326
|
-
}
|
|
327
|
-
function Dynamic(props) {
|
|
328
|
-
const [p, others] = splitProps(props, ['component']);
|
|
329
|
-
const cached = createMemo(() => p.component);
|
|
330
|
-
return createMemo(() => {
|
|
331
|
-
const component = cached();
|
|
332
|
-
switch (typeof component) {
|
|
333
|
-
case 'function':
|
|
334
|
-
// eslint-disable-next-line no-constant-condition
|
|
335
|
-
Object.assign(component, { [$DEVCOMP]: true });
|
|
336
|
-
return untrack(() => component(others));
|
|
337
|
-
case 'string':
|
|
338
|
-
// eslint-disable-next-line no-case-declarations
|
|
339
|
-
const el = createElement(component);
|
|
340
|
-
spread(el, others, false);
|
|
341
|
-
return el;
|
|
342
|
-
}
|
|
343
|
-
});
|
|
344
|
-
}
|
|
345
|
-
|
|
346
|
-
export { Dynamic, Fragment, Portal, createComponent, createElement, createTextNode, effect, flushSync, getUpdatePayload, insert, insertNode, jsx, jsx as jsxDEV, jsx as jsxs, memo, mergeProps, render, setProp, setProperty, spread, unstable_batchedUpdates, updateProps, updatePropsByPayload, use };
|
|
347
|
-
//# sourceMappingURL=reconciler.js.map
|
package/dist/reconciler.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"reconciler.js","sources":["../src/runtime/reconciler/h.ts","../src/runtime/reconciler/props.ts","../src/runtime/reconciler/render.ts","../src/runtime/reconciler/use.ts","../src/runtime/reconciler/index.ts"],"sourcesContent":["import { TaroNode } from '@tarojs/runtime'\nimport { children as solidChildren, createRenderEffect, onCleanup, splitProps } from 'solid-js'\n\nimport { createElement, createTextNode, effect, insert, insertNode, setProp } from './render'\n\nimport type { Accessor } from 'solid-js'\nimport type { ResolvedChildren } from 'solid-js/types/reactive/signal'\n\nexport type Component = (props?: any) => TaroNode\n\ntype Children =\n | undefined\n | string\n | number\n | TaroNode\n | TaroNode[]\n | Component\n | Component[]\n | Accessor<ResolvedChildren>\n | (() => Component[])\n\nexport function h(tagName: string, props?: any, children?: Children) {\n if (typeof tagName !== 'string') {\n throw Error(`h function cant create ele for ${tagName}`)\n }\n const ele = createElement(tagName)\n const [local, otherProps] = splitProps(props, ['ref', 'children'])\n\n setProps(ele, otherProps)\n\n if (local.ref) {\n createRenderEffect(() => {\n if (typeof local.ref === 'function') {\n local.ref(ele)\n } else {\n local.ref = ele\n }\n })\n }\n\n // get 的处理\n if (local.hasOwnProperty('children')) {\n const descriptor = Object.getOwnPropertyDescriptor(local, 'children')\n if (descriptor?.get) {\n children = solidChildren(() => local.children)\n } else {\n children = local.children\n }\n }\n insertNodes(ele, children)\n\n return ele\n}\n\nfunction setProps(ele: TaroNode, otherProps: Record<string, any> = {}) {\n const desc = { ...otherProps }\n const plain_keys = Object.keys(desc).filter((key) => {\n if (desc[key]?.get) {\n return false\n }\n return true\n })\n const [plainProps, getterValues] = splitProps(otherProps, plain_keys)\n\n // 普通属性直接赋值\n if (Object.keys(plainProps)?.length) {\n for (const key in plainProps) {\n setProp(ele, key, plainProps[key])\n }\n }\n\n // 特殊属性 放到createRenderEffect中\n if (Object.keys(getterValues)?.length) {\n let preProps = {} as typeof getterValues\n effect(() => {\n for (const key in getterValues) {\n const val = getterValues[key]\n\n if (val === preProps[key]) {\n continue\n }\n setProp(ele, key, val, preProps[key])\n preProps[key] = val\n }\n })\n onCleanup(() => {\n preProps = {}\n })\n }\n}\n\nfunction insertNodes(parent: TaroNode, children: Children) {\n if (children === undefined) {\n return\n }\n\n let list = [] as TaroNode[] | (() => TaroNode)[]\n if (!Array.isArray(children)) {\n list = [children] as TaroNode[] | (() => TaroNode)[]\n } else {\n list = children\n }\n for (let i = 0; i < list.length; i++) {\n const child = list[i]\n const type = typeof child\n if (type === 'function') {\n insert(parent, child, null)\n continue\n }\n if (Array.isArray(child)) {\n insertNodes(parent, child)\n continue\n }\n\n if (child instanceof TaroNode) {\n insertNode(parent, child)\n continue\n }\n\n if (type === 'string') {\n const node = createTextNode(child as unknown as string)\n insertNode(parent, node)\n continue\n }\n\n if (type === 'number' || type === 'boolean' || child instanceof Date || child instanceof RegExp) {\n const node = createTextNode(child.toString())\n insertNode(parent, node)\n continue\n }\n }\n}\n","import { FormElement } from '@tarojs/runtime'\nimport { capitalize, internalComponents, isFunction, isObject, toCamelCase } from '@tarojs/shared'\n\nimport type { TaroElement } from '@tarojs/runtime'\n\nexport type Props = Record<string, unknown>\n\nfunction isEventName (s: string) {\n return s[0] === 'o' && s[1] === 'n'\n}\n\nexport function updateProps (dom: TaroElement, oldProps: Props, newProps: Props) {\n const updatePayload = getUpdatePayload(dom, oldProps, newProps)\n if (updatePayload) {\n updatePropsByPayload(dom, oldProps, updatePayload)\n }\n}\n\nexport function updatePropsByPayload (dom: TaroElement, oldProps: Props, updatePayload: any[]) {\n for (let i = 0; i < updatePayload.length; i += 2) { // key, value 成对出现\n const key = updatePayload[i]; const newProp = updatePayload[i + 1]; const oldProp = oldProps[key]\n setProperty(dom, key, newProp, oldProp)\n }\n}\n\nexport function getUpdatePayload (dom: TaroElement, oldProps: Props, newProps: Props) {\n let i: string\n let updatePayload: any[] | null = null\n\n for (i in oldProps) {\n if (!(i in newProps)) {\n (updatePayload = updatePayload || []).push(i, null)\n }\n }\n const isFormElement = dom instanceof FormElement\n for (i in newProps) {\n if (oldProps[i] !== newProps[i] || (isFormElement && i === 'value')) {\n (updatePayload = updatePayload || []).push(i, newProps[i])\n }\n }\n\n return updatePayload\n}\n\n// function eventProxy (e: CommonEvent) {\n// const el = document.getElementById(e.currentTarget.id)\n// const handlers = el!.__handlers[e.type]\n// handlers[0](e)\n// }\n\nfunction setEvent (dom: TaroElement, name: string, value: unknown, oldValue?: unknown) {\n const isCapture = name.endsWith('Capture')\n let eventName = name.toLowerCase().slice(2)\n if (isCapture) {\n eventName = eventName.slice(0, -7)\n }\n\n const compName = capitalize(toCamelCase(dom.tagName.toLowerCase()))\n\n if (eventName === 'click' && process.env.TARO_PLATFORM !== 'harmony' && compName in internalComponents) {\n eventName = 'tap'\n }\n\n if (isFunction(value)) {\n if (oldValue) {\n dom.removeEventListener(eventName, oldValue as any, false)\n dom.addEventListener(eventName, value, { isCapture, sideEffect: false })\n } else {\n dom.addEventListener(eventName, value, isCapture)\n }\n } else {\n dom.removeEventListener(eventName, oldValue as any)\n }\n}\n\ninterface DangerouslySetInnerHTML {\n __html?: string\n}\ntype ClassList = { [key: string]: boolean }\n\nfunction diffClassList (newVal: ClassList, oldVal: ClassList) {\n const result: ClassList = {}\n for (const key in oldVal) {\n if (newVal[key] !== oldVal[key]) {\n result[key] = newVal[key]\n }\n }\n for (const key in newVal) {\n if (result.hasOwnProperty(key)) {\n continue\n }\n result[key] = newVal[key]\n }\n return result\n}\n\nexport function setProperty (dom: TaroElement, name: string, value: unknown, oldValue?: unknown) {\n name = name === 'className' ? 'class' : name\n\n if (['key', 'children', 'ref'].includes(name)) return\n\n if (name === 'classList') {\n const map = diffClassList(value as ClassList, oldValue as ClassList)\n for (const key in map) {\n if (key === '') {\n continue\n }\n if (map[key]) {\n (dom as any).classList.add(key)\n } else {\n (dom as any).classList.remove(key)\n }\n }\n } else if (isEventName(name)) {\n setEvent(dom, name, value, oldValue)\n } else if (name === 'dangerouslySetInnerHTML') {\n const newHtml = (value as DangerouslySetInnerHTML)?.__html ?? ''\n const oldHtml = (oldValue as DangerouslySetInnerHTML)?.__html ?? ''\n if (newHtml || oldHtml) {\n if (oldHtml !== newHtml) {\n dom.innerHTML = newHtml\n }\n }\n } else if (!isFunction(value)) {\n if (value == null) {\n dom.removeAttribute(name)\n } else {\n // 处理对象类型的style样式\n if (name === 'style' && isObject(value)) {\n value = Object.keys(value).reduce((acc, key) => {\n acc.push(`${key}: ${(value as Record<string, string>)[key]}`)\n return acc\n }, [] as string[]).join(';')\n }\n dom.setAttribute(name, value as string)\n }\n }\n}\n","import { document, TaroText } from '@tarojs/runtime'\nimport { isFunction, isString } from '@tarojs/shared'\nimport { createRenderer } from 'solid-js/universal'\n\nimport { h } from './h'\nimport { setProperty } from './props'\n\nimport type { TaroElement, TaroNode } from '@tarojs/runtime'\n\nconst renderer = createRenderer<TaroNode>({\n createElement(type: string) {\n return document.createElement(type)\n },\n createTextNode(text) {\n return document.createTextNode(text)\n },\n replaceText(textNode, value) {\n textNode.textContent = value\n },\n setProperty(node: TaroElement, name: string, value, prev) {\n setProperty(node, name, value, prev)\n },\n insertNode(parent, node, anchor) {\n parent.insertBefore(node, anchor)\n },\n isTextNode(node: TaroNode) {\n if (isString(node)) return true\n return node instanceof TaroText\n },\n removeNode(parent: TaroElement, node: TaroElement) {\n parent.removeChild(node)\n },\n getParentNode(node: TaroNode) {\n return node.parentNode || undefined\n },\n getFirstChild(node: TaroElement) {\n return node.firstChild || undefined\n },\n getNextSibling(node: TaroElement) {\n return node.nextSibling || undefined\n },\n})\n\nexport const render = renderer.render\nexport const effect = renderer.effect\nexport const memo = renderer.memo\nexport const createComponent = (type, props?) => {\n if (isString(type)) return h(type, props)\n if (isFunction(type)) return renderer.createComponent(type, props)\n return renderer.createComponent(Fragment, props)\n}\nexport const createElement = renderer.createElement\nexport const createTextNode = renderer.createTextNode\nexport const insertNode = renderer.insertNode\nexport const insert = renderer.insert\nexport const spread = renderer.spread\nexport const setProp = renderer.setProp\nexport const mergeProps = renderer.mergeProps\nexport const use = renderer.use\n\nfunction Fragment(props) {\n return props.children\n}\nfunction jsx(type, props) {\n return h(type, props)\n}\n\nexport { Fragment, jsx, jsx as jsxDEV, jsx as jsxs }\n","import { noop } from '@tarojs/shared'\nimport { batch } from 'solid-js'\n\nexport function flushSync () {\n batch(noop)\n}\n\nexport function unstable_batchedUpdates (fn) {\n batch(fn)\n}\n","import {\n $DEVCOMP,\n ComponentProps,\n createEffect,\n createMemo,\n getOwner,\n JSX,\n onCleanup,\n runWithOwner,\n sharedConfig,\n splitProps,\n untrack,\n ValidComponent\n} from 'solid-js'\n\nimport { createElement, insert, spread } from './render'\n\nexport * from './props'\nexport * from './render'\nexport * from './use'\n\nexport function Portal<T extends boolean = false, S extends boolean = false> (props: {\n mount?: Node\n ref?:\n | (S extends true ? SVGGElement : HTMLDivElement)\n | ((\n el: (T extends true ? { readonly shadowRoot: ShadowRoot } : object) & (S extends true ? SVGGElement : HTMLDivElement)\n ) => void)\n children: JSX.Element\n}) {\n const marker = document.createTextNode('')\n const mount = () => props.mount || document.body\n const owner = getOwner()\n let content: undefined | (() => JSX.Element)\n let hydrating = !!sharedConfig.context\n\n createEffect(\n () => {\n // basically we backdoor into a sort of renderEffect here\n if (hydrating) (getOwner() as any).user = hydrating = false\n content || (content = runWithOwner(owner, () => createMemo(() => props.children)))\n const el = mount()\n const container: any = createElement('view')\n const renderRoot = container\n\n Object.defineProperty(container, '_$host', {\n get () {\n return marker.parentNode\n },\n configurable: true\n })\n insert(renderRoot, content)\n el.appendChild(container)\n props.ref && (props as any).ref(container)\n onCleanup(() => el.removeChild(container))\n },\n undefined,\n { render: !hydrating }\n )\n return marker\n}\n\nexport type DynamicProps<T extends ValidComponent, P = ComponentProps<T>> = {\n [K in keyof P]: P[K];\n} & {\n component: T | undefined\n};\n\nexport function Dynamic<T extends ValidComponent> (props: DynamicProps<T>): JSX.Element {\n const [p, others] = splitProps(props, ['component'])\n const cached = createMemo(() => p.component)\n return createMemo(() => {\n const component = cached()\n switch (typeof component) {\n case 'function':\n // eslint-disable-next-line no-constant-condition\n if ('_DX_DEV_') Object.assign(component, { [$DEVCOMP]: true })\n return untrack(() => component(others))\n\n case 'string':\n // eslint-disable-next-line no-case-declarations\n const el = createElement(component)\n spread(el, others, false)\n return el\n\n default:\n break\n }\n }) as unknown as JSX.Element\n}\n"],"names":["children","solidChildren","document"],"mappings":"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"}
|