{"version":3,"file":"angular-miniprogram-platform-default.mjs","sources":["../../src/library/platform/default/agent-node.ts","../../src/library/platform/default/component-finder.service.ts","../../src/library/platform/default/diff-node-data.ts","../../src/library/platform/default/component-template-hook.factory.ts","../../src/library/platform/default/platform-core.ts","../../src/library/platform/default/token.ts","../../src/library/platform/default/mini-program.renderer.ts","../../src/library/platform/default/mini-program.renderer.factory.ts","../../src/library/platform/default/angular-miniprogram-platform-default.ts"],"sourcesContent":["import type {\n  MPElementData,\n  MPTextData,\n} from 'angular-miniprogram/platform/type';\n\nexport class AgentNode {\n  selector!: string | unknown;\n  name!: string;\n  parent!: AgentNode | undefined;\n  nextSibling!: AgentNode | undefined;\n  attribute: Record<string, string> = {};\n  style: Record<string, string> = {};\n  property: Record<string, unknown> = {};\n  classList = new Set<string>();\n  value!: string;\n  children: AgentNode[] = [];\n  listener: Record<string, Function> = {};\n  constructor(public type: 'element' | 'comment' | 'text') {}\n  appendChild(child: AgentNode) {\n    const lastChildIndex = this.children.length - 1;\n    this.children.push(child);\n    child.parent = this;\n    if (lastChildIndex > -1) {\n      this.children[lastChildIndex].nextSibling = child;\n    }\n  }\n  setParent(parent: AgentNode) {\n    const oldParent = this.parent;\n    if (oldParent) {\n      const index = oldParent.children.findIndex((item) => item === this);\n      if (index === -1) {\n        throw new Error('没有在之前的父级上找到该节点' + this);\n      }\n      oldParent.children.splice(index, 1);\n    }\n    parent.appendChild(this);\n  }\n  insertBefore(newChild: AgentNode, refChild: AgentNode) {\n    const refIndex = this.children.findIndex((item) => item === refChild);\n    if (refIndex === -1) {\n      throw new Error('未找到引用子节点' + refChild);\n    }\n\n    if (refIndex === 0) {\n      newChild.nextSibling = refChild;\n    } else {\n      this.children[refIndex - 1].nextSibling = newChild;\n      newChild.nextSibling = refChild;\n    }\n    this.children.splice(refIndex, 0, newChild);\n  }\n  removeChild(child: AgentNode) {\n    const index = this.children.findIndex((item) => item === child);\n    if (index === 0) {\n      this.children.shift();\n    } else if (index + 1 === this.children.length) {\n      this.children[index - 1].nextSibling = undefined;\n      this.children.pop();\n    } else {\n      this.children[index - 1].nextSibling = this.children[index + 1];\n      this.children.splice(index, 1);\n    }\n    child.nextSibling = undefined;\n    child.parent = undefined;\n  }\n  toView(): MPTextData | MPElementData {\n    if (this.type === 'text') {\n      return { value: this.value };\n    } else {\n      return {\n        class:\n          Array.from(this.classList).join(' ') +\n          (this.attribute.class ? ' ' + this.attribute.class : ''),\n\n        style:\n          Object.entries(this.style)\n            .map(([style, value]) => `${style}:${value}`)\n            .join(';') +\n          (this.attribute.style ? ';' + this.attribute.style : ''),\n\n        property: { ...this.property },\n      };\n    }\n  }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class ComponentFinderService<T = unknown> {\n  private map = new Map<unknown, T>();\n  private mapPromise = new Map<unknown, Function>();\n  async get(component: unknown) {\n    if (this.map.has(component)) {\n      return this.map.get(component);\n    }\n    let fn: Function;\n    const promise = new Promise((res) => {\n      fn = res;\n    });\n    this.mapPromise.set(component, fn!);\n    return promise.then((result) => {\n      this.mapPromise.delete(component);\n      return result;\n    });\n  }\n  /** @internal */\n  set(component: unknown, instance: T): void {\n    if (this.mapPromise.has(component)) {\n      this.mapPromise.get(component)!();\n    }\n    this.map.set(component, instance);\n  }\n  /** @internal */\n  remove(component: unknown) {\n    return this.map.delete(component);\n  }\n}\n","interface DiffResult {\n  allChange: boolean;\n  object?: Record<string, unknown>;\n}\nfunction _arrayOrObjectItemDiff(\n  count: number,\n  prefix: string,\n  fromItem: unknown,\n  toItem: unknown,\n  changeObject: Record<string, unknown>\n) {\n  if (fromItem instanceof Array && toItem instanceof Array) {\n    const result = diffDataArray(fromItem, toItem, prefix);\n    if (result.allChange || result.object) {\n      if (result.allChange) {\n        count++;\n        changeObject[prefix] = toItem;\n      } else {\n        changeObject = { ...changeObject, ...result.object };\n      }\n    }\n    return { count: count, changeObject };\n  } else if (\n    typeof fromItem === 'object' &&\n    fromItem !== null &&\n    typeof toItem === 'object' &&\n    toItem !== null\n  ) {\n    const result = diffDataObject(\n      fromItem as Record<string, null>,\n      toItem as Record<string, null>,\n      prefix\n    );\n    if (result.allChange || result.object) {\n      if (result.allChange) {\n        count++;\n        changeObject[prefix] = toItem;\n      } else {\n        changeObject = { ...changeObject, ...result.object };\n      }\n    }\n    return { count: count, changeObject };\n  } else if (fromItem !== toItem) {\n    changeObject[prefix] = toItem;\n    count++;\n    return { count: count, changeObject };\n  }\n  return { count: count, changeObject };\n}\nfunction diffDataObject(\n  from: Record<string, unknown>,\n  to: Record<string, unknown>,\n  prefix: string\n): DiffResult {\n  const toKeyList = Object.keys(to);\n  let changeObject: Record<string, unknown> = {};\n  const point = prefix ? '.' : '';\n  let count = 0;\n  if (Object.keys(from).length !== toKeyList.length) {\n    return { allChange: true };\n  }\n\n  for (let index = 0; index < toKeyList.length; index++) {\n    const key = toKeyList[index];\n    const fromItem = from[key];\n    const toItem = to[key];\n    const currentPrefix = `${prefix}${point}${key}`;\n    const result = _arrayOrObjectItemDiff(\n      count,\n      currentPrefix,\n      fromItem,\n      toItem,\n      changeObject\n    );\n    count = result.count;\n    changeObject = result.changeObject;\n  }\n  if (count === toKeyList.length && toKeyList.length !== 0) {\n    return { allChange: true };\n  }\n  return { allChange: false, object: changeObject };\n}\nfunction diffDataArray(\n  from: unknown[],\n  to: unknown[],\n  prefix: string\n): DiffResult {\n  let changeObject: Record<string, unknown> = {};\n\n  if (from.length !== to.length) {\n    return { allChange: true };\n  }\n  let count = 0;\n  for (let i = 0; i < to.length; i++) {\n    const fromItem = from[i];\n    const toItem = to[i];\n    const currentPrefix = `${prefix}[${i}]`;\n    const result = _arrayOrObjectItemDiff(\n      count,\n      currentPrefix,\n      fromItem,\n      toItem,\n      changeObject\n    );\n    count = result.count;\n    changeObject = result.changeObject;\n  }\n  if (count === to.length && to.length !== 0) {\n    return {\n      allChange: true,\n    };\n  }\n  return { allChange: false, object: changeObject };\n}\nexport function diffNodeData(\n  from: Record<string, unknown>,\n  to: Record<string, unknown>\n) {\n  const result = diffDataObject(from, to, '');\n  if (result.allChange) {\n    return to;\n  }\n  return result.object!;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { ComponentRef, NgZone } from '@angular/core';\nimport { LView } from 'angular-miniprogram/platform/type';\nimport type {\n  MPElementData,\n  MPTextData,\n  MPView,\n  NodePath,\n} from 'angular-miniprogram/platform/type';\nimport { AgentNode } from './agent-node';\nimport { diffNodeData } from './diff-node-data';\n// packages\\core\\src\\render3\\interfaces\\view.ts\nconst CLEANUP = 7;\nexport const LVIEW_CONTEXT = 8;\nexport const INJECTOR = 9;\n// packages\\core\\src\\render3\\interfaces\\container.ts\nconst VIEW_REFS = 8;\n// HEADER_OFFSET\nconst start = 25;\n\nconst linkMap = new Map<LView, any>();\nconst nodePathMap = new Map<LView, NodePath>();\nlet index = 0;\nconst pageRegistryMap = new Map<number, LView>();\nconst lViewLastDataMap = new Map<LView, Record<string, any>>();\nlet waitingRefreshLViewList: (() => void)[] = [];\n/** @internal */\nexport function propertyChange(lView: LView) {\n  if (linkMap.has(lView)) {\n    const ngZone = lView[INJECTOR]!.get(NgZone);\n    waitingRefreshLViewList.push(() => {\n      ngZone.runOutsideAngular(() => {\n        const instance = linkMap.get(lView);\n        if (!instance) {\n          return;\n        }\n        const currentData = getPageRefreshContext(lView);\n        const diffData = getDiffData(lView, currentData);\n        if (Object.keys(diffData).length) {\n          instance.setData(diffData);\n        }\n      });\n    });\n  }\n}\nexport function endRender() {\n  for (const fn of waitingRefreshLViewList) {\n    fn();\n  }\n  waitingRefreshLViewList = [];\n}\n\nexport function getPageRefreshContext(lView: LView) {\n  const lviewPath = getLViewPath(lView);\n  const nodeList = lViewToWXView(lView, lviewPath);\n  const ctx: Partial<MPView> = {\n    nodeList: nodeList,\n    nodePath: lviewPath || [],\n    hasLoad: true,\n  };\n  return ctx;\n}\n\nfunction lViewToWXView(lView: LView, parentNodePath: any[] = []) {\n  const tView = lView[1];\n  const end = tView.bindingStartIndex;\n  const nodeList: MPView['nodeList'] = [];\n  for (let index = start; index < end; index++) {\n    const item = lView[index];\n    if (item instanceof AgentNode) {\n      nodeList[index - start] = item.toView();\n    } else if (item && item[1] === true) {\n      const lContainerList: MPView[] = [];\n      const viewRefList: any[] = item[VIEW_REFS] || [];\n      viewRefList.forEach((item, itemIndex) => {\n        const nodePath = [\n          ...parentNodePath,\n          'directive',\n          index - start,\n          itemIndex,\n        ];\n        lContainerList.push({\n          __templateName: item._lView[LVIEW_CONTEXT]\n            ? item._lView[LVIEW_CONTEXT].__templateName\n            : undefined,\n          nodeList: lViewToWXView(item._lView, nodePath),\n          nodePath: nodePath,\n          index: lContainerList.length,\n        });\n      });\n      nodeList[index - start] = lContainerList;\n    } else {\n      // todo\n      nodeList[index - start] = {} as any;\n    }\n  }\n  return nodeList;\n}\n\nexport function setLViewPath(lView: LView, nodePath: NodePath) {\n  nodePath = nodePath.slice();\n  nodePathMap.set(lView, nodePath);\n}\nfunction getLViewPath(lView: LView) {\n  return nodePathMap.get(lView);\n}\nexport function updatePath(context: MPView, nodePath: NodePath) {\n  nodePath = nodePath.slice();\n  context.nodePath = nodePath;\n  const list: (MPView[] | MPElementData | MPTextData | MPView)[] = [\n    ...context.nodeList,\n  ];\n  while (list.length) {\n    const item = list.pop()!;\n    if (item instanceof Array) {\n      list.push(...item);\n    }\n    if ((item as any).nodeList && (item as any).nodeList.length) {\n      list.push(...(item as any).nodeList);\n    }\n    if ((item as MPView).nodePath) {\n      ((item as MPView).nodePath as any[]).unshift(...nodePath);\n    }\n  }\n  return context;\n}\n\nexport function resolveNodePath(list: NodePath): any {\n  list = list.slice();\n  let lView = pageRegistryMap.get(list.shift() as number)!;\n  while (list.length) {\n    const item = list.shift()!;\n    if (item === 'directive') {\n      const index = list.shift()! as number;\n      const lContainer = lView[index + start];\n      const child = list.shift() as number;\n      const viewRef = lContainer[VIEW_REFS][child];\n      lView = viewRef['_lView'];\n    } else {\n      lView = lView[start + item];\n    }\n  }\n  return lView;\n}\nexport function findCurrentElement(lView: LView, list: NodePath = []) {\n  list = [...list];\n  while (list.length) {\n    const item = list.shift()!;\n    if (item === 'directive') {\n      const index = list.shift() as number;\n      const lContainer = lView[index + start];\n      const child = list.shift() as number;\n      const viewRef = lContainer[VIEW_REFS][child];\n      lView = viewRef['_lView'];\n    } else {\n      lView = lView[item + start];\n    }\n  }\n\n  return lView as any;\n}\n\nexport function lViewLinkToMPComponentRef(ref: any, lView: LView) {\n  linkMap.set(lView, ref);\n}\n\nexport function cleanWhenDestroy(lView: LView, fn: () => void) {\n  const list: Function[] = (lView[CLEANUP] = lView[CLEANUP] || []);\n  list.push(() => cleanAll(lView));\n  list.push(fn);\n}\nexport function cleanAll(lView: LView) {\n  linkMap.delete(lView);\n  nodePathMap.delete(lView);\n  lViewLastDataMap.delete(lView);\n}\n\nexport function findPageLView(componentRef: ComponentRef<unknown>) {\n  const lView = (componentRef as any)._rootLView[start];\n\n  index++;\n  pageRegistryMap.set(index, lView);\n  return { lView: lView as any, id: index };\n}\nexport function removePageLViewLink(id: number) {\n  const lView = pageRegistryMap.get(id)!;\n  lViewLastDataMap.delete(lView);\n  pageRegistryMap.delete(id);\n}\nexport function getDiffData(lView: LView, currentData: Record<string, any>) {\n  const lastData = lViewLastDataMap.get(lView);\n  if (!lastData) {\n    lViewLastDataMap.set(lView, currentData);\n    return currentData;\n  }\n  const diff = diffNodeData(lastData, currentData);\n  lViewLastDataMap.set(lView, currentData);\n  return diff;\n}\n","/// <reference types=\"miniprogram-api-typings\"/>\nimport {\n  ApplicationRef,\n  ChangeDetectorRef,\n  ComponentRef,\n  NgModuleRef,\n  NgZone,\n  Type,\n} from '@angular/core';\nimport type {\n  AppOptions,\n  LView,\n  MiniProgramComponentInstance,\n  MiniProgramComponentOptions,\n  MiniProgramPageOptions,\n  NodePath,\n} from 'angular-miniprogram/platform/type';\nimport { AgentNode } from './agent-node';\nimport { ComponentFinderService } from './component-finder.service';\nimport {\n  INJECTOR,\n  LVIEW_CONTEXT,\n  cleanAll,\n  cleanWhenDestroy,\n  findCurrentElement,\n  findPageLView,\n  getDiffData,\n  getPageRefreshContext,\n  lViewLinkToMPComponentRef,\n  removePageLViewLink,\n  resolveNodePath,\n  setLViewPath,\n  updatePath,\n} from './component-template-hook.factory';\n\nexport class MiniProgramCoreFactory {\n  public MINIPROGRAM_GLOBAL = wx;\n  public loadApp = <T>(app: T) => {\n    App(app || {});\n    const appInstance = getApp() as unknown as AppOptions;\n\n    appInstance.__ngStartPagePromise = new Promise((resolve) => {\n      appInstance.__ngStartPageResolve = resolve;\n    });\n    return appInstance;\n  };\n\n  protected eventPrefixList = [\n    { listener: 'bind', prefix: 'bind' },\n    { listener: 'catch', prefix: 'catch' },\n    { listener: 'mutBind', prefix: 'mut-bind' },\n    { listener: 'captureBind', prefix: 'capture-bind' },\n    { listener: 'captureCatch', prefix: 'capture-catch' },\n  ];\n  protected getListenerEventMapping(prefix: string, name: string) {\n    return [name, prefix + name];\n  }\n\n  protected linkNgComponentWithPath(\n    mpComponentInstance: MiniProgramComponentInstance,\n    list: NodePath\n  ) {\n    mpComponentInstance.__isLink = true;\n    const lView: LView = resolveNodePath(list);\n    const injector = lView[INJECTOR]!;\n    mpComponentInstance.__lView = lView;\n    mpComponentInstance.__ngComponentInstance = lView[LVIEW_CONTEXT];\n    mpComponentInstance.__ngComponentInjector = injector;\n    const ngZone = injector.get(NgZone);\n    mpComponentInstance.__ngZone = ngZone;\n    const componentFinderService = injector.get(ComponentFinderService);\n    componentFinderService.set(\n      mpComponentInstance.__ngComponentInstance,\n      mpComponentInstance\n    );\n    cleanWhenDestroy(lView, () => {\n      componentFinderService.remove(mpComponentInstance.__ngComponentInstance);\n    });\n    setLViewPath(lView, list);\n    lViewLinkToMPComponentRef(mpComponentInstance, lView);\n    mpComponentInstance.__waitLinkResolve();\n    ngZone.runOutsideAngular(() => {\n      const initValue = getPageRefreshContext(lView);\n      const diffData = getDiffData(lView, initValue);\n      if (Object.keys(diffData).length) {\n        mpComponentInstance.setData(diffData);\n      }\n    });\n  }\n  /** 监听事件 */\n  protected listenerEvent() {\n    const _this = this;\n    return this.eventPrefixList.reduce((pre: Record<string, Function>, cur) => {\n      pre[cur.listener + 'Event'] = function (\n        this: MiniProgramComponentInstance,\n        event: WechatMiniprogram.BaseEvent\n      ) {\n        if (this.__lView) {\n          const dataset = event.currentTarget?.dataset || event.target.dataset;\n          const currentPath: NodePath = [\n            ...(dataset.nodePath || []),\n            dataset.nodeIndex,\n          ];\n          const nodePath = this.__completePath || [];\n          const relativePath = currentPath.slice(nodePath.length);\n          let el = findCurrentElement(this.__lView, relativePath) as AgentNode;\n          if (!(el instanceof AgentNode)) {\n            el = el[0];\n            if (!(el instanceof AgentNode)) {\n              throw new Error('查询代理节点失败');\n            }\n          }\n\n          const eventName = event.type;\n          _this\n            .getListenerEventMapping(cur.prefix, eventName)\n            .forEach((name) => {\n              this.__ngZone.run(() => {\n                if (el.listener[name]) {\n                  el.listener[name](event);\n                }\n              });\n            });\n        } else {\n          throw new Error('未绑定lView');\n        }\n      };\n\n      return pre;\n    }, {});\n  }\n  protected pageStatus = {\n    destroy: function (this: MiniProgramComponentInstance) {\n      if (this.__ngDestroy) {\n        this.__ngDestroy();\n      }\n    },\n    attachView: function (this: MiniProgramComponentInstance) {\n      if (this.__ngComponentInjector && this.__isDetachView) {\n        const applicationRef = this.__ngComponentInjector.get(ApplicationRef);\n        applicationRef.attachView(this.__ngComponentHostView);\n        this.__isDetachView = false;\n      }\n    },\n    detachView: function (this: MiniProgramComponentInstance) {\n      if (this.__ngComponentInjector) {\n        this.__isDetachView = true;\n        const applicationRef = this.__ngComponentInjector.get(ApplicationRef);\n        applicationRef.detachView(this.__ngComponentHostView);\n      }\n    },\n  };\n  protected linkNgComponentWithPage(\n    mpComponentInstance: MiniProgramComponentInstance,\n    componentRef: ComponentRef<unknown>,\n    ngModuleRef: NgModuleRef<unknown>\n  ) {\n    mpComponentInstance.__isLink = true;\n    mpComponentInstance.__ngComponentHostView = componentRef.hostView;\n    mpComponentInstance.__ngComponentInstance = componentRef.instance;\n    mpComponentInstance.__ngComponentInjector = componentRef.injector;\n    const ngZone = componentRef.injector.get(NgZone);\n    mpComponentInstance.__ngZone = ngZone;\n    const { lView, id }: { lView: LView; id: number } =\n      findPageLView(componentRef);\n    setLViewPath(lView, [id]);\n    mpComponentInstance.__completePath = [id];\n    ngZone.runOutsideAngular(() => {\n      const initValue = getPageRefreshContext(lView);\n      const diffData = getDiffData(lView, initValue);\n      if (Object.keys(diffData).length) {\n        mpComponentInstance.setData(diffData);\n      }\n    });\n    lViewLinkToMPComponentRef(mpComponentInstance, lView);\n    mpComponentInstance.__lView = lView;\n    mpComponentInstance.__ngDestroy = () => {\n      ngModuleRef.destroy();\n      componentRef.destroy();\n      removePageLViewLink(id);\n      cleanAll(lView);\n    };\n  }\n\n  public pageStartup = (\n    module: Type<unknown>,\n    component: Type<unknown>,\n    pageOptions?: { useComponent: boolean }\n  ) => {\n    const _this = this;\n    if (pageOptions?.useComponent) {\n      const options = this.getComponentOptions<true>(component) || {};\n      const config: WechatMiniprogram.Component.Options<{}, {}, {}, {}, true> =\n        {\n          ...options,\n          data: { hasLoad: false },\n          options: { ...options?.options, multipleSlots: true },\n          methods: {\n            ...options.methods,\n            ...this.listenerEvent(),\n            onHide: async function (this: MiniProgramComponentInstance) {\n              if (options.methods?.onHide) {\n                await options.methods.onHide.bind(this)();\n              }\n              _this.pageStatus.detachView.bind(this)();\n            },\n            onUnload: async function (this: MiniProgramComponentInstance) {\n              if (options.methods?.onUnload) {\n                await options.methods.onUnload.bind(this)();\n              }\n              _this.pageStatus.destroy.bind(this)();\n            },\n\n            onShow: async function (this: MiniProgramComponentInstance) {\n              if (options.methods?.onShow) {\n                await options.methods.onShow.bind(this)();\n              }\n              return _this.pageStatus.attachView.bind(this)();\n            },\n          },\n        };\n      config.lifetimes = config.lifetimes || {};\n      const oldCreated = config.lifetimes.created;\n      let componentRef: ComponentRef<unknown>,\n        ngModuleRef: NgModuleRef<unknown>;\n      config.lifetimes.created = function (this: MiniProgramComponentInstance) {\n        const app = getApp<AppOptions>();\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        this.__lifeTimePromiseObject = {} as any;\n        return (this.__lifeTimePromiseObject['created'] =\n          app.__ngStartPagePromise.then(() => {\n            const result = app.__ngStartPage(module, component, this);\n            componentRef = result.componentRef;\n            ngModuleRef = result.ngModuleRef;\n            if (oldCreated) {\n              oldCreated.bind(this)();\n            }\n          }));\n      };\n      const oldAttached = config.lifetimes.attached;\n      config.lifetimes.attached = function (\n        this: MiniProgramComponentInstance\n      ) {\n        return this.__lifeTimePromiseObject['created'].then(() => {\n          _this.linkNgComponentWithPage(this, componentRef, ngModuleRef);\n          if (oldAttached) {\n            oldAttached.bind(this)();\n          }\n        });\n      };\n      return Component(config);\n    }\n    const options = this.getPageOptions(component) || {};\n    return Page({\n      ...options,\n      ...this.listenerEvent(),\n      data: { hasLoad: false },\n\n      onHide: async function (this: MiniProgramComponentInstance) {\n        if (options.onHide) {\n          await options.onHide.bind(this)();\n        }\n        _this.pageStatus.detachView.bind(this)();\n      },\n      onUnload: async function (this: MiniProgramComponentInstance) {\n        if (options.onUnload) {\n          await options.onUnload.bind(this)();\n        }\n        _this.pageStatus.destroy.bind(this)();\n      },\n      onLoad: function (this: MiniProgramComponentInstance, query) {\n        const app = getApp<AppOptions>();\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        this.__lifeTimePromiseObject = {} as any;\n        return (this.__lifeTimePromiseObject['onLoad'] =\n          app.__ngStartPagePromise.then(() => {\n            const { componentRef, ngModuleRef } = app.__ngStartPage(\n              module,\n              component,\n              this\n            );\n            _this.linkNgComponentWithPage(this, componentRef, ngModuleRef);\n            if (options.onLoad) {\n              return options.onLoad.bind(this)(query);\n            }\n          }));\n      },\n      onShow: function (this: MiniProgramComponentInstance) {\n        return (this.__lifeTimePromiseObject['onShow'] =\n          this.__lifeTimePromiseObject['onLoad'].then(async () => {\n            if (options.onShow) {\n              await options.onShow.bind(this)();\n            }\n            return _this.pageStatus.attachView.bind(this)();\n          }));\n      },\n      onReady: function (this: MiniProgramComponentInstance) {\n        return this.__lifeTimePromiseObject.onShow.then(() => {\n          if (options.onReady) {\n            return options.onReady.bind(this)();\n          }\n        });\n      },\n    });\n  };\n  protected addNgComponentLinkLogic(\n    config: WechatMiniprogram.Component.Options<{}, {}, {}>\n  ) {\n    config.lifetimes = config.lifetimes || {};\n    const oldCreate = config.lifetimes.created;\n    config.lifetimes.created = function (this: MiniProgramComponentInstance) {\n      this.__waitLinkPromise = new Promise<void>((resolve) => {\n        this.__waitLinkResolve = resolve;\n      });\n\n      if (oldCreate) {\n        oldCreate.bind(this)();\n      }\n    };\n    const _this = this;\n    config.properties = {\n      nodePath: {\n        type: null,\n        observer: function (\n          this: MiniProgramComponentInstance,\n          list: NodePath\n        ) {\n          if (this.__isLink) {\n            return;\n          }\n          if (typeof list === 'string') {\n            list = JSON.parse(list);\n          }\n          this.__nodePath = list || [];\n          if (typeof this.__nodeIndex !== 'undefined') {\n            this.__completePath = [...this.__nodePath, this.__nodeIndex];\n            _this.linkNgComponentWithPath(this, this.__completePath);\n          }\n        },\n      },\n      nodeIndex: {\n        type: null,\n        observer: function (this: MiniProgramComponentInstance, index: number) {\n          if (this.__isLink) {\n            return;\n          }\n          if (typeof index === 'string') {\n            index = parseInt(index, 10);\n          }\n          this.__nodeIndex = index;\n          if (typeof this.__nodePath !== 'undefined') {\n            this.__completePath = [...this.__nodePath, this.__nodeIndex];\n            _this.linkNgComponentWithPath(this, this.__completePath);\n          }\n        },\n      },\n    };\n    return config;\n  }\n  public componentRegistry = (component: Type<unknown>) => {\n    const options = this.getComponentOptions(component) || {};\n    let config: WechatMiniprogram.Component.Options<{}, {}, {}> = {\n      ...options,\n      data: { hasLoad: false },\n      options: { ...options?.options, multipleSlots: true },\n      methods: {\n        ...this.listenerEvent(),\n      },\n    };\n\n    config = this.addNgComponentLinkLogic(config);\n    return Component(config);\n  };\n\n  protected getPageOptions(component: Type<unknown> & MiniProgramPageOptions) {\n    return component.mpPageOptions as WechatMiniprogram.Page.Options<{}, {}>;\n  }\n  protected getComponentOptions<T extends boolean = false>(\n    component: Type<unknown> & MiniProgramComponentOptions\n  ) {\n    return component.mpComponentOptions as WechatMiniprogram.Component.Options<\n      {},\n      {},\n      {},\n      {},\n      T\n    >;\n  }\n}\n\nexport const MiniProgramCore = new MiniProgramCoreFactory();\n","import { InjectionToken } from '@angular/core';\n\nexport const PAGE_TOKEN = new InjectionToken<unknown>('PAGE_TOKEN');\n","import { Renderer2, RendererStyleFlags2 } from '@angular/core';\nimport { AgentNode } from './agent-node';\n\nexport class MiniProgramRenderer implements Renderer2 {\n  root!: AgentNode;\n  constructor() {}\n  data = Object.create(null);\n  destroy() {}\n  createElement(name: string, namespace?: string | null) {\n    const element = new AgentNode('element');\n    element.name = name;\n    element.classList.add(`tag-name-${name}`);\n    return element;\n  }\n  createComment(value: string) {\n    const comment = new AgentNode('comment');\n    comment.value = value;\n    return comment;\n  }\n  createText(value: string) {\n    const text = new AgentNode('text');\n    text.value = value;\n    return text;\n  }\n  destroyNode() {}\n  appendChild(parent: AgentNode, newChild: AgentNode) {\n    parent.appendChild(newChild);\n  }\n  insertBefore(\n    parent: AgentNode,\n    newChild: AgentNode,\n    refChild: AgentNode,\n    isMove?: boolean\n  ) {\n    if (isMove) {\n      // todo 应该没用\n    }\n    if (parent) {\n      parent.insertBefore(newChild, refChild);\n    }\n  }\n  removeChild(parent: AgentNode, oldChild: AgentNode, isHostElement?: boolean) {\n    if (isHostElement) {\n      // todo 应该没用\n    }\n    if (parent) {\n      parent.removeChild(oldChild);\n    }\n  }\n  selectRootElement(\n    selectorOrNode: string | unknown,\n    preserveContent?: boolean\n  ) {\n    const root = new AgentNode('element');\n    root.selector = selectorOrNode;\n    this.root = root;\n    return root;\n  }\n  parentNode(node: AgentNode) {\n    return node.parent;\n  }\n  nextSibling(node: AgentNode) {\n    return node.nextSibling;\n  }\n  setAttribute(\n    el: AgentNode,\n    name: string,\n    value: string,\n    namespace?: string | null\n  ) {\n    el.attribute[name] = value;\n  }\n  removeAttribute(el: AgentNode, name: string, namespace?: string | null) {\n    delete el.attribute[name];\n  }\n  addClass(el: AgentNode, name: string) {\n    el.classList.add(name);\n  }\n  removeClass(el: AgentNode, name: string) {\n    el.classList.delete(name);\n  }\n  setStyle(\n    el: AgentNode,\n    style: string,\n    value: string,\n    flags?: RendererStyleFlags2\n  ) {\n    el.style[style] = value;\n  }\n  removeStyle(el: AgentNode, style: string, flags?: RendererStyleFlags2) {\n    delete el.style[style];\n  }\n  setProperty(el: AgentNode, name: string, value: unknown) {\n    el.property[name] = value;\n  }\n  setValue(node: AgentNode, value: string) {\n    node.value = value;\n  }\n  listen(\n    target: AgentNode,\n    eventName: string,\n    callback: (event: WechatMiniprogram.BaseEvent) => boolean | void\n  ) {\n    if (!(target instanceof AgentNode)) {\n      throw new Error('不支持其他类型监听');\n    }\n    target.listener[eventName] = callback;\n    return () => {};\n  }\n}\n","import {\n  Injectable,\n  Renderer2,\n  RendererFactory2,\n  RendererType2,\n} from '@angular/core';\nimport { AgentNode } from './agent-node';\nimport { endRender } from './component-template-hook.factory';\nimport { MiniProgramRenderer } from './mini-program.renderer';\n\n@Injectable()\nexport class MiniProgramRendererFactory implements RendererFactory2 {\n  defaultRenderer!: MiniProgramRenderer;\n  constructor() {\n    this.defaultRenderer = new MiniProgramRenderer();\n  }\n\n  createRenderer(element: AgentNode, type: RendererType2 | null): Renderer2 {\n    return this.defaultRenderer;\n  }\n  begin() {}\n  end() {\n    endRender();\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}