Skip to content

Commit 7204cb6

Browse files
authored
feat(vapor): vapor teleport (#13082)
1 parent 6ec403f commit 7204cb6

File tree

24 files changed

+1767
-240
lines changed

24 files changed

+1767
-240
lines changed

packages/compiler-vapor/src/utils.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,8 +120,15 @@ export function isKeepAliveTag(tag: string): boolean {
120120
return tag === 'keepalive' || tag === 'vaporkeepalive'
121121
}
122122

123+
export function isTeleportTag(tag: string): boolean {
124+
tag = tag.toLowerCase()
125+
return tag === 'teleport' || tag === 'vaporteleport'
126+
}
127+
123128
export function isBuiltInComponent(tag: string): string | undefined {
124-
if (isKeepAliveTag(tag)) {
129+
if (isTeleportTag(tag)) {
130+
return 'VaporTeleport'
131+
} else if (isKeepAliveTag(tag)) {
125132
return 'VaporKeepAlive'
126133
} else if (isTransitionTag(tag)) {
127134
return 'VaporTransition'

packages/runtime-core/src/components/Teleport.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,10 @@ export const TeleportEndKey: unique symbol = Symbol('_vte')
2727

2828
export const isTeleport = (type: any): boolean => type.__isTeleport
2929

30-
const isTeleportDisabled = (props: VNode['props']): boolean =>
30+
export const isTeleportDisabled = (props: VNode['props']): boolean =>
3131
props && (props.disabled || props.disabled === '')
3232

33-
const isTeleportDeferred = (props: VNode['props']): boolean =>
33+
export const isTeleportDeferred = (props: VNode['props']): boolean =>
3434
props && (props.defer || props.defer === '')
3535

3636
const isTargetSVG = (target: RendererElement): boolean =>
@@ -39,7 +39,7 @@ const isTargetSVG = (target: RendererElement): boolean =>
3939
const isTargetMathML = (target: RendererElement): boolean =>
4040
typeof MathMLElement === 'function' && target instanceof MathMLElement
4141

42-
const resolveTarget = <T = RendererElement>(
42+
export const resolveTarget = <T = RendererElement>(
4343
props: TeleportProps | null,
4444
select: RendererOptions['querySelector'],
4545
): T | null => {

packages/runtime-core/src/index.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -354,6 +354,7 @@ export type {
354354
HydrationStrategyFactory,
355355
} from './hydrationStrategies'
356356
export type { HMRRuntime } from './hmr'
357+
export type { SchedulerJob } from './scheduler'
357358

358359
// Internal API ----------------------------------------------------------------
359360

@@ -530,7 +531,7 @@ export { baseEmit, isEmitListener } from './componentEmits'
530531
/**
531532
* @internal
532533
*/
533-
export { type SchedulerJob, queueJob, flushOnAppMount } from './scheduler'
534+
export { queueJob, flushOnAppMount } from './scheduler'
534535
/**
535536
* @internal
536537
*/
@@ -567,6 +568,14 @@ export { startMeasure, endMeasure } from './profiling'
567568
* @internal
568569
*/
569570
export { initFeatureFlags } from './featureFlags'
571+
/**
572+
* @internal
573+
*/
574+
export {
575+
resolveTarget as resolveTeleportTarget,
576+
isTeleportDisabled,
577+
isTeleportDeferred,
578+
} from './components/Teleport'
570579
/**
571580
* @internal
572581
*/

packages/runtime-vapor/__tests__/block.spec.ts

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,5 @@
1-
import {
2-
VaporFragment,
3-
insert,
4-
normalizeBlock,
5-
prepend,
6-
remove,
7-
} from '../src/block'
1+
import { insert, normalizeBlock, prepend, remove } from '../src/block'
2+
import { VaporFragment } from '../src/fragment'
83

94
const node1 = document.createTextNode('node1')
105
const node2 = document.createTextNode('node2')

0 commit comments

Comments
 (0)