-import { createBlock, createVNode, openBlock } from '@vue/runtime-test'
import {
- ShapeFlags,
+ createBlock,
+ createVNode,
+ openBlock,
Comment,
Fragment,
Text,
- cloneVNode
-} from '@vue/runtime-core'
-import { mergeProps, normalizeVNode } from '../src/vnode'
+ cloneVNode,
+ mergeProps,
+ normalizeVNode
+} from '../src/vnode'
+import { ShapeFlags } from '../src/shapeFlags'
import { Data } from '../src/component'
import { PatchFlags } from '@vue/shared'
--- /dev/null
+import {
+ computed as _computed,
+ ComputedRef,
+ WritableComputedOptions,
+ WritableComputedRef,
+ ComputedGetter
+} from '@vue/reactivity'
+import { recordInstanceBoundEffect } from './component'
+
+export function computed<T>(getter: ComputedGetter<T>): ComputedRef<T>
+export function computed<T>(
+ options: WritableComputedOptions<T>
+): WritableComputedRef<T>
+export function computed<T>(
+ getterOrOptions: ComputedGetter<T> | WritableComputedOptions<T>
+) {
+ const c = _computed(getterOrOptions as any)
+ recordInstanceBoundEffect(c.effect)
+ return c
+}
EMPTY_OBJ,
NOOP
} from '@vue/shared'
-import { computed } from './apiReactivity'
+import { computed } from './apiComputed'
import { watch, WatchOptions, WatchCallback } from './apiWatch'
import { provide, inject } from './apiInject'
import {
+++ /dev/null
-export {
- ref,
- isRef,
- toRefs,
- reactive,
- isReactive,
- readonly,
- isReadonly,
- shallowReactive,
- toRaw,
- markReadonly,
- markNonReactive,
- // types
- ReactiveEffect,
- ReactiveEffectOptions,
- DebuggerEvent,
- TrackOpTypes,
- TriggerOpTypes,
- Ref,
- ComputedRef,
- UnwrapRef,
- WritableComputedOptions
-} from '@vue/reactivity'
-
-import {
- computed as _computed,
- ComputedRef,
- WritableComputedOptions,
- ReactiveEffect,
- WritableComputedRef,
- ComputedGetter
-} from '@vue/reactivity'
-
-import { currentInstance } from './component'
-
-// record effects created during a component's setup() so that they can be
-// stopped when the component unmounts
-export function recordEffect(effect: ReactiveEffect) {
- if (currentInstance) {
- ;(currentInstance.effects || (currentInstance.effects = [])).push(effect)
- }
-}
-
-export function computed<T>(getter: ComputedGetter<T>): ComputedRef<T>
-export function computed<T>(
- options: WritableComputedOptions<T>
-): WritableComputedRef<T>
-export function computed<T>(
- getterOrOptions: ComputedGetter<T> | WritableComputedOptions<T>
-) {
- const c = _computed(getterOrOptions as any)
- recordEffect(c.effect)
- return c
-}
hasChanged,
NOOP
} from '@vue/shared'
-import { recordEffect } from './apiReactivity'
import {
currentInstance,
ComponentInternalInstance,
currentSuspense,
Data,
- isInSSRComponentSetup
+ isInSSRComponentSetup,
+ recordInstanceBoundEffect
} from './component'
import {
ErrorCodes,
}
}
- recordEffect(runner)
+ recordInstanceBoundEffect(runner)
return () => {
stop(runner)
if (instance) {
}
return __DEV__ ? Object.freeze(context) : context
}
+
+// record effects created during a component's setup() so that they can be
+// stopped when the component unmounts
+export function recordInstanceBoundEffect(effect: ReactiveEffect) {
+ if (currentInstance) {
+ ;(currentInstance.effects || (currentInstance.effects = [])).push(effect)
+ }
+}
pushWarningContext(vnode)
}
handleSetupResult(instance, asyncSetupResult, suspense)
+ // unset placeholder, otherwise this will be treated as a hydration mount
+ vnode.el = null
setupRenderEffect(
instance,
vnode,
import { PatchFlags, isReservedProp, isOn } from '@vue/shared'
// Note: hydration is DOM-specific
-// but we have to place it in core due to tight coupling with core renderer
-// logic - splitting it out
+// but we have to place it in core due to tight coupling with core - splitting
+// it out creates a ton of unnecessary complexity.
export function createHydrateFn(
mountComponent: any, // TODO
patchProp: any // TODO
// Public API ------------------------------------------------------------------
export const version = __VERSION__
-export * from './apiReactivity'
-export * from './apiWatch'
-export * from './apiLifecycle'
-export * from './apiInject'
+export {
+ ref,
+ isRef,
+ toRefs,
+ reactive,
+ isReactive,
+ readonly,
+ isReadonly,
+ shallowReactive,
+ toRaw,
+ markReadonly,
+ markNonReactive
+} from '@vue/reactivity'
+export { computed } from './apiComputed'
+export { watch } from './apiWatch'
+export {
+ onBeforeMount,
+ onMounted,
+ onBeforeUpdate,
+ onUpdated,
+ onBeforeUnmount,
+ onUnmounted,
+ onActivated,
+ onDeactivated,
+ onRenderTracked,
+ onRenderTriggered,
+ onErrorCaptured
+} from './apiLifecycle'
+export { provide, inject } from './apiInject'
export { nextTick } from './scheduler'
export { defineComponent } from './apiDefineComponent'
createBlock
} from './vnode'
// Internal Components
-export { Fragment, Portal } from './vnode'
+export { Text, Comment, Fragment, Portal } from './vnode'
export { Suspense, SuspenseProps } from './components/Suspense'
export { KeepAlive, KeepAliveProps } from './components/KeepAlive'
export {
BaseTransition,
BaseTransitionProps
} from './components/BaseTransition'
-// VNode flags
-export { PublicShapeFlags as ShapeFlags } from './shapeFlags'
-import { PublicPatchFlags } from '@vue/shared'
-export const PatchFlags = PublicPatchFlags as {
- // export patch flags as plain numbers to avoid d.ts relying on @vue/shared
- // the enum type is internal anyway.
- TEXT: number
- CLASS: number
- STYLE: number
- PROPS: number
- NEED_PATCH: number
- FULL_PROPS: number
- STABLE_FRAGMENT: number
- KEYED_FRAGMENT: number
- UNKEYED_FRAGMENT: number
- DYNAMIC_SLOTS: number
- BAIL: number
-}
+export { PatchFlags } from '@vue/shared'
+export { ShapeFlags } from './shapeFlags'
// SFC CSS Modules
export { useCSSModule } from './helpers/useCssModule'
+// Internal API ----------------------------------------------------------------
+
// For custom renderers
-export { createRenderer, RootRenderFunction } from './renderer'
+export { createRenderer } from './renderer'
export { warn } from './warning'
export {
handleError,
} from './errorHandling'
export {
useTransitionState,
- TransitionState,
resolveTransitionHooks,
- setTransitionHooks,
- TransitionHooks
+ setTransitionHooks
} from './components/BaseTransition'
-// Internal API ----------------------------------------------------------------
-
// For compiler generated code
// should sync with '@vue/compiler-core/src/runtimeConstants.ts'
export { withDirectives } from './directives'
export { registerRuntimeCompiler } from './component'
// SSR -------------------------------------------------------------------------
+
import { createComponentInstance, setupComponent } from './component'
import {
renderComponentRoot,
// Types -----------------------------------------------------------------------
+export {
+ ReactiveEffect,
+ ReactiveEffectOptions,
+ DebuggerEvent,
+ TrackOpTypes,
+ TriggerOpTypes,
+ Ref,
+ ComputedRef,
+ UnwrapRef,
+ WritableComputedOptions
+} from '@vue/reactivity'
+export {
+ // types
+ WatchOptions,
+ WatchCallback,
+ CleanupRegistrator,
+ WatchSource,
+ StopHandle
+} from './apiWatch'
+export { InjectionKey } from './apiInject'
export {
App,
AppConfig,
ComponentOptionsWithObjectProps as ComponentOptionsWithProps,
ComponentOptionsWithArrayProps
} from './apiOptions'
-
export { ComponentPublicInstance } from './componentProxy'
-export { RendererOptions } from './renderer'
+export { RendererOptions, RootRenderFunction } from './renderer'
export { Slot, Slots } from './componentSlots'
export {
Prop,
DirectiveArguments
} from './directives'
export { SuspenseBoundary } from './components/Suspense'
+export { TransitionState, TransitionHooks } from './components/BaseTransition'
export { HMRRuntime } from './hmr'
COMPONENT_KEPT_ALIVE = 1 << 8,
COMPONENT = ShapeFlags.STATEFUL_COMPONENT | ShapeFlags.FUNCTIONAL_COMPONENT
}
-
-// For runtime consumption
-export const PublicShapeFlags = {
- ELEMENT: ShapeFlags.ELEMENT,
- FUNCTIONAL_COMPONENT: ShapeFlags.FUNCTIONAL_COMPONENT,
- STATEFUL_COMPONENT: ShapeFlags.STATEFUL_COMPONENT,
- TEXT_CHILDREN: ShapeFlags.TEXT_CHILDREN,
- ARRAY_CHILDREN: ShapeFlags.ARRAY_CHILDREN,
- SLOTS_CHILDREN: ShapeFlags.SLOTS_CHILDREN,
- SUSPENSE: ShapeFlags.SUSPENSE,
- COMPONENT_SHOULD_KEEP_ALIVE: ShapeFlags.COMPONENT_SHOULD_KEEP_ALIVE,
- COMPONENT_KEPT_ALIVE: ShapeFlags.COMPONENT_KEPT_ALIVE,
- COMPONENT: ShapeFlags.COMPONENT
-}
BAIL = -2
}
-// runtime object for public consumption
-export const PublicPatchFlags = {
- TEXT: PatchFlags.TEXT,
- CLASS: PatchFlags.CLASS,
- STYLE: PatchFlags.STYLE,
- PROPS: PatchFlags.PROPS,
- NEED_PATCH: PatchFlags.NEED_PATCH,
- FULL_PROPS: PatchFlags.FULL_PROPS,
- KEYED_FRAGMENT: PatchFlags.KEYED_FRAGMENT,
- UNKEYED_FRAGMENT: PatchFlags.UNKEYED_FRAGMENT,
- DYNAMIC_SLOTS: PatchFlags.DYNAMIC_SLOTS,
- BAIL: PatchFlags.BAIL
-}
-
// dev only flag -> name mapping
export const PatchFlagNames = {
[PatchFlags.TEXT]: `TEXT`,