mirror of https://github.com/vuejs/core.git
refactor(runtime-vapor): re-organize
This commit is contained in:
parent
b4da5a8da6
commit
7e0f15fa7c
|
@ -13,7 +13,7 @@ import {
|
||||||
createComponentInstance,
|
createComponentInstance,
|
||||||
setCurrentInstance,
|
setCurrentInstance,
|
||||||
} from '../../src/component'
|
} from '../../src/component'
|
||||||
import { getMetadata, recordPropMetadata } from '../../src/metadata'
|
import { getMetadata, recordPropMetadata } from '../../src/componentMetadata'
|
||||||
|
|
||||||
let removeComponentInstance = NOOP
|
let removeComponentInstance = NOOP
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
|
|
|
@ -7,9 +7,25 @@ import { warn } from './warning'
|
||||||
import { pauseTracking, resetTracking } from '@vue/reactivity'
|
import { pauseTracking, resetTracking } from '@vue/reactivity'
|
||||||
import { ErrorTypeStrings, callWithAsyncErrorHandling } from './errorHandling'
|
import { ErrorTypeStrings, callWithAsyncErrorHandling } from './errorHandling'
|
||||||
import { toHandlerKey } from '@vue/shared'
|
import { toHandlerKey } from '@vue/shared'
|
||||||
import { VaporLifecycleHooks } from './enums'
|
|
||||||
|
|
||||||
export const injectHook = (
|
export enum VaporLifecycleHooks {
|
||||||
|
BEFORE_CREATE = 'bc',
|
||||||
|
CREATED = 'c',
|
||||||
|
BEFORE_MOUNT = 'bm',
|
||||||
|
MOUNTED = 'm',
|
||||||
|
BEFORE_UPDATE = 'bu',
|
||||||
|
UPDATED = 'u',
|
||||||
|
BEFORE_UNMOUNT = 'bum',
|
||||||
|
UNMOUNTED = 'um',
|
||||||
|
DEACTIVATED = 'da',
|
||||||
|
ACTIVATED = 'a',
|
||||||
|
RENDER_TRIGGERED = 'rtg',
|
||||||
|
RENDER_TRACKED = 'rtc',
|
||||||
|
ERROR_CAPTURED = 'ec',
|
||||||
|
// SERVER_PREFETCH = 'sp',
|
||||||
|
}
|
||||||
|
|
||||||
|
const injectHook = (
|
||||||
type: VaporLifecycleHooks,
|
type: VaporLifecycleHooks,
|
||||||
hook: Function & { __weh?: Function },
|
hook: Function & { __weh?: Function },
|
||||||
target: ComponentInternalInstance | null = currentInstance,
|
target: ComponentInternalInstance | null = currentInstance,
|
||||||
|
@ -49,7 +65,7 @@ export const injectHook = (
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
export const createHook =
|
const createHook =
|
||||||
<T extends Function = () => any>(lifecycle: VaporLifecycleHooks) =>
|
<T extends Function = () => any>(lifecycle: VaporLifecycleHooks) =>
|
||||||
(hook: T, target: ComponentInternalInstance | null = currentInstance) =>
|
(hook: T, target: ComponentInternalInstance | null = currentInstance) =>
|
||||||
injectHook(lifecycle, (...args: unknown[]) => hook(...args), target)
|
injectHook(lifecycle, (...args: unknown[]) => hook(...args), target)
|
||||||
|
|
|
@ -15,9 +15,9 @@ import {
|
||||||
emit,
|
emit,
|
||||||
normalizeEmitsOptions,
|
normalizeEmitsOptions,
|
||||||
} from './componentEmits'
|
} from './componentEmits'
|
||||||
|
import { VaporLifecycleHooks } from './apiLifecycle'
|
||||||
|
|
||||||
import type { Data } from '@vue/shared'
|
import type { Data } from '@vue/shared'
|
||||||
import { VaporLifecycleHooks } from './enums'
|
|
||||||
|
|
||||||
export type Component = FunctionalComponent | ObjectComponent
|
export type Component = FunctionalComponent | ObjectComponent
|
||||||
|
|
||||||
|
|
|
@ -6,14 +6,14 @@ export enum MetadataKind {
|
||||||
event,
|
event,
|
||||||
}
|
}
|
||||||
|
|
||||||
export type ElementMetadata = [
|
export type ComponentMetadata = [
|
||||||
props: Data,
|
props: Data,
|
||||||
events: Record<string, DelegatedHandler[]>,
|
events: Record<string, DelegatedHandler[]>,
|
||||||
]
|
]
|
||||||
|
|
||||||
export function getMetadata(
|
export function getMetadata(
|
||||||
el: Node & { $$metadata?: ElementMetadata },
|
el: Node & { $$metadata?: ComponentMetadata },
|
||||||
): ElementMetadata {
|
): ComponentMetadata {
|
||||||
return el.$$metadata || (el.$$metadata = [{}, {}])
|
return el.$$metadata || (el.$$metadata = [{}, {}])
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,7 @@ import type {
|
||||||
import { addEventListener } from '../dom/event'
|
import { addEventListener } from '../dom/event'
|
||||||
import { nextTick } from '../scheduler'
|
import { nextTick } from '../scheduler'
|
||||||
import { warn } from '../warning'
|
import { warn } from '../warning'
|
||||||
import { MetadataKind, getMetadata } from '../metadata'
|
import { MetadataKind, getMetadata } from '../componentMetadata'
|
||||||
|
|
||||||
type AssignerFn = (value: any) => void
|
type AssignerFn = (value: any) => void
|
||||||
function getModelAssigner(el: Element): AssignerFn {
|
function getModelAssigner(el: Element): AssignerFn {
|
||||||
|
|
|
@ -3,7 +3,11 @@ import {
|
||||||
onEffectCleanup,
|
onEffectCleanup,
|
||||||
onScopeDispose,
|
onScopeDispose,
|
||||||
} from '@vue/reactivity'
|
} from '@vue/reactivity'
|
||||||
import { MetadataKind, getMetadata, recordEventMetadata } from '../metadata'
|
import {
|
||||||
|
MetadataKind,
|
||||||
|
getMetadata,
|
||||||
|
recordEventMetadata,
|
||||||
|
} from '../componentMetadata'
|
||||||
import { withKeys, withModifiers } from '@vue/runtime-dom'
|
import { withKeys, withModifiers } from '@vue/runtime-dom'
|
||||||
import { queuePostRenderEffect } from '../scheduler'
|
import { queuePostRenderEffect } from '../scheduler'
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,11 @@ import {
|
||||||
} from '@vue/shared'
|
} from '@vue/shared'
|
||||||
import { warn } from '../warning'
|
import { warn } from '../warning'
|
||||||
import { setStyle } from './style'
|
import { setStyle } from './style'
|
||||||
import { MetadataKind, getMetadata, recordPropMetadata } from '../metadata'
|
import {
|
||||||
|
MetadataKind,
|
||||||
|
getMetadata,
|
||||||
|
recordPropMetadata,
|
||||||
|
} from '../componentMetadata'
|
||||||
import { on } from './event'
|
import { on } from './event'
|
||||||
|
|
||||||
export function setClass(el: Element, value: any) {
|
export function setClass(el: Element, value: any) {
|
||||||
|
|
|
@ -7,7 +7,7 @@ import {
|
||||||
normalizeStyle,
|
normalizeStyle,
|
||||||
} from '@vue/shared'
|
} from '@vue/shared'
|
||||||
import { warn } from '../warning'
|
import { warn } from '../warning'
|
||||||
import { recordPropMetadata } from '../metadata'
|
import { recordPropMetadata } from '../componentMetadata'
|
||||||
|
|
||||||
export function setStyle(el: HTMLElement, value: any) {
|
export function setStyle(el: HTMLElement, value: any) {
|
||||||
const prev = recordPropMetadata(el, 'style', (value = normalizeStyle(value)))
|
const prev = recordPropMetadata(el, 'style', (value = normalizeStyle(value)))
|
||||||
|
|
|
@ -1,16 +0,0 @@
|
||||||
export enum VaporLifecycleHooks {
|
|
||||||
BEFORE_CREATE = 'bc',
|
|
||||||
CREATED = 'c',
|
|
||||||
BEFORE_MOUNT = 'bm',
|
|
||||||
MOUNTED = 'm',
|
|
||||||
BEFORE_UPDATE = 'bu',
|
|
||||||
UPDATED = 'u',
|
|
||||||
BEFORE_UNMOUNT = 'bum',
|
|
||||||
UNMOUNTED = 'um',
|
|
||||||
DEACTIVATED = 'da',
|
|
||||||
ACTIVATED = 'a',
|
|
||||||
RENDER_TRIGGERED = 'rtg',
|
|
||||||
RENDER_TRACKED = 'rtc',
|
|
||||||
ERROR_CAPTURED = 'ec',
|
|
||||||
// SERVER_PREFETCH = 'sp',
|
|
||||||
}
|
|
|
@ -6,7 +6,7 @@
|
||||||
import type { ComponentInternalInstance } from './component'
|
import type { ComponentInternalInstance } from './component'
|
||||||
import { isFunction, isPromise } from '@vue/shared'
|
import { isFunction, isPromise } from '@vue/shared'
|
||||||
import { warn } from './warning'
|
import { warn } from './warning'
|
||||||
import { VaporLifecycleHooks } from './enums'
|
import { VaporLifecycleHooks } from './apiLifecycle'
|
||||||
import { BaseWatchErrorCodes } from '@vue/reactivity'
|
import { BaseWatchErrorCodes } from '@vue/reactivity'
|
||||||
|
|
||||||
// contexts where user provided function may be executed, in addition to
|
// contexts where user provided function may be executed, in addition to
|
||||||
|
|
|
@ -102,8 +102,8 @@ export {
|
||||||
onErrorCaptured,
|
onErrorCaptured,
|
||||||
// onServerPrefetch,
|
// onServerPrefetch,
|
||||||
} from './apiLifecycle'
|
} from './apiLifecycle'
|
||||||
export { createIf } from './if'
|
export { createIf } from './apiCreateIf'
|
||||||
export { createFor } from './for'
|
export { createFor } from './apiCreateFor'
|
||||||
|
|
||||||
// **Internal** DOM-only runtime directive helpers
|
// **Internal** DOM-only runtime directive helpers
|
||||||
export {
|
export {
|
||||||
|
|
Loading…
Reference in New Issue