@spcsn/taro-runtime 0.1.1 → 1.0.0

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.
Files changed (110) hide show
  1. package/README.md +16 -39
  2. package/dist/_virtual/_@oxc-project_runtime@0.130.0/helpers/assertClassBrand.js +7 -0
  3. package/dist/_virtual/_@oxc-project_runtime@0.130.0/helpers/checkPrivateRedeclaration.js +6 -0
  4. package/dist/_virtual/_@oxc-project_runtime@0.130.0/helpers/classPrivateFieldGet2.js +7 -0
  5. package/dist/_virtual/_@oxc-project_runtime@0.130.0/helpers/classPrivateFieldInitSpec.js +7 -0
  6. package/dist/_virtual/_@oxc-project_runtime@0.130.0/helpers/classPrivateFieldSet2.js +7 -0
  7. package/dist/_virtual/_@oxc-project_runtime@0.130.0/helpers/classPrivateMethodInitSpec.js +7 -0
  8. package/dist/_virtual/_@oxc-project_runtime@0.130.0/helpers/defineProperty.js +12 -0
  9. package/dist/_virtual/_@oxc-project_runtime@0.130.0/helpers/objectSpread2.js +25 -0
  10. package/dist/_virtual/_@oxc-project_runtime@0.130.0/helpers/toPrimitive.js +14 -0
  11. package/dist/_virtual/_@oxc-project_runtime@0.130.0/helpers/toPropertyKey.js +9 -0
  12. package/dist/_virtual/_@oxc-project_runtime@0.130.0/helpers/typeof.js +11 -0
  13. package/dist/bom/{URL.js → URL2.js} +39 -30
  14. package/dist/bom/URL2.js.map +1 -0
  15. package/dist/bom/document.d.ts +0 -1
  16. package/dist/bom/document.js +1 -54
  17. package/dist/bom/document.js.map +1 -1
  18. package/dist/bom/get-computed-style.js +8 -0
  19. package/dist/bom/get-computed-style.js.map +1 -0
  20. package/dist/bom/history.d.ts +1 -5
  21. package/dist/bom/history.js +53 -40
  22. package/dist/bom/history.js.map +1 -1
  23. package/dist/bom/location.d.ts +1 -11
  24. package/dist/bom/location.js +103 -93
  25. package/dist/bom/location.js.map +1 -1
  26. package/dist/bom/navigator.js +1 -2
  27. package/dist/bom/navigator.js.map +1 -1
  28. package/dist/bom/raf.d.ts +2 -2
  29. package/dist/bom/raf.js +2 -2
  30. package/dist/bom/raf.js.map +1 -1
  31. package/dist/bom/url-search-params.d.ts +14 -0
  32. package/dist/bom/{URLSearchParams.js → url-search-params.js} +26 -25
  33. package/dist/bom/url-search-params.js.map +1 -0
  34. package/dist/bom/{URL.d.ts → url.d.ts} +2 -6
  35. package/dist/bom/url.js +196 -0
  36. package/dist/bom/url.js.map +1 -0
  37. package/dist/bom/window.d.ts +3 -3
  38. package/dist/bom/window.js +3 -3
  39. package/dist/bom/window.js.map +1 -1
  40. package/dist/current.d.ts +3 -0
  41. package/dist/current.js +10 -1
  42. package/dist/current.js.map +1 -1
  43. package/dist/dom/anchor-element.js +17 -9
  44. package/dist/dom/anchor-element.js.map +1 -1
  45. package/dist/dom/class-list.js +2 -1
  46. package/dist/dom/class-list.js.map +1 -1
  47. package/dist/dom/document.js.map +1 -1
  48. package/dist/dom/element.js +9 -8
  49. package/dist/dom/element.js.map +1 -1
  50. package/dist/dom/event-target.js +2 -4
  51. package/dist/dom/event-target.js.map +1 -1
  52. package/dist/dom/event.d.ts +1 -1
  53. package/dist/dom/event.js +19 -28
  54. package/dist/dom/event.js.map +1 -1
  55. package/dist/dom/form.js +3 -2
  56. package/dist/dom/form.js.map +1 -1
  57. package/dist/dom/node.d.ts +4 -3
  58. package/dist/dom/node.js +23 -13
  59. package/dist/dom/node.js.map +1 -1
  60. package/dist/dom/root.js +4 -6
  61. package/dist/dom/root.js.map +1 -1
  62. package/dist/dom/{style_properties.js → style-properties.js} +2 -2
  63. package/dist/dom/{style_properties.js.map → style-properties.js.map} +1 -1
  64. package/dist/dom/style.js +1 -1
  65. package/dist/dom/style.js.map +1 -1
  66. package/dist/dom/text.d.ts +1 -1
  67. package/dist/dom/text.js.map +1 -1
  68. package/dist/dom/transfer.js.map +1 -1
  69. package/dist/dom/tree.js +1 -1
  70. package/dist/dom/tree.js.map +1 -1
  71. package/dist/dom-external/mutation-observer/implements.js +1 -1
  72. package/dist/dom-external/mutation-observer/implements.js.map +1 -1
  73. package/dist/dsl/common.js +45 -63
  74. package/dist/dsl/common.js.map +1 -1
  75. package/dist/env.js +2 -2
  76. package/dist/env.js.map +1 -1
  77. package/dist/hydrate.js +11 -8
  78. package/dist/hydrate.js.map +1 -1
  79. package/dist/index.cjs.d.ts +4 -4
  80. package/dist/index.cjs.js +670 -911
  81. package/dist/index.cjs.js.map +1 -1
  82. package/dist/index.d.ts +4 -4
  83. package/dist/index.js +6 -6
  84. package/dist/next-tick.js +1 -4
  85. package/dist/next-tick.js.map +1 -1
  86. package/dist/perf.d.ts +1 -1
  87. package/dist/perf.js +10 -6
  88. package/dist/perf.js.map +1 -1
  89. package/dist/polyfill/index.js +1 -6
  90. package/dist/polyfill/index.js.map +1 -1
  91. package/dist/runtime.esm.d.ts +4 -4
  92. package/dist/runtime.esm.js +669 -911
  93. package/dist/runtime.esm.js.map +1 -1
  94. package/dist/utils/cache.js.map +1 -1
  95. package/dist/utils/index.js +9 -6
  96. package/dist/utils/index.js.map +1 -1
  97. package/dist/utils/router.js +2 -1
  98. package/dist/utils/router.js.map +1 -1
  99. package/package.json +26 -20
  100. package/LICENSE +0 -174
  101. package/dist/bom/URL.js.map +0 -1
  102. package/dist/bom/URLSearchParams.d.ts +0 -1
  103. package/dist/bom/URLSearchParams.js.map +0 -1
  104. package/dist/bom/getComputedStyle.js +0 -9
  105. package/dist/bom/getComputedStyle.js.map +0 -1
  106. package/dist/polyfill/intersection-observer.js +0 -494
  107. package/dist/polyfill/intersection-observer.js.map +0 -1
  108. /package/dist/bom/{getComputedStyle.d.ts → get-computed-style.d.ts} +0 -0
  109. /package/dist/dom/{node_types.d.ts → node-types.d.ts} +0 -0
  110. /package/dist/dom/{style_properties.d.ts → style-properties.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","names":[],"sources":["../../src/dsl/common.ts"],"sourcesContent":["/* eslint-disable dot-notation */\nimport {\n EMPTY_OBJ,\n ensure,\n EventChannel,\n getComponentsAlias,\n hooks,\n internalComponents,\n isArray,\n isEnableTTDom,\n isFunction,\n isString,\n isUndefined,\n Shortcuts,\n} from '@spcsn/taro-shared';\n\nimport { raf } from '../bom/raf';\nimport { taroWindowProvider } from '../bom/window';\nimport {\n BEHAVIORS,\n CONTEXT_ACTIONS,\n CUSTOM_WRAPPER,\n EXTERNAL_CLASSES,\n ON_HIDE,\n ON_LOAD,\n ON_READY,\n ON_SHOW,\n OPTIONS,\n PAGE_INIT,\n VIEW,\n} from '../constants';\nimport { Current } from '../current';\nimport { eventHandler } from '../dom/event';\nimport { eventCenter } from '../emitter/emitter';\nimport env from '../env';\nimport { perf } from '../perf';\nimport { customWrapperCache, incrementId } from '../utils';\nimport { addLeadingSlash } from '../utils/router';\n\nimport type { TaroRootElement } from '../dom/root';\nimport type { MpInstance, PageConfig, TFunc } from '../interface';\nimport type { Instance, PageInstance, PageProps } from './instance';\n\nconst instances = new Map<string, Instance>();\nconst pageId = incrementId();\n\nexport function injectPageInstance(inst: Instance<PageProps>, id: string) {\n hooks.call('mergePageInstance', instances.get(id), inst);\n instances.set(id, inst);\n}\n\nexport function getPageInstance(id: string): Instance | undefined {\n return instances.get(id);\n}\n\nexport function removePageInstance(id: string) {\n instances.delete(id);\n}\n\nexport function safeExecute(path: string, lifecycle: string, ...args: unknown[]) {\n const instance = instances.get(path);\n\n if (instance == null) {\n return;\n }\n\n const func = hooks.call('getLifecycle', instance, lifecycle as keyof PageInstance);\n\n if (isArray(func)) {\n const res = func.map((fn) => fn.apply(instance, args));\n return res[0];\n }\n\n if (!isFunction(func)) {\n return;\n }\n\n return func.apply(instance, args);\n}\n\nexport function stringify(obj?: Record<string, unknown>) {\n if (obj == null) {\n return '';\n }\n const path = Object.keys(obj)\n .map((key) => {\n return key + '=' + obj[key];\n })\n .join('&');\n return path === '' ? path : '?' + path;\n}\n\nexport function getPath(id: string, options?: Record<string, unknown>): string {\n const idx = id.indexOf('?');\n if (process.env.TARO_PLATFORM === 'web') {\n return `${idx > -1 ? id.substring(0, idx) : id}${stringify(options?.stamp ? { stamp: options.stamp } : {})}`;\n } else {\n return `${idx > -1 ? id.substring(0, idx) : id}${stringify(options)}`;\n }\n}\n\nexport function getOnReadyEventKey(path: string) {\n return path + '.' + ON_READY;\n}\n\nexport function getOnShowEventKey(path: string) {\n return path + '.' + ON_SHOW;\n}\n\nexport function getOnHideEventKey(path: string) {\n return path + '.' + ON_HIDE;\n}\n\nexport function createPageConfig(\n component: any,\n pageName?: string,\n data?: Record<string, unknown>,\n pageConfig?: PageConfig,\n) {\n // 小程序 Page 构造器是一个傲娇小公主,不能把复杂的对象挂载到参数上\n const id = pageName ?? `taro_page_${pageId()}`;\n const [ONLOAD, ONUNLOAD, ONREADY, ONSHOW, ONHIDE, LIFECYCLES, SIDE_EFFECT_LIFECYCLES] =\n hooks.call('getMiniLifecycleImpl')!.page;\n let pageElement: TaroRootElement | null = null;\n let unmounting = false;\n let prepareMountList: (() => void)[] = [];\n\n function setCurrentRouter(page: MpInstance) {\n const router =\n process.env.TARO_PLATFORM === 'web' ? page.$taroPath : page.route || page.__route__ || page.$taroPath;\n Current.router = {\n params: page.$taroParams!,\n path: addLeadingSlash(router),\n $taroPath: page.$taroPath,\n onReady: getOnReadyEventKey(id),\n onShow: getOnShowEventKey(id),\n onHide: getOnHideEventKey(id),\n };\n if (!isUndefined(page.exitState)) {\n Current.router.exitState = page.exitState;\n }\n }\n let loadResolver: (...args: unknown[]) => void;\n let hasLoaded: Promise<void>;\n const config: PageInstance = {\n [ONLOAD](this: MpInstance, options: Readonly<Record<string, unknown>> = {}, cb?: TFunc) {\n hasLoaded = new Promise((resolve) => {\n loadResolver = resolve;\n });\n\n perf.start(PAGE_INIT);\n\n Current.page = this as any;\n this.config = pageConfig || {};\n\n // this.$taroPath 是页面唯一标识\n const uniqueOptions = Object.assign({}, options, { $taroTimestamp: Date.now() });\n const $taroPath = (this.$taroPath = getPath(id, uniqueOptions));\n if (process.env.TARO_PLATFORM === 'web') {\n config.path = $taroPath;\n }\n // this.$taroParams 作为暴露给开发者的页面参数对象,可以被随意修改\n if (this.$taroParams == null) {\n this.$taroParams = uniqueOptions;\n }\n\n setCurrentRouter(this);\n\n // 初始化当前页面的上下文信息\n if (process.env.TARO_PLATFORM !== 'web') {\n taroWindowProvider.trigger(CONTEXT_ACTIONS.INIT, $taroPath);\n }\n\n const mount = () => {\n Current.app!.mount!(component, $taroPath, () => {\n if (process.env.TARO_ENV === 'tt' && isEnableTTDom()) {\n pageElement = (env.document as any).getPageDocumentById(this.__webviewId__);\n } else {\n pageElement = env.document.getElementById<TaroRootElement>($taroPath);\n }\n\n ensure(pageElement !== null, '没有找到页面实例。');\n safeExecute($taroPath, ON_LOAD, this.$taroParams);\n loadResolver();\n if (process.env.TARO_PLATFORM !== 'web') {\n pageElement.ctx = this;\n if (process.env.TARO_ENV === 'tt' && isEnableTTDom()) {\n (pageElement as any).sync();\n } else {\n pageElement.performUpdate(true, cb);\n }\n } else {\n isFunction(cb) && cb();\n }\n });\n };\n if (unmounting) {\n prepareMountList.push(mount);\n } else {\n mount();\n }\n },\n [ONUNLOAD]() {\n const $taroPath = this.$taroPath;\n // 销毁当前页面的上下文信息\n if (process.env.TARO_PLATFORM !== 'web') {\n taroWindowProvider.trigger(CONTEXT_ACTIONS.DESTROY, $taroPath);\n }\n // 触发onUnload生命周期\n safeExecute($taroPath, ONUNLOAD);\n unmounting = true;\n Current.app!.unmount!($taroPath, () => {\n unmounting = false;\n instances.delete($taroPath);\n if (pageElement) {\n pageElement.ctx = null;\n pageElement = null;\n }\n if (prepareMountList.length) {\n prepareMountList.forEach((fn) => fn());\n prepareMountList = [];\n }\n });\n },\n [ONREADY]() {\n hasLoaded.then(() => {\n // 触发生命周期\n safeExecute(this.$taroPath, ON_READY);\n // 通过事件触发子组件的生命周期\n raf(() => eventCenter.trigger(getOnReadyEventKey(id)));\n this.onReady.called = true;\n });\n },\n [ONSHOW](options = {}) {\n hasLoaded.then(() => {\n // 设置 Current 的 page 和 router\n Current.page = this as any;\n setCurrentRouter(this);\n // 恢复上下文信息\n if (process.env.TARO_PLATFORM !== 'web') {\n taroWindowProvider.trigger(CONTEXT_ACTIONS.RECOVER, this.$taroPath);\n }\n // 触发生命周期\n safeExecute(this.$taroPath, ON_SHOW, options);\n // 通过事件触发子组件的生命周期\n raf(() => eventCenter.trigger(getOnShowEventKey(id)));\n });\n },\n [ONHIDE]() {\n // 缓存当前页面上下文信息\n if (process.env.TARO_PLATFORM !== 'web') {\n taroWindowProvider.trigger(CONTEXT_ACTIONS.RESTORE, this.$taroPath);\n }\n // 设置 Current 的 page 和 router\n if (Current.page === this) {\n Current.page = null;\n Current.router = null;\n }\n // 触发生命周期\n safeExecute(this.$taroPath, ON_HIDE);\n // 通过事件触发子组件的生命周期\n eventCenter.trigger(getOnHideEventKey(id));\n },\n };\n\n if (process.env.TARO_PLATFORM === 'web') {\n config.getOpenerEventChannel = () => {\n return EventChannel.pageChannel;\n };\n }\n\n const isSWAN = process.env.TARO_ENV === 'swan'; // 百度小程序\n LIFECYCLES.forEach((lifecycle) => {\n let isDefer = false;\n let isEvent = false;\n lifecycle = lifecycle.replace(/^defer:/, () => {\n isDefer = true;\n return '';\n });\n lifecycle = lifecycle.replace(/^events:/, () => {\n isEvent = true;\n return '';\n });\n\n if (isEvent && process.env.TARO_ENV === 'alipay') {\n // 初始化 config.events 对象\n if (!config.events) config.events = {};\n config.events[lifecycle] = function () {\n return safeExecute(this.$taroPath, lifecycle, ...arguments);\n };\n } else {\n config[lifecycle] = function () {\n const exec = () => safeExecute(this.$taroPath, lifecycle, ...arguments);\n if (isSWAN) {\n return exec();\n }\n\n if (isDefer) {\n hasLoaded.then(exec);\n } else {\n return exec();\n }\n };\n }\n });\n\n // onShareAppMessage 和 onShareTimeline 一样,会影响小程序右上方按钮的选项,因此不能默认注册。\n SIDE_EFFECT_LIFECYCLES.forEach((lifecycle) => {\n if (\n component[lifecycle] ||\n component.prototype?.[lifecycle] ||\n component[lifecycle.replace(/^on/, 'enable')] ||\n pageConfig?.[lifecycle.replace(/^on/, 'enable')]\n ) {\n config[lifecycle] = function (...args) {\n const target = args[0]?.target;\n if (target?.id) {\n const id = target.id;\n const element = env.document.getElementById(id);\n if (element) {\n target.dataset = element.dataset;\n }\n }\n return safeExecute(this.$taroPath, lifecycle, ...args);\n };\n }\n });\n\n config.eh = eventHandler;\n\n if (!isUndefined(data)) {\n config.data = data;\n }\n\n hooks.call('modifyPageObject', config);\n\n return config;\n}\n\nexport function createComponentConfig(\n component: React.ComponentClass,\n componentName?: string,\n data?: Record<string, unknown>,\n) {\n const id = componentName ?? `taro_component_${pageId()}`;\n let componentElement: TaroRootElement | null = null;\n const [ATTACHED, DETACHED] = hooks.call('getMiniLifecycleImpl')!.component;\n\n const config: any = {\n [ATTACHED]() {\n perf.start(PAGE_INIT);\n this.pageIdCache = this.getPageId?.() || pageId();\n\n const path = getPath(id, { id: this.pageIdCache });\n\n Current.app!.mount!(component, path, () => {\n componentElement = env.document.getElementById<TaroRootElement>(path);\n ensure(componentElement !== null, '没有找到组件实例。');\n this.$taroInstances = instances.get(path);\n safeExecute(path, ON_LOAD);\n if (process.env.TARO_PLATFORM !== 'web') {\n componentElement.ctx = this;\n if (process.env.TARO_ENV !== 'tt' || !isEnableTTDom()) {\n componentElement.performUpdate(true);\n }\n }\n });\n },\n [DETACHED]() {\n const path = getPath(id, { id: this.pageIdCache });\n\n Current.app!.unmount!(path, () => {\n instances.delete(path);\n if (componentElement) {\n componentElement.ctx = null;\n }\n });\n },\n methods: {\n eh: eventHandler,\n },\n };\n\n if (!isUndefined(data)) {\n config.data = data;\n }\n\n [OPTIONS, EXTERNAL_CLASSES, BEHAVIORS].forEach((key) => {\n config[key] = component[key] ?? EMPTY_OBJ;\n });\n\n return config;\n}\n\nexport function createRecursiveComponentConfig(componentName?: string) {\n const isCustomWrapper = componentName === CUSTOM_WRAPPER;\n const [ATTACHED, DETACHED] = hooks.call('getMiniLifecycleImpl')!.component;\n\n const lifeCycles = isCustomWrapper\n ? {\n [ATTACHED]() {\n if (process.env.TARO_ENV === 'tt' && isEnableTTDom()) {\n return;\n }\n\n const componentId = this.data.i?.sid || this.props.i?.sid;\n if (isString(componentId)) {\n customWrapperCache.set(componentId, this);\n const el = env.document.getElementById(componentId);\n if (el) {\n el.ctx = this;\n }\n }\n },\n [DETACHED]() {\n if (process.env.TARO_ENV === 'tt' && isEnableTTDom()) {\n return;\n }\n\n const componentId = this.data.i?.sid || this.props.i?.sid;\n if (isString(componentId)) {\n customWrapperCache.delete(componentId);\n const el = env.document.getElementById(componentId);\n if (el) {\n el.ctx = null;\n }\n }\n },\n }\n : EMPTY_OBJ;\n\n // 不同平台的个性化配置\n const extraOptions: { [key: string]: any } = {};\n if (process.env.TARO_ENV === 'jd') {\n extraOptions.addGlobalClass = true;\n }\n\n return hooks.call(\n 'modifyRecursiveComponentConfig',\n {\n properties: {\n i: {\n type: Object,\n value: {\n [Shortcuts.NodeName]: getComponentsAlias(internalComponents)[VIEW]._num,\n },\n },\n l: {\n type: String,\n value: '',\n },\n },\n options: {\n ...extraOptions,\n virtualHost: !isCustomWrapper,\n },\n methods: {\n eh: eventHandler,\n },\n ...lifeCycles,\n },\n { isCustomWrapper },\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"common.js","names":[],"sources":["../../src/dsl/common.ts"],"sourcesContent":["import {\n EMPTY_OBJ,\n ensure,\n getComponentsAlias,\n hooks,\n internalComponents,\n isArray,\n isFunction,\n isString,\n isUndefined,\n Shortcuts,\n} from '@spcsn/taro-shared';\n\nimport { raf } from '../bom/raf';\nimport { taroWindowProvider } from '../bom/window';\nimport {\n BEHAVIORS,\n CONTEXT_ACTIONS,\n CUSTOM_WRAPPER,\n EXTERNAL_CLASSES,\n ON_HIDE,\n ON_LOAD,\n ON_READY,\n ON_SHOW,\n OPTIONS,\n PAGE_INIT,\n VIEW,\n} from '../constants';\nimport { Current, whenAppReady } from '../current';\nimport { eventHandler } from '../dom/event';\nimport { eventCenter } from '../emitter/emitter';\nimport env from '../env';\nimport { perf } from '../perf';\nimport { customWrapperCache, incrementId } from '../utils';\nimport { addLeadingSlash } from '../utils/router';\n\nimport type { TaroRootElement } from '../dom/root';\nimport type { MpInstance, PageConfig, TFunc } from '../interface';\nimport type { Instance, PageInstance, PageProps } from './instance';\n\nconst instances = new Map<string, Instance>();\nconst pageId = incrementId();\n\nexport function injectPageInstance(inst: Instance<PageProps>, id: string) {\n hooks.call('mergePageInstance', instances.get(id), inst);\n instances.set(id, inst);\n}\n\nexport function getPageInstance(id: string): Instance | undefined {\n return instances.get(id);\n}\n\nexport function removePageInstance(id: string) {\n instances.delete(id);\n}\n\nexport function safeExecute(path: string, lifecycle: string, ...args: unknown[]) {\n const instance = instances.get(path);\n\n if (instance == null) {\n return;\n }\n\n const func = hooks.call('getLifecycle', instance, lifecycle as keyof PageInstance);\n\n if (isArray(func)) {\n const res = func.map((fn) => fn.apply(instance, args));\n return res[0];\n }\n\n if (!isFunction(func)) {\n return;\n }\n\n return func.apply(instance, args);\n}\n\nexport function stringify(obj?: Record<string, unknown>) {\n if (obj == null) {\n return '';\n }\n const path = Object.keys(obj)\n .map((key) => {\n return key + '=' + obj[key];\n })\n .join('&');\n return path === '' ? path : '?' + path;\n}\n\nexport function getPath(id: string, options?: Record<string, unknown>): string {\n const idx = id.indexOf('?');\n return `${idx > -1 ? id.substring(0, idx) : id}${stringify(options)}`;\n}\n\nexport function getOnReadyEventKey(path: string) {\n return path + '.' + ON_READY;\n}\n\nexport function getOnShowEventKey(path: string) {\n return path + '.' + ON_SHOW;\n}\n\nexport function getOnHideEventKey(path: string) {\n return path + '.' + ON_HIDE;\n}\n\nexport function createPageConfig(\n component: any,\n pageName?: string,\n data?: Record<string, unknown>,\n pageConfig?: PageConfig,\n) {\n // 小程序 Page 构造器是一个傲娇小公主,不能把复杂的对象挂载到参数上\n const id = pageName ?? `taro_page_${pageId()}`;\n const [ONLOAD, ONUNLOAD, ONREADY, ONSHOW, ONHIDE, LIFECYCLES, SIDE_EFFECT_LIFECYCLES] =\n hooks.call('getMiniLifecycleImpl')!.page;\n let pageElement: TaroRootElement | null = null;\n let unmounting = false;\n let prepareMountList: (() => void)[] = [];\n\n function setCurrentRouter(page: MpInstance) {\n const router = page.route || page.__route__ || page.$taroPath;\n Current.router = {\n params: page.$taroParams!,\n path: addLeadingSlash(router),\n $taroPath: page.$taroPath,\n onReady: getOnReadyEventKey(id),\n onShow: getOnShowEventKey(id),\n onHide: getOnHideEventKey(id),\n };\n if (!isUndefined(page.exitState)) {\n Current.router.exitState = page.exitState;\n }\n }\n let loadResolver: () => void;\n let hasLoaded: Promise<void>;\n const config: PageInstance = {\n [ONLOAD](this: MpInstance, options: Readonly<Record<string, unknown>> = {}, cb?: TFunc) {\n hasLoaded = new Promise((resolve) => {\n loadResolver = resolve;\n });\n\n perf.start(PAGE_INIT);\n\n Current.page = this as any;\n this.config = pageConfig || {};\n\n // this.$taroPath 是页面唯一标识\n const uniqueOptions = Object.assign({}, options, { $taroTimestamp: Date.now() });\n const $taroPath = (this.$taroPath = getPath(id, uniqueOptions));\n // this.$taroParams 作为暴露给开发者的页面参数对象,可以被随意修改\n if (this.$taroParams == null) {\n this.$taroParams = uniqueOptions;\n }\n\n setCurrentRouter(this);\n\n // 初始化当前页面的上下文信息\n taroWindowProvider.trigger(CONTEXT_ACTIONS.INIT, $taroPath);\n\n const mount = () => {\n whenAppReady((app) =>\n app.mount!(component, $taroPath, () => {\n pageElement = env.document.getElementById<TaroRootElement>($taroPath);\n\n ensure(pageElement !== null, '没有找到页面实例。');\n safeExecute($taroPath, ON_LOAD, this.$taroParams);\n loadResolver();\n pageElement.ctx = this;\n pageElement.performUpdate(true, cb);\n }),\n );\n };\n if (unmounting) {\n prepareMountList.push(mount);\n } else {\n mount();\n }\n },\n [ONUNLOAD](this: MpInstance) {\n const $taroPath = this.$taroPath;\n // 销毁当前页面的上下文信息\n taroWindowProvider.trigger(CONTEXT_ACTIONS.DESTROY, $taroPath);\n // 触发onUnload生命周期\n safeExecute($taroPath, ONUNLOAD);\n unmounting = true;\n whenAppReady((app) =>\n app.unmount!($taroPath, () => {\n unmounting = false;\n instances.delete($taroPath);\n if (pageElement) {\n pageElement.ctx = null;\n pageElement = null;\n }\n if (prepareMountList.length) {\n prepareMountList.forEach((fn) => fn());\n prepareMountList = [];\n }\n }),\n );\n },\n [ONREADY](this: MpInstance) {\n hasLoaded.then(() => {\n // 触发生命周期\n safeExecute(this.$taroPath, ON_READY);\n // 通过事件触发子组件的生命周期\n raf(() => eventCenter.trigger(getOnReadyEventKey(id)));\n (this[ONREADY] as TFunc & { called?: boolean }).called = true;\n });\n },\n [ONSHOW](this: MpInstance, options = {}) {\n hasLoaded.then(() => {\n // 设置 Current 的 page 和 router\n Current.page = this as any;\n setCurrentRouter(this);\n // 恢复上下文信息\n taroWindowProvider.trigger(CONTEXT_ACTIONS.RECOVER, this.$taroPath);\n // 触发生命周期\n safeExecute(this.$taroPath, ON_SHOW, options);\n // 通过事件触发子组件的生命周期\n raf(() => eventCenter.trigger(getOnShowEventKey(id)));\n });\n },\n [ONHIDE](this: MpInstance) {\n // 缓存当前页面上下文信息\n taroWindowProvider.trigger(CONTEXT_ACTIONS.RESTORE, this.$taroPath);\n // 设置 Current 的 page 和 router\n if (Current.page === this) {\n Current.page = null;\n Current.router = null;\n }\n // 触发生命周期\n safeExecute(this.$taroPath, ON_HIDE);\n // 通过事件触发子组件的生命周期\n eventCenter.trigger(getOnHideEventKey(id));\n },\n };\n LIFECYCLES.forEach((lifecycle) => {\n let isDefer = false;\n let isEvent = false;\n lifecycle = lifecycle.replace(/^defer:/, () => {\n isDefer = true;\n return '';\n });\n lifecycle = lifecycle.replace(/^events:/, () => {\n isEvent = true;\n return '';\n });\n\n if (isEvent) {\n return;\n }\n\n config[lifecycle] = function (this: MpInstance, ...args) {\n const exec = () => safeExecute(this.$taroPath, lifecycle, ...args);\n if (isDefer) {\n hasLoaded.then(exec);\n } else {\n return exec();\n }\n };\n });\n\n // onShareAppMessage 和 onShareTimeline 一样,会影响小程序右上方按钮的选项,因此不能默认注册。\n SIDE_EFFECT_LIFECYCLES.forEach((lifecycle) => {\n if (\n component[lifecycle] ||\n component.prototype?.[lifecycle] ||\n component[lifecycle.replace(/^on/, 'enable')] ||\n pageConfig?.[lifecycle.replace(/^on/, 'enable')]\n ) {\n config[lifecycle] = function (this: MpInstance, ...args) {\n const target = args[0]?.target;\n if (target?.id) {\n const id = target.id;\n const element = env.document.getElementById(id);\n if (element) {\n target.dataset = element.dataset;\n }\n }\n return safeExecute(this.$taroPath, lifecycle, ...args);\n };\n }\n });\n\n config.eh = eventHandler;\n\n if (!isUndefined(data)) {\n config.data = data;\n }\n\n hooks.call('modifyPageObject', config);\n\n return config;\n}\n\nexport function createComponentConfig(\n component: React.ComponentClass,\n componentName?: string,\n data?: Record<string, unknown>,\n) {\n const id = componentName ?? `taro_component_${pageId()}`;\n let componentElement: TaroRootElement | null = null;\n const [ATTACHED, DETACHED] = hooks.call('getMiniLifecycleImpl')!.component;\n\n const config: any = {\n [ATTACHED]() {\n perf.start(PAGE_INIT);\n this.pageIdCache = this.getPageId?.() || pageId();\n\n const path = getPath(id, { id: this.pageIdCache });\n\n whenAppReady((app) =>\n app.mount!(component, path, () => {\n componentElement = env.document.getElementById<TaroRootElement>(path);\n ensure(componentElement !== null, '没有找到组件实例。');\n this.$taroInstances = instances.get(path);\n safeExecute(path, ON_LOAD);\n componentElement.ctx = this;\n componentElement.performUpdate(true);\n }),\n );\n },\n [DETACHED]() {\n const path = getPath(id, { id: this.pageIdCache });\n\n whenAppReady((app) =>\n app.unmount!(path, () => {\n instances.delete(path);\n if (componentElement) {\n componentElement.ctx = null;\n }\n }),\n );\n },\n methods: {\n eh: eventHandler,\n },\n };\n\n if (!isUndefined(data)) {\n config.data = data;\n }\n\n [OPTIONS, EXTERNAL_CLASSES, BEHAVIORS].forEach((key) => {\n config[key] = component[key] ?? EMPTY_OBJ;\n });\n\n return config;\n}\n\nexport function createRecursiveComponentConfig(componentName?: string) {\n const isCustomWrapper = componentName === CUSTOM_WRAPPER;\n const [ATTACHED, DETACHED] = hooks.call('getMiniLifecycleImpl')!.component;\n\n const lifeCycles = isCustomWrapper\n ? {\n [ATTACHED](this: any) {\n const componentId = this.data.i?.sid || this.props.i?.sid;\n if (isString(componentId)) {\n customWrapperCache.set(componentId, this);\n const el = env.document.getElementById(componentId);\n if (el) {\n el.ctx = this;\n }\n }\n },\n [DETACHED](this: any) {\n const componentId = this.data.i?.sid || this.props.i?.sid;\n if (isString(componentId)) {\n customWrapperCache.delete(componentId);\n const el = env.document.getElementById(componentId);\n if (el) {\n el.ctx = null;\n }\n }\n },\n }\n : EMPTY_OBJ;\n\n return hooks.call(\n 'modifyRecursiveComponentConfig',\n {\n properties: {\n i: {\n type: Object,\n value: {\n [Shortcuts.NodeName]: getComponentsAlias(internalComponents)[VIEW]._num,\n },\n },\n l: {\n type: String,\n value: '',\n },\n },\n options: {\n virtualHost: !isCustomWrapper,\n },\n methods: {\n eh: eventHandler,\n },\n ...lifeCycles,\n },\n { isCustomWrapper },\n );\n}\n"],"mappings":";;;;;;;;;;;;;AAwCA,MAAM,4BAAY,IAAI,IAAsB;AAC5C,MAAM,SAAS,YAAY;AAE3B,SAAgB,mBAAmB,MAA2B,IAAY;CACxE,MAAM,KAAK,qBAAqB,UAAU,IAAI,EAAE,GAAG,IAAI;CACvD,UAAU,IAAI,IAAI,IAAI;AACxB;AAEA,SAAgB,gBAAgB,IAAkC;CAChE,OAAO,UAAU,IAAI,EAAE;AACzB;AAEA,SAAgB,mBAAmB,IAAY;CAC7C,UAAU,OAAO,EAAE;AACrB;AAEA,SAAgB,YAAY,MAAc,WAAmB,GAAG,MAAiB;CAC/E,MAAM,WAAW,UAAU,IAAI,IAAI;CAEnC,IAAI,YAAY,MACd;CAGF,MAAM,OAAO,MAAM,KAAK,gBAAgB,UAAU,SAA+B;CAEjF,IAAI,QAAQ,IAAI,GAEd,OADY,KAAK,KAAK,OAAO,GAAG,MAAM,UAAU,IAAI,CAC3C,EAAE;CAGb,IAAI,CAAC,WAAW,IAAI,GAClB;CAGF,OAAO,KAAK,MAAM,UAAU,IAAI;AAClC;AAEA,SAAgB,UAAU,KAA+B;CACvD,IAAI,OAAO,MACT,OAAO;CAET,MAAM,OAAO,OAAO,KAAK,GAAG,EACzB,KAAK,QAAQ;EACZ,OAAO,MAAM,MAAM,IAAI;CACzB,CAAC,EACA,KAAK,GAAG;CACX,OAAO,SAAS,KAAK,OAAO,MAAM;AACpC;AAEA,SAAgB,QAAQ,IAAY,SAA2C;CAC7E,MAAM,MAAM,GAAG,QAAQ,GAAG;CAC1B,OAAO,GAAG,MAAM,KAAK,GAAG,UAAU,GAAG,GAAG,IAAI,KAAK,UAAU,OAAO;AACpE;AAEA,SAAgB,mBAAmB,MAAc;CAC/C,OAAO,OAAO,MAAM;AACtB;AAEA,SAAgB,kBAAkB,MAAc;CAC9C,OAAO,OAAO,MAAM;AACtB;AAEA,SAAgB,kBAAkB,MAAc;CAC9C,OAAO,OAAO,MAAM;AACtB;AAEA,SAAgB,iBACd,WACA,UACA,MACA,YACA;CAEA,MAAM,KAAK,aAAA,QAAA,aAAA,KAAA,IAAA,WAAY,aAAa,OAAO;CAC3C,MAAM,CAAC,QAAQ,UAAU,SAAS,QAAQ,QAAQ,YAAY,0BAC5D,MAAM,KAAK,sBAAsB,EAAG;CACtC,IAAI,cAAsC;CAC1C,IAAI,aAAa;CACjB,IAAI,mBAAmC,CAAC;CAExC,SAAS,iBAAiB,MAAkB;EAC1C,MAAM,SAAS,KAAK,SAAS,KAAK,aAAa,KAAK;EACpD,QAAQ,SAAS;GACf,QAAQ,KAAK;GACb,MAAM,gBAAgB,MAAM;GAC5B,WAAW,KAAK;GAChB,SAAS,mBAAmB,EAAE;GAC9B,QAAQ,kBAAkB,EAAE;GAC5B,QAAQ,kBAAkB,EAAE;EAC9B;EACA,IAAI,CAAC,YAAY,KAAK,SAAS,GAC7B,QAAQ,OAAO,YAAY,KAAK;CAEpC;CACA,IAAI;CACJ,IAAI;CACJ,MAAM,SAAuB;EAC3B,CAAC,QAA0B,UAA6C,CAAC,GAAG,IAAY;GACtF,YAAY,IAAI,SAAS,YAAY;IACnC,eAAe;GACjB,CAAC;GAED,KAAK,MAAM,SAAS;GAEpB,QAAQ,OAAO;GACf,KAAK,SAAS,cAAc,CAAC;GAG7B,MAAM,gBAAgB,OAAO,OAAO,CAAC,GAAG,SAAS,EAAE,gBAAgB,KAAK,IAAI,EAAE,CAAC;GAC/E,MAAM,YAAa,KAAK,YAAY,QAAQ,IAAI,aAAa;GAE7D,IAAI,KAAK,eAAe,MACtB,KAAK,cAAc;GAGrB,iBAAiB,IAAI;GAGrB,mBAAmB,QAAA,KAA8B,SAAS;GAE1D,MAAM,cAAc;IAClB,cAAc,QACZ,IAAI,MAAO,WAAW,iBAAiB;KACrC,cAAc,IAAI,SAAS,eAAgC,SAAS;KAEpE,OAAO,gBAAgB,MAAM,WAAW;KACxC,YAAY,WAAW,SAAS,KAAK,WAAW;KAChD,aAAa;KACb,YAAY,MAAM;KAClB,YAAY,cAAc,MAAM,EAAE;IACpC,CAAC,CACH;GACF;GACA,IAAI,YACF,iBAAiB,KAAK,KAAK;QAE3B,MAAM;EAEV;EACA,CAAC,YAA4B;GAC3B,MAAM,YAAY,KAAK;GAEvB,mBAAmB,QAAA,KAAiC,SAAS;GAE7D,YAAY,WAAW,QAAQ;GAC/B,aAAa;GACb,cAAc,QACZ,IAAI,QAAS,iBAAiB;IAC5B,aAAa;IACb,UAAU,OAAO,SAAS;IAC1B,IAAI,aAAa;KACf,YAAY,MAAM;KAClB,cAAc;IAChB;IACA,IAAI,iBAAiB,QAAQ;KAC3B,iBAAiB,SAAS,OAAO,GAAG,CAAC;KACrC,mBAAmB,CAAC;IACtB;GACF,CAAC,CACH;EACF;EACA,CAAC,WAA2B;GAC1B,UAAU,WAAW;IAEnB,YAAY,KAAK,WAAW,QAAQ;IAEpC,WAAU,YAAY,QAAQ,mBAAmB,EAAE,CAAC,CAAC;IACrD,KAAM,SAA0C,SAAS;GAC3D,CAAC;EACH;EACA,CAAC,QAA0B,UAAU,CAAC,GAAG;GACvC,UAAU,WAAW;IAEnB,QAAQ,OAAO;IACf,iBAAiB,IAAI;IAErB,mBAAmB,QAAA,KAAiC,KAAK,SAAS;IAElE,YAAY,KAAK,WAAW,SAAS,OAAO;IAE5C,WAAU,YAAY,QAAQ,kBAAkB,EAAE,CAAC,CAAC;GACtD,CAAC;EACH;EACA,CAAC,UAA0B;GAEzB,mBAAmB,QAAA,KAAiC,KAAK,SAAS;GAElE,IAAI,QAAQ,SAAS,MAAM;IACzB,QAAQ,OAAO;IACf,QAAQ,SAAS;GACnB;GAEA,YAAY,KAAK,WAAW,OAAO;GAEnC,YAAY,QAAQ,kBAAkB,EAAE,CAAC;EAC3C;CACF;CACA,WAAW,SAAS,cAAc;EAChC,IAAI,UAAU;EACd,IAAI,UAAU;EACd,YAAY,UAAU,QAAQ,iBAAiB;GAC7C,UAAU;GACV,OAAO;EACT,CAAC;EACD,YAAY,UAAU,QAAQ,kBAAkB;GAC9C,UAAU;GACV,OAAO;EACT,CAAC;EAED,IAAI,SACF;EAGF,OAAO,aAAa,SAA4B,GAAG,MAAM;GACvD,MAAM,aAAa,YAAY,KAAK,WAAW,WAAW,GAAG,IAAI;GACjE,IAAI,SACF,UAAU,KAAK,IAAI;QAEnB,OAAO,KAAK;EAEhB;CACF,CAAC;CAGD,uBAAuB,SAAS,cAAc;;EAC5C,IACE,UAAU,gBAAA,uBACV,UAAU,eAAA,QAAA,yBAAA,KAAA,IAAA,KAAA,IAAA,qBAAY,eACtB,UAAU,UAAU,QAAQ,OAAO,QAAQ,OAAA,eAAA,QAAA,eAAA,KAAA,IAAA,KAAA,IAC3C,WAAa,UAAU,QAAQ,OAAO,QAAQ,KAE9C,OAAO,aAAa,SAA4B,GAAG,MAAM;;GACvD,MAAM,UAAA,SAAS,KAAK,QAAA,QAAA,WAAA,KAAA,IAAA,KAAA,IAAA,OAAI;GACxB,IAAA,WAAA,QAAA,WAAA,KAAA,IAAA,KAAA,IAAI,OAAQ,IAAI;IACd,MAAM,KAAK,OAAO;IAClB,MAAM,UAAU,IAAI,SAAS,eAAe,EAAE;IAC9C,IAAI,SACF,OAAO,UAAU,QAAQ;GAE7B;GACA,OAAO,YAAY,KAAK,WAAW,WAAW,GAAG,IAAI;EACvD;CAEJ,CAAC;CAED,OAAO,KAAK;CAEZ,IAAI,CAAC,YAAY,IAAI,GACnB,OAAO,OAAO;CAGhB,MAAM,KAAK,oBAAoB,MAAM;CAErC,OAAO;AACT;AAEA,SAAgB,sBACd,WACA,eACA,MACA;CACA,MAAM,KAAK,kBAAA,QAAA,kBAAA,KAAA,IAAA,gBAAiB,kBAAkB,OAAO;CACrD,IAAI,mBAA2C;CAC/C,MAAM,CAAC,UAAU,YAAY,MAAM,KAAK,sBAAsB,EAAG;CAEjE,MAAM,SAAc;EAClB,CAAC,YAAY;;GACX,KAAK,MAAM,SAAS;GACpB,KAAK,gBAAA,kBAAc,KAAK,eAAA,QAAA,oBAAA,KAAA,IAAA,KAAA,IAAA,gBAAA,KAAA,IAAY,MAAK,OAAO;GAEhD,MAAM,OAAO,QAAQ,IAAI,EAAE,IAAI,KAAK,YAAY,CAAC;GAEjD,cAAc,QACZ,IAAI,MAAO,WAAW,YAAY;IAChC,mBAAmB,IAAI,SAAS,eAAgC,IAAI;IACpE,OAAO,qBAAqB,MAAM,WAAW;IAC7C,KAAK,iBAAiB,UAAU,IAAI,IAAI;IACxC,YAAY,MAAM,OAAO;IACzB,iBAAiB,MAAM;IACvB,iBAAiB,cAAc,IAAI;GACrC,CAAC,CACH;EACF;EACA,CAAC,YAAY;GACX,MAAM,OAAO,QAAQ,IAAI,EAAE,IAAI,KAAK,YAAY,CAAC;GAEjD,cAAc,QACZ,IAAI,QAAS,YAAY;IACvB,UAAU,OAAO,IAAI;IACrB,IAAI,kBACF,iBAAiB,MAAM;GAE3B,CAAC,CACH;EACF;EACA,SAAS,EACP,IAAI,aACN;CACF;CAEA,IAAI,CAAC,YAAY,IAAI,GACnB,OAAO,OAAO;CAGhB;EAAC;EAAS;EAAkB;CAAS,EAAE,SAAS,QAAQ;;EACtD,OAAO,QAAA,iBAAO,UAAU,UAAA,QAAA,mBAAA,KAAA,IAAA,iBAAQ;CAClC,CAAC;CAED,OAAO;AACT;AAEA,SAAgB,+BAA+B,eAAwB;CACrE,MAAM,kBAAkB,kBAAkB;CAC1C,MAAM,CAAC,UAAU,YAAY,MAAM,KAAK,sBAAsB,EAAG;CAEjE,MAAM,aAAa,kBACf;EACE,CAAC,YAAqB;;GACpB,MAAM,gBAAA,eAAc,KAAK,KAAK,OAAA,QAAA,iBAAA,KAAA,IAAA,KAAA,IAAA,aAAG,UAAA,gBAAO,KAAK,MAAM,OAAA,QAAA,kBAAA,KAAA,IAAA,KAAA,IAAA,cAAG;GACtD,IAAI,SAAS,WAAW,GAAG;IACzB,mBAAmB,IAAI,aAAa,IAAI;IACxC,MAAM,KAAK,IAAI,SAAS,eAAe,WAAW;IAClD,IAAI,IACF,GAAG,MAAM;GAEb;EACF;EACA,CAAC,YAAqB;;GACpB,MAAM,gBAAA,gBAAc,KAAK,KAAK,OAAA,QAAA,kBAAA,KAAA,IAAA,KAAA,IAAA,cAAG,UAAA,iBAAO,KAAK,MAAM,OAAA,QAAA,mBAAA,KAAA,IAAA,KAAA,IAAA,eAAG;GACtD,IAAI,SAAS,WAAW,GAAG;IACzB,mBAAmB,OAAO,WAAW;IACrC,MAAM,KAAK,IAAI,SAAS,eAAe,WAAW;IAClD,IAAI,IACF,GAAG,MAAM;GAEb;EACF;CACF,IACA;CAEJ,OAAO,MAAM,KACX,kCAAA,eAAA;EAEE,YAAY;GACV,GAAG;IACD,MAAM;IACN,OAAO,GACJ,UAAU,WAAW,mBAAmB,kBAAkB,EAAE,MAAM,KACrE;GACF;GACA,GAAG;IACD,MAAM;IACN,OAAO;GACT;EACF;EACA,SAAS,EACP,aAAa,CAAC,gBAChB;EACA,SAAS,EACP,IAAI,aACN;IACG,UACL,GACA,EAAE,gBAAgB,CACpB;AACF"}
package/dist/env.js CHANGED
@@ -1,8 +1,8 @@
1
1
  import { EMPTY_OBJ } from "@spcsn/taro-shared";
2
2
  //#region src/env.ts
3
3
  const env = {
4
- window: process.env.TARO_PLATFORM === "web" ? window : EMPTY_OBJ,
5
- document: process.env.TARO_PLATFORM === "web" ? document : EMPTY_OBJ
4
+ window: EMPTY_OBJ,
5
+ document: EMPTY_OBJ
6
6
  };
7
7
  //#endregion
8
8
  export { env as default };
package/dist/env.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"env.js","names":[],"sources":["../src/env.ts"],"sourcesContent":["import { EMPTY_OBJ } from '@spcsn/taro-shared';\n\nimport type { TaroDocument } from './dom/document';\n\ninterface Env {\n window;\n document: TaroDocument;\n}\n\nconst env: Env = {\n window: process.env.TARO_PLATFORM === 'web' ? window : EMPTY_OBJ,\n document: process.env.TARO_PLATFORM === 'web' ? document : EMPTY_OBJ,\n};\n\nexport default env;\n"],"mappings":";;AASA,MAAM,MAAW;CACf,QAAQ,QAAQ,IAAI,kBAAkB,QAAQ,SAAS;CACvD,UAAU,QAAQ,IAAI,kBAAkB,QAAQ,WAAW;AAC7D"}
1
+ {"version":3,"file":"env.js","names":[],"sources":["../src/env.ts"],"sourcesContent":["import { EMPTY_OBJ } from '@spcsn/taro-shared';\n\nimport type { TaroDocument } from './dom/document';\n\ninterface Env {\n window;\n document: TaroDocument;\n}\n\nconst env: Env = {\n window: EMPTY_OBJ,\n document: EMPTY_OBJ,\n};\n\nexport default env;\n"],"mappings":";;AASA,MAAM,MAAW;CACf,QAAQ;CACR,UAAU;AACZ"}
package/dist/hydrate.js CHANGED
@@ -11,15 +11,18 @@ let componentsAlias;
11
11
  * it's a vnode traverser and modifier: that's exactly what Taro's doing in here.
12
12
  */
13
13
  function hydrate(node) {
14
- componentsAlias ||= getComponentsAlias$1();
15
- SPECIAL_NODES ||= hooks.call("getSpecialNodes");
14
+ componentsAlias || (componentsAlias = getComponentsAlias$1());
15
+ SPECIAL_NODES || (SPECIAL_NODES = hooks.call("getSpecialNodes"));
16
16
  const nodeName = node.nodeName;
17
17
  let compileModeName = null;
18
- if (isText(node)) return {
19
- sid: node.sid,
20
- [Shortcuts.Text]: node.nodeValue,
21
- [Shortcuts.NodeName]: componentsAlias[nodeName]?._num || "8"
22
- };
18
+ if (isText(node)) {
19
+ var _componentsAlias$node;
20
+ return {
21
+ sid: node.sid,
22
+ [Shortcuts.Text]: node.nodeValue,
23
+ [Shortcuts.NodeName]: ((_componentsAlias$node = componentsAlias[nodeName]) === null || _componentsAlias$node === void 0 ? void 0 : _componentsAlias$node._num) || "8"
24
+ };
25
+ }
23
26
  const data = {
24
27
  [Shortcuts.NodeName]: nodeName,
25
28
  sid: node.sid
@@ -36,7 +39,7 @@ function hydrate(node) {
36
39
  for (const prop in props) {
37
40
  const propInCamelCase = toCamelCase(prop);
38
41
  if (!prop.startsWith("data-") && prop !== "class" && prop !== "style" && prop !== "id" && propInCamelCase !== "catchMove" && propInCamelCase !== "compileMode") data[propInCamelCase] = props[prop];
39
- if (process.env.TARO_ENV !== "swan" && nodeName === "view" && propInCamelCase === "catchMove" && props[prop] !== false) data[Shortcuts.NodeName] = CATCH_VIEW;
42
+ if (nodeName === "view" && propInCamelCase === "catchMove" && props[prop] !== false) data[Shortcuts.NodeName] = CATCH_VIEW;
40
43
  if (propInCamelCase === "compileMode") compileModeName = props[prop];
41
44
  }
42
45
  data[Shortcuts.Childnodes] = node.childNodes.filter((node) => !isComment(node)).map(hydrate);
@@ -1 +1 @@
1
- {"version":3,"file":"hydrate.js","names":["getComponentsAlias"],"sources":["../src/hydrate.ts"],"sourcesContent":["import { hooks, Shortcuts, toCamelCase } from '@spcsn/taro-shared';\n\nimport { CATCH_VIEW, CATCHMOVE, CLASS, CLICK_VIEW, COMPILE_MODE, ID, PURE_VIEW, STYLE, VIEW } from './constants';\nimport { getComponentsAlias, isComment, isHasExtractProp, isText } from './utils';\n\nimport type { TaroElement } from './dom/element';\nimport type { TaroText } from './dom/text';\nimport type { MiniData, MiniElementData } from './interface';\n\nlet SPECIAL_NODES;\nlet componentsAlias;\n\n/**\n * React also has a fancy function's name for this: `hydrate()`.\n * You may have been heard `hydrate` as a SSR-related function,\n * actually, `hydrate` basicly do the `render()` thing, but ignore some properties,\n * it's a vnode traverser and modifier: that's exactly what Taro's doing in here.\n */\nexport function hydrate(node: TaroElement | TaroText): MiniData {\n // 初始化 componentsAlias\n componentsAlias ||= getComponentsAlias();\n\n // 初始化 SPECIAL_NODES\n SPECIAL_NODES ||= hooks.call('getSpecialNodes')!;\n\n const nodeName = node.nodeName;\n let compileModeName = null;\n\n if (isText(node)) {\n return {\n sid: node.sid,\n [Shortcuts.Text]: node.nodeValue,\n [Shortcuts.NodeName]: componentsAlias[nodeName]?._num || '8',\n };\n }\n\n const data: MiniElementData = {\n [Shortcuts.NodeName]: nodeName,\n sid: node.sid,\n };\n\n if (node.uid !== node.sid) {\n data.uid = node.uid;\n }\n\n if (SPECIAL_NODES.indexOf(nodeName) > -1) {\n if (!node.isAnyEventBinded()) {\n data[Shortcuts.NodeName] = `static-${nodeName}`;\n if (nodeName === VIEW && !isHasExtractProp(node)) {\n data[Shortcuts.NodeName] = PURE_VIEW;\n }\n }\n\n if (nodeName === VIEW && node.isOnlyClickBinded() && !isHasExtractProp(node)) {\n data[Shortcuts.NodeName] = CLICK_VIEW;\n }\n }\n\n const { props } = node;\n for (const prop in props) {\n const propInCamelCase = toCamelCase(prop);\n if (\n !prop.startsWith('data-') && // 在 node.dataset 的数据\n prop !== CLASS &&\n prop !== STYLE &&\n prop !== ID &&\n propInCamelCase !== CATCHMOVE &&\n propInCamelCase !== COMPILE_MODE\n ) {\n data[propInCamelCase] = props[prop];\n }\n if (\n process.env.TARO_ENV !== 'swan' &&\n nodeName === VIEW &&\n propInCamelCase === CATCHMOVE &&\n props[prop] !== false\n ) {\n data[Shortcuts.NodeName] = CATCH_VIEW;\n }\n if (propInCamelCase === COMPILE_MODE) {\n compileModeName = props[prop];\n }\n }\n\n // Children\n data[Shortcuts.Childnodes] = node.childNodes.filter((node) => !isComment(node)).map(hydrate);\n\n if (node.className !== '') {\n data[Shortcuts.Class] = node.className;\n }\n\n const cssText = node.cssText;\n if (cssText !== '' && nodeName !== 'swiper-item') {\n data[Shortcuts.Style] = cssText;\n }\n\n hooks.call('modifyHydrateData', data, node);\n\n const nn = data[Shortcuts.NodeName];\n const componentAlias = componentsAlias[nn];\n if (componentAlias) {\n data[Shortcuts.NodeName] = componentAlias._num;\n for (const prop in data) {\n if (prop in componentAlias) {\n data[componentAlias[prop]] = data[prop];\n delete data[prop];\n }\n }\n }\n\n if (compileModeName !== null) {\n data[Shortcuts.NodeName] = compileModeName;\n }\n\n const resData = hooks.call('transferHydrateData', data, node, componentAlias);\n\n return resData || data;\n}\n"],"mappings":";;;;AASA,IAAI;AACJ,IAAI;;;;;;;AAQJ,SAAgB,QAAQ,MAAwC;CAE9D,oBAAoBA,qBAAmB;CAGvC,kBAAkB,MAAM,KAAK,iBAAiB;CAE9C,MAAM,WAAW,KAAK;CACtB,IAAI,kBAAkB;CAEtB,IAAI,OAAO,IAAI,GACb,OAAO;EACL,KAAK,KAAK;GACT,UAAU,OAAO,KAAK;GACtB,UAAU,WAAW,gBAAgB,WAAW,QAAQ;CAC3D;CAGF,MAAM,OAAwB;GAC3B,UAAU,WAAW;EACtB,KAAK,KAAK;CACZ;CAEA,IAAI,KAAK,QAAQ,KAAK,KACpB,KAAK,MAAM,KAAK;CAGlB,IAAI,cAAc,QAAQ,QAAQ,IAAI,IAAI;EACxC,IAAI,CAAC,KAAK,iBAAiB,GAAG;GAC5B,KAAK,UAAU,YAAY,UAAU;GACrC,IAAI,aAAA,UAAqB,CAAC,iBAAiB,IAAI,GAC7C,KAAK,UAAU,YAAY;EAE/B;EAEA,IAAI,aAAA,UAAqB,KAAK,kBAAkB,KAAK,CAAC,iBAAiB,IAAI,GACzE,KAAK,UAAU,YAAY;CAE/B;CAEA,MAAM,EAAE,UAAU;CAClB,KAAK,MAAM,QAAQ,OAAO;EACxB,MAAM,kBAAkB,YAAY,IAAI;EACxC,IACE,CAAC,KAAK,WAAW,OAAO,KACxB,SAAA,WACA,SAAA,WACA,SAAA,QACA,oBAAA,eACA,oBAAA,eAEA,KAAK,mBAAmB,MAAM;EAEhC,IACE,QAAQ,IAAI,aAAa,UACzB,aAAA,UACA,oBAAA,eACA,MAAM,UAAU,OAEhB,KAAK,UAAU,YAAY;EAE7B,IAAI,oBAAA,eACF,kBAAkB,MAAM;CAE5B;CAGA,KAAK,UAAU,cAAc,KAAK,WAAW,QAAQ,SAAS,CAAC,UAAU,IAAI,CAAC,EAAE,IAAI,OAAO;CAE3F,IAAI,KAAK,cAAc,IACrB,KAAK,UAAU,SAAS,KAAK;CAG/B,MAAM,UAAU,KAAK;CACrB,IAAI,YAAY,MAAM,aAAa,eACjC,KAAK,UAAU,SAAS;CAG1B,MAAM,KAAK,qBAAqB,MAAM,IAAI;CAE1C,MAAM,KAAK,KAAK,UAAU;CAC1B,MAAM,iBAAiB,gBAAgB;CACvC,IAAI,gBAAgB;EAClB,KAAK,UAAU,YAAY,eAAe;EAC1C,KAAK,MAAM,QAAQ,MACjB,IAAI,QAAQ,gBAAgB;GAC1B,KAAK,eAAe,SAAS,KAAK;GAClC,OAAO,KAAK;EACd;CAEJ;CAEA,IAAI,oBAAoB,MACtB,KAAK,UAAU,YAAY;CAK7B,OAFgB,MAAM,KAAK,uBAAuB,MAAM,MAAM,cAEjD,KAAK;AACpB"}
1
+ {"version":3,"file":"hydrate.js","names":["getComponentsAlias"],"sources":["../src/hydrate.ts"],"sourcesContent":["import { hooks, Shortcuts, toCamelCase } from '@spcsn/taro-shared';\n\nimport { CATCH_VIEW, CATCHMOVE, CLASS, CLICK_VIEW, COMPILE_MODE, ID, PURE_VIEW, STYLE, VIEW } from './constants';\nimport { getComponentsAlias, isComment, isHasExtractProp, isText } from './utils';\n\nimport type { TaroElement } from './dom/element';\nimport type { TaroText } from './dom/text';\nimport type { MiniData, MiniElementData } from './interface';\n\nlet SPECIAL_NODES;\nlet componentsAlias;\n\n/**\n * React also has a fancy function's name for this: `hydrate()`.\n * You may have been heard `hydrate` as a SSR-related function,\n * actually, `hydrate` basicly do the `render()` thing, but ignore some properties,\n * it's a vnode traverser and modifier: that's exactly what Taro's doing in here.\n */\nexport function hydrate(node: TaroElement | TaroText): MiniData {\n // 初始化 componentsAlias\n componentsAlias ||= getComponentsAlias();\n\n // 初始化 SPECIAL_NODES\n SPECIAL_NODES ||= hooks.call('getSpecialNodes')!;\n\n const nodeName = node.nodeName;\n let compileModeName = null;\n\n if (isText(node)) {\n return {\n sid: node.sid,\n [Shortcuts.Text]: node.nodeValue,\n [Shortcuts.NodeName]: componentsAlias[nodeName]?._num || '8',\n };\n }\n\n const data: MiniElementData = {\n [Shortcuts.NodeName]: nodeName,\n sid: node.sid,\n };\n\n if (node.uid !== node.sid) {\n data.uid = node.uid;\n }\n\n if (SPECIAL_NODES.indexOf(nodeName) > -1) {\n if (!node.isAnyEventBinded()) {\n data[Shortcuts.NodeName] = `static-${nodeName}`;\n if (nodeName === VIEW && !isHasExtractProp(node)) {\n data[Shortcuts.NodeName] = PURE_VIEW;\n }\n }\n\n if (nodeName === VIEW && node.isOnlyClickBinded() && !isHasExtractProp(node)) {\n data[Shortcuts.NodeName] = CLICK_VIEW;\n }\n }\n\n const { props } = node;\n for (const prop in props) {\n const propInCamelCase = toCamelCase(prop);\n if (\n !prop.startsWith('data-') && // 在 node.dataset 的数据\n prop !== CLASS &&\n prop !== STYLE &&\n prop !== ID &&\n propInCamelCase !== CATCHMOVE &&\n propInCamelCase !== COMPILE_MODE\n ) {\n data[propInCamelCase] = props[prop];\n }\n if (nodeName === VIEW && propInCamelCase === CATCHMOVE && props[prop] !== false) {\n data[Shortcuts.NodeName] = CATCH_VIEW;\n }\n if (propInCamelCase === COMPILE_MODE) {\n compileModeName = props[prop];\n }\n }\n\n // Children\n data[Shortcuts.Childnodes] = node.childNodes.filter((node) => !isComment(node)).map(hydrate);\n\n if (node.className !== '') {\n data[Shortcuts.Class] = node.className;\n }\n\n const cssText = node.cssText;\n if (cssText !== '' && nodeName !== 'swiper-item') {\n data[Shortcuts.Style] = cssText;\n }\n\n hooks.call('modifyHydrateData', data, node);\n\n const nn = data[Shortcuts.NodeName];\n const componentAlias = componentsAlias[nn];\n if (componentAlias) {\n data[Shortcuts.NodeName] = componentAlias._num;\n for (const prop in data) {\n if (prop in componentAlias) {\n data[componentAlias[prop]] = data[prop];\n delete data[prop];\n }\n }\n }\n\n if (compileModeName !== null) {\n data[Shortcuts.NodeName] = compileModeName;\n }\n\n const resData = hooks.call('transferHydrateData', data, node, componentAlias);\n\n return resData || data;\n}\n"],"mappings":";;;;AASA,IAAI;AACJ,IAAI;;;;;;;AAQJ,SAAgB,QAAQ,MAAwC;CAE9D,oBAAA,kBAAoBA,qBAAmB;CAGvC,kBAAA,gBAAkB,MAAM,KAAK,iBAAiB;CAE9C,MAAM,WAAW,KAAK;CACtB,IAAI,kBAAkB;CAEtB,IAAI,OAAO,IAAI,GAAG;;EAChB,OAAO;GACL,KAAK,KAAK;IACT,UAAU,OAAO,KAAK;IACtB,UAAU,aAAA,wBAAW,gBAAgB,eAAA,QAAA,0BAAA,KAAA,IAAA,KAAA,IAAA,sBAAW,SAAQ;EAC3D;CACF;CAEA,MAAM,OAAwB;GAC3B,UAAU,WAAW;EACtB,KAAK,KAAK;CACZ;CAEA,IAAI,KAAK,QAAQ,KAAK,KACpB,KAAK,MAAM,KAAK;CAGlB,IAAI,cAAc,QAAQ,QAAQ,IAAI,IAAI;EACxC,IAAI,CAAC,KAAK,iBAAiB,GAAG;GAC5B,KAAK,UAAU,YAAY,UAAU;GACrC,IAAI,aAAA,UAAqB,CAAC,iBAAiB,IAAI,GAC7C,KAAK,UAAU,YAAY;EAE/B;EAEA,IAAI,aAAA,UAAqB,KAAK,kBAAkB,KAAK,CAAC,iBAAiB,IAAI,GACzE,KAAK,UAAU,YAAY;CAE/B;CAEA,MAAM,EAAE,UAAU;CAClB,KAAK,MAAM,QAAQ,OAAO;EACxB,MAAM,kBAAkB,YAAY,IAAI;EACxC,IACE,CAAC,KAAK,WAAW,OAAO,KACxB,SAAA,WACA,SAAA,WACA,SAAA,QACA,oBAAA,eACA,oBAAA,eAEA,KAAK,mBAAmB,MAAM;EAEhC,IAAI,aAAA,UAAqB,oBAAA,eAAiC,MAAM,UAAU,OACxE,KAAK,UAAU,YAAY;EAE7B,IAAI,oBAAA,eACF,kBAAkB,MAAM;CAE5B;CAGA,KAAK,UAAU,cAAc,KAAK,WAAW,QAAQ,SAAS,CAAC,UAAU,IAAI,CAAC,EAAE,IAAI,OAAO;CAE3F,IAAI,KAAK,cAAc,IACrB,KAAK,UAAU,SAAS,KAAK;CAG/B,MAAM,UAAU,KAAK;CACrB,IAAI,YAAY,MAAM,aAAa,eACjC,KAAK,UAAU,SAAS;CAG1B,MAAM,KAAK,qBAAqB,MAAM,IAAI;CAE1C,MAAM,KAAK,KAAK,UAAU;CAC1B,MAAM,iBAAiB,gBAAgB;CACvC,IAAI,gBAAgB;EAClB,KAAK,UAAU,YAAY,eAAe;EAC1C,KAAK,MAAM,QAAQ,MACjB,IAAI,QAAQ,gBAAgB;GAC1B,KAAK,eAAe,SAAS,KAAK;GAClC,OAAO,KAAK;EACd;CAEJ;CAEA,IAAI,oBAAoB,MACtB,KAAK,UAAU,YAAY;CAK7B,OAFgB,MAAM,KAAK,uBAAuB,MAAM,MAAM,cAEjD,KAAK;AACpB"}
@@ -2,16 +2,16 @@ import './dom-external';
2
2
  import env from './env';
3
3
  export { hooks } from '@spcsn/taro-shared';
4
4
  export { taroDocumentProvider as document } from './bom/document';
5
- export { taroGetComputedStyleProvider as getComputedStyle } from './bom/getComputedStyle';
5
+ export { taroGetComputedStyleProvider as getComputedStyle } from './bom/get-computed-style';
6
6
  export { History } from './bom/history';
7
7
  export { Location } from './bom/location';
8
8
  export { nav as navigator } from './bom/navigator';
9
9
  export { caf as cancelAnimationFrame, now, raf as requestAnimationFrame } from './bom/raf';
10
10
  export { parseUrl, TaroURLProvider as URL } from './bom/URL';
11
- export { URLSearchParams } from './bom/URLSearchParams';
11
+ export { URLSearchParams } from './bom/url-search-params';
12
12
  export { taroHistoryProvider as history, taroLocationProvider as location, taroWindowProvider as window, } from './bom/window';
13
13
  export { TaroElement } from './dom/element';
14
- export { createEvent, eventHandler, eventHandlerTTDom, TaroEvent } from './dom/event';
14
+ export { createEvent, eventHandler, TaroEvent } from './dom/event';
15
15
  export { FormElement } from './dom/form';
16
16
  export { TaroNode } from './dom/node';
17
17
  export { TaroRootElement } from './dom/root';
@@ -21,7 +21,7 @@ export { TaroText } from './dom/text';
21
21
  export { MutationObserver } from './dom-external/mutation-observer';
22
22
  export { env };
23
23
  export * from './constants';
24
- export { Current, getCurrentInstance } from './current';
24
+ export { Current, getCurrentInstance, setCurrentApp, whenAppReady } from './current';
25
25
  export { eventSource } from './dom/event-source';
26
26
  export { createComponentConfig, createPageConfig, createRecursiveComponentConfig, getOnHideEventKey, getOnReadyEventKey, getOnShowEventKey, getPageInstance, getPath, injectPageInstance, removePageInstance, safeExecute, stringify, } from './dsl/common';
27
27
  export * from './emitter/emitter';