mirror of https://github.com/vuejs/core.git
wip: save
This commit is contained in:
parent
b945079643
commit
dd18528023
|
@ -35,10 +35,17 @@ export const VaporTeleportImpl = {
|
|||
rawPropsProxyHandlers,
|
||||
) as any as TeleportProps
|
||||
|
||||
let children: Block
|
||||
|
||||
renderEffect(() => {
|
||||
frag.updateChildren(
|
||||
(children = slots.default && (slots.default as BlockFn)()),
|
||||
)
|
||||
})
|
||||
|
||||
renderEffect(() => {
|
||||
const children = slots.default && (slots.default as BlockFn)()
|
||||
// access the props to trigger tracking
|
||||
frag.update(extend({}, resolvedProps), children)
|
||||
frag.update(extend({}, resolvedProps), children!)
|
||||
})
|
||||
|
||||
return frag
|
||||
|
@ -50,7 +57,8 @@ export class TeleportFragment extends VaporFragment {
|
|||
targetStart?: Node | null
|
||||
mainAnchor?: Node
|
||||
placeholder?: Node
|
||||
currentParent?: ParentNode | null
|
||||
container?: ParentNode | null
|
||||
currentAnchor?: Node | null
|
||||
|
||||
constructor(anchorLabel?: string) {
|
||||
super([])
|
||||
|
@ -58,18 +66,33 @@ export class TeleportFragment extends VaporFragment {
|
|||
__DEV__ && anchorLabel ? createComment(anchorLabel) : createTextNode()
|
||||
}
|
||||
|
||||
update(props: TeleportProps, children: Block): void {
|
||||
updateChildren(children: Block): void {
|
||||
const parent = this.anchor.parentNode
|
||||
if (!parent) return
|
||||
|
||||
const container = this.container || parent
|
||||
|
||||
// teardown previous
|
||||
if (this.nodes && (this.currentParent || parent)) {
|
||||
remove(this.nodes, (this.currentParent || parent)!)
|
||||
remove(this.nodes, container)
|
||||
|
||||
insert(
|
||||
(this.nodes = children),
|
||||
container,
|
||||
this.currentAnchor || this.anchor,
|
||||
)
|
||||
}
|
||||
|
||||
update(props: TeleportProps, children: Block): void {
|
||||
const parent = this.anchor.parentNode
|
||||
this.nodes = children
|
||||
const disabled = isTeleportDisabled(props)
|
||||
|
||||
const mount = (parent: ParentNode, anchor: Node | null) => {
|
||||
insert(this.nodes, (this.currentParent = parent), anchor)
|
||||
insert(
|
||||
this.nodes,
|
||||
(this.container = parent),
|
||||
(this.currentAnchor = anchor),
|
||||
)
|
||||
}
|
||||
|
||||
const mountToTarget = () => {
|
||||
|
@ -124,7 +147,7 @@ export class TeleportFragment extends VaporFragment {
|
|||
|
||||
remove = (parent: ParentNode | undefined): void => {
|
||||
// remove nodes
|
||||
remove(this.nodes, this.currentParent || parent)
|
||||
remove(this.nodes, this.container || parent)
|
||||
|
||||
// remove anchors
|
||||
if (this.targetStart) {
|
||||
|
|
Loading…
Reference in New Issue